@compstats/core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +18 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +162 -16
- package/dist/index.js.map +3 -3
- package/dist/plot/sampling.d.ts +45 -0
- package/dist/plot/sampling.d.ts.map +1 -1
- package/package.json +10 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,40 @@
|
|
|
3
3
|
All notable changes to `@compstats/core`. The R package this ports keeps its
|
|
4
4
|
own history in [`NEWS.md`](https://github.com/compstatslib/compstatslib/blob/main/NEWS.md).
|
|
5
5
|
|
|
6
|
+
## 0.3.0
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
* `plotSampling()` takes a `mark` option and marks the chosen statistic on all
|
|
11
|
+
three panels, in one color. The library computes two of the three numbers:
|
|
12
|
+
the statistic of the pooled sample, and the average of every statistic drawn
|
|
13
|
+
so far. It takes the third from the caller, because the true value in the
|
|
14
|
+
population is a fact about the shape and not about the values in the array. A
|
|
15
|
+
Cauchy population has no mean, and the arithmetic mean of a finite draw from
|
|
16
|
+
it is still a number. `mark.populationValue: null` says the population has no
|
|
17
|
+
such value, and the panel writes `no true <label>` in place of the line. A
|
|
18
|
+
location statistic draws a line, a spread draws a span around a center, and
|
|
19
|
+
the third panel always draws a line, because its axis holds the value of the
|
|
20
|
+
statistic. A mark outside the frozen window draws a caret at that edge, so a
|
|
21
|
+
clipped mark and an absent mark do not look the same. The new `marks` field
|
|
22
|
+
of the result reports the three numbers, and reports null for each one that
|
|
23
|
+
does not exist. A call that passes no `mark` draws what it drew before, and
|
|
24
|
+
gets `marks: null`. `interactiveSampling()` forwards the option, as it
|
|
25
|
+
forwards every other plot option.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
* `plotly.js-dist-min` moves from a runtime dependency to an **optional peer
|
|
30
|
+
dependency**. Installing `@compstats/core` brought in 5.9 MB of 3D engine
|
|
31
|
+
even for a page that draws only 2D. It now installs 1.3 MB, and a consumer
|
|
32
|
+
who uses the `/3d` entry adds `plotly.js-dist-min` to its own dependencies —
|
|
33
|
+
which the two known consumers already did, because a bundler needs the
|
|
34
|
+
package named where it is imported. No source and no bundle changed:
|
|
35
|
+
`dist/3d.js` still reaches Plotly through the same lazy `import()`, and
|
|
36
|
+
passing your own engine in the `plotly` option still keeps that import
|
|
37
|
+
unreached. If Plotly is absent, that load now fails with
|
|
38
|
+
`Cannot find package 'plotly.js-dist-min'` instead of succeeding.
|
|
39
|
+
|
|
6
40
|
## 0.2.0
|
|
7
41
|
|
|
8
42
|
The first npm release. It follows the R package's own 0.8.0 release, which
|
package/README.md
CHANGED
|
@@ -26,8 +26,19 @@ npm install @compstats/core
|
|
|
26
26
|
bun add @compstats/core
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
That install is small, because it brings nothing with it. Plotly is an
|
|
30
|
+
**optional peer dependency**: the package declares it, but no package manager
|
|
31
|
+
installs it for you. A page that draws only 2D never downloads it.
|
|
32
|
+
|
|
33
|
+
Add it yourself when you use the 3D functions:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install plotly.js-dist-min
|
|
37
|
+
# or
|
|
38
|
+
bun add plotly.js-dist-min
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
See [3D and Plotly](#3d-and-plotly) below.
|
|
31
42
|
|
|
32
43
|
## Quick start
|
|
33
44
|
|
|
@@ -126,6 +137,11 @@ Pass `plotly` when you load the 3D entry from a raw file CDN such as jsDelivr,
|
|
|
126
137
|
because nothing there resolves the bare `plotly.js-dist-min` specifier. esm.sh
|
|
127
138
|
rewrites bare specifiers, so on esm.sh both ways work.
|
|
128
139
|
|
|
140
|
+
Under a bundler, the dynamic import needs Plotly in your own dependencies. If
|
|
141
|
+
it is absent, the load fails with `Cannot find package 'plotly.js-dist-min'`.
|
|
142
|
+
The two cures are the same two paths: install the optional peer, or pass your
|
|
143
|
+
own engine in the `plotly` option and let the dynamic import stay unreached.
|
|
144
|
+
|
|
129
145
|
## How the functions are organized
|
|
130
146
|
|
|
131
147
|
Every family has three parts, and you can use any one of them alone:
|
package/dist/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type { LegendLocation, PlotLogitOptions } from "./plot/logit";
|
|
|
41
41
|
export { plotSampleCi, sampleCiScale } from "./plot/sampleCi";
|
|
42
42
|
export type { PlotSampleCiOptions } from "./plot/sampleCi";
|
|
43
43
|
export { plotSampling, samplingScale } from "./plot/sampling";
|
|
44
|
-
export type { PlotSamplingOptions, PlotSamplingResult, SamplingPanel, SamplingState, } from "./plot/sampling";
|
|
44
|
+
export type { PlotSamplingOptions, PlotSamplingResult, SamplingMarkOptions, SamplingMarks, SamplingPanel, SamplingState, } from "./plot/sampling";
|
|
45
45
|
export { pcaScale, plotPca } from "./plot/pca";
|
|
46
46
|
export type { PlotPcaOptions } from "./plot/pca";
|
|
47
47
|
export { plotRegression, regressionScale } from "./plot/regression";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2989,6 +2989,12 @@ var SAMPLE_CURVE_COLOR = "rgba(179, 179, 179, 0.5)";
|
|
|
2989
2989
|
var BAR_COLOR = "lightgray";
|
|
2990
2990
|
var CURVE_WIDTH2 = 2;
|
|
2991
2991
|
var SAMPLE_CURVE_WIDTH = 1;
|
|
2992
|
+
var MARK_COLOR = "cornflowerblue";
|
|
2993
|
+
var SAMPLE_MARK_COLOR = "rgba(100, 149, 237, 0.5)";
|
|
2994
|
+
var MARK_WIDTH = 2;
|
|
2995
|
+
var SAMPLE_MARK_WIDTH = 1;
|
|
2996
|
+
var MARK_TICK = 4;
|
|
2997
|
+
var CARET_SIZE = 6;
|
|
2992
2998
|
var LABEL_FONT = "bold 11px sans-serif";
|
|
2993
2999
|
var COUNT_FONT = "11px sans-serif";
|
|
2994
3000
|
var LABEL_LINE_HEIGHT = 13;
|
|
@@ -3017,27 +3023,75 @@ function plotSampling(target, population, options = {}) {
|
|
|
3017
3023
|
theta = mean,
|
|
3018
3024
|
rng = seededRng(Math.floor(Math.random() * 4294967296)),
|
|
3019
3025
|
state = null,
|
|
3020
|
-
densityWindow = "data"
|
|
3026
|
+
densityWindow = "data",
|
|
3027
|
+
mark
|
|
3021
3028
|
} = options;
|
|
3022
3029
|
const window = frozenWindow(population, state);
|
|
3023
3030
|
const grid = densityWindow === "frozen" ? { from: window.min, to: window.max } : {};
|
|
3024
3031
|
const drawable = population.length >= 2;
|
|
3025
3032
|
const draw = drawable ? drawSamples(rng, population, { sampleSize, reps, theta }) : { samples: [], thetas: [] };
|
|
3026
3033
|
const sampleTheta = [...state?.sampleTheta ?? [], ...draw.thetas];
|
|
3027
|
-
clearSurface(ctx, width, height);
|
|
3028
|
-
drawDensityPanel(ctx, width, height, "population", window, drawable ? kernelDensity(population, grid) : null, [], "Population Distribution");
|
|
3029
3034
|
const pooled = draw.samples.flat();
|
|
3030
|
-
|
|
3035
|
+
const marks = markNumbers(mark, theta, pooled, sampleTheta);
|
|
3036
|
+
clearSurface(ctx, width, height);
|
|
3037
|
+
drawDensityPanel(ctx, width, height, "population", window, drawable ? kernelDensity(population, grid) : null, [], "Population Distribution", populationMarks(mark), mark !== undefined && mark.populationValue === null ? `no true ${mark.label}` : null);
|
|
3038
|
+
drawDensityPanel(ctx, width, height, "samples", window, pooled.length >= 2 ? kernelDensity(pooled, grid) : null, draw.samples.filter((sample) => sample.length >= 2).map((sample) => kernelDensity(sample, grid)), "Sample Distribution", sampleMarks(mark, draw.samples, draw.thetas, pooled, marks), null);
|
|
3031
3039
|
const countable = sampleTheta.filter((theta2) => theta2 >= window.min && theta2 <= window.max);
|
|
3032
3040
|
const counted = countable.length > 0 ? histogram(countable) : null;
|
|
3033
|
-
drawStatisticPanel(ctx, width, height, window, counted, sampleTheta.length);
|
|
3041
|
+
drawStatisticPanel(ctx, width, height, window, counted, sampleTheta.length, marks === null || marks.pile === null ? [] : [{ kind: "location", value: marks.pile, center: 0, faint: false }]);
|
|
3034
3042
|
return {
|
|
3035
3043
|
state: { xMin: window.min, xMax: window.max, sampleTheta },
|
|
3036
3044
|
samples: draw.samples,
|
|
3037
3045
|
thetas: draw.thetas,
|
|
3038
|
-
histogram: counted
|
|
3046
|
+
histogram: counted,
|
|
3047
|
+
marks
|
|
3039
3048
|
};
|
|
3040
3049
|
}
|
|
3050
|
+
function markNumbers(mark, theta, pooled, sampleTheta) {
|
|
3051
|
+
if (mark === undefined) {
|
|
3052
|
+
return null;
|
|
3053
|
+
}
|
|
3054
|
+
return {
|
|
3055
|
+
population: mark.populationValue,
|
|
3056
|
+
sample: pooled.length > 0 ? theta(pooled) : null,
|
|
3057
|
+
pile: sampleTheta.length > 0 ? mean(sampleTheta) : null
|
|
3058
|
+
};
|
|
3059
|
+
}
|
|
3060
|
+
function populationMarks(mark) {
|
|
3061
|
+
if (mark === undefined || mark.populationValue === null) {
|
|
3062
|
+
return [];
|
|
3063
|
+
}
|
|
3064
|
+
if (mark.kind === "location") {
|
|
3065
|
+
return [
|
|
3066
|
+
{ kind: "location", value: mark.populationValue, center: 0, faint: false }
|
|
3067
|
+
];
|
|
3068
|
+
}
|
|
3069
|
+
const center = mark.populationCenter;
|
|
3070
|
+
if (center === null || center === undefined) {
|
|
3071
|
+
return [];
|
|
3072
|
+
}
|
|
3073
|
+
return [{ kind: "spread", value: mark.populationValue, center, faint: false }];
|
|
3074
|
+
}
|
|
3075
|
+
function sampleMarks(mark, samples, thetas, pooled, marks) {
|
|
3076
|
+
if (mark === undefined || marks === null || marks.sample === null) {
|
|
3077
|
+
return [];
|
|
3078
|
+
}
|
|
3079
|
+
const perSample = samples.map((sample, index) => ({
|
|
3080
|
+
kind: mark.kind,
|
|
3081
|
+
value: thetas[index],
|
|
3082
|
+
center: sample.length > 0 ? mean(sample) : 0,
|
|
3083
|
+
faint: true
|
|
3084
|
+
}));
|
|
3085
|
+
return [
|
|
3086
|
+
...perSample,
|
|
3087
|
+
{
|
|
3088
|
+
kind: mark.kind,
|
|
3089
|
+
value: marks.sample,
|
|
3090
|
+
center: pooled.length > 0 ? mean(pooled) : 0,
|
|
3091
|
+
faint: false
|
|
3092
|
+
}
|
|
3093
|
+
];
|
|
3094
|
+
}
|
|
3041
3095
|
function frozenWindow(population, state) {
|
|
3042
3096
|
if (state !== null) {
|
|
3043
3097
|
return { min: state.xMin, max: state.xMax };
|
|
@@ -3048,29 +3102,37 @@ function frozenWindow(population, state) {
|
|
|
3048
3102
|
const [min, max] = extent(population);
|
|
3049
3103
|
return { min, max };
|
|
3050
3104
|
}
|
|
3051
|
-
function drawDensityPanel(ctx, width, height, panel, window, main, perSample, label) {
|
|
3105
|
+
function drawDensityPanel(ctx, width, height, panel, window, main, perSample, label, marks, note) {
|
|
3052
3106
|
const peak = main === null ? 1 : highestOf(main.y);
|
|
3053
3107
|
const scale = samplingScale(width, height, panel, window, peak);
|
|
3054
3108
|
drawAxes(ctx, scale, { frame: false, yAxis: false });
|
|
3055
3109
|
drawLabel(ctx, scale, [label], peak / 2, LABEL_FONT);
|
|
3056
|
-
if (
|
|
3057
|
-
|
|
3110
|
+
if (note !== null) {
|
|
3111
|
+
drawMarkNote(ctx, scale, note, peak / 2);
|
|
3058
3112
|
}
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3113
|
+
if (main !== null) {
|
|
3114
|
+
drawCurve2(ctx, scale, main, CURVE_COLOR2, CURVE_WIDTH2, panel === "population");
|
|
3115
|
+
for (const estimate of perSample) {
|
|
3116
|
+
drawCurve2(ctx, scale, estimate, SAMPLE_CURVE_COLOR, SAMPLE_CURVE_WIDTH, false);
|
|
3117
|
+
}
|
|
3118
|
+
if (panel === "samples") {
|
|
3119
|
+
drawCurve2(ctx, scale, main, CURVE_COLOR2, CURVE_WIDTH2, false);
|
|
3120
|
+
}
|
|
3062
3121
|
}
|
|
3063
|
-
|
|
3064
|
-
|
|
3122
|
+
for (const mark of marks) {
|
|
3123
|
+
drawMark(ctx, scale, window, mark);
|
|
3065
3124
|
}
|
|
3066
3125
|
}
|
|
3067
|
-
function drawStatisticPanel(ctx, width, height, window, counted, drawnSoFar) {
|
|
3126
|
+
function drawStatisticPanel(ctx, width, height, window, counted, drawnSoFar, marks) {
|
|
3068
3127
|
const tallest = counted === null ? 1 : highestOf(counted.counts);
|
|
3069
3128
|
const scale = samplingScale(width, height, "statistic", window, tallest);
|
|
3070
3129
|
drawAxes(ctx, scale, { frame: false, yAxis: false });
|
|
3071
3130
|
if (counted !== null) {
|
|
3072
3131
|
drawBars(ctx, scale, counted);
|
|
3073
3132
|
}
|
|
3133
|
+
for (const mark of marks) {
|
|
3134
|
+
drawMark(ctx, scale, window, mark);
|
|
3135
|
+
}
|
|
3074
3136
|
drawLabel(ctx, scale, ["Sampling Statistic ", `( ${drawnSoFar} )`], tallest / 2, COUNT_FONT);
|
|
3075
3137
|
}
|
|
3076
3138
|
function drawCurve2(ctx, scale, estimate, color, lineWidth, dotted) {
|
|
@@ -3108,6 +3170,90 @@ function drawBars(ctx, scale, counted) {
|
|
|
3108
3170
|
});
|
|
3109
3171
|
ctx.restore();
|
|
3110
3172
|
}
|
|
3173
|
+
function drawMark(ctx, scale, window, mark) {
|
|
3174
|
+
const color = mark.faint ? SAMPLE_MARK_COLOR : MARK_COLOR;
|
|
3175
|
+
const lineWidth = mark.faint ? SAMPLE_MARK_WIDTH : MARK_WIDTH;
|
|
3176
|
+
if (mark.kind === "location") {
|
|
3177
|
+
if (isInside(window, mark.value)) {
|
|
3178
|
+
drawMarkLine(ctx, scale, mark.value, color, lineWidth);
|
|
3179
|
+
} else {
|
|
3180
|
+
drawCaret(ctx, scale, mark.value > window.max, color);
|
|
3181
|
+
}
|
|
3182
|
+
return;
|
|
3183
|
+
}
|
|
3184
|
+
const low = mark.center - mark.value;
|
|
3185
|
+
const high = mark.center + mark.value;
|
|
3186
|
+
drawMarkSpan(ctx, scale, low, high, color, lineWidth);
|
|
3187
|
+
if (!isInside(window, low)) {
|
|
3188
|
+
drawCaret(ctx, scale, false, color);
|
|
3189
|
+
}
|
|
3190
|
+
if (!isInside(window, high)) {
|
|
3191
|
+
drawCaret(ctx, scale, true, color);
|
|
3192
|
+
}
|
|
3193
|
+
}
|
|
3194
|
+
function isInside(window, value) {
|
|
3195
|
+
return value >= window.min && value <= window.max;
|
|
3196
|
+
}
|
|
3197
|
+
function drawMarkLine(ctx, scale, value, color, lineWidth) {
|
|
3198
|
+
const { area } = scale;
|
|
3199
|
+
const px = scale.toPixelX(value);
|
|
3200
|
+
ctx.save();
|
|
3201
|
+
clipToArea(ctx, area);
|
|
3202
|
+
ctx.setLineDash([]);
|
|
3203
|
+
ctx.strokeStyle = color;
|
|
3204
|
+
ctx.lineWidth = lineWidth;
|
|
3205
|
+
ctx.beginPath();
|
|
3206
|
+
ctx.moveTo(px, area.top);
|
|
3207
|
+
ctx.lineTo(px, area.bottom);
|
|
3208
|
+
ctx.stroke();
|
|
3209
|
+
ctx.restore();
|
|
3210
|
+
}
|
|
3211
|
+
function drawMarkSpan(ctx, scale, low, high, color, lineWidth) {
|
|
3212
|
+
const { area } = scale;
|
|
3213
|
+
const y = (area.top + area.bottom) / 2;
|
|
3214
|
+
const left = scale.toPixelX(low);
|
|
3215
|
+
const right = scale.toPixelX(high);
|
|
3216
|
+
ctx.save();
|
|
3217
|
+
clipToArea(ctx, area);
|
|
3218
|
+
ctx.setLineDash([]);
|
|
3219
|
+
ctx.strokeStyle = color;
|
|
3220
|
+
ctx.lineWidth = lineWidth;
|
|
3221
|
+
ctx.beginPath();
|
|
3222
|
+
ctx.moveTo(left, y);
|
|
3223
|
+
ctx.lineTo(right, y);
|
|
3224
|
+
ctx.moveTo(left, y - MARK_TICK);
|
|
3225
|
+
ctx.lineTo(left, y + MARK_TICK);
|
|
3226
|
+
ctx.moveTo(right, y - MARK_TICK);
|
|
3227
|
+
ctx.lineTo(right, y + MARK_TICK);
|
|
3228
|
+
ctx.stroke();
|
|
3229
|
+
ctx.restore();
|
|
3230
|
+
}
|
|
3231
|
+
function drawCaret(ctx, scale, atRight, color) {
|
|
3232
|
+
const { area } = scale;
|
|
3233
|
+
const y = (area.top + area.bottom) / 2;
|
|
3234
|
+
const tip = atRight ? area.right : area.left;
|
|
3235
|
+
const base = atRight ? tip - CARET_SIZE : tip + CARET_SIZE;
|
|
3236
|
+
ctx.save();
|
|
3237
|
+
clipToArea(ctx, area);
|
|
3238
|
+
ctx.setLineDash([]);
|
|
3239
|
+
ctx.fillStyle = color;
|
|
3240
|
+
ctx.beginPath();
|
|
3241
|
+
ctx.moveTo(tip, y);
|
|
3242
|
+
ctx.lineTo(base, y - CARET_SIZE / 2);
|
|
3243
|
+
ctx.lineTo(base, y + CARET_SIZE / 2);
|
|
3244
|
+
ctx.fill();
|
|
3245
|
+
ctx.restore();
|
|
3246
|
+
}
|
|
3247
|
+
function drawMarkNote(ctx, scale, note, at) {
|
|
3248
|
+
ctx.save();
|
|
3249
|
+
ctx.setLineDash([]);
|
|
3250
|
+
ctx.fillStyle = MARK_COLOR;
|
|
3251
|
+
ctx.font = COUNT_FONT;
|
|
3252
|
+
ctx.textAlign = "left";
|
|
3253
|
+
ctx.textBaseline = "middle";
|
|
3254
|
+
ctx.fillText(note, scale.area.left, scale.toPixelY(at) + LABEL_LINE_HEIGHT);
|
|
3255
|
+
ctx.restore();
|
|
3256
|
+
}
|
|
3111
3257
|
function drawLabel(ctx, scale, lines, at, font) {
|
|
3112
3258
|
ctx.save();
|
|
3113
3259
|
ctx.setLineDash([]);
|
|
@@ -4191,5 +4337,5 @@ export {
|
|
|
4191
4337
|
DEFAULT_LEAST_SQUARES_TOLERANCE
|
|
4192
4338
|
};
|
|
4193
4339
|
|
|
4194
|
-
//# debugId=
|
|
4340
|
+
//# debugId=CC683922C616AE5764756E2164756E21
|
|
4195
4341
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"/**\n * Number formatting shared by the plots.\n *\n * R writes numbers into a plot through `round(x, 2)` and its own coercion to\n * text. Both the regression stats block and the t-test error matrix need that\n * same treatment, so it lives here rather than in either of them.\n */\n\n/**\n * Round to two decimals for display, and report a missing value as R does.\n *\n * R prints `round(x, 2)`, which drops a trailing zero, so 2.50 reads as \"2.5\".\n * R rounds half to even and this rounds half away from zero; the two differ\n * only on an exact half at the third decimal.\n *\n * @param value The number to show. Null and non-finite read as \"NA\".\n * @returns The text to draw.\n */\nexport function formatStat(value: number | null): string {\n if (value === null || !Number.isFinite(value)) {\n return \"NA\";\n }\n return String(Math.round(value * 100) / 100);\n}\n\n/** How many significant digits R keeps when it turns a double into text. */\nconst R_SIGNIFICANT_DIGITS = 15;\n\n/**\n * Write a number the way R's `as.character()` does.\n *\n * R keeps 15 significant digits and drops what follows, so `1 - 0.07` prints\n * as \"0.93\". JavaScript's `String()` instead keeps every digit needed to\n * identify the double, and prints the same subtraction as\n * \"0.9299999999999999\". The t-test error matrix draws `1 - alpha` untouched,\n * and alpha steps in hundredths, so without this the panel shows that run of\n * nines at one of its ten settings.\n *\n * @param value The number to show.\n * @returns The text to draw. Non-finite reads as \"NA\", as elsewhere.\n */\nexport function formatNumber(value: number): string {\n if (!Number.isFinite(value)) {\n return \"NA\";\n }\n return String(Number(value.toPrecision(R_SIGNIFICANT_DIGITS)));\n}\n",
|
|
29
29
|
"/**\n * The logistic-regression plot: the points, the fitted probability curve, and\n * a small block of statistics.\n *\n * This is the drawing half of `plot_logit()` and `plot_points_logit()` in\n * `../compstatslib/R/logit_plot.R`. Every number it draws comes from\n * `logisticRegression` in `src/core/logit.ts`; this module computes no\n * statistics of its own.\n */\n\nimport { logisticRegression, predictLogit } from \"../core/logit\";\nimport type { LogitFit } from \"../core/logit\";\nimport type { Point } from \"../core/regression\";\nimport { createScale, drawAxes } from \"./axes\";\nimport type { Extent, Scale } from \"./axes\";\nimport { DOTTED, clearSurface, clipToArea, drawDots } from \"./draw\";\nimport { formatStat } from \"./format\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/**\n * Which corner of the plot area the statistics block sits in.\n *\n * R's `legend()` takes nine positions. These four are the ones a block of\n * text reads well in, and one of them is R's own default here.\n */\nexport type LegendLocation =\n | \"topleft\"\n | \"topright\"\n | \"bottomleft\"\n | \"bottomright\";\n\n/** What to draw. R's defaults throughout. */\nexport interface PlotLogitOptions {\n /** Fit the model and draw its curve. True by default. */\n readonly regression?: boolean;\n /** List the statistics in a corner. Needs `regression`. True by default. */\n readonly stats?: boolean;\n /** Left edge of the window, before the data widen it. R's `min_x`, 0. */\n readonly minX?: number;\n /** Right edge of the window, before the data widen it. R's `max_x`, 1. */\n readonly maxX?: number;\n /** Corner for the statistics. R's `legend_loc`, \"topleft\". */\n readonly legendLoc?: LegendLocation;\n}\n\n/** R: `ylim = c(0, 1)`, the range of a probability. */\nconst WORLD_Y: Extent = { min: 0, max: 1 };\n/** R: `min_x = 0, max_x = 1`, before the data widen them. */\nconst DEFAULT_MIN_X = 0;\nconst DEFAULT_MAX_X = 1;\n\nconst HALF_LINE_COLOR = \"lightgray\";\nconst CURVE_COLOR = \"cornflowerblue\";\nconst TEXT_COLOR = \"#000000\";\n/** R: `lwd = 2` on the curve. */\nconst CURVE_WIDTH = 2;\n/** R: `seq(min_x, max_x, len = 500)`. */\nconst CURVE_SAMPLES = 500;\n/** R: `abline(h = 0.5)`, the probability that divides the two outcomes. */\nconst HALF = 0.5;\n\nconst STATS_FONT = \"12px monospace\";\nconst STATS_LINE_HEIGHT = 15;\nconst STATS_PADDING = 8;\n/** The width R pads its labels to, from `\"Coefficient: \"`. */\nconst STATS_LABEL_WIDTH = 11;\n\n/**\n * Build the scale that `plotLogit` draws through.\n *\n * Unlike the regression plot, whose window is fixed, this one follows the\n * data: R starts at `min_x` and `max_x` and then widens them to cover every\n * point (`max_x <- max(max_x, points[[x_name]])`). The vertical window is\n * always a probability, 0 to 1.\n *\n * The interactive layer reads the scale from here, so the window stays\n * defined in one place. Nothing outside this module may restate it.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param points The observations the window has to cover.\n * @param options The same options `plotLogit` takes.\n * @returns The map between world values and pixels.\n */\nexport function logitScale(\n width: number,\n height: number,\n points: readonly Point[],\n options: PlotLogitOptions = {},\n): Scale {\n // A non-finite x is a missing value the core drops (na.omit); it must not\n // reach Math.min, where one NaN would poison the whole window.\n const finite = points.filter((point) => Number.isFinite(point.x));\n const min = finite.reduce(\n (low, point) => Math.min(low, point.x),\n options.minX ?? DEFAULT_MIN_X,\n );\n const max = finite.reduce(\n (high, point) => Math.max(high, point.x),\n options.maxX ?? DEFAULT_MAX_X,\n );\n return createScale({ width, height, x: { min, max }, y: WORLD_Y });\n}\n\n/**\n * Draw the points and their fitted probability curve.\n *\n * With fewer than two points the function draws what it has and fits nothing.\n * R stops at the same two places: it returns before `glm()` on an empty frame,\n * and again on a single point. The core would fit that single point — R's\n * `glm()` does, reporting a saturated intercept and no slope — but the plot\n * never asks it to, so neither does this.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param points The observations. Each y must be 0 or 1.\n * @param options What to show and how wide to open the window.\n * @returns The fit the plot drew, or null if it drew none. R returns the\n * points instead, which the caller already holds.\n */\nexport function plotLogit(\n target: PlotTarget,\n points: readonly Point[],\n options: PlotLogitOptions = {},\n): LogitFit | null {\n const { ctx, width, height } = resolveTarget(target);\n const showRegression = options.regression ?? true;\n const showStats = options.stats ?? true;\n const legendLocation = options.legendLoc ?? \"topleft\";\n const scale = logitScale(width, height, points, options);\n\n clearSurface(ctx, width, height);\n drawAxes(ctx, scale, { xLabel: \"x\", yLabel: \"y\" });\n\n drawDots(ctx, scale, points);\n // R draws this after the points, and draws it on an empty frame too:\n // plot_points_logit() ends with abline(h = 0.5) whether or not it had data.\n drawHalfLine(ctx, scale);\n\n if (points.length < 2 || !showRegression) {\n return null;\n }\n\n const fit = logisticRegression(points);\n if (fit === null) {\n return null;\n }\n\n drawCurve(ctx, scale, fit);\n if (showStats) {\n drawStats(ctx, scale, fit, legendLocation);\n }\n return fit;\n}\n\n/** Draw the dotted line at one half. R: `abline(h = 0.5)`. */\nfunction drawHalfLine(ctx: Context2D, scale: Scale): void {\n const { area } = scale;\n ctx.save();\n ctx.strokeStyle = HALF_LINE_COLOR;\n ctx.lineWidth = 1;\n ctx.setLineDash(DOTTED);\n ctx.beginPath();\n ctx.moveTo(area.left, scale.toPixelY(HALF));\n ctx.lineTo(area.right, scale.toPixelY(HALF));\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * Draw the fitted probability across the window.\n *\n * R builds the curve from 500 predictions spread over the same window it\n * plotted, so this samples the same number at the same places. The curve stays\n * inside the window by construction, since a probability cannot leave 0 to 1,\n * but it is clipped to the plot area all the same: R's base graphics clip\n * every line to the plot region and canvas clips nothing.\n */\nfunction drawCurve(ctx: Context2D, scale: Scale, fit: LogitFit): void {\n const { area, world } = scale;\n const span = world.x.max - world.x.min;\n const samples = Array.from({ length: CURVE_SAMPLES }, (_unused, index) => {\n const x = world.x.min + (span * index) / (CURVE_SAMPLES - 1);\n return {\n px: scale.toPixelX(x),\n py: scale.toPixelY(predictLogit(fit, x)),\n };\n });\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.strokeStyle = CURVE_COLOR;\n ctx.lineWidth = CURVE_WIDTH;\n ctx.setLineDash([]);\n ctx.beginPath();\n for (const [index, { px, py }] of samples.entries()) {\n if (index === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n }\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * List the statistics in one corner, in a monospace block.\n *\n * R draws this with `legend(legend_loc, ...)` under `par(family = \"mono\")`,\n * pasting three padded labels against `round(value, 2)`. An aliased slope\n * reads \"NA\", because that is what R's `round(NA, 2)` pastes.\n *\n * A block anchored to the bottom is held inside the plot area rather than\n * allowed to ride up past the top of it. R relies on base graphics clipping\n * text at the plot region, which canvas does not do.\n */\nfunction drawStats(\n ctx: Context2D,\n scale: Scale,\n fit: LogitFit,\n location: LegendLocation,\n): void {\n const rows: readonly (readonly [string, number | null])[] = [\n [\"Intercept\", fit.intercept],\n [\"Coefficient\", fit.slope],\n [\"AIC\", fit.aic],\n ];\n const { area } = scale;\n const onRight = location === \"topright\" || location === \"bottomright\";\n const atBottom = location === \"bottomleft\" || location === \"bottomright\";\n const x = onRight ? area.right - STATS_PADDING : area.left + STATS_PADDING;\n const top = atBottom\n ? Math.max(\n area.top + STATS_PADDING,\n area.bottom - STATS_PADDING - rows.length * STATS_LINE_HEIGHT,\n )\n : area.top + STATS_PADDING;\n\n ctx.save();\n ctx.setLineDash([]);\n ctx.fillStyle = TEXT_COLOR;\n ctx.font = STATS_FONT;\n ctx.textAlign = onRight ? \"right\" : \"left\";\n ctx.textBaseline = \"top\";\n for (const [index, [label, value]] of rows.entries()) {\n ctx.fillText(\n `${label.padEnd(STATS_LABEL_WIDTH)}: ${formatStat(value)}`,\n x,\n top + index * STATS_LINE_HEIGHT,\n );\n }\n ctx.restore();\n}\n",
|
|
30
30
|
"/**\n * One row per sample, each showing what that sample says about the mean it\n * came from — the drawing half of `plot_sample_ci()` in\n * `../compstatslib/R/sample_ci_plot.R`.\n *\n * The population is simulated, so its mean is known and drawn as a vertical\n * line. Each sample gets a row: a wide 99% interval, a 95% interval over it,\n * and a diamond at the sample mean. Rows whose intervals miss the true mean\n * are drawn again in coral over the blue, which is the whole lesson of the\n * picture — at 95% confidence, about one row in twenty should miss.\n *\n * Drawing order is faithful to R and is not incidental. R draws every row in\n * the good colors, then draws the missing ones again on top, then the mean\n * line last:\n *\n * ```r\n * segments_ci(..., good = TRUE) # every row, skyblue\n * segments_ci(...[bad], bad, good = FALSE) # the misses again, coral\n * abline(v = mean(population_data))\n * ```\n *\n * Within one of those calls R works in three vectorised passes — every 99%\n * span, then every 95% span, then every point — rather than finishing a row\n * at a time. This does the same, so overlapping neighbours stack as they do\n * in R.\n *\n * The statistics all come from `simulateSampleCi` in `src/core/sampling.ts`;\n * this module computes none of its own.\n */\n\nimport type { Rng } from \"../core/rng\";\nimport { seededRng } from \"../core/rng\";\nimport { simulateSampleCi } from \"../core/sampling\";\nimport type {\n SampleCiOptions,\n SampleCiSimulation,\n SampleInterval,\n} from \"../core/sampling\";\nimport { createScale, drawAxes } from \"./axes\";\nimport type { Scale } from \"./axes\";\nimport { clearSurface, clipToArea } from \"./draw\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/** What to draw. R's `plot_sample_ci()` arguments, plus the generator. */\nexport interface PlotSampleCiOptions extends SampleCiOptions {\n /**\n * Where the randomness comes from.\n *\n * One call draws one picture, so unlike the sampling plot there is nothing\n * to carry between calls and the default is harmless. It is still built the\n * same way — a stream seeded once from `Math.random()` — so a page that\n * says nothing about seeds gets a fresh picture each time, and\n * `seededRng(42)` repeats one exactly.\n */\n readonly rng?: Rng;\n}\n\n/**\n * R's palette names, resolved with `col2rgb()`.\n *\n * Only `lightskyblue` and `lightcoral` are also CSS color names. The other\n * four are R's own palette and mean nothing to a browser, so all six are\n * written as literals — the same choice slice 1 made when R's `gray` turned\n * out to be `#bebebe` rather than the darker CSS `gray`.\n */\nconst GOOD_COLORS = {\n span99: \"#87cefa\", // lightskyblue\n span95: \"#6ca6cd\", // skyblue3\n point: \"#4a708b\", // skyblue4\n} as const;\n\nconst BAD_COLORS = {\n span99: \"#f08080\", // lightcoral\n span95: \"#cd5b45\", // coral3\n point: \"#8b3e2f\", // coral4\n} as const;\n\nconst MEAN_LINE_COLOR = \"#000000\";\n/** R: `lwd = 3` on both spans. */\nconst SPAN_WIDTH = 3;\n/**\n * Half the height of a diamond, in pixels.\n *\n * R draws `pch = 18, cex = 0.6`. At the size this port gives `cex = 1`\n * elsewhere that would be under two pixels, which disappears on a dense\n * screen. Two and a half keeps the diamond visible and still fits the row\n * pitch at R's default of a hundred rows.\n */\nconst POINT_RADIUS = 2.5;\n\n/**\n * Build the scale the plot draws through.\n *\n * The window is R's: half a standard deviation of the population each side of\n * its mean, which is deliberately too narrow to hold every interval — the\n * ones that run off the edge are the interesting ones. Rows count upward from\n * one, so the first sample sits at the foot of the panel.\n *\n * A population with no spread leaves the width undefined. R stops there, on\n * a non-finite `xlim`. This opens a unit window around the mean instead, so\n * the frame and its axes still draw.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param simulation What `simulateSampleCi` returned.\n * @returns The map between world values and pixels.\n */\nexport function sampleCiScale(\n width: number,\n height: number,\n simulation: SampleCiSimulation,\n): Scale {\n const center = Number.isFinite(simulation.populationMean)\n ? simulation.populationMean\n : 0;\n const half = Number.isFinite(simulation.populationSd)\n ? simulation.populationSd / 2\n : 0.5;\n\n return createScale({\n width,\n height,\n x: { min: center - half, max: center + half },\n y: { min: 1, max: Math.max(1, simulation.intervals.length) },\n });\n}\n\n/**\n * Simulate a population, sample it, and draw what each sample says.\n *\n * A sample too small to have a spread gives an interval of NaN, which R would\n * report as NA. Such a row is left undrawn rather than turned into a shape at\n * a meaningless coordinate; the row still appears in the returned simulation,\n * where the caller can see the NaN for what it is.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param options The sizes, the population's distribution, and the generator.\n * @returns The simulation drawn — the population's mean and spread, and every\n * sample's interval — so a caller need not run it again to read it.\n * @throws RangeError If the sample size is larger than the population, or a\n * count is negative or fractional. Both come from the core, which is where\n * R's own refusals live.\n */\nexport function plotSampleCi(\n target: PlotTarget,\n options: PlotSampleCiOptions = {},\n): SampleCiSimulation {\n const { ctx, width, height } = resolveTarget(target);\n const {\n rng = seededRng(Math.floor(Math.random() * 0x100000000)),\n ...simulationOptions\n } = options;\n\n const simulation = simulateSampleCi(rng, simulationOptions);\n const scale = sampleCiScale(width, height, simulation);\n\n clearSurface(ctx, width, height);\n drawAxes(ctx, scale, {\n xLabel: \"Confidence Intervals\",\n yLabel: \"Samples\",\n });\n\n // R's device clips the plot region; canvas clips nothing. The window is\n // narrower than the widest interval by design, so this is load-bearing.\n const { area } = scale;\n ctx.save();\n clipToArea(ctx, area);\n\n const rows = simulation.intervals\n .map((interval, index) => ({ interval, row: index + 1 }))\n .filter(({ interval }) => isDrawable(interval));\n\n drawRows(ctx, scale, rows, GOOD_COLORS);\n drawRows(\n ctx,\n scale,\n rows.filter(({ interval }) => interval.excludesPopulationMean),\n BAD_COLORS,\n );\n drawPopulationMean(ctx, scale, simulation.populationMean);\n\n ctx.restore();\n return simulation;\n}\n\n/** One row's worth of drawing, and which sample it belongs to. */\ninterface Row {\n readonly interval: SampleInterval;\n readonly row: number;\n}\n\n/** Whether a row has finite bounds to draw. */\nfunction isDrawable(interval: SampleInterval): boolean {\n return (\n Number.isFinite(interval.mean) &&\n Number.isFinite(interval.ci95.low) &&\n Number.isFinite(interval.ci95.high) &&\n Number.isFinite(interval.ci99.low) &&\n Number.isFinite(interval.ci99.high)\n );\n}\n\n/**\n * Draw a set of rows in one color scheme, in R's three passes.\n *\n * The wider interval goes down first so the narrower one reads on top of it,\n * and the sample mean goes over both.\n */\nfunction drawRows(\n ctx: Context2D,\n scale: Scale,\n rows: readonly Row[],\n colors: { span99: string; span95: string; point: string },\n): void {\n ctx.save();\n ctx.setLineDash([]);\n ctx.lineWidth = SPAN_WIDTH;\n\n ctx.strokeStyle = colors.span99;\n for (const { interval, row } of rows) {\n drawSpan(ctx, scale, interval.ci99.low, interval.ci99.high, row);\n }\n\n ctx.strokeStyle = colors.span95;\n for (const { interval, row } of rows) {\n drawSpan(ctx, scale, interval.ci95.low, interval.ci95.high, row);\n }\n\n ctx.fillStyle = colors.point;\n for (const { interval, row } of rows) {\n drawDiamond(ctx, scale, interval.mean, row);\n }\n\n ctx.restore();\n}\n\n/** Draw one horizontal span at a row. R: `segments(low, i, high, i)`. */\nfunction drawSpan(\n ctx: Context2D,\n scale: Scale,\n low: number,\n high: number,\n row: number,\n): void {\n const y = scale.toPixelY(row);\n ctx.beginPath();\n ctx.moveTo(scale.toPixelX(low), y);\n ctx.lineTo(scale.toPixelX(high), y);\n ctx.stroke();\n}\n\n/** Draw the sample mean. R: `points(mean, i, pch = 18)`, a filled diamond. */\nfunction drawDiamond(\n ctx: Context2D,\n scale: Scale,\n at: number,\n row: number,\n): void {\n const x = scale.toPixelX(at);\n const y = scale.toPixelY(row);\n ctx.beginPath();\n ctx.moveTo(x, y - POINT_RADIUS);\n ctx.lineTo(x + POINT_RADIUS, y);\n ctx.lineTo(x, y + POINT_RADIUS);\n ctx.lineTo(x - POINT_RADIUS, y);\n ctx.fill();\n}\n\n/** Draw the true mean down the panel. R: `abline(v = mean(population))`. */\nfunction drawPopulationMean(\n ctx: Context2D,\n scale: Scale,\n at: number,\n): void {\n if (!Number.isFinite(at)) {\n return;\n }\n const { area } = scale;\n const x = scale.toPixelX(at);\n\n ctx.save();\n ctx.setLineDash([]);\n ctx.strokeStyle = MEAN_LINE_COLOR;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(x, area.top);\n ctx.lineTo(x, area.bottom);\n ctx.stroke();\n ctx.restore();\n}\n",
|
|
31
|
-
"/**\n * The three-panel sampling demonstration: a population, the samples drawn\n * from it, and how their statistic scatters.\n *\n * This is the drawing half of `plot_sampling()` in\n * `../compstatslib/R/sampling_plot.R`. The panels, top to bottom:\n *\n * 1. the population's density, dotted;\n * 2. this draw's samples — each sample's own density in translucent gray,\n * with the density of all of them pooled drawn over the top;\n * 3. a histogram of every statistic drawn so far, this call and all before it.\n *\n * All three share one horizontal window, frozen on the first call at the range\n * of the population. Later calls keep it however wide the population passed to\n * them happens to be, which is what lets the picture stay still while the\n * statistics pile up. A bar or a curve outside that window is clipped.\n *\n * **The state is the caller's.** R returns a `vars` list and its gadget hands\n * it back on the next call, which is how the window stays frozen and the\n * statistics accumulate. Nothing is kept here between calls: `plotSampling`\n * takes the state it was given, returns the state it made, and the caller —\n * `interactiveSampling`, or a demo page — holds it in between. That is the\n * port plan's rule against hidden accumulation.\n *\n * **`replot_population` is not ported.** R declares and documents it, and\n * `interactive_sampling()` passes `FALSE` for it, but `plot_sampling()`'s body\n * never reads it: the population panel is always redrawn. Porting a parameter\n * that does nothing would carry the defect forward as if it were a feature.\n */\n\nimport { extent, mean } from \"../core/arith\";\nimport { histogram } from \"../core/histogram\";\nimport type { Histogram } from \"../core/histogram\";\nimport { kernelDensity } from \"../core/kde\";\nimport type {\n KernelDensityEstimate,\n KernelDensityOptions,\n} from \"../core/kde\";\nimport { seededRng } from \"../core/rng\";\nimport type { Rng } from \"../core/rng\";\nimport { drawSamples } from \"../core/sampling\";\nimport { createScale, drawAxes } from \"./axes\";\nimport type { Extent, Scale } from \"./axes\";\nimport { DOTTED, clearSurface, clipToArea } from \"./draw\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/** Which of the three stacked panels a scale belongs to. */\nexport type SamplingPanel = \"population\" | \"samples\" | \"statistic\";\n\n/**\n * What one draw hands to the next.\n *\n * This is R's `vars` list, less the entries that are arguments anyway: R keeps\n * the population, the sample size and the statistic in there as well, and this\n * port takes all three afresh on every call, so holding them twice would let\n * the two copies disagree.\n */\nexport interface SamplingState {\n /** The left edge of the frozen window. R's `xmin`. */\n readonly xMin: number;\n /** The right edge of the frozen window. R's `xmax`. */\n readonly xMax: number;\n /** Every statistic drawn so far, oldest first. R's `sample_theta`. */\n readonly sampleTheta: readonly number[];\n}\n\n/** What to draw. The interactive layer forwards these untouched. */\nexport interface PlotSamplingOptions {\n /**\n * How many values in each sample. R's `sample_size`.\n *\n * R's `plot_sampling()` has no default here and fails without one; its\n * gadget defaults to 10. This port takes the gadget's default so that\n * `plotSampling(target, population)` draws something, which is the\n * no-argument-works property the port plan asks bundled demos to keep.\n */\n readonly sampleSize?: number;\n /** How many samples this draw takes. R's `reps`, 1 by default. */\n readonly reps?: number;\n /** The statistic to take from each sample. R's `theta`, the mean. */\n readonly theta?: (sample: readonly number[]) => number;\n /**\n * Where the randomness comes from.\n *\n * R reads one global stream, so its repeated draws carry on where the last\n * left off. A caller who draws more than once must pass one generator and\n * keep passing it — the default builds a new one per call, and two calls\n * that each build their own would each start from the beginning.\n *\n * The default is seeded from `Math.random()`, so a demo that says nothing\n * about seeds still gets a different draw each time, as an R session does.\n * Only the seed comes from there: pass `seededRng(42)` and every draw down\n * that stream repeats exactly.\n */\n readonly rng?: Rng;\n /**\n * What the last call returned, or nothing on the first call.\n *\n * R's `vars` argument, which its gadget caches. This is what freezes the\n * window and accumulates the statistics.\n */\n readonly state?: SamplingState | null;\n /**\n * Where every density curve puts its grid.\n *\n * `\"data\"`, the default, is R: each `density()` call spreads its 512 grid\n * points over the range of the values it was given. That is right while the\n * values and the window are of one size.\n *\n * `\"frozen\"` spreads them over the drawn window instead, through R's own\n * `from` and `to` arguments. A population that reaches far outside the\n * window needs this: at 512 points over a range a thousand times the window,\n * one grid step is wider than the whole panel, and the curve draws as a\n * straight line. The samples take the frozen grid as well, for the same\n * reason and so that every curve in the picture is comparable.\n */\n readonly densityWindow?: \"data\" | \"frozen\";\n}\n\n/** Everything this draw produced, for the caller to hold and to read. */\nexport interface PlotSamplingResult {\n /** The state to hand back on the next call. */\n readonly state: SamplingState;\n /** The samples this call drew, in draw order. */\n readonly samples: readonly (readonly number[])[];\n /** The statistic of each of those samples. */\n readonly thetas: readonly number[];\n /**\n * The histogram the third panel drew, or null when there was nothing to\n * count. Handed back so a caller need not bin the statistics again.\n *\n * It counts the statistics inside the window, not the whole pile. The panel\n * clips a bar outside the window anyway, and a statistic it cannot draw must\n * not set the width of the cells either — see `plotSampling`.\n */\n readonly histogram: Histogram | null;\n}\n\n/** R: `sample_size = 10` in `interactive_sampling()`. */\nconst DEFAULT_SAMPLE_SIZE = 10;\n/** R: `reps = 1`. */\nconst DEFAULT_REPS = 1;\n/** How many panels are stacked, and in which order. */\nconst PANELS: readonly SamplingPanel[] = [\"population\", \"samples\", \"statistic\"];\n\n/**\n * Margins inside each panel.\n *\n * R uses `mar = c(2, 2, 1, 1)` under `cex = 0.5`, which is about twelve pixels\n * below and beside each panel. The bottom here is wider because that is where\n * the axis, its ticks and their labels go, and the sides are wide enough to\n * hold the first and last tick label without running off the surface.\n */\nconst PANEL_MARGINS = { top: 8, right: 24, bottom: 28, left: 24 };\n\nconst CURVE_COLOR = \"#000000\";\nconst TEXT_COLOR = \"#000000\";\n/** R: `rgb(0.7, 0.7, 0.7, 0.5)`, one curve per sample. */\nconst SAMPLE_CURVE_COLOR = \"rgba(179, 179, 179, 0.5)\";\n/** R's `hist()` default `col`, with `border = FALSE`. */\nconst BAR_COLOR = \"lightgray\";\n/** R: `lwd = 2` on the population and pooled curves. */\nconst CURVE_WIDTH = 2;\n/** R: `lwd = 1` on each sample's own curve. */\nconst SAMPLE_CURVE_WIDTH = 1;\n\n/**\n * Panel labels.\n *\n * R writes the first two through `boldly()`, which wraps them in `bold()`, and\n * the third as a plain string. R's `cex = 0.5` would put these at about six\n * pixels: the t-test plot already learned that such text is unreadable on a\n * canvas, so these follow that panel's choice of legibility over fidelity.\n */\nconst LABEL_FONT = \"bold 11px sans-serif\";\nconst COUNT_FONT = \"11px sans-serif\";\nconst LABEL_LINE_HEIGHT = 13;\n\n/**\n * Build the scale for one panel.\n *\n * The three panels are stacked in equal bands and share the window, so the\n * same world x lands in the same pixel column in each. The interactive layer\n * and any demo read their geometry from here rather than restating it.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param panel Which band to build.\n * @param window The frozen horizontal window, shared by all three.\n * @param yMax The tallest value the panel has to show. Zero is always the\n * foot of the panel, as it is for a density and for a count.\n * @returns The map between world values and pixels for that panel.\n */\nexport function samplingScale(\n width: number,\n height: number,\n panel: SamplingPanel,\n window: Extent,\n yMax: number,\n): Scale {\n const band = height / PANELS.length;\n const index = PANELS.indexOf(panel);\n const top = index * band;\n\n return createScale({\n width,\n height,\n x: window,\n y: { min: 0, max: yMax },\n margins: {\n top: top + PANEL_MARGINS.top,\n bottom: height - (top + band) + PANEL_MARGINS.bottom,\n left: PANEL_MARGINS.left,\n right: PANEL_MARGINS.right,\n },\n });\n}\n\n/**\n * Draw one round of sampling, and hand back what the next round needs.\n *\n * A population of fewer than two values has no density, and R's `density()`\n * stops there. A library cannot stop: this draws the three panels and their\n * axes with nothing in them, takes no samples, and returns a state with the\n * window set and no statistics. The same holds for the samples themselves —\n * a sample of one value gets no curve of its own, though it still counts\n * toward the pooled one and toward the histogram.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param population The values to sample from.\n * @param options The sample size, the repetitions, the statistic, the\n * generator, and the state of the last call.\n * @returns This draw's samples and statistics, the histogram drawn from the\n * accumulated statistics, and the state to pass back next time.\n * @throws RangeError If the sample size is larger than the population, or if\n * a count is negative or fractional — both from `drawSamples`, which is\n * where R's own refusals live.\n */\nexport function plotSampling(\n target: PlotTarget,\n population: readonly number[],\n options: PlotSamplingOptions = {},\n): PlotSamplingResult {\n const { ctx, width, height } = resolveTarget(target);\n const {\n sampleSize = DEFAULT_SAMPLE_SIZE,\n reps = DEFAULT_REPS,\n theta = mean,\n rng = seededRng(Math.floor(Math.random() * 0x100000000)),\n state = null,\n densityWindow = \"data\",\n } = options;\n\n const window = frozenWindow(population, state);\n const grid: KernelDensityOptions =\n densityWindow === \"frozen\" ? { from: window.min, to: window.max } : {};\n const drawable = population.length >= 2;\n const draw = drawable\n ? drawSamples(rng, population, { sampleSize, reps, theta })\n : { samples: [] as readonly (readonly number[])[], thetas: [] as readonly number[] };\n const sampleTheta = [...(state?.sampleTheta ?? []), ...draw.thetas];\n\n clearSurface(ctx, width, height);\n\n drawDensityPanel(\n ctx,\n width,\n height,\n \"population\",\n window,\n drawable ? kernelDensity(population, grid) : null,\n [],\n \"Population Distribution\",\n );\n\n const pooled = draw.samples.flat();\n drawDensityPanel(\n ctx,\n width,\n height,\n \"samples\",\n window,\n pooled.length >= 2 ? kernelDensity(pooled, grid) : null,\n draw.samples\n .filter((sample) => sample.length >= 2)\n .map((sample) => kernelDensity(sample, grid)),\n \"Sample Distribution\",\n );\n\n // Only the statistics inside the window are binned. R bins the whole pile,\n // and its cell edges therefore follow the widest statistic drawn so far,\n // even though its device clips the bar that holds it. That is unreadable\n // under a population whose statistic does not settle: one sample mean out at\n // 800 makes every cell 100 units wide, and a 124-wide panel then shows one\n // flat bar. The count in the label still reports the whole pile.\n const countable = sampleTheta.filter(\n (theta) => theta >= window.min && theta <= window.max,\n );\n const counted = countable.length > 0 ? histogram(countable) : null;\n drawStatisticPanel(ctx, width, height, window, counted, sampleTheta.length);\n\n return {\n state: { xMin: window.min, xMax: window.max, sampleTheta },\n samples: draw.samples,\n thetas: draw.thetas,\n histogram: counted,\n };\n}\n\n/**\n * Return the window to draw in.\n *\n * R reads `xmin`/`xmax` back out of `vars` whenever it has them and only falls\n * back to the range of the population on the first call, so a population that\n * arrives wider later does not move the picture.\n */\nfunction frozenWindow(\n population: readonly number[],\n state: SamplingState | null,\n): Extent {\n if (state !== null) {\n return { min: state.xMin, max: state.xMax };\n }\n if (population.length === 0) {\n return { min: 0, max: 1 };\n }\n const [min, max] = extent(population);\n return { min, max };\n}\n\n/**\n * Draw one of the two density panels.\n *\n * The panel's height comes from the curve R plots first — the population's in\n * the top panel, the pooled samples' in the middle one. Each sample's own\n * curve is drawn against that same height and clipped, exactly as R's device\n * clips it, so a narrow sample with a tall peak cannot escape its panel.\n */\nfunction drawDensityPanel(\n ctx: Context2D,\n width: number,\n height: number,\n panel: SamplingPanel,\n window: Extent,\n main: KernelDensityEstimate | null,\n perSample: readonly KernelDensityEstimate[],\n label: string,\n): void {\n const peak = main === null ? 1 : highestOf(main.y);\n const scale = samplingScale(width, height, panel, window, peak);\n drawAxes(ctx, scale, { frame: false, yAxis: false });\n // The label goes on even when there is no curve under it, so an empty\n // picture still says which panel is which.\n drawLabel(ctx, scale, [label], peak / 2, LABEL_FONT);\n\n if (main === null) {\n return;\n }\n\n // R plots the pooled curve, draws the per-sample curves over it, then\n // strokes the pooled curve again to bring it back to the front.\n drawCurve(ctx, scale, main, CURVE_COLOR, CURVE_WIDTH, panel === \"population\");\n for (const estimate of perSample) {\n drawCurve(\n ctx,\n scale,\n estimate,\n SAMPLE_CURVE_COLOR,\n SAMPLE_CURVE_WIDTH,\n false,\n );\n }\n if (panel === \"samples\") {\n // R's second `lines(samd, ...)`. It belongs to this panel alone: the\n // population panel is drawn once, and re-stroking it would put a solid\n // curve over the dotted one.\n drawCurve(ctx, scale, main, CURVE_COLOR, CURVE_WIDTH, false);\n }\n}\n\n/** Draw the histogram of every statistic drawn so far. */\nfunction drawStatisticPanel(\n ctx: Context2D,\n width: number,\n height: number,\n window: Extent,\n counted: Histogram | null,\n drawnSoFar: number,\n): void {\n const tallest = counted === null ? 1 : highestOf(counted.counts);\n const scale = samplingScale(width, height, \"statistic\", window, tallest);\n drawAxes(ctx, scale, { frame: false, yAxis: false });\n\n if (counted !== null) {\n drawBars(ctx, scale, counted);\n }\n\n // R: paste(\"Sampling Statistic\", \"\\n(\", length(sample_theta), \")\"), whose\n // single-space joins and inner line break are kept exactly.\n drawLabel(\n ctx,\n scale,\n [\"Sampling Statistic \", `( ${drawnSoFar} )`],\n tallest / 2,\n COUNT_FONT,\n );\n}\n\n/** Draw a density estimate as a line, clipped to its panel. */\nfunction drawCurve(\n ctx: Context2D,\n scale: Scale,\n estimate: KernelDensityEstimate,\n color: string,\n lineWidth: number,\n dotted: boolean,\n): void {\n const { area } = scale;\n ctx.save();\n clipToArea(ctx, area);\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(dotted ? DOTTED : []);\n ctx.beginPath();\n estimate.x.forEach((x, index) => {\n const px = scale.toPixelX(x);\n const py = scale.toPixelY(estimate.y[index] as number);\n if (index === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n });\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * Draw the histogram bars, clipped to the panel.\n *\n * R's call passes `border = FALSE`, so each bar is a filled rectangle with no\n * outline. The bars are clipped because the window belongs to the population:\n * a statistic can land outside it, and R's device clips the bar that holds it.\n */\nfunction drawBars(ctx: Context2D, scale: Scale, counted: Histogram): void {\n const { area } = scale;\n const foot = scale.toPixelY(0);\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.setLineDash([]);\n ctx.fillStyle = BAR_COLOR;\n counted.counts.forEach((count, index) => {\n const left = scale.toPixelX(counted.breaks[index] as number);\n const right = scale.toPixelX(counted.breaks[index + 1] as number);\n const top = scale.toPixelY(count);\n ctx.fillRect(left, top, right - left, foot - top);\n });\n ctx.restore();\n}\n\n/**\n * Write a panel's label at the left of the window, halfway up its content.\n *\n * R: `text(xmin, max(y)/2, label, adj = 0)` — left-justified at the window's\n * left edge and centerd on that height.\n */\nfunction drawLabel(\n ctx: Context2D,\n scale: Scale,\n lines: readonly string[],\n at: number,\n font: string,\n): void {\n ctx.save();\n ctx.setLineDash([]);\n ctx.fillStyle = TEXT_COLOR;\n ctx.font = font;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n lines.forEach((line, index) => {\n ctx.fillText(\n line,\n scale.area.left,\n scale.toPixelY(at) + index * LABEL_LINE_HEIGHT,\n );\n });\n ctx.restore();\n}\n\n/** Return the largest value, or 1 for an empty or flat set. */\nfunction highestOf(values: readonly number[]): number {\n const highest = values.reduce((high, value) => (value > high ? value : high), 0);\n return highest > 0 ? highest : 1;\n}\n",
|
|
31
|
+
"/**\n * The three-panel sampling demonstration: a population, the samples drawn\n * from it, and how their statistic scatters.\n *\n * This is the drawing half of `plot_sampling()` in\n * `../compstatslib/R/sampling_plot.R`. The panels, top to bottom:\n *\n * 1. the population's density, dotted;\n * 2. this draw's samples — each sample's own density in translucent gray,\n * with the density of all of them pooled drawn over the top;\n * 3. a histogram of every statistic drawn so far, this call and all before it.\n *\n * All three share one horizontal window, frozen on the first call at the range\n * of the population. Later calls keep it however wide the population passed to\n * them happens to be, which is what lets the picture stay still while the\n * statistics pile up. A bar or a curve outside that window is clipped.\n *\n * **The state is the caller's.** R returns a `vars` list and its gadget hands\n * it back on the next call, which is how the window stays frozen and the\n * statistics accumulate. Nothing is kept here between calls: `plotSampling`\n * takes the state it was given, returns the state it made, and the caller —\n * `interactiveSampling`, or a demo page — holds it in between. That is the\n * port plan's rule against hidden accumulation.\n *\n * **`replot_population` is not ported.** R declares and documents it, and\n * `interactive_sampling()` passes `FALSE` for it, but `plot_sampling()`'s body\n * never reads it: the population panel is always redrawn. Porting a parameter\n * that does nothing would carry the defect forward as if it were a feature.\n */\n\nimport { extent, mean } from \"../core/arith\";\nimport { histogram } from \"../core/histogram\";\nimport type { Histogram } from \"../core/histogram\";\nimport { kernelDensity } from \"../core/kde\";\nimport type {\n KernelDensityEstimate,\n KernelDensityOptions,\n} from \"../core/kde\";\nimport { seededRng } from \"../core/rng\";\nimport type { Rng } from \"../core/rng\";\nimport { drawSamples } from \"../core/sampling\";\nimport { createScale, drawAxes } from \"./axes\";\nimport type { Extent, Scale } from \"./axes\";\nimport { DOTTED, clearSurface, clipToArea } from \"./draw\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/** Which of the three stacked panels a scale belongs to. */\nexport type SamplingPanel = \"population\" | \"samples\" | \"statistic\";\n\n/**\n * What one draw hands to the next.\n *\n * This is R's `vars` list, less the entries that are arguments anyway: R keeps\n * the population, the sample size and the statistic in there as well, and this\n * port takes all three afresh on every call, so holding them twice would let\n * the two copies disagree.\n */\nexport interface SamplingState {\n /** The left edge of the frozen window. R's `xmin`. */\n readonly xMin: number;\n /** The right edge of the frozen window. R's `xmax`. */\n readonly xMax: number;\n /** Every statistic drawn so far, oldest first. R's `sample_theta`. */\n readonly sampleTheta: readonly number[];\n}\n\n/** What to draw. The interactive layer forwards these untouched. */\nexport interface PlotSamplingOptions {\n /**\n * How many values in each sample. R's `sample_size`.\n *\n * R's `plot_sampling()` has no default here and fails without one; its\n * gadget defaults to 10. This port takes the gadget's default so that\n * `plotSampling(target, population)` draws something, which is the\n * no-argument-works property the port plan asks bundled demos to keep.\n */\n readonly sampleSize?: number;\n /** How many samples this draw takes. R's `reps`, 1 by default. */\n readonly reps?: number;\n /** The statistic to take from each sample. R's `theta`, the mean. */\n readonly theta?: (sample: readonly number[]) => number;\n /**\n * Where the randomness comes from.\n *\n * R reads one global stream, so its repeated draws carry on where the last\n * left off. A caller who draws more than once must pass one generator and\n * keep passing it — the default builds a new one per call, and two calls\n * that each build their own would each start from the beginning.\n *\n * The default is seeded from `Math.random()`, so a demo that says nothing\n * about seeds still gets a different draw each time, as an R session does.\n * Only the seed comes from there: pass `seededRng(42)` and every draw down\n * that stream repeats exactly.\n */\n readonly rng?: Rng;\n /**\n * What the last call returned, or nothing on the first call.\n *\n * R's `vars` argument, which its gadget caches. This is what freezes the\n * window and accumulates the statistics.\n */\n readonly state?: SamplingState | null;\n /**\n * Where every density curve puts its grid.\n *\n * `\"data\"`, the default, is R: each `density()` call spreads its 512 grid\n * points over the range of the values it was given. That is right while the\n * values and the window are of one size.\n *\n * `\"frozen\"` spreads them over the drawn window instead, through R's own\n * `from` and `to` arguments. A population that reaches far outside the\n * window needs this: at 512 points over a range a thousand times the window,\n * one grid step is wider than the whole panel, and the curve draws as a\n * straight line. The samples take the frozen grid as well, for the same\n * reason and so that every curve in the picture is comparable.\n */\n readonly densityWindow?: \"data\" | \"frozen\";\n /**\n * Mark the chosen statistic on all three panels. Nothing is marked by\n * default, and the picture is then what it was before this option existed.\n */\n readonly mark?: SamplingMarkOptions;\n}\n\n/**\n * What the caller knows about the statistic that the panels cannot compute.\n *\n * The library sees the samples and the pile, so it takes those two numbers\n * itself. It cannot see the population's truth: that is a fact about the shape\n * the values came from, not about the values. A Cauchy population has no mean,\n * and the arithmetic mean of any finite draw from it is still a number, so the\n * caller must say which of the two the panel shows.\n */\nexport interface SamplingMarkOptions {\n /** A place on the axis, or a distance from a center. */\n readonly kind: \"location\" | \"spread\";\n /** The true value in the population, or null when the population has none. */\n readonly populationValue: number | null;\n /**\n * Where the population's span hangs from. Read only when `kind` is\n * `\"spread\"`. A spread with a value but no center draws nothing: a span at\n * an invented center would say something the caller did not say.\n */\n readonly populationCenter?: number | null;\n /** What the panel calls the statistic, in the singular: `\"mean\"`. */\n readonly label: string;\n}\n\n/** The three numbers the marks drew. Null where a number does not exist. */\nexport interface SamplingMarks {\n /** What the caller declared, copied back. */\n readonly population: number | null;\n /** The statistic of this call's pooled sample. Null when reps is 0. */\n readonly sample: number | null;\n /**\n * The average of every statistic drawn so far. Null on an empty pile.\n *\n * It counts the whole pile, including the statistics outside the window that\n * the histogram drops. Under a population whose statistic does not settle,\n * the average therefore walks, and it can walk out of the window.\n */\n readonly pile: number | null;\n}\n\n/** Everything this draw produced, for the caller to hold and to read. */\nexport interface PlotSamplingResult {\n /** The state to hand back on the next call. */\n readonly state: SamplingState;\n /** The samples this call drew, in draw order. */\n readonly samples: readonly (readonly number[])[];\n /** The statistic of each of those samples. */\n readonly thetas: readonly number[];\n /**\n * The histogram the third panel drew, or null when there was nothing to\n * count. Handed back so a caller need not bin the statistics again.\n *\n * It counts the statistics inside the window, not the whole pile. The panel\n * clips a bar outside the window anyway, and a statistic it cannot draw must\n * not set the width of the cells either — see `plotSampling`.\n */\n readonly histogram: Histogram | null;\n /** The three numbers the marks drew, or null when no mark was asked for. */\n readonly marks: SamplingMarks | null;\n}\n\n/** R: `sample_size = 10` in `interactive_sampling()`. */\nconst DEFAULT_SAMPLE_SIZE = 10;\n/** R: `reps = 1`. */\nconst DEFAULT_REPS = 1;\n/** How many panels are stacked, and in which order. */\nconst PANELS: readonly SamplingPanel[] = [\"population\", \"samples\", \"statistic\"];\n\n/**\n * Margins inside each panel.\n *\n * R uses `mar = c(2, 2, 1, 1)` under `cex = 0.5`, which is about twelve pixels\n * below and beside each panel. The bottom here is wider because that is where\n * the axis, its ticks and their labels go, and the sides are wide enough to\n * hold the first and last tick label without running off the surface.\n */\nconst PANEL_MARGINS = { top: 8, right: 24, bottom: 28, left: 24 };\n\nconst CURVE_COLOR = \"#000000\";\nconst TEXT_COLOR = \"#000000\";\n/** R: `rgb(0.7, 0.7, 0.7, 0.5)`, one curve per sample. */\nconst SAMPLE_CURVE_COLOR = \"rgba(179, 179, 179, 0.5)\";\n/** R's `hist()` default `col`, with `border = FALSE`. */\nconst BAR_COLOR = \"lightgray\";\n/** R: `lwd = 2` on the population and pooled curves. */\nconst CURVE_WIDTH = 2;\n/** R: `lwd = 1` on each sample's own curve. */\nconst SAMPLE_CURVE_WIDTH = 1;\n\n/**\n * The mark of the chosen statistic.\n *\n * The color is the one the library already gives to a quantity computed from\n * data, as on the regression line and the logit curve. Each sample's own mark\n * takes the same color at half alpha and the thinner line, which is what the\n * per-sample curves do.\n */\nconst MARK_COLOR = \"cornflowerblue\";\nconst SAMPLE_MARK_COLOR = \"rgba(100, 149, 237, 0.5)\";\nconst MARK_WIDTH = 2;\nconst SAMPLE_MARK_WIDTH = 1;\n/** Half the height of the tick at each end of a span, in pixels. */\nconst MARK_TICK = 4;\n/** The height and the depth of the caret that stands for a mark off the window. */\nconst CARET_SIZE = 6;\n\n/**\n * Panel labels.\n *\n * R writes the first two through `boldly()`, which wraps them in `bold()`, and\n * the third as a plain string. R's `cex = 0.5` would put these at about six\n * pixels: the t-test plot already learned that such text is unreadable on a\n * canvas, so these follow that panel's choice of legibility over fidelity.\n */\nconst LABEL_FONT = \"bold 11px sans-serif\";\nconst COUNT_FONT = \"11px sans-serif\";\nconst LABEL_LINE_HEIGHT = 13;\n\n/**\n * Build the scale for one panel.\n *\n * The three panels are stacked in equal bands and share the window, so the\n * same world x lands in the same pixel column in each. The interactive layer\n * and any demo read their geometry from here rather than restating it.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param panel Which band to build.\n * @param window The frozen horizontal window, shared by all three.\n * @param yMax The tallest value the panel has to show. Zero is always the\n * foot of the panel, as it is for a density and for a count.\n * @returns The map between world values and pixels for that panel.\n */\nexport function samplingScale(\n width: number,\n height: number,\n panel: SamplingPanel,\n window: Extent,\n yMax: number,\n): Scale {\n const band = height / PANELS.length;\n const index = PANELS.indexOf(panel);\n const top = index * band;\n\n return createScale({\n width,\n height,\n x: window,\n y: { min: 0, max: yMax },\n margins: {\n top: top + PANEL_MARGINS.top,\n bottom: height - (top + band) + PANEL_MARGINS.bottom,\n left: PANEL_MARGINS.left,\n right: PANEL_MARGINS.right,\n },\n });\n}\n\n/**\n * Draw one round of sampling, and hand back what the next round needs.\n *\n * A population of fewer than two values has no density, and R's `density()`\n * stops there. A library cannot stop: this draws the three panels and their\n * axes with nothing in them, takes no samples, and returns a state with the\n * window set and no statistics. The same holds for the samples themselves —\n * a sample of one value gets no curve of its own, though it still counts\n * toward the pooled one and toward the histogram.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param population The values to sample from.\n * @param options The sample size, the repetitions, the statistic, the\n * generator, and the state of the last call.\n * @returns This draw's samples and statistics, the histogram drawn from the\n * accumulated statistics, and the state to pass back next time.\n * @throws RangeError If the sample size is larger than the population, or if\n * a count is negative or fractional — both from `drawSamples`, which is\n * where R's own refusals live.\n */\nexport function plotSampling(\n target: PlotTarget,\n population: readonly number[],\n options: PlotSamplingOptions = {},\n): PlotSamplingResult {\n const { ctx, width, height } = resolveTarget(target);\n const {\n sampleSize = DEFAULT_SAMPLE_SIZE,\n reps = DEFAULT_REPS,\n theta = mean,\n rng = seededRng(Math.floor(Math.random() * 0x100000000)),\n state = null,\n densityWindow = \"data\",\n mark,\n } = options;\n\n const window = frozenWindow(population, state);\n const grid: KernelDensityOptions =\n densityWindow === \"frozen\" ? { from: window.min, to: window.max } : {};\n const drawable = population.length >= 2;\n const draw = drawable\n ? drawSamples(rng, population, { sampleSize, reps, theta })\n : { samples: [] as readonly (readonly number[])[], thetas: [] as readonly number[] };\n const sampleTheta = [...(state?.sampleTheta ?? []), ...draw.thetas];\n\n const pooled = draw.samples.flat();\n const marks = markNumbers(mark, theta, pooled, sampleTheta);\n\n clearSurface(ctx, width, height);\n\n drawDensityPanel(\n ctx,\n width,\n height,\n \"population\",\n window,\n drawable ? kernelDensity(population, grid) : null,\n [],\n \"Population Distribution\",\n populationMarks(mark),\n mark !== undefined && mark.populationValue === null\n ? `no true ${mark.label}`\n : null,\n );\n\n drawDensityPanel(\n ctx,\n width,\n height,\n \"samples\",\n window,\n pooled.length >= 2 ? kernelDensity(pooled, grid) : null,\n draw.samples\n .filter((sample) => sample.length >= 2)\n .map((sample) => kernelDensity(sample, grid)),\n \"Sample Distribution\",\n sampleMarks(mark, draw.samples, draw.thetas, pooled, marks),\n null,\n );\n\n // Only the statistics inside the window are binned. R bins the whole pile,\n // and its cell edges therefore follow the widest statistic drawn so far,\n // even though its device clips the bar that holds it. That is unreadable\n // under a population whose statistic does not settle: one sample mean out at\n // 800 makes every cell 100 units wide, and a 124-wide panel then shows one\n // flat bar. The count in the label still reports the whole pile.\n const countable = sampleTheta.filter(\n (theta) => theta >= window.min && theta <= window.max,\n );\n const counted = countable.length > 0 ? histogram(countable) : null;\n drawStatisticPanel(\n ctx,\n width,\n height,\n window,\n counted,\n sampleTheta.length,\n // The third panel's axis holds the value of the statistic itself, so the\n // pile average marks a place there even when the statistic is a spread.\n marks === null || marks.pile === null\n ? []\n : [{ kind: \"location\", value: marks.pile, center: 0, faint: false }],\n );\n\n return {\n state: { xMin: window.min, xMax: window.max, sampleTheta },\n samples: draw.samples,\n thetas: draw.thetas,\n histogram: counted,\n marks,\n };\n}\n\n/** One mark to draw in one panel. */\ninterface PanelMark {\n /** A place on the axis, or a distance from a center. */\n readonly kind: \"location\" | \"spread\";\n /** The value of the statistic. */\n readonly value: number;\n /** Where a span hangs from. A location mark ignores it. */\n readonly center: number;\n /** A per-sample mark, which draws thinner and paler. */\n readonly faint: boolean;\n}\n\n/**\n * Work out the three numbers the marks report.\n *\n * The population's value is the caller's. The sample's value is the statistic\n * of this call's pooled sample, which is the curve the middle panel draws\n * solid. The pile's value averages every statistic drawn so far.\n */\nfunction markNumbers(\n mark: SamplingMarkOptions | undefined,\n theta: (sample: readonly number[]) => number,\n pooled: readonly number[],\n sampleTheta: readonly number[],\n): SamplingMarks | null {\n if (mark === undefined) {\n return null;\n }\n return {\n population: mark.populationValue,\n sample: pooled.length > 0 ? theta(pooled) : null,\n pile: sampleTheta.length > 0 ? mean(sampleTheta) : null,\n };\n}\n\n/** The mark the population panel draws, if the population has one. */\nfunction populationMarks(\n mark: SamplingMarkOptions | undefined,\n): readonly PanelMark[] {\n if (mark === undefined || mark.populationValue === null) {\n return [];\n }\n if (mark.kind === \"location\") {\n return [\n { kind: \"location\", value: mark.populationValue, center: 0, faint: false },\n ];\n }\n const center = mark.populationCenter;\n if (center === null || center === undefined) {\n return [];\n }\n return [{ kind: \"spread\", value: mark.populationValue, center, faint: false }];\n}\n\n/**\n * The marks the middle panel draws: one faint mark per sample of this call,\n * and one solid mark for the pooled sample. The solid one is last, so it lands\n * on top of the faint ones. With one repetition the two coincide.\n */\nfunction sampleMarks(\n mark: SamplingMarkOptions | undefined,\n samples: readonly (readonly number[])[],\n thetas: readonly number[],\n pooled: readonly number[],\n marks: SamplingMarks | null,\n): readonly PanelMark[] {\n if (mark === undefined || marks === null || marks.sample === null) {\n return [];\n }\n const perSample = samples.map((sample, index) => ({\n kind: mark.kind,\n value: thetas[index] as number,\n center: sample.length > 0 ? mean(sample) : 0,\n faint: true,\n }));\n return [\n ...perSample,\n {\n kind: mark.kind,\n value: marks.sample,\n center: pooled.length > 0 ? mean(pooled) : 0,\n faint: false,\n },\n ];\n}\n\n/**\n * Return the window to draw in.\n *\n * R reads `xmin`/`xmax` back out of `vars` whenever it has them and only falls\n * back to the range of the population on the first call, so a population that\n * arrives wider later does not move the picture.\n */\nfunction frozenWindow(\n population: readonly number[],\n state: SamplingState | null,\n): Extent {\n if (state !== null) {\n return { min: state.xMin, max: state.xMax };\n }\n if (population.length === 0) {\n return { min: 0, max: 1 };\n }\n const [min, max] = extent(population);\n return { min, max };\n}\n\n/**\n * Draw one of the two density panels.\n *\n * The panel's height comes from the curve R plots first — the population's in\n * the top panel, the pooled samples' in the middle one. Each sample's own\n * curve is drawn against that same height and clipped, exactly as R's device\n * clips it, so a narrow sample with a tall peak cannot escape its panel.\n */\nfunction drawDensityPanel(\n ctx: Context2D,\n width: number,\n height: number,\n panel: SamplingPanel,\n window: Extent,\n main: KernelDensityEstimate | null,\n perSample: readonly KernelDensityEstimate[],\n label: string,\n marks: readonly PanelMark[],\n note: string | null,\n): void {\n const peak = main === null ? 1 : highestOf(main.y);\n const scale = samplingScale(width, height, panel, window, peak);\n drawAxes(ctx, scale, { frame: false, yAxis: false });\n // The label goes on even when there is no curve under it, so an empty\n // picture still says which panel is which.\n drawLabel(ctx, scale, [label], peak / 2, LABEL_FONT);\n if (note !== null) {\n drawMarkNote(ctx, scale, note, peak / 2);\n }\n\n if (main !== null) {\n // R plots the pooled curve, draws the per-sample curves over it, then\n // strokes the pooled curve again to bring it back to the front.\n drawCurve(\n ctx,\n scale,\n main,\n CURVE_COLOR,\n CURVE_WIDTH,\n panel === \"population\",\n );\n for (const estimate of perSample) {\n drawCurve(\n ctx,\n scale,\n estimate,\n SAMPLE_CURVE_COLOR,\n SAMPLE_CURVE_WIDTH,\n false,\n );\n }\n if (panel === \"samples\") {\n // R's second `lines(samd, ...)`. It belongs to this panel alone: the\n // population panel is drawn once, and re-stroking it would put a solid\n // curve over the dotted one.\n drawCurve(ctx, scale, main, CURVE_COLOR, CURVE_WIDTH, false);\n }\n }\n\n // The marks go last, so they sit on top of every curve.\n for (const mark of marks) {\n drawMark(ctx, scale, window, mark);\n }\n}\n\n/** Draw the histogram of every statistic drawn so far. */\nfunction drawStatisticPanel(\n ctx: Context2D,\n width: number,\n height: number,\n window: Extent,\n counted: Histogram | null,\n drawnSoFar: number,\n marks: readonly PanelMark[],\n): void {\n const tallest = counted === null ? 1 : highestOf(counted.counts);\n const scale = samplingScale(width, height, \"statistic\", window, tallest);\n drawAxes(ctx, scale, { frame: false, yAxis: false });\n\n if (counted !== null) {\n drawBars(ctx, scale, counted);\n }\n\n for (const mark of marks) {\n drawMark(ctx, scale, window, mark);\n }\n\n // R: paste(\"Sampling Statistic\", \"\\n(\", length(sample_theta), \")\"), whose\n // single-space joins and inner line break are kept exactly.\n drawLabel(\n ctx,\n scale,\n [\"Sampling Statistic \", `( ${drawnSoFar} )`],\n tallest / 2,\n COUNT_FONT,\n );\n}\n\n/** Draw a density estimate as a line, clipped to its panel. */\nfunction drawCurve(\n ctx: Context2D,\n scale: Scale,\n estimate: KernelDensityEstimate,\n color: string,\n lineWidth: number,\n dotted: boolean,\n): void {\n const { area } = scale;\n ctx.save();\n clipToArea(ctx, area);\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(dotted ? DOTTED : []);\n ctx.beginPath();\n estimate.x.forEach((x, index) => {\n const px = scale.toPixelX(x);\n const py = scale.toPixelY(estimate.y[index] as number);\n if (index === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n });\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * Draw the histogram bars, clipped to the panel.\n *\n * R's call passes `border = FALSE`, so each bar is a filled rectangle with no\n * outline. The bars are clipped because the window belongs to the population:\n * a statistic can land outside it, and R's device clips the bar that holds it.\n */\nfunction drawBars(ctx: Context2D, scale: Scale, counted: Histogram): void {\n const { area } = scale;\n const foot = scale.toPixelY(0);\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.setLineDash([]);\n ctx.fillStyle = BAR_COLOR;\n counted.counts.forEach((count, index) => {\n const left = scale.toPixelX(counted.breaks[index] as number);\n const right = scale.toPixelX(counted.breaks[index + 1] as number);\n const top = scale.toPixelY(count);\n ctx.fillRect(left, top, right - left, foot - top);\n });\n ctx.restore();\n}\n\n/**\n * Draw one mark on one panel.\n *\n * A location mark is a vertical line at its value. A spread is a span from its\n * center out to that distance on each side, with a tick at each end, because a\n * distance drawn as a place says nothing.\n *\n * A value outside the frozen window gets a caret at that edge instead. The\n * window belongs to the population and never moves, so a mark can fall off the\n * picture. A clipped line and an absent line look the same, and a population\n * whose statistic does not settle produces both.\n */\nfunction drawMark(\n ctx: Context2D,\n scale: Scale,\n window: Extent,\n mark: PanelMark,\n): void {\n const color = mark.faint ? SAMPLE_MARK_COLOR : MARK_COLOR;\n const lineWidth = mark.faint ? SAMPLE_MARK_WIDTH : MARK_WIDTH;\n\n if (mark.kind === \"location\") {\n if (isInside(window, mark.value)) {\n drawMarkLine(ctx, scale, mark.value, color, lineWidth);\n } else {\n drawCaret(ctx, scale, mark.value > window.max, color);\n }\n return;\n }\n\n const low = mark.center - mark.value;\n const high = mark.center + mark.value;\n drawMarkSpan(ctx, scale, low, high, color, lineWidth);\n if (!isInside(window, low)) {\n drawCaret(ctx, scale, false, color);\n }\n if (!isInside(window, high)) {\n drawCaret(ctx, scale, true, color);\n }\n}\n\n/** Is a value inside the frozen window? */\nfunction isInside(window: Extent, value: number): boolean {\n return value >= window.min && value <= window.max;\n}\n\n/** Draw a vertical line the full height of one panel. */\nfunction drawMarkLine(\n ctx: Context2D,\n scale: Scale,\n value: number,\n color: string,\n lineWidth: number,\n): void {\n const { area } = scale;\n const px = scale.toPixelX(value);\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.setLineDash([]);\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.beginPath();\n ctx.moveTo(px, area.top);\n ctx.lineTo(px, area.bottom);\n ctx.stroke();\n ctx.restore();\n}\n\n/** Draw a horizontal span across the middle of one panel, ticked at each end. */\nfunction drawMarkSpan(\n ctx: Context2D,\n scale: Scale,\n low: number,\n high: number,\n color: string,\n lineWidth: number,\n): void {\n const { area } = scale;\n const y = (area.top + area.bottom) / 2;\n const left = scale.toPixelX(low);\n const right = scale.toPixelX(high);\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.setLineDash([]);\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.beginPath();\n ctx.moveTo(left, y);\n ctx.lineTo(right, y);\n ctx.moveTo(left, y - MARK_TICK);\n ctx.lineTo(left, y + MARK_TICK);\n ctx.moveTo(right, y - MARK_TICK);\n ctx.lineTo(right, y + MARK_TICK);\n ctx.stroke();\n ctx.restore();\n}\n\n/** Draw a triangle at one edge of a panel, pointing out of the window. */\nfunction drawCaret(\n ctx: Context2D,\n scale: Scale,\n atRight: boolean,\n color: string,\n): void {\n const { area } = scale;\n const y = (area.top + area.bottom) / 2;\n const tip = atRight ? area.right : area.left;\n const base = atRight ? tip - CARET_SIZE : tip + CARET_SIZE;\n\n ctx.save();\n clipToArea(ctx, area);\n ctx.setLineDash([]);\n ctx.fillStyle = color;\n ctx.beginPath();\n ctx.moveTo(tip, y);\n ctx.lineTo(base, y - CARET_SIZE / 2);\n ctx.lineTo(base, y + CARET_SIZE / 2);\n ctx.fill();\n ctx.restore();\n}\n\n/**\n * Write the note that says the population has no such statistic.\n *\n * It goes under the panel's own label, at the same left edge, so the reader\n * finds it where the panel is named. It takes the mark color, because it\n * stands in place of the mark.\n */\nfunction drawMarkNote(\n ctx: Context2D,\n scale: Scale,\n note: string,\n at: number,\n): void {\n ctx.save();\n ctx.setLineDash([]);\n ctx.fillStyle = MARK_COLOR;\n ctx.font = COUNT_FONT;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(note, scale.area.left, scale.toPixelY(at) + LABEL_LINE_HEIGHT);\n ctx.restore();\n}\n\n/**\n * Write a panel's label at the left of the window, halfway up its content.\n *\n * R: `text(xmin, max(y)/2, label, adj = 0)` — left-justified at the window's\n * left edge and centerd on that height.\n */\nfunction drawLabel(\n ctx: Context2D,\n scale: Scale,\n lines: readonly string[],\n at: number,\n font: string,\n): void {\n ctx.save();\n ctx.setLineDash([]);\n ctx.fillStyle = TEXT_COLOR;\n ctx.font = font;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n lines.forEach((line, index) => {\n ctx.fillText(\n line,\n scale.area.left,\n scale.toPixelY(at) + index * LABEL_LINE_HEIGHT,\n );\n });\n ctx.restore();\n}\n\n/** Return the largest value, or 1 for an empty or flat set. */\nfunction highestOf(values: readonly number[]): number {\n const highest = values.reduce((high, value) => (value > high ? value : high), 0);\n return highest > 0 ? highest : 1;\n}\n",
|
|
32
32
|
"/**\n * The PCA plot: the points, and an arrow along each principal component.\n *\n * This is the drawing half of `plot_pca()` in `../compstatslib/R/pca_plot.R`.\n * Every number it draws comes from `principalComponents` in\n * `src/core/pca.ts`; this module computes no statistics of its own.\n *\n * Two things here differ from every earlier plot in this port.\n *\n * **The window keeps equal units on both axes.** R's call passes `asp = 1`,\n * which makes a right angle on the data look like a right angle on screen —\n * the whole point of a picture about perpendicular components. R holds the\n * limits it was given on whichever axis constrains the fit and widens the\n * other about its middle; `pcaScale` does the same. Measured from R on a null\n * device with `xlim = ylim = c(-50, 50)`: a 10 by 5 inch device reports\n * `par(\"usr\")` of `-149.696 149.696 -54 54`, and a 5 by 10 inch device\n * reports `-54 54 -117.191 117.191`.\n *\n * **Mean-centering is not a statistical option.** It moves the arrows'\n * anchor and nothing else. The components are the same either way, because\n * R's `prcomp` centers internally whatever it is handed (fixture F7 shows the\n * two runs agreeing bit for bit), and the points on screen are the raw ones —\n * R plots `points`, not `mc_points`.\n */\n\nimport { principalComponents } from \"../core/pca\";\nimport type { PcaResult } from \"../core/pca\";\nimport type { Point } from \"../core/regression\";\nimport { DEFAULT_MARGINS, createScale, drawAxes, extentOf } from \"./axes\";\nimport type { Extent, Scale } from \"./axes\";\nimport { DOTTED, clearSurface, clipToArea, drawArrow, drawDots } from \"./draw\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/** R's `plot_pca()` arguments, less the points. */\nexport interface PlotPcaOptions {\n /**\n * Anchor the arrows on the middle of the data. True by default, as in R.\n *\n * False anchors them on the origin instead. Nothing else changes: not the\n * components, not the points, only where the arrows are drawn.\n */\n readonly meancenter?: boolean;\n /** The x limits, R's `xlim`. Both default to R's `c(-50, 50)`. */\n readonly xlim?: readonly [number, number];\n /** The y limits, R's `ylim`. */\n readonly ylim?: readonly [number, number];\n}\n\n/** R: `xlim = c(-50, 50)` and `ylim = c(-50, 50)`. */\nconst DEFAULT_LIMITS: readonly [number, number] = [-50, 50];\n\n/**\n * The length of an arrowhead edge, in pixels.\n *\n * R asks for `length = 0.1`, measured in inches. At the 96 pixels per inch a\n * browser calls an inch that is 9.6, rounded here to a round 10.\n */\nconst HEAD_LENGTH = 10;\n\n/**\n * Build the scale that `plotPca` draws through, with equal units per pixel.\n *\n * The interactive layer needs this to turn a click into a world coordinate.\n * It reads the scale from here so the window rule stays in one place.\n *\n * Both requested ranges are honoured or widened, never narrowed: the axis\n * that needs the most world per pixel keeps its limits, and the other grows\n * about its middle until the two agree. Unlike R, the constraining axis keeps\n * the literal limits it was given — R would pad them by 4% first, and this\n * port drops that padding everywhere.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param options The limits. A reversed pair reads as the range it spans, not\n * as a flipped axis.\n * @returns The map between world values and pixels.\n */\nexport function pcaScale(\n width: number,\n height: number,\n options: PlotPcaOptions = {},\n): Scale {\n const x = extentOf(options.xlim ?? DEFAULT_LIMITS);\n const y = extentOf(options.ylim ?? DEFAULT_LIMITS);\n const areaWidth = width - DEFAULT_MARGINS.left - DEFAULT_MARGINS.right;\n const areaHeight = height - DEFAULT_MARGINS.top - DEFAULT_MARGINS.bottom;\n\n const perPixel = Math.max(\n (x.max - x.min) / areaWidth,\n (y.max - y.min) / areaHeight,\n );\n // A surface too small to hold a plot area, or a pair of limits with no\n // width at all, leaves nothing to equalize. The window stays as asked and\n // `createScale` handles the degenerate span.\n if (!(areaWidth > 0 && areaHeight > 0 && perPixel > 0)) {\n return createScale({ width, height, x, y });\n }\n\n return createScale({\n width,\n height,\n x: widenedTo(x, perPixel * areaWidth),\n y: widenedTo(y, perPixel * areaHeight),\n });\n}\n\n/**\n * Draw the points and the arrows along their principal components.\n *\n * R guards this drawing at three sizes, and so does this. With no points it\n * draws an empty pair of axes. Below three points it draws the points alone:\n * two points always lie on a line, so the second component would be an arrow\n * of no length and the first would say only what the eye already sees. The\n * core will answer for one or two points; this asks it only from three, which\n * is R's own `nrow(points) >= 3`.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param points The observations, in world coordinates.\n * @param options The anchor and the window.\n * @returns The components drawn, or null below three points. R returns the\n * same `prcomp` result, invisibly, and NULL at the same two guards.\n */\nexport function plotPca(\n target: PlotTarget,\n points: readonly Point[],\n options: PlotPcaOptions = {},\n): PcaResult | null {\n const { ctx, width, height } = resolveTarget(target);\n const scale = pcaScale(width, height, options);\n\n clearSurface(ctx, width, height);\n drawAxes(ctx, scale, { xLabel: \"x\", yLabel: \"y\" });\n\n if (points.length === 0) {\n return null;\n }\n\n // R's device clips the plot region; canvas clips nothing. A fixed window of\n // -50 to 50 says nothing about where the points are, so this matters.\n const { area } = scale;\n ctx.save();\n clipToArea(ctx, area);\n\n drawDots(ctx, scale, points);\n\n const result = points.length >= 3 ? principalComponents(points) : null;\n if (result !== null) {\n // R's anchor is `mc_diff`, which is the column means under `meancenter`\n // and the origin otherwise. R also drops to the origin at one point,\n // which no arrow can reach: it takes three points to get here.\n const anchor = (options.meancenter ?? true) ? result.center : ORIGIN;\n drawComponent(ctx, scale, result, anchor, 0, []);\n drawComponent(ctx, scale, result, anchor, 1, DOTTED);\n }\n\n ctx.restore();\n return result;\n}\n\nconst ORIGIN: Point = { x: 0, y: 0 };\n\n/** Grow an extent to a span, keeping its middle where it is. */\nfunction widenedTo(extent: Extent, span: number): Extent {\n const middle = (extent.min + extent.max) / 2;\n return { min: middle - span / 2, max: middle + span / 2 };\n}\n\n/**\n * Draw one component as an arrow through the anchor.\n *\n * R's `vec` matrix is the loading vector scaled by the component's standard\n * deviation, and the arrow runs from `-vec` to `+vec` about the anchor — so\n * its length shows how much spread the component carries. The head goes at\n * the `+vec` end alone, which is what `arrows()` does with its default\n * `code = 2`.\n */\nfunction drawComponent(\n ctx: Context2D,\n scale: Scale,\n result: PcaResult,\n anchor: Point,\n component: 0 | 1,\n dash: readonly number[],\n): void {\n const loadings = result.rotation[component];\n const sdev = result.sdev[component];\n const tail = [\n scale.toPixelX(anchor.x - loadings[0] * sdev),\n scale.toPixelY(anchor.y - loadings[1] * sdev),\n ] as const;\n const tip = [\n scale.toPixelX(anchor.x + loadings[0] * sdev),\n scale.toPixelY(anchor.y + loadings[1] * sdev),\n ] as const;\n\n drawArrow(ctx, tail, tip, { headLength: HEAD_LENGTH, dash });\n}\n",
|
|
33
33
|
"/**\n * The regression plot: points, the mean crosshair, the fitted line, and a\n * block of statistics.\n *\n * This is the drawing half of `plot_regression()` in\n * `../compstatslib/R/regression_plot.R`. Every number it draws comes from\n * `linearRegression` in `src/core/regression.ts`; this module computes no\n * statistics of its own.\n */\n\nimport { mean } from \"../core/arith\";\nimport { linearRegression } from \"../core/regression\";\nimport type { Point, RegressionFit } from \"../core/regression\";\nimport { createScale, drawAxes, extentOf } from \"./axes\";\nimport { formatStat } from \"./format\";\nimport type { Extent, Scale } from \"./axes\";\nimport { DOTTED, clearSurface, clipToArea, drawDots } from \"./draw\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/** What to show, and where. The toggles default to true, as in R. */\nexport interface PlotRegressionOptions {\n /** Draw the mean crosshair and the fitted line. */\n readonly regression?: boolean;\n /** List the statistics at the top left. Needs `regression`. */\n readonly stats?: boolean;\n /** The x limits, R's `xlim`. Both default to R's `c(-5, 50)`. */\n readonly xlim?: readonly [number, number];\n /** The y limits, R's `ylim`. */\n readonly ylim?: readonly [number, number];\n}\n\n/** R: `xlim = c(-5, max_x)` and `ylim = c(-5, max_x)`, with `max_x = 50`. */\nconst WORLD: Extent = { min: -5, max: 50 };\n\nconst CROSSHAIR_COLOR = \"lightgray\";\nconst LINE_COLOR = \"cornflowerblue\";\nconst TEXT_COLOR = \"#000000\";\nconst STATS_FONT = \"12px monospace\";\nconst STATS_LINE_HEIGHT = 15;\nconst STATS_PADDING = 8;\nconst STATS_LABEL_WIDTH = 13;\n\n/**\n * Build the scale that `plotRegression` draws through.\n *\n * The interactive layer needs this to turn a click into a world coordinate.\n * It reads the scale from here so that the world window stays defined in one\n * place. Nothing outside this module may restate it.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param options The limits. A reversed pair reads as the range it spans, not\n * as a flipped axis. Omitted limits keep the R teaching window.\n * @returns The map between world values and pixels.\n */\nexport function regressionScale(\n width: number,\n height: number,\n options: PlotRegressionOptions = {},\n): Scale {\n return createScale({\n width,\n height,\n x: options.xlim ? extentOf(options.xlim) : WORLD,\n y: options.ylim ? extentOf(options.ylim) : WORLD,\n });\n}\n\n/**\n * Draw the points and their regression.\n *\n * With no points, the function draws empty axes. With one point, it draws the\n * point alone, because a single point has no line to fit. R stops at the same\n * two places.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param points The observations, in world coordinates.\n * @param options What to show.\n * @returns The fit that the plot drew, or null if there are no points. R\n * returns the points instead, which the caller already holds.\n */\nexport function plotRegression(\n target: PlotTarget,\n points: readonly Point[],\n options: PlotRegressionOptions = {},\n): RegressionFit | null {\n const { ctx, width, height } = resolveTarget(target);\n const showRegression = options.regression ?? true;\n const showStats = options.stats ?? true;\n const scale = regressionScale(width, height, options);\n\n clearSurface(ctx, width, height);\n drawAxes(ctx, scale, { xLabel: \"x\", yLabel: \"y\" });\n\n const fit = linearRegression(points);\n if (fit === null) {\n return null;\n }\n\n drawDots(ctx, scale, points);\n if (points.length < 2 || !showRegression) {\n return fit;\n }\n\n drawMeanCrosshair(ctx, scale, points);\n if (fit.slope !== null) {\n drawFittedLine(ctx, scale, fit.intercept, fit.slope);\n }\n if (showStats) {\n drawStats(ctx, scale, fit);\n }\n return fit;\n}\n\n/**\n * Draw the two dotted segments that mark the means.\n *\n * R: `segments(0, mean_y, max_x, mean_y)` and\n * `segments(mean_x, 0, mean_x, mean_y)`. The vertical segment stops at the\n * horizontal one. R's window always contains its 0 origin; a custom window\n * that does not clamps that origin to its nearest edge, so the segments span\n * the window instead of leaving it.\n */\nfunction drawMeanCrosshair(\n ctx: Context2D,\n scale: Scale,\n points: readonly Point[],\n): void {\n const meanX = mean(points.map((point) => point.x));\n const meanY = mean(points.map((point) => point.y));\n const { x, y } = scale.world;\n const originX = Math.min(Math.max(0, x.min), x.max);\n const originY = Math.min(Math.max(0, y.min), y.max);\n\n ctx.save();\n ctx.strokeStyle = CROSSHAIR_COLOR;\n ctx.lineWidth = 1;\n ctx.setLineDash(DOTTED);\n ctx.beginPath();\n ctx.moveTo(scale.toPixelX(originX), scale.toPixelY(meanY));\n ctx.lineTo(scale.toPixelX(x.max), scale.toPixelY(meanY));\n ctx.moveTo(scale.toPixelX(meanX), scale.toPixelY(originY));\n ctx.lineTo(scale.toPixelX(meanX), scale.toPixelY(meanY));\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * Draw the fitted line across the plot area.\n *\n * R's `abline()` draws across the whole plot region, so this draws the line at\n * both edges of the world window and clips it to the area. A steep line then\n * leaves through the top or the bottom, as it does in R.\n */\nfunction drawFittedLine(\n ctx: Context2D,\n scale: Scale,\n intercept: number,\n slope: number,\n): void {\n const { area, world } = scale;\n ctx.save();\n clipToArea(ctx, area);\n ctx.strokeStyle = LINE_COLOR;\n ctx.lineWidth = 2;\n ctx.setLineDash([]);\n ctx.beginPath();\n ctx.moveTo(\n scale.toPixelX(world.x.min),\n scale.toPixelY(intercept + slope * world.x.min),\n );\n ctx.lineTo(\n scale.toPixelX(world.x.max),\n scale.toPixelY(intercept + slope * world.x.max),\n );\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * List the statistics at the top left, in a monospace block.\n *\n * R draws this with `legend(\"topleft\", ...)` under `par(family = \"mono\")`.\n */\nfunction drawStats(ctx: Context2D, scale: Scale, fit: RegressionFit): void {\n const rows: readonly (readonly [string, number | null])[] = [\n [\"Raw intercept\", fit.intercept],\n [\"Raw slope\", fit.slope],\n [\"Correlation\", fit.correlation],\n [\"SSR\", fit.ssr],\n [\"SSE\", fit.sse],\n [\"SST\", fit.sst],\n [\"R-squared\", fit.rSquared],\n ];\n\n ctx.save();\n ctx.setLineDash([]);\n ctx.fillStyle = TEXT_COLOR;\n ctx.font = STATS_FONT;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n for (const [index, [label, value]] of rows.entries()) {\n ctx.fillText(\n `${label.padEnd(STATS_LABEL_WIDTH)}: ${formatStat(value)}`,\n scale.area.left + STATS_PADDING,\n scale.area.top + STATS_PADDING + index * STATS_LINE_HEIGHT,\n );\n }\n ctx.restore();\n}\n",
|
|
34
34
|
"/**\n * The t-test plot: two distributions, the regions they decide between, and an\n * optional matrix of the four outcomes.\n *\n * This is the drawing half of `plot_t_test()` in\n * `../compstatslib/R/t_statistic_plot.R`, whose work is spread across\n * `t_null_plot()`, `t_alt_lines()`, `plott()`, `plotdist()`, and\n * `plot_error_matrix()`. Every number comes from `tTestStats` in\n * `src/core/ttest.ts` and every curve height from `dt` in\n * `src/core/tdist.ts`; this module computes no statistics of its own.\n */\n\nimport { dt } from \"../core/tdist\";\nimport { tTestStats } from \"../core/ttest\";\nimport type { TTestOptions, TTestStats } from \"../core/ttest\";\nimport { createScale, drawAxes } from \"./axes\";\nimport type { Extent, Scale } from \"./axes\";\nimport { clearSurface, clipToArea } from \"./draw\";\nimport { formatNumber, formatStat } from \"./format\";\nimport { resolveTarget } from \"./target\";\nimport type { Context2D, PlotTarget } from \"./target\";\n\n/**\n * What to draw. The four test parameters pass straight through to\n * `tTestStats`, which is the pass-through R does with its own arguments.\n */\nexport interface PlotTTestOptions extends TTestOptions {\n /** Show the matrix of the four outcomes. False by default, as in R. */\n readonly errorMatrix?: boolean;\n}\n\n/** R: `xlim = c(-6, 6)` in both `t_null_plot()` and `t_alt_lines()`. */\nconst WORLD_X: Extent = { min: -6, max: 6 };\n\n/** R: `rgb(0.75, 0.1, 0.1)`. */\nconst NULL_COLOR = \"#bf1a1a\";\n/** R: `rgb(1, 0.5, 0.5)`. */\nconst NULL_FILL = \"#ff8080\";\n/** R: `rgb(0.1, 0.1, 0.75)`. */\nconst ALT_COLOR = \"#1a1abf\";\n/** R: `rgb(0.4, 0.4, 1, 0.3)`, used for the fill and the median segment. */\nconst ALT_FILL = \"rgba(102, 102, 255, 0.3)\";\n/** R: `rgb(0.30, 0.50, 0.75, 0.5)`, the two \"Correct!\" cells. */\nconst CORRECT_FILL = \"rgba(77, 128, 191, 0.5)\";\nconst TEXT_COLOR = \"#000000\";\n\n/** R: `lwd = 2`, the default in `plott()`. */\nconst LINE_WIDTH = 2;\n/** R: `lty = \"dashed\"`, which is 4 on and 4 off. */\nconst DASHED = [4, 4];\n/** R: `lwd = 4` on the ring around the likely row. */\nconst HIGHLIGHT_WIDTH = 4;\n\n/** R: `xseq = seq(ncp - 6, ncp + 6, length = 1000)`. */\nconst CURVE_SAMPLES = 1000;\nconst CURVE_HALF_WIDTH = 6;\n/**\n * R samples a fill at `by = 0.001`, which over the widest region would be tens\n * of thousands of points for a shape a few hundred pixels wide. Sampling once\n * per pixel draws the same picture for a fraction of the work, which matters\n * because the interactive layer redraws on every slider tick.\n */\nconst MAX_FILL_SAMPLES = 2000;\n\n/** The error-matrix geometry, read off the `recttext()` calls in R. */\nconst MATRIX = {\n left: -5.5,\n middle: -4,\n right: -2.5,\n bottom: 0.125,\n center: 0.25,\n top: 0.375,\n} as const;\n\n/** Room above the matrix for the column captions R puts at `yt + 0.02`. */\nconst MATRIX_HEADROOM = 0.045;\n\n/**\n * Type sizes for the error matrix.\n *\n * R sets these with `cex` values of 0.45, 0.5, and 0.75, which land near 6, 7,\n * and 10 pixels on a canvas. That is small enough to be hard to read, and the\n * matrix is the part of the picture a reader spends the longest on. This is\n * the deliberate deviation from R's `cex` arithmetic: the panel is sized to be\n * read.\n */\nconst CAPTION_FONT_SIZE = 9;\nconst TITLE_FONT_SIZE = 10;\nconst VALUE_FONT_SIZE = 13;\n/** The room one caption line takes in the stack, when there is room for it. */\nconst CAPTION_LINE_HEIGHT = 12;\n/** However narrow the gap, a caption never shrinks past this. */\nconst MIN_CAPTION_FONT_SIZE = 6;\n\n/**\n * Build the scale that `plotTTest` draws through.\n *\n * The x window is R's fixed `c(-6, 6)`. The y window follows R's default,\n * which is the range of the plotted density widened by four percent at each\n * end, except that showing the error matrix raises the top enough to hold it.\n * R leaves the window alone there and lets the matrix fall outside the plot\n * region, where base graphics clip it away: at one degree of freedom the null\n * curve only reaches 0.32 and the top row of cells is cut off. Growing the\n * window instead keeps the panel whole.\n *\n * @param width The pixel width of the surface.\n * @param height The pixel height of the surface.\n * @param options The same options `plotTTest` takes.\n * @returns The map between world values and pixels.\n */\nexport function tTestScale(\n width: number,\n height: number,\n options: PlotTTestOptions = {},\n): Scale {\n const { errorMatrix = false, ...statOptions } = options;\n return buildScale(width, height, tTestStats(statOptions), errorMatrix);\n}\n\n/** The scale, once the statistics are already in hand. */\nfunction buildScale(\n width: number,\n height: number,\n stats: TTestStats,\n showErrorMatrix: boolean,\n): Scale {\n const peak = Math.max(dt(0, stats.df), stats.altMedianDensity);\n const tallest = Number.isFinite(peak) && peak > 0 ? peak : 1;\n const top = showErrorMatrix\n ? Math.max(1.04 * tallest, MATRIX.top + MATRIX_HEADROOM)\n : 1.04 * tallest;\n\n return createScale({\n width,\n height,\n x: WORLD_X,\n y: { min: -0.04 * tallest, max: top },\n });\n}\n\n/**\n * Draw the null and alternative distributions of a t test.\n *\n * @param target A canvas, or a context and a size. See `./target.ts`.\n * @param options The test parameters, and whether to show the error matrix.\n * @returns The statistics behind the picture. R returns these invisibly from\n * `t_alt_lines()`; a browser caller wants them, so they come back here.\n */\nexport function plotTTest(\n target: PlotTarget,\n options: PlotTTestOptions = {},\n): TTestStats {\n const { ctx, width, height } = resolveTarget(target);\n const { errorMatrix: showErrorMatrix = false, ...statOptions } = options;\n\n const stats = tTestStats(statOptions);\n const scale = buildScale(width, height, stats, showErrorMatrix);\n\n clearSurface(ctx, width, height);\n drawAxes(ctx, scale, { frame: false });\n\n // R draws the null first, then the alternative over it. Within each, the\n // shaded region goes down before the curve, so the outline stays visible.\n drawFill(ctx, scale, stats.nullFill, stats.df, 0, NULL_FILL);\n drawCurve(ctx, scale, stats.df, 0, NULL_COLOR, []);\n\n drawFill(ctx, scale, stats.altFill, stats.df, stats.t, ALT_FILL);\n drawMedianSegment(ctx, scale, stats);\n drawCurve(ctx, scale, stats.df, stats.t, ALT_COLOR, DASHED);\n\n if (showErrorMatrix) {\n drawErrorMatrix(ctx, scale, stats);\n }\n\n return stats;\n}\n\n/**\n * Draw one density curve.\n *\n * R samples over `ncp ± 6` whatever the window is, and lets the plot clip what\n * falls outside. This does the same, under a clip to the plot area.\n */\nfunction drawCurve(\n ctx: Context2D,\n scale: Scale,\n df: number,\n ncp: number,\n color: string,\n dash: readonly number[],\n): void {\n ctx.save();\n clipToArea(ctx, scale.area);\n ctx.strokeStyle = color;\n ctx.lineWidth = LINE_WIDTH;\n ctx.setLineDash([...dash]);\n ctx.beginPath();\n\n const from = ncp - CURVE_HALF_WIDTH;\n const step = (2 * CURVE_HALF_WIDTH) / (CURVE_SAMPLES - 1);\n for (let index = 0; index < CURVE_SAMPLES; index += 1) {\n const x = from + index * step;\n const px = scale.toPixelX(x);\n const py = scale.toPixelY(dt(x, df, ncp));\n if (index === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n }\n\n ctx.stroke();\n ctx.restore();\n}\n\n/** A span of the x axis to shade. */\ninterface Span {\n readonly from: number;\n readonly to: number;\n}\n\n/**\n * Shade the region under a curve between two quantiles.\n *\n * The range is clamped to the visible window first. `tTestStats` reports the\n * power region as starting at −Infinity once beta underflows, which R feeds\n * straight to `seq()` and dies on; clamping turns that into the honest\n * picture, a region running off the left edge.\n */\nfunction drawFill(\n ctx: Context2D,\n scale: Scale,\n range: Span,\n df: number,\n ncp: number,\n color: string,\n): void {\n const from = Math.max(range.from, WORLD_X.min);\n const to = Math.min(range.to, WORLD_X.max);\n if (!(to > from)) {\n return;\n }\n\n const fromPixel = scale.toPixelX(from);\n const toPixel = scale.toPixelX(to);\n const samples = Math.max(\n 2,\n Math.min(MAX_FILL_SAMPLES, Math.ceil(toPixel - fromPixel)),\n );\n const step = (to - from) / (samples - 1);\n const baseline = scale.toPixelY(0);\n\n ctx.save();\n clipToArea(ctx, scale.area);\n ctx.fillStyle = color;\n ctx.setLineDash([]);\n ctx.beginPath();\n ctx.moveTo(fromPixel, baseline);\n for (let index = 0; index < samples; index += 1) {\n const x = from + index * step;\n ctx.lineTo(scale.toPixelX(x), scale.toPixelY(dt(x, df, ncp)));\n }\n ctx.lineTo(toPixel, baseline);\n ctx.fill();\n ctx.restore();\n}\n\n/**\n * Mark the alternative's midpoint.\n *\n * R passes `quants = c(0.5)` to `plott()`, which draws a segment from the axis\n * up to the curve, in the same translucent color as the fill.\n */\nfunction drawMedianSegment(\n ctx: Context2D,\n scale: Scale,\n stats: TTestStats,\n): void {\n if (!Number.isFinite(stats.altMedian)) {\n return;\n }\n\n ctx.save();\n clipToArea(ctx, scale.area);\n ctx.strokeStyle = ALT_FILL;\n ctx.lineWidth = LINE_WIDTH;\n ctx.setLineDash([]);\n ctx.beginPath();\n ctx.moveTo(scale.toPixelX(stats.altMedian), scale.toPixelY(0));\n ctx.lineTo(\n scale.toPixelX(stats.altMedian),\n scale.toPixelY(stats.altMedianDensity),\n );\n ctx.stroke();\n ctx.restore();\n}\n\n/**\n * Draw the four outcomes of the test, and ring the likely row.\n *\n * R builds this from four `recttext()` calls plus a fifth for the ring. Two of\n * the four values are printed through `round(x, 2)` and two are not, which is\n * R's own inconsistency and is kept.\n */\nfunction drawErrorMatrix(\n ctx: Context2D,\n scale: Scale,\n stats: TTestStats,\n): void {\n const { errorMatrix: cells, alpha } = stats;\n\n ctx.save();\n ctx.setLineDash([]);\n\n drawCell(ctx, scale, {\n left: MATRIX.left,\n bottom: MATRIX.center,\n right: MATRIX.middle,\n top: MATRIX.top,\n fill: NULL_FILL,\n title: \"Type I error\",\n value: formatNumber(alpha),\n rowCaption: [\"If evidence says\", \"REJECT\", \"null hypothesis\"],\n columnCaption: [\"If null is\", \"really TRUE\"],\n });\n\n drawCell(ctx, scale, {\n left: MATRIX.middle,\n bottom: MATRIX.center,\n right: MATRIX.right,\n top: MATRIX.top,\n fill: CORRECT_FILL,\n title: \"Correct!\",\n value: formatStat(cells.correctReject),\n columnCaption: [\"If null is\", \"really FALSE\"],\n });\n\n drawCell(ctx, scale, {\n left: MATRIX.left,\n bottom: MATRIX.bottom,\n right: MATRIX.middle,\n top: MATRIX.center,\n fill: CORRECT_FILL,\n title: \"Correct!\",\n value: formatNumber(cells.correctFailToReject),\n rowCaption: [\"If evidence says\", \"CANNOT REJECT\", \"null hypothesis\"],\n });\n\n drawCell(ctx, scale, {\n left: MATRIX.middle,\n bottom: MATRIX.bottom,\n right: MATRIX.right,\n top: MATRIX.center,\n fill: NULL_FILL,\n title: \"Type II error\",\n value: formatStat(cells.typeTwo),\n });\n\n const ringBottom = cells.highlightTopRow ? MATRIX.center : MATRIX.bottom;\n const ringTop = cells.highlightTopRow ? MATRIX.top : MATRIX.center;\n ctx.strokeStyle = ALT_COLOR;\n ctx.lineWidth = HIGHLIGHT_WIDTH;\n ctx.beginPath();\n ctx.rect(...worldRect(scale, MATRIX.left, ringBottom, MATRIX.right, ringTop));\n ctx.stroke();\n\n ctx.restore();\n}\n\n/** Everything one cell of the matrix needs. */\ninterface Cell {\n readonly left: number;\n readonly bottom: number;\n readonly right: number;\n readonly top: number;\n readonly fill: string;\n readonly title: string;\n readonly value: string;\n /** Rotated text to the left of the row. */\n readonly rowCaption?: readonly string[];\n /** Text above the column. */\n readonly columnCaption?: readonly string[];\n}\n\n/** R's `recttext()`: a filled box, its captions, its title, and its value. */\nfunction drawCell(ctx: Context2D, scale: Scale, cell: Cell): void {\n const centerX = (cell.left + cell.right) / 2;\n const centerY = (cell.bottom + cell.top) / 2;\n\n ctx.fillStyle = cell.fill;\n ctx.beginPath();\n ctx.rect(...worldRect(scale, cell.left, cell.bottom, cell.right, cell.top));\n ctx.fill();\n\n ctx.fillStyle = TEXT_COLOR;\n ctx.textAlign = \"center\";\n\n ctx.font = `${TITLE_FONT_SIZE}px sans-serif`;\n ctx.textBaseline = \"top\";\n // R: the title sits just inside the top edge, at `yt - 0.015`.\n ctx.fillText(\n cell.title,\n scale.toPixelX(centerX),\n scale.toPixelY(cell.top - 0.015),\n );\n\n ctx.font = `${VALUE_FONT_SIZE}px sans-serif`;\n ctx.textBaseline = \"middle\";\n ctx.fillText(cell.value, scale.toPixelX(centerX), scale.toPixelY(centerY));\n\n ctx.font = `${CAPTION_FONT_SIZE}px sans-serif`;\n if (cell.columnCaption !== undefined) {\n // R: the column caption sits above the top edge, at `yt + 0.02`. The block\n // stacks upward, so its last line lands on that anchor. On a short surface\n // that anchor would carry the stack off the top of the plot, so it gives\n // way, for the same reason the row captions do: canvas clips no text.\n ctx.textBaseline = \"bottom\";\n const blockHeight =\n (cell.columnCaption.length - 1) * CAPTION_LINE_HEIGHT;\n const anchor = Math.max(\n scale.toPixelY(cell.top + 0.02),\n scale.area.top + blockHeight + CAPTION_FONT_SIZE,\n );\n drawLines(\n ctx,\n cell.columnCaption,\n scale.toPixelX(centerX),\n anchor - blockHeight,\n CAPTION_LINE_HEIGHT,\n );\n }\n\n if (cell.rowCaption !== undefined) {\n const gapLeft = scale.toPixelX(WORLD_X.min);\n const layout = fitCaption(\n scale.toPixelX(cell.left) - gapLeft,\n cell.rowCaption.length,\n );\n\n ctx.save();\n ctx.font = `${layout.fontSize}px sans-serif`;\n // Turned a quarter turn, the stack runs left to right across the gap, so\n // the offset between lines becomes a horizontal step on the surface.\n ctx.translate(gapLeft + layout.start, scale.toPixelY(centerY));\n ctx.rotate(-Math.PI / 2);\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n drawLines(ctx, cell.rowCaption, 0, 0, layout.advance);\n ctx.restore();\n }\n}\n\n/** How a stack of caption lines is laid out across the gap it has to fit. */\ninterface CaptionLayout {\n /** The step from one line to the next. */\n readonly advance: number;\n /** The type size that step leaves room for. */\n readonly fontSize: number;\n /** Where the first line sits, measured from the start of the gap. */\n readonly start: number;\n}\n\n/**\n * Fit a stack of caption lines into the space beside the cells.\n *\n * R anchors the turned row captions at `xl - 0.45` and leaves the rest to base\n * graphics, which clips whatever crosses the edge of the plot region. Canvas\n * clips no text, so the same anchor puts two of each block's three lines out\n * over the axis numbers. This is the deliberate deviation: the block is\n * centerd in the gap between the edge of the plot and the edge of the cells,\n * which is where R's clipped version ends up looking like it sits anyway.\n *\n * The gap is a fixed share of the width, half a unit of the twelve the picture\n * spans, so a wider surface carries larger type. At 900 pixels and above the\n * captions reach their full size and the lines sit a clear step apart.\n *\n * A narrow surface leaves a narrow gap. The lines then close up and the type\n * shrinks to match, so the block still stays inside the picture rather than\n * spilling over the axis. Below about 580 pixels the type reaches its floor\n * while the lines keep closing, and the block starts to crowd itself; staying\n * inside the picture matters more than staying loose, and a panel this size is\n * past the point of reading comfortably in any case.\n */\nfunction fitCaption(gap: number, lineCount: number): CaptionLayout {\n const advance = Math.min(CAPTION_LINE_HEIGHT, gap / lineCount);\n const fontSize = Math.max(\n MIN_CAPTION_FONT_SIZE,\n Math.min(CAPTION_FONT_SIZE, advance - 1),\n );\n return { advance, fontSize, start: (gap - (lineCount - 1) * advance) / 2 };\n}\n\n/** Draw a caption that R writes with newlines in it. */\nfunction drawLines(\n ctx: Context2D,\n lines: readonly string[],\n x: number,\n y: number,\n advance: number,\n): void {\n for (const [index, line] of lines.entries()) {\n ctx.fillText(line, x, y + index * advance);\n }\n}\n\n/** Turn a world box into the arguments `rect` wants, top-left and size. */\nfunction worldRect(\n scale: Scale,\n left: number,\n bottom: number,\n right: number,\n top: number,\n): [number, number, number, number] {\n const x = scale.toPixelX(left);\n const y = scale.toPixelY(top);\n return [x, y, scale.toPixelX(right) - x, scale.toPixelY(bottom) - y];\n}\n",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"/**\n * The interactive PCA: click to add a point, and watch the components turn.\n *\n * This is the port of `interactive_pca()` in\n * `../compstatslib/R/pca_interactive.R`. R holds the points in a reactive\n * value and calls `plot_pca()` on every change. This module does the same: it\n * owns the points and the clicks, and it hands every draw to `plotPca`. It\n * contains no drawing code and no statistics.\n *\n * R's `runGadget()` blocks and returns `list(points, pca)` when the user\n * clicks \"Done\". A browser blocks at nothing, so this returns a handle at\n * once. Read the two through `getPoints()` and `getFit()`, or call `done()` to\n * hand both to the `onDone` callback.\n *\n * **A click is taken as it comes.** R appends `data.frame(x = click$x,\n * y = click$y)` with no clamp, no rounding, and no test that the click landed\n * inside the plot area — and shiny reports a coordinate for a click anywhere\n * on the plot image, margins included. So this accepts a click anywhere on the\n * surface and keeps the world coordinate whole. That is a deliberate\n * difference from `interactiveRegression`, which ignores a click outside the\n * plot area because its window ends there, and from `interactiveLogit`, which\n * must clamp and round because its outcome is 0 or 1. Here a point outside the\n * window is a real state, and the plot clips it out of sight while it goes on\n * counting towards the components.\n */\n\nimport type { PcaResult } from \"../core/pca\";\nimport type { Point } from \"../core/regression\";\nimport { pcaScale, plotPca } from \"../plot/pca\";\nimport type { PlotPcaOptions } from \"../plot/pca\";\nimport { eventPixel, resolveInteractiveTarget } from \"./target\";\nimport type { InteractiveTarget } from \"./target\";\n\n/**\n * What `done()` hands over: R's `list(points = ..., pca = ...)`.\n *\n * R's `pca` field is `fit` here. Inside a component that is already about\n * PCA, a field called `pca` says nothing, and \"the fit\" is what this port\n * calls the thing a plot computed from a set of points everywhere else —\n * `plotRegression` and `plotLogit` both return one.\n */\nexport interface InteractivePcaResult {\n /** The points collected, in click order. */\n readonly points: readonly Point[];\n /** What the last draw computed, or null below three points. */\n readonly fit: PcaResult | null;\n}\n\n/**\n * What the component accepts.\n *\n * The options of `plotPca` pass through to it unchanged. This is the\n * equivalent of R's `...` forwarding, though R's own `interactive_pca()`\n * exposes only `meancenter` and leaves the window at the `plot_pca` defaults.\n */\nexport interface InteractivePcaOptions extends PlotPcaOptions {\n /** Points to start from. R starts from an empty data frame. */\n readonly initialPoints?: readonly Point[];\n /** What to run on `done()`. */\n readonly onDone?: (result: InteractivePcaResult) => void;\n}\n\n/** What the caller holds after the component starts. */\nexport interface InteractivePcaHandle {\n /** Return the points collected so far, in click order. */\n getPoints(): readonly Point[];\n /**\n * Return what the last draw computed.\n *\n * Null below three points, which is `plot_pca`'s own guard: R's\n * `pca_result` holds whatever the last `plot_pca()` returned, and that is\n * NULL there too.\n */\n getFit(): PcaResult | null;\n /** Drop every point and redraw. This drops the initial points too. */\n reset(): void;\n /** Hand the points and the fit to the `onDone` callback. */\n done(): void;\n /** Stop listening. The points and the fit stay readable. */\n destroy(): void;\n}\n\n/**\n * Start an interactive PCA on a target.\n *\n * The component draws at once, so an empty start shows empty axes. Each click\n * adds one point and redraws. From the third point the two component arrows\n * appear and turn with every point after it.\n *\n * @param target A canvas, or a surface and an element. See `./target.ts`.\n * @param options Points to start from, a done callback, and the options of\n * `plotPca`.\n * @returns The handle to the running component.\n * @throws Error If a canvas gives no 2D context.\n */\nexport function interactivePca(\n target: InteractiveTarget,\n options: InteractivePcaOptions = {},\n): InteractivePcaHandle {\n const { initialPoints, onDone, ...plotOptions } = options;\n const { surface, element } = resolveInteractiveTarget(target);\n\n let points: readonly Point[] = initialPoints ?? [];\n let fit: PcaResult | null = null;\n\n function draw(): void {\n fit = plotPca(surface, points, plotOptions);\n }\n\n function handleClick(event: MouseEvent): void {\n // Built fresh for every click. The window is fixed, but `asp = 1` ties it\n // to the size of the surface, so a scale kept from an earlier size would\n // put the point somewhere plausible and wrong.\n const scale = pcaScale(surface.width, surface.height, plotOptions);\n const pixel = eventPixel(element, surface, event);\n points = [\n ...points,\n { x: scale.toWorldX(pixel.x), y: scale.toWorldY(pixel.y) },\n ];\n draw();\n }\n\n draw();\n element.addEventListener(\"click\", handleClick);\n\n return {\n getPoints: () => [...points],\n getFit: () => fit,\n reset() {\n points = [];\n draw();\n },\n done() {\n onDone?.({ points: [...points], fit });\n },\n destroy() {\n element.removeEventListener(\"click\", handleClick);\n },\n };\n}\n",
|
|
42
42
|
"/**\n * The interactive regression: click to add a point, and watch the line move.\n *\n * This is the port of `interactive_regression()` in\n * `../compstatslib/R/regression_interactive.R`. R holds the points in a\n * reactive value and calls `plot_regression()` on every change, forwarding its `...`\n * arguments. This module does the same: it owns the points and the clicks, and\n * it hands every draw to `plotRegression`. It contains no drawing code and no\n * statistics.\n *\n * R's `runGadget()` blocks and returns the points when the user clicks \"Done\".\n * A browser blocks at nothing, so this returns a handle at once. Read the\n * points from `getPoints()`, or call `done()` to hand them to the `onDone`\n * callback.\n */\n\nimport type { Point } from \"../core/regression\";\nimport { pixelInArea } from \"../plot/axes\";\nimport { plotRegression, regressionScale } from \"../plot/regression\";\nimport type { PlotRegressionOptions } from \"../plot/regression\";\nimport { eventPixel, resolveInteractiveTarget } from \"./target\";\nimport type { InteractiveTarget } from \"./target\";\n\n/**\n * What the component accepts.\n *\n * The options of `plotRegression` pass through to it unchanged. This is the\n * equivalent of R's `...` forwarding.\n */\nexport interface InteractiveRegressionOptions extends PlotRegressionOptions {\n /** Points to start from. R takes these as its `points` argument. */\n readonly initialPoints?: readonly Point[];\n /** What to run on `done()`. */\n readonly onDone?: (points: readonly Point[]) => void;\n}\n\n/** What the caller holds after the component starts. */\nexport interface InteractiveRegressionHandle {\n /** Return the points collected so far, in click order. */\n getPoints(): readonly Point[];\n /** Drop every point and redraw. This drops the initial points too. */\n reset(): void;\n /** Hand the points to the `onDone` callback. */\n done(): void;\n /** Stop listening. The points stay readable. */\n destroy(): void;\n}\n\n/**\n * Start an interactive regression on a target.\n *\n * The component draws at once, so an empty start shows empty axes. Each click\n * inside the plot area adds one point and redraws. A click outside the plot\n * area does nothing, because the world window of the plot ends at the edge of\n * that area and a point beyond it would not appear.\n *\n * @param target A canvas, or a surface and an element. See `./target.ts`.\n * @param options Points to start from, a done callback, and the options of\n * `plotRegression`.\n * @returns The handle to the running component.\n * @throws Error If a canvas gives no 2D context.\n */\nexport function interactiveRegression(\n target: InteractiveTarget,\n options: InteractiveRegressionOptions = {},\n): InteractiveRegressionHandle {\n const { initialPoints, onDone, ...plotOptions } = options;\n const { surface, element } = resolveInteractiveTarget(target);\n const scale = regressionScale(surface.width, surface.height);\n\n let points: readonly Point[] = initialPoints ?? [];\n\n function draw(): void {\n plotRegression(surface, points, plotOptions);\n }\n\n function handleClick(event: MouseEvent): void {\n const pixel = eventPixel(element, surface, event);\n if (!pixelInArea(scale.area, pixel)) {\n return;\n }\n points = [\n ...points,\n { x: scale.toWorldX(pixel.x), y: scale.toWorldY(pixel.y) },\n ];\n draw();\n }\n\n draw();\n element.addEventListener(\"click\", handleClick);\n\n return {\n getPoints: () => [...points],\n reset() {\n points = [];\n draw();\n },\n done() {\n onDone?.([...points]);\n },\n destroy() {\n element.removeEventListener(\"click\", handleClick);\n },\n };\n}\n"
|
|
43
43
|
],
|
|
44
|
-
"mappings": ";;;;;;;;;AAQO,SAAS,gBAAgB,GAAW;AAAA,EACzC,OAAO,OAAO;AAAA;;ACDT,SAAS,GAAG,CAAC,QAAmC;AAAA,EACrD,OAAO,OAAO,OAAO,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC;AAAA;AAIlD,SAAS,IAAI,CAAC,QAAmC;AAAA,EACtD,OAAO,IAAI,MAAM,IAAI,OAAO;AAAA;AAkBvB,SAAS,MAAM,CAAC,QAA6C;AAAA,EAClE,OAAO,OAAO,OACZ,EAAE,KAAK,OAAO,UAAU;AAAA,IACtB,QAAQ,MAAM,QAAQ;AAAA,IACtB,QAAQ,OAAO,QAAQ;AAAA,EACzB,GACA,CAAC,OAAO,mBAAmB,OAAO,iBAAiB,CACrD;AAAA;AAUK,SAAS,mBAAmB,CAAC,OAAuB;AAAA,EACzD,OAAO,UAAU,IAAI,IAAI;AAAA;AAIpB,SAAS,YAAY,CAAC,OAAe,MAAoB;AAAA,EAC9D,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AAAA,IACzC,MAAM,IAAI,WAAW,GAAG,4CAA4C,OAAO;AAAA,EAC7E;AAAA;AAQK,SAAS,OAAgB,CAC9B,IACA,IACA,SACK;AAAA,EACL,MAAM,SAAS,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM;AAAA,EAE5C,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,UAAU,QAAQ,GAAG,GAAG,MAAW,CAAC;AAAA;AAUlE,SAAS,EAAE,CAAC,QAAmC;AAAA,EACpD,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS,KAAK,MAAM;AAAA,EAC1B,MAAM,UAAU,OAAO,IAAI,CAAC,WAAW,QAAQ,WAAW,QAAQ,OAAO;AAAA,EACzE,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,SAAS,EAAE;AAAA;AAoB9C,SAAS,qBAAqB,CAAC,QAAmC;AAAA,EACvE,MAAM,SAAS,KAAK,MAAM;AAAA,EAC1B,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,QAAQ,MAAM,CAAC,CAAC;AAAA;AAqBtD,SAAS,gBAAgB,CAAC,GAAW,GAAW,GAAmB;AAAA,EACxE,OAAO,SAAS,gBAAgB,WAAW,GAAG,CAAC;AAAA,EAC/C,OAAO,MAAK,YAAY,OAAO,GAAG,OAAO;AAAA,EACzC,MAAM,UAAU,QAAO,WAAW;AAAA,EAClC,OAAO,OAAO,SAAS,OAAO,IAAI,UAAU,IAAI,IAAI;AAAA;AAItD,SAAS,KAAK,CAAC,OAAiC;AAAA,EAC9C,MAAM,SAAS,YAAY;AAAA,EAC3B,MAAM,OAAO,UAAU,SAAS;AAAA,EAChC,OAAO,CAAC,MAAM,QAAQ,IAAI;AAAA;AAI5B,SAAS,UAAU,CAAC,GAAW,GAA6B;AAAA,EAC1D,MAAM,UAAU,IAAI;AAAA,EACpB,OAAO,OAAO,QAAQ,MAAM,CAAC;AAAA,EAC7B,OAAO,OAAO,QAAQ,MAAM,CAAC;AAAA,EAC7B,MAAM,QACJ,OAAO,QAAQ,UAAU,QAAQ,QAAQ,OAAO,QAAQ,QAAQ;AAAA,EAClE,OAAO,CAAC,SAAS,KAAK;AAAA;AAIxB,SAAS,MAAM,CAAC,GAAW,GAA6B;AAAA,EACtD,MAAM,OAAM,IAAI;AAAA,EAChB,MAAM,UAAU,OAAM;AAAA,EACtB,OAAO,CAAC,MAAK,KAAK,OAAM,YAAY,IAAI,QAAQ;AAAA;AAgB3C,SAAS,QAAQ,CAAC,QAA2B,GAAmB;AAAA,EACrE,OAAO,UAAU,QAAQ,CAAC,CAAC,CAAC,EAAE;AAAA;AAiBzB,SAAS,SAAS,CACvB,QACA,OACU;AAAA,EACV,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK,EAAE,GAAG;AAAA,IAC1C,MAAM,IAAI,WAAW,4CAA4C,OAAO;AAAA,EAC1E;AAAA,EACA,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,OAAO,MAAM,IAAI,MAAM,OAAO,GAAG;AAAA,EACnC;AAAA,EAIA,MAAM,SAAS,aAAa,KAAK,MAAM,EAAE,KAAK;AAAA,EAE9C,OAAO,MAAM,IAAI,CAAC,MAAM,MAAM,QAAQ,CAAC,CAAC;AAAA;AAkBnC,SAAS,MAAM,CAAC,QAAmC;AAAA,EACxD,OAAO,SAAS,QAAQ,GAAG;AAAA;AAI7B,SAAS,KAAK,CAAC,QAAsB,GAAmB;AAAA,EACtD,MAAM,WAAW,KAAK,OAAO,SAAS,KAAK;AAAA,EAC3C,MAAM,QAAQ,KAAK,MAAM,QAAQ;AAAA,EACjC,MAAM,QAAQ,KAAK,KAAK,QAAQ;AAAA,EAGhC,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,OAAO,OAAO,QAAQ;AAAA,EAE5B,IAAI,WAAW,SAAS,SAAS,KAAK;AAAA,IAGpC,MAAM,IAAI,WAAW;AAAA,IACrB,QAAQ,IAAI,KAAK,MAAM,IAAI;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;;ACvNT,IAAM,YAAY;AAGlB,IAAM,WAAW,IAAI;AAGrB,IAAM,MAAM;AAGZ,IAAM,MAAM;AAGZ,IAAM,eAAe;AA2Dd,SAAS,MAAM,CAAC,QAAmC;AAAA,EACxD,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,MAAM,IAAI,WAAW,oCAAoC,OAAO,QAAQ;AAAA,EAC1E;AAAA,EAEA,MAAM,SAAS,GAAG,MAAM;AAAA,EACxB,OAAO,eAAe,iBAAiB,UAAU,QAAQ,CAAC,MAAM,IAAI,CAAC;AAAA,EACrE,MAAM,aAAa,gBAAgB,iBAAiB;AAAA,EACpD,MAAM,QAAQ,cAAc,QAAQ,WAAW,OAAO,EAAE;AAAA,EAExD,OAAO,MAAM,QAAQ,KAAK,IAAI,OAAO,QAAQ,IAAI;AAAA;AAInD,SAAS,aAAa,CACpB,QACA,WACA,OACQ;AAAA,EACR,MAAM,UAAU,KAAK,IAAI,QAAQ,SAAS;AAAA,EAC1C,IAAI,YAAY,GAAG;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,WAAW,GAAG;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI;AAAA;AAuB5C,SAAS,aAAa,CAC3B,QACA,UAAgC,CAAC,GACV;AAAA,EACvB,MAAM,SAAS,eAAe,MAAM;AAAA,EACpC,MAAM,KAAK,QAAQ,MAAM,OAAO,MAAM;AAAA,EAEtC,IAAI,CAAC,OAAO,SAAS,EAAE,KAAK,MAAM,GAAG;AAAA,IACnC,MAAM,IAAI,WAAW,uCAAuC,IAAI;AAAA,EAClE;AAAA,EACA,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,MAAM,IAAI,WAAW,wCAAwC;AAAA,EAC/D;AAAA,EAEA,IAAI,QAAQ,SAAS,aAAa,CAAC,OAAO,SAAS,QAAQ,IAAI,GAAG;AAAA,IAChE,MAAM,IAAI,WAAW,sBAAsB,QAAQ,MAAM;AAAA,EAC3D;AAAA,EACA,IAAI,QAAQ,OAAO,aAAa,CAAC,OAAO,SAAS,QAAQ,EAAE,GAAG;AAAA,IAC5D,MAAM,IAAI,WAAW,oBAAoB,QAAQ,IAAI;AAAA,EACvD;AAAA,EAEA,OAAO,QAAQ,WAAW,OAAO,MAAM;AAAA,EACvC,MAAM,OAAO,QAAQ,QAAQ,SAAS,MAAM;AAAA,EAC5C,MAAM,KAAK,QAAQ,MAAM,UAAU,MAAM;AAAA,EACzC,MAAM,KAAK,OAAO,MAAM;AAAA,EACxB,MAAM,KAAK,KAAK,MAAM;AAAA,EAEtB,MAAM,SAAS,QAAQ,QAAQ,IAAI,IAAI,OAAO,SAAS,OAAO,MAAM;AAAA,EACpE,MAAM,SAAS,eAAe,IAAI,IAAI,EAAE;AAAA,EACxC,MAAM,UAAU,SAAS,QAAQ,MAAM;AAAA,EAEvC,MAAM,UAAU,OAAO,IAAI,EAAE;AAAA,EAC7B,MAAM,IAAI,OAAO,MAAM,EAAE;AAAA,EACzB,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,YAAY,SAAS,SAAS,KAAK,CAAC;AAAA,EAE/D,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,OAAO;AAAA;AAItC,SAAS,cAAc,CAAC,QAA8C;AAAA,EACpE,IAAI,OAAO,MAAM,CAAC,UAAU,OAAO,SAAS,KAAK,CAAC,GAAG;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,KAAK,CAAC,UAAU,OAAO,MAAM,KAAK,CAAC,GAAG;AAAA,IAC/C,MAAM,IAAI,WAAW,gCAAgC;AAAA,EACvD;AAAA,EACA,OAAO,OAAO,OAAO,CAAC,UAAU,OAAO,SAAS,KAAK,CAAC;AAAA;AAmBxD,SAAS,OAAO,CACd,QACA,IACA,IACA,WACc;AAAA,EACd,MAAM,OAAO,IAAI,aAAa,QAAQ;AAAA,EACtC,MAAM,QAAQ,KAAK,OAAO,YAAY;AAAA,EACtC,MAAM,SAAS,YAAY,OAAO;AAAA,EAClC,MAAM,WAAW,YAAY;AAAA,EAM7B,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AAAA,IACzC,MAAM,YAAY,OAAO,KAAK,MAAM;AAAA,IACpC,MAAM,SAAS,KAAK,MAAM,QAAQ;AAAA,IAClC,MAAM,QAAQ,WAAW;AAAA,IAEzB,IAAI,UAAU,KAAK,UAAU,UAAU;AAAA,MACrC,KAAK,YAAY,IAAI,SAAS;AAAA,MAC9B,KAAK,SAAS,MAAM,QAAQ;AAAA,IAC9B,EAAO,SAAI,WAAW,IAAI;AAAA,MACxB,KAAK,MAAM,QAAQ;AAAA,IACrB,EAAO,SAAI,WAAW,WAAW,GAAG;AAAA,MAClC,KAAK,YAAY,IAAI,SAAS;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAWT,SAAS,cAAc,CAAC,IAAY,IAAY,IAA0B;AAAA,EACxE,MAAM,QAAS,WAAW,MAAM,YAAY,MAAO,KAAK;AAAA,EACxD,MAAM,OAAO,QAAQ,WAAW;AAAA,EAChC,MAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,SAAS,GAAG,CAAC,GAAG,UAAU,QAAQ,IAAI;AAAA,EACxE,MAAM,SAAS,KAAK,IAAI,CAAC,KAAK,UAC5B,QAAQ,YAAY,CAAC,KAAK,WAAW,SAAS,GAChD;AAAA,EAEA,OAAO,aAAa,KAAK,QAAQ,CAAC,QAAQ,MAAM,KAAK,EAAE,CAAC;AAAA;AAU1D,SAAS,KAAK,CAAC,IAAY,KAAoB;AAAA,EAC7C,MAAM,IAAI,KAAK,IAAI,EAAE,IAAI;AAAA,EAEzB,IAAI,IAAI,GAAG;AAAA,IACT,OAAQ,eAAe,KAAK,IAAI,OAAO,IAAI,CAAC,IAAK;AAAA,EACnD;AAAA,EAEA,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG,GAAG;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,KAAK,MAAM,IAAI,KAAK,IAAI;AAAA,EACrC,MAAM,OAAO,IAAI;AAAA,EACjB,OACG,eAAe,OACf,KAAK,IAAI,OAAO,OAAO,IAAI,IAAI,KAAK,KAAK,OAAO,OAAO,QAAQ,IAAI;AAAA;AAcxE,SAAS,QAAQ,CAAC,QAAsB,QAAoC;AAAA,EAC1E,MAAM,WAAW,aAAa,KAAK,MAAM;AAAA,EACzC,MAAM,gBAAgB,IAAI,aAAa,QAAQ;AAAA,EAC/C,MAAM,aAAa,aAAa,KAAK,MAAM;AAAA,EAC3C,MAAM,kBAAkB,IAAI,aAAa,QAAQ;AAAA,EAEjD,WAAW,UAAU,eAAe,KAAK;AAAA,EACzC,WAAW,YAAY,iBAAiB,KAAK;AAAA,EAK7C,SAAS,IAAI,EAAG,IAAI,UAAU,KAAK,GAAG;AAAA,IACpC,MAAM,OACJ,SAAS,KAAK,WAAW,KACzB,cAAc,KAAK,gBAAgB;AAAA,IACrC,MAAM,YACJ,cAAc,KAAK,WAAW,KAC9B,SAAS,KAAK,gBAAgB;AAAA,IAChC,SAAS,KAAK;AAAA,IACd,cAAc,KAAK;AAAA,EACrB;AAAA,EAEA,WAAW,UAAU,eAAe,IAAI;AAAA,EAExC,OAAO,aAAa,KAAK,SAAS,SAAS,GAAG,SAAS,GAAG,CAAC,UACzD,KAAK,IAAI,GAAG,QAAQ,QAAQ,CAC9B;AAAA;AAcF,SAAS,UAAU,CACjB,MACA,WACA,SACM;AAAA,EACN,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,QAAQ;AAAA,EAKrB,SAAS,IAAI,GAAG,IAAI,EAAG,IAAI,MAAM,KAAK,GAAG;AAAA,IACvC,IAAI,MAAM;AAAA,IACV,OAAQ,IAAI,SAAS,GAAG,QAAQ,GAAG;AAAA,MACjC,KAAK;AAAA,IACP;AAAA,IACA,KAAK;AAAA,IACL,IAAI,IAAI,GAAG;AAAA,MACT,MAAM,cAAc,KAAK;AAAA,MACzB,MAAM,mBAAmB,UAAU;AAAA,MACnC,KAAK,KAAK,KAAK;AAAA,MACf,UAAU,KAAK,UAAU;AAAA,MACzB,KAAK,KAAK;AAAA,MACV,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,UAAU,IAAI;AAAA,EAChC,MAAM,UAAU,IAAI,aAAa,IAAI;AAAA,EACrC,MAAM,QAAQ,IAAI,aAAa,IAAI;AAAA,EACnC,SAAS,IAAI,EAAG,IAAI,MAAM,KAAK,GAAG;AAAA,IAChC,MAAM,QAAS,YAAY,IAAI,KAAK,KAAK,IAAK;AAAA,IAC9C,QAAQ,KAAK,KAAK,IAAI,KAAK;AAAA,IAC3B,MAAM,KAAK,KAAK,IAAI,KAAK;AAAA,EAC3B;AAAA,EAEA,SAAS,OAAO,EAAG,OAAO,MAAM,SAAS,GAAG;AAAA,IAC1C,MAAM,SAAS,OAAO;AAAA,IACtB,SAAS,QAAQ,EAAG,QAAQ,MAAM,SAAS,QAAQ,GAAG;AAAA,MACpD,SAAS,IAAI,EAAG,IAAI,MAAM,KAAK,GAAG;AAAA,QAChC,MAAM,OAAO,QAAQ;AAAA,QACrB,MAAM,MAAM,OAAO;AAAA,QACnB,MAAM,SAAS,QAAQ,IAAI;AAAA,QAC3B,MAAM,OAAO,MAAM,IAAI;AAAA,QACvB,MAAM,UACJ,KAAK,OAAO,SAAS,UAAU,OAAO;AAAA,QACxC,MAAM,eACJ,KAAK,OAAO,OAAO,UAAU,OAAO;AAAA,QACtC,KAAK,OAAO,KAAK,QAAQ;AAAA,QACzB,UAAU,OAAO,UAAU,QAAQ;AAAA,QACnC,KAAK,QAAQ,KAAK,QAAQ;AAAA,QAC1B,UAAU,QAAQ,UAAU,QAAQ;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAAA;AAYF,SAAS,MAAM,CAAC,MAAc,IAAsB;AAAA,EAClD,MAAM,QAAQ,KAAK,SAAS,YAAY;AAAA,EACxC,MAAM,SAAS,MAAM,KACnB,EAAE,QAAQ,UAAU,GACpB,CAAC,GAAG,UAAU,OAAO,QAAQ,IAC/B;AAAA,EACA,OAAO,YAAY,KAAK;AAAA,EACxB,OAAO;AAAA;AAWT,SAAS,WAAW,CAClB,MACA,QACA,IACQ;AAAA,EACR,IAAI,MAAM;AAAA,EACV,IAAI,OAAO,KAAK,SAAS;AAAA,EAEzB,IAAI,KAAK,KAAK,MAAM;AAAA,IAClB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,KAAK,OAAO;AAAA,IACnB,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,OAAO,MAAM,OAAO,GAAG;AAAA,IACrB,MAAM,SAAU,MAAM,QAAS;AAAA,IAC/B,IAAI,KAAK,KAAK,SAAS;AAAA,MACrB,OAAO;AAAA,IACT,EAAO;AAAA,MACL,MAAM;AAAA;AAAA,EAEV;AAAA,EAEA,IAAI,OAAO,KAAK,OAAO;AAAA,IACrB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,OAAO,KAAK,MAAM;AAAA,IACpB,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,WAAW,OAAO;AAAA,EACxB,MAAM,YAAY,OAAO;AAAA,EACzB,MAAM,WAAW,KAAK;AAAA,EACtB,MAAM,YAAY,KAAK;AAAA,EACvB,OACE,YACC,YAAY,cAAc,KAAK,aAAa,YAAY;AAAA;;ACvb7D,IAAM,eAAe;AAGrB,IAAM,eAAe;AAGrB,IAAM,cAAc;AAGpB,IAAM,UAAU,MAAM,MAAM;AA4BrB,SAAS,OAAO,CACrB,IACA,IACA,UAA0B,CAAC,GACjB;AAAA,EACV,QAAQ,IAAI,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM;AAAA,EAE5C,IAAI,CAAC,OAAO,SAAS,EAAE,KAAK,CAAC,OAAO,SAAS,EAAE,GAAG;AAAA,IAChD,MAAM,IAAI,WAAW,iCAAiC,UAAU,IAAI;AAAA,EACtE;AAAA,EACA,IAAI,KAAK,IAAI;AAAA,IACX,MAAM,IAAI,WAAW,gCAAgC,UAAU,IAAI;AAAA,EACrE;AAAA,EACA,aAAa,GAAG,GAAG;AAAA,EACnB,aAAa,MAAM,MAAM;AAAA,EACzB,IAAI,OAAO,GAAG;AAAA,IACZ,MAAM,IAAI,WAAW,iCAAiC,YAAY,GAAG;AAAA,EACvE;AAAA,EAEA,QAAQ,KAAK,MAAM,UAAU,aAAa,IAAI,IAAI,GAAG,IAAI;AAAA,EACzD,IAAI,UAAU,GAAG;AAAA,IACf,OAAO,CAAC,GAAG;AAAA,EACb;AAAA,EAEA,MAAM,QAAQ,OAAO,OAAO;AAAA,EAK5B,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,QAAQ,EAAE,GAAG,CAAC,GAAG,UAClD,iBAAiB,OAAO,MAAM,GAAG,CACnC;AAAA,EACA,MAAM,SAAS;AAAA,EAIf,OAAO,MAAM,IAAI,CAAC,SAAU,KAAK,IAAI,IAAI,IAAI,mBAAQ,OAAO,IAAI,IAAK;AAAA;AAUvE,SAAS,YAAY,CACnB,IACA,IACA,GACA,MAC8C;AAAA,EAC9C,MAAM,OAAO,SAAS,IAAI,IAAI,GAAG,IAAI;AAAA,EAErC,IAAI,QAAQ,KAAK,MAAM,KAAK,OAAO,YAAY;AAAA,EAC/C,IAAI,UAAU,KAAK,KAAK,KAAK,OAAO,YAAY;AAAA,EAGhD,OAAO,QAAQ,OAAO,KAAK,eAAe,MAAM;AAAA,IAC9C,SAAS;AAAA,EACX;AAAA,EACA,OAAO,UAAU,OAAO,KAAK,eAAe,MAAM;AAAA,IAChD,WAAW;AAAA,EACb;AAAA,EAEA,IAAI,QAAQ,KAAK,MAAM,MAAM,UAAU,KAAK;AAAA,EAC5C,IAAI,QAAQ,MAAM;AAAA,IAOhB,MAAM,UAAU,OAAO;AAAA,IACvB,IAAI,OAAO,KAAK,KAAK,GAAG;AAAA,MAEtB,WAAW;AAAA,IACb,EAAO,SAAI,OAAO,KAAK,KAAK,GAAG;AAAA,MAC7B,SAAS;AAAA,IACX,EAAO,SAAI,SAAS,GAAG;AAAA,MACrB,WAAW,KAAK,MAAM,UAAU,CAAC;AAAA,MACjC,SAAS,KAAK,MAAM,UAAU,CAAC,IAAK,UAAU;AAAA,IAChD,EAAO;AAAA,MACL,SAAS,KAAK,MAAM,UAAU,CAAC;AAAA,MAC/B,WAAW,KAAK,MAAM,UAAU,CAAC,IAAK,UAAU;AAAA;AAAA,IAElD,QAAQ;AAAA,EACV;AAAA,EAEA,OAAO;AAAA,IACL,KAAK,QAAQ,OAAO,KAAK,QAAQ,OAAO;AAAA,IACxC,MAAM,UAAU,OAAO,KAAK,UAAU,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA;AAWF,SAAS,QAAQ,CAAC,IAAY,IAAY,GAAW,MAAsB;AAAA,EACzE,MAAM,QAAQ,KAAK;AAAA,EACnB,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,IAAI,UAAU,KAAK,OAAO,GAAG;AAAA,IAC3B,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,EAAO;AAAA,IACL,OAAO,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAAA,IAC1C,MAAM,QACJ,KACC,WAAW,MAAM,cAAc,MAC5B,KAAK,IAAI,eACT,OAAO,IAAI;AAAA,IAGjB,UAAU,QAAQ,OAAO,QAAQ,KAAK,IAAI,GAAG,CAAC,IAAI,OAAO,UAAU;AAAA;AAAA,EAGrE,IAAI,SAAS;AAAA,IAMX,IAAI,OAAO,IAAI;AAAA,MACb,OAAO,IAAI,OAAO;AAAA,IACpB;AAAA,IACA,QAAQ;AAAA,IACR,IAAI,OAAO,GAAG;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF,EAAO;AAAA,IACL,OAAO;AAAA,IACP,IAAI,IAAI,GAAG;AAAA,MACT,QAAQ;AAAA,IACV;AAAA;AAAA,EAGF,MAAM,OAAO,WAAW,KAAK,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,EACpD,IAAI,OAAO;AAAA,EACX,IAAI,IAAI,OAAO,OAAO,eAAe,OAAO,OAAO;AAAA,IACjD,OAAO,IAAI;AAAA,IACX,IAAI,IAAI,OAAO,OAAO,WAAW,OAAO,OAAO;AAAA,MAC7C,OAAO,IAAI;AAAA,MACX,IAAI,KAAK,OAAO,OAAO,eAAe,OAAO,OAAO;AAAA,QAClD,OAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,UAAU,CAAC,UAA0B;AAAA,EAC5C,MAAM,SAAS,OAAO,KAAK,UAAU;AAAA,EACrC,OAAO,OAAO,SAAS,MAAM,KAAK,WAAW,IACzC,SACA,KAAK,IAAI,IAAI,QAAQ;AAAA;;;AC9M3B,IAAM,OAAO;AAgCN,SAAS,aAAa,CAAC,QAAmC;AAAA,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,IAAI,CAAC;AAAA;AAiBxC,SAAS,SAAS,CACvB,QACA,UAA4B,CAAC,GAClB;AAAA,EACX,MAAM,SAAS,OAAO,OAAO,CAAC,UAAU,OAAO,SAAS,KAAK,CAAC;AAAA,EAC9D,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,MAAM,IAAI,WAAW,wCAAwC;AAAA,EAC/D;AAAA,EAEA,MAAM,SAAS,cAAc,QAAQ,QAAQ,MAAM;AAAA,EACnD,MAAM,SAAS,QACb,OAAO,MAAM,CAAC,GACd,OAAO,MAAM,GAAG,EAAE,GAClB,CAAC,IAAI,QAAQ,KAAK,GACpB;AAAA,EACA,MAAM,SAAS,SAAS,QAAQ,YAAY,QAAQ,QAAQ,MAAM,CAAC;AAAA,EAEnE,IAAI,IAAI,MAAM,IAAI,OAAO,QAAQ;AAAA,IAC/B,MAAM,IAAI,WACR,mEACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,QAAQ,OAAO,MAAM,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,QACvD,OAAO,KAAK,IACd;AAAA,EACF;AAAA;AAIF,SAAS,aAAa,CACpB,QACA,WACU;AAAA,EAGV,IAAI,cAAc,aAAa,OAAO,cAAc,UAAU;AAAA,IAC5D,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,MAAM,IAAI,WACR,sDAAsD,UAAU,QAClE;AAAA,IACF;AAAA,IACA,OAAO,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,EAC5C;AAAA,EAEA,MAAM,QAAQ,aAAa,cAAc,MAAM;AAAA,EAC/C,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AAAA,IACzC,MAAM,IAAI,WAAW,6BAA6B,OAAO;AAAA,EAC3D;AAAA,EAGA,OAAO,QAAQ,GAAG,OAAO,MAAM,GAAG,EAAE,GAAG,OAAO,MAAM,EAAE,CAAC;AAAA;AAUzD,SAAS,WAAW,CAClB,QACA,QACA,QACU;AAAA,EACV,MAAM,WAAW,OAAO,OAAO,CAAC,UAAU,QAAQ,CAAC;AAAA,EACnD,OAAO,QAAQ,WAAW,OAAO,MAAM;AAAA,EACvC,MAAM,QACJ,OAAO,SAAS,IACZ,SAAS,QAAQ,GAAG,IACpB,OAAO,UAAU,IACf,UAAU,SACV,KAAK,IAAI,GAAG,QAAQ;AAAA,EAC5B,MAAM,QAAQ,OAAO;AAAA,EAIrB,OAAO,OAAO,IAAI,CAAC,MAAM,UACvB,UAAU,IAAI,OAAO,QAAQ,OAAO,KACtC;AAAA;AAUF,SAAS,QAAQ,CACf,QACA,QACU;AAAA,EACV,MAAM,SAAS,IAAI,MAAc,OAAO,SAAS,CAAC,EAAE,KAAK,CAAC;AAAA,EAC1D,MAAM,OAAO,OAAO,SAAS;AAAA,EAI7B,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AAAA,IACzC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,QAAS,OAAO,MAAiB,QAAS,OAAO,OAAkB;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,IAAI,MAAM;AAAA,IACV,IAAI,OAAO;AAAA,IACX,OAAO,OAAO,OAAO,GAAG;AAAA,MACtB,MAAM,SAAU,OAAO,OAAQ;AAAA,MAC/B,IAAI,QAAS,OAAO,SAAoB;AAAA,QACtC,MAAM;AAAA,MACR,EAAO;AAAA,QACL,OAAO;AAAA;AAAA,IAEX;AAAA,IACA,OAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO;AAAA;;ACzHF,SAAS,SAAS,CAAC,MAAmB;AAAA,EAC3C,IAAI,CAAC,OAAO,SAAS,IAAI,GAAG;AAAA,IAC1B,MAAM,IAAI,WAAW,4BAA4B,MAAM;AAAA,EACzD;AAAA,EAEA,IAAI,QAAQ,KAAK,MAAM,IAAI,IAAI;AAAA,EAE/B,OAAO,MAAM;AAAA,IACX,QAAS,QAAQ,aAAc;AAAA,IAC/B,IAAI,QAAQ,KAAK,KAAK,QAAS,UAAU,IAAK,IAAI,KAAK;AAAA,IACvD,QAAS,QAAQ,KAAK,KAAK,QAAS,UAAU,GAAI,KAAK,KAAK,IAAK;AAAA,IACjE,SAAS,QAAS,UAAU,QAAS,KAAK;AAAA;AAAA;AAmBvC,SAAS,KAAK,CACnB,KACA,GACA,UAAwB,CAAC,GACf;AAAA,EACV,aAAa,GAAG,GAAG;AAAA,EACnB,QAAQ,MAAM,GAAG,MAAM,MAAM;AAAA,EAE7B,IAAI,CAAC,OAAO,SAAS,GAAG,KAAK,CAAC,OAAO,SAAS,GAAG,KAAK,MAAM,KAAK;AAAA,IAC/D,OAAO,IAAI,MAAc,CAAC,EAAE,KAAK,OAAO,GAAG;AAAA,EAC7C;AAAA,EAEA,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA;AA2B3D,SAAS,KAAK,CACnB,KACA,GACA,UAAwB,CAAC,GACf;AAAA,EACV,aAAa,GAAG,GAAG;AAAA,EACnB,QAAQ,cAAO,GAAG,UAAK,MAAM;AAAA,EAE7B,IAAI,CAAC,OAAO,SAAS,KAAI,KAAK,CAAC,OAAO,SAAS,GAAE,KAAK,MAAK,GAAG;AAAA,IAC5D,OAAO,IAAI,MAAc,CAAC,EAAE,KAAK,OAAO,GAAG;AAAA,EAC7C;AAAA,EAEA,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,KAAK,IAAI,CAAC,EAAE,GAAG,MACrD,mBAAmB,GAAG,CACxB;AAAA,EACA,OAAO,MACJ,KAAK,EACL,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,MAAM,QAAO,MAAK,CAAC;AAAA;AA0BtB,SAAS,EAAE,CAAC,KAAU,GAAW,IAAsB;AAAA,EAC5D,aAAa,GAAG,GAAG;AAAA,EAEnB,IAAI,CAAC,OAAO,UAAU,EAAE,KAAK,MAAM,GAAG;AAAA,IACpC,OAAO,IAAI,MAAc,CAAC,EAAE,KAAK,OAAO,GAAG;AAAA,EAC7C;AAAA,EAEA,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA,EACtB,MAAM,aAAa,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACjE,OAAO,EAAE,IAAI,CAAC,WAAW,UAAU;AAAA,IAEjC,MAAM,YAAY,IAChB,WAAW,IAAI,CAAC,UAAW,MAAM,UAAqB,CAAC,CACzD;AAAA,IACA,OAAO,YAAY,KAAK,KAAK,YAAY,EAAE;AAAA,GAC5C;AAAA;AA0BI,SAAS,MAAM,CACpB,KACA,GACA,UAAyB,CAAC,GAChB;AAAA,EACV,QAAQ,UAAU,GAAG,QAAQ,MAAM;AAAA,EACnC,OAAO,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,GAAG;AAAA;AA2B1D,SAAS,OAAO,CACrB,KACA,GACA,UAA0B,CAAC,GACjB;AAAA,EACV,aAAa,GAAG,GAAG;AAAA,EACnB,QAAQ,WAAW,GAAG,QAAQ,MAAM;AAAA,EAEpC,IAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG;AAAA,IACtE,OAAO,IAAI,MAAc,CAAC,EAAE,KAAK,OAAO,GAAG;AAAA,EAC7C;AAAA,EAEA,OAAO,MAAM,KAAK,CAAC,EAAE,IACnB,CAAC,MAAM,WAAW,QAAQ,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,CACxD;AAAA;AAIF,SAAS,kBAAkB,CAAC,KAA4B;AAAA,EACtD,MAAM,SAAS,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,EACjD,MAAM,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAA,EAChC,OAAO,CAAC,SAAS,KAAK,IAAI,KAAK,GAAG,SAAS,KAAK,IAAI,KAAK,CAAC;AAAA;AAsBrD,SAAS,wBAA2B,CACzC,KACA,QACA,GACK;AAAA,EACL,aAAa,GAAG,GAAG;AAAA,EACnB,IAAI,IAAI,OAAO,QAAQ;AAAA,IACrB,MAAM,IAAI,WACR,2BAA2B,0BAA0B,OAAO,QAC9D;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,OAAO,MAAM;AAAA,EAG1B,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK,GAAG;AAAA,IAC7B,MAAM,SAAS,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;AAAA,IACvD,MAAM,OAAO,KAAK;AAAA,IAClB,KAAK,UAAU,KAAK;AAAA,IACpB,KAAK,KAAK;AAAA,EACZ;AAAA,EAEA,OAAO,KAAK,MAAM,GAAG,CAAC;AAAA;;;AC1SxB,IAAM,kBAAkB;AAGxB,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAqGrB,SAAS,WAAW,CACzB,KACA,YACA,SACY;AAAA,EACZ,QAAQ,YAAY,OAAO,GAAG,QAAQ,SAAS;AAAA,EAC/C,aAAa,MAAM,MAAM;AAAA,EAIzB,MAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,MAC3C,yBAAyB,KAAK,YAAY,UAAU,CACtD;AAAA,EAEA,OAAO,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC,WAAW,MAAM,MAAM,CAAC,EAAE;AAAA;AAoB5D,SAAS,yBAAyB,CACvC,SACA,gBACkB;AAAA,EAClB,OAAO,QAAQ,IAAI,CAAC,WAAW;AAAA,IAC7B,MAAM,SAAS,KAAK,MAAM;AAAA,IAC1B,MAAM,SAAS,GAAG,MAAM;AAAA,IACxB,MAAM,gBAAgB,SAAS,KAAK,KAAK,OAAO,MAAM;AAAA,IACtD,MAAM,OAAO,aAAa,QAAQ,eAAe,eAAe;AAAA,IAChE,MAAM,OAAO,aAAa,QAAQ,eAAe,eAAe;AAAA,IAEhE,OAAO;AAAA,MACL,MAAM;AAAA,MACN,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MAKA,wBACE,KAAK,MAAM,kBACX,KAAK,OAAO,kBACZ,KAAK,MAAM,kBACX,KAAK,OAAO;AAAA,IAChB;AAAA,GACD;AAAA;AAIH,SAAS,YAAY,CACnB,QACA,eACA,YACU;AAAA,EACV,OAAO;AAAA,IACL,KAAK,SAAS,gBAAgB;AAAA,IAC9B,MAAM,SAAS,gBAAgB;AAAA,EACjC;AAAA;AAmBK,SAAS,gBAAgB,CAC9B,KACA,UAA2B,CAAC,GACR;AAAA,EACpB;AAAA,IACE,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,eAAe;AAAA,MACb;AAAA,EACJ,aAAa,YAAY,YAAY;AAAA,EACrC,aAAa,SAAS,SAAS;AAAA,EAE/B,MAAM,aAAa,aAAa,KAAK,OAAO;AAAA,EAC5C,MAAM,iBAAiB,KAAK,UAAU;AAAA,EACtC,QAAQ,YAAY,YAAY,KAAK,YAAY;AAAA,IAC/C;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAAA,EAED,OAAO;AAAA,IACL;AAAA,IACA,cAAc,GAAG,UAAU;AAAA,IAC3B,WAAW,0BAA0B,SAAS,cAAc;AAAA,EAC9D;AAAA;AAIF,SAAS,cAAc,CAAC,KAAU,GAAqB;AAAA,EACrD,OAAO,MAAM,KAAK,CAAC;AAAA;;ACpNd,SAAS,eAAe,CAAC,QAA6C;AAAA,EAC3E,OAAO,OAAO,SAAS,KAAK,OAAO,MAAM,CAAC,UAAU,OAAO,UAAU,QAAQ;AAAA;AAYxE,SAAS,cAAc,CAAC,MAA2B;AAAA,EACxD,OAAO,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,SAC/B,gBAAgB,KAAK,KAAe,CACtC;AAAA;AAcK,SAAS,0BAA0B,CACxC,SACA,QACM;AAAA,EACN,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,IAAI,WACR,GAAG,kDAAkD,QAAQ,aAC3D,iDACJ;AAAA,EACF;AAAA;AAYK,SAAS,SAAS,CAAC,MAAyB;AAAA,EACjD,MAAM,QAAQ,OAAO,KAAK,IAAI;AAAA,EAC9B,MAAM,QAAQ,MAAM;AAAA,EACpB,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAQ,KAAK,OAAkB;AAAA,EACrC,MAAM,SAAS,MAAM,KAAK,CAAC,SAAU,KAAK,MAAiB,WAAW,IAAI;AAAA,EAC1E,IAAI,WAAW,WAAW;AAAA,IACxB,MAAM,IAAI,WACR,gDAAgD,cAAc,UAC5D,QAAQ,eAAgB,KAAK,QAAmB,QACpD;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAiBF,SAAS,oBAAoB,CAClC,MACA,MACA,MACmB;AAAA,EACnB,MAAM,SAAS,KAAK;AAAA,EACpB,IAAI,WAAW,WAAW;AAAA,IACxB,MAAM,IAAI,WACR,WAAW,sBAAsB,6BACnC;AAAA,EACF;AAAA,EACA,IAAI,CAAC,gBAAgB,MAAM,GAAG;AAAA,IAC5B,MAAM,IAAI,WACR,WAAW,sBAAsB,6BAC/B,gDACJ;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;ACvFF,IAAM,kCAAkC;AAexC,SAAS,YAAY,CAC1B,QACA,GACA,UAA+B,CAAC,GACf;AAAA,EACjB,QAAQ,SAAS,YAAY,oCAAoC;AAAA,EACjE,MAAM,OAAO,OAAO;AAAA,EAEpB,IAAI,SAAS,GAAG;AAAA,IACd,MAAM,IAAI,WAAW,sCAAsC;AAAA,EAC7D;AAAA,EACA,MAAM,QAAQ,OAAO,GAAG;AAAA,EACxB,IAAI,OAAO,KAAK,CAAC,QAAQ,IAAI,WAAW,KAAK,GAAG;AAAA,IAC9C,MAAM,IAAI,WAAW,mDAAmD;AAAA,EAC1E;AAAA,EACA,IAAI,EAAE,WAAW,MAAM;AAAA,IACrB,MAAM,IAAI,WACR,oBAAoB,EAAE,oCAAoC,WAC5D;AAAA,EACF;AAAA,EACA,IAAI,YAAY,WAAW;AAAA,IACzB,IAAI,QAAQ,WAAW,MAAM;AAAA,MAC3B,MAAM,IAAI,WACR,aAAa,QAAQ,sBAAsB,WAC7C;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG;AAAA,MAC5C,MAAM,IAAI,WAAW,uCAAuC;AAAA,IAC9D;AAAA,EACF;AAAA,EAIA,MAAM,QAAQ,SAAS,IAAI,CAAC,WAAW,KAAK,KAAK,MAAM,CAAC;AAAA,EACxD,MAAM,SAAS,CAAC,OAAe,QAC7B,UAAU,YAAY,QAAQ,QAAQ,MAAM;AAAA,EAE9C,MAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,WAChD,OAAO,IAAI,CAAC,KAAK,UAAU,OAAO,IAAI,SAAS,KAAK,CAAC,CACvD;AAAA,EACA,MAAM,YAAY,EAAE,IAAI,MAAM;AAAA,EAE9B,QAAQ,cAAc,OAAO,SAAS,UAAU,SAAS,WAAW,IAAI;AAAA,EACxE,kBAAkB,SAAS,cAAc,WAAW,KAAK,IAAI,MAAM,OAAO,CAAC,CAAC;AAAA,EAC5E,MAAM,SAAS,eAAe,SAAS,WAAW,IAAI;AAAA,EAItD,MAAM,eAAe,IAAI,MAAqB,KAAK,EAAE,KAAK,IAAI;AAAA,EAC9D,MAAM,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ,aAAa;AAAA,IACjD,aAAa,UAAU,OAAO;AAAA,GAC/B;AAAA,EAED,MAAM,SAAS,OAAO,IAAI,CAAC,QACzB,IACE,QAAQ,KAAK,cAAc,CAAC,OAAO,gBACjC,gBAAgB,OAAO,IAAI,QAAQ,WACrC,CACF,CACF;AAAA,EACA,MAAM,YAAY,QAAQ,GAAG,QAAQ,CAAC,OAAO,QAAQ,QAAQ,GAAG;AAAA,EAEhE,OAAO,EAAE,cAAc,QAAQ,WAAW,KAAK;AAAA;AAkBjD,SAAS,SAAS,CAChB,SACA,WACA,MAC2D;AAAA,EAC3D,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,QAAQ,QAAQ,IAAI,CAAC,GAAG,WAAW,MAAM;AAAA,EAG/C,MAAM,gBAAgB,QAAQ,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,CAAC;AAAA,EAClE,MAAM,eAAe,IAAI,MAAc,KAAK,EAAE,KAAK,CAAC;AAAA,EAGpD,IAAI,OAAO;AAAA,EAIX,SAAS,OAAO,EAAG,OAAO,KAAK,IAAI,MAAM,KAAK,GAAG,QAAQ;AAAA,IACvD,OACE,OAAO,QACP,KAAK,QAAQ,OAAO,IAAI,IAAI,cAAc,QAAQ,WAClD;AAAA,MACA,WAAW,SAAS,OAAO,eAAe,IAAI;AAAA,MAC9C,QAAQ;AAAA,IACV;AAAA,IAKA,IAAI,SAAS,OAAO,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,EAClD;AAAA,EAEA,OAAO,EAAE,cAAc,OAAO,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE;AAAA;AAS3D,SAAS,OAAO,CAAC,SAAqB,MAAc,MAAsB;AAAA,EACxE,MAAM,SAAS,QAAQ;AAAA,EACvB,MAAM,SAAS,KAAK,QAAQ,IAAI;AAAA,EAChC,IAAI,WAAW,GAAG;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY,OAAO,QAAQ,IAAI,CAAC,SAAS;AAAA,EAE/C,SAAS,MAAM,KAAM,MAAM,MAAM,OAAO;AAAA,IACtC,OAAO,OAAO,OAAO,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,UAAU,IAAI,OAAO;AAAA,EAC3B,OAAO,QAAQ;AAAA,EAEf,SAAS,QAAQ,OAAO,EAAG,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IAC1D,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,QAAQ;AAAA,IACZ,SAAS,MAAM,KAAM,MAAM,MAAM,OAAO;AAAA,MACtC,SAAS,OAAO,OAAO,MAAM;AAAA,IAC/B;AAAA,IACA,MAAM,SAAS,CAAC,QAAQ;AAAA,IACxB,SAAS,MAAM,KAAM,MAAM,MAAM,OAAO;AAAA,MACtC,MAAM,OAAO,MAAM,OAAO,SAAS,OAAO;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,OAAO,QAAQ,CAAC;AAAA,EAChB,OAAO;AAAA;AAIT,SAAS,iBAAiB,CACxB,SACA,cACA,UACA,OACM;AAAA,EACN,MAAM,OAAO,SAAS;AAAA,EAEtB,SAAS,OAAO,EAAG,OAAO,OAAO,QAAQ;AAAA,IACvC,MAAM,UAAU,aAAa;AAAA,IAC7B,IAAI,YAAY,GAAG;AAAA,MACjB;AAAA,IACF;AAAA,IACA,MAAM,SAAS,QAAQ;AAAA,IAGvB,IAAI,QAAQ,UAAU,SAAS;AAAA,IAC/B,SAAS,MAAM,OAAO,EAAG,MAAM,MAAM,OAAO;AAAA,MAC1C,SAAS,OAAO,OAAO,SAAS;AAAA,IAClC;AAAA,IACA,MAAM,SAAS,CAAC,QAAQ;AAAA,IACxB,SAAS,QAAQ,SAAS,QAAQ,SAAS;AAAA,IAC3C,SAAS,MAAM,OAAO,EAAG,MAAM,MAAM,OAAO;AAAA,MAC1C,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO;AAAA,IAClD;AAAA,EACF;AAAA;AAIF,SAAS,cAAc,CACrB,SACA,UACA,MACU;AAAA,EACV,MAAM,SAAS,IAAI,MAAc,IAAI,EAAE,KAAK,CAAC;AAAA,EAE7C,SAAS,MAAM,OAAO,EAAG,OAAO,GAAG,OAAO;AAAA,IACxC,IAAI,QAAQ,SAAS;AAAA,IACrB,SAAS,SAAS,MAAM,EAAG,SAAS,MAAM,UAAU;AAAA,MAClD,SAAS,QAAQ,QAAQ,OAAO,OAAO;AAAA,IACzC;AAAA,IACA,OAAO,OAAO,QAAQ,QAAQ,KAAK;AAAA,EACrC;AAAA,EAEA,OAAO;AAAA;AAIT,SAAS,UAAU,CACjB,SACA,OACA,eACA,MACM;AAAA,EACN,UAAU,SAAS,IAAI;AAAA,EACvB,UAAU,OAAO,IAAI;AAAA,EACrB,UAAU,eAAe,IAAI;AAAA;AAI/B,SAAS,SAAY,CAAC,OAAY,MAAoB;AAAA,EACpD,OAAO,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,EACpC,MAAM,KAAK,KAAK;AAAA;AAIlB,SAAS,IAAI,CAAC,QAA2B,MAAsB;AAAA,EAC7D,OAAO,KAAK,MAAM,GAAG,OAAO,MAAM,IAAI,CAAC;AAAA;;;AC/PzC,IAAM,aAAa;AA0FZ,SAAS,iBAAiB,CAC/B,MACA,SACmB;AAAA,EACnB,QAAQ,SAAS,IAAI,KAAK,cAAc,MAAM,WAAW,CAAC,MAAM;AAAA,EAEhE,IAAI,OAAO,KAAK;AAAA,IACd,MAAM,IAAI,WACR,8DAA8D,KAChE;AAAA,EACF;AAAA,EAGA,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;AAAA,EACxC,SAAS,QAAQ,CAAC,YAAY;AAAA,IAC5B,IAAI,MAAM,IAAI,OAAO,GAAG;AAAA,MACtB,MAAM,IAAI,WACR,YAAY,0DACV,oBACJ;AAAA,IACF;AAAA,IACA,MAAM,IAAI,OAAO;AAAA,GAClB;AAAA,EAED,MAAM,OAAO,UAAU,IAAI;AAAA,EAC3B,MAAM,IAAI,qBAAqB,MAAM,SAAS,SAAS;AAAA,EACvD,MAAM,WAAW,qBAAqB,MAAM,IAAI,IAAI;AAAA,EACpD,MAAM,YAAY,qBAAqB,MAAM,KAAK,KAAK;AAAA,EACvD,MAAM,iBAAiB,SAAS,IAAI,CAAC,YACnC,qBAAqB,MAAM,SAAS,UAAU,CAChD;AAAA,EAKA,MAAM,eAAe,CAAC,GAAG,UAAU,WAAW,GAAG,cAAc;AAAA,EAC/D,MAAM,eAAe,EAClB,IAAI,CAAC,GAAG,QAAQ,GAAG,EACnB,OAAO,CAAC,QACP,aAAa,MAAM,CAAC,WAAW,OAAO,SAAS,OAAO,IAAI,CAAC,CAC7D;AAAA,EACF,IAAI,aAAa,WAAW,GAAG;AAAA,IAC7B,MAAM,IAAI,WACR,qEACE,kDACJ;AAAA,EACF;AAAA,EAIA,MAAM,gBAGA;AAAA,IACJ,EAAE,MAAM,eAAe,QAAQ,IAAI,MAAc,IAAI,EAAE,KAAK,CAAC,EAAE;AAAA,IAC/D,EAAE,MAAM,IAAI,QAAQ,SAAS;AAAA,IAC7B,EAAE,MAAM,KAAK,QAAQ,UAAU;AAAA,IAC/B,GAAG,SAAS,IAAI,CAAC,SAAS,WAAW;AAAA,MACnC,MAAM;AAAA,MACN,QAAQ,eAAe;AAAA,IACzB,EAAE;AAAA,IACF,GAAI,cACA;AAAA,MACE;AAAA,QACE,MAAM,GAAG,MAAM;AAAA,QACf,QAAQ,QAAQ,UAAU,WAAW,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MACtD;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAAA,EAEA,MAAM,SAAS,aAAa,IAAI,CAAC,QAC/B,cAAc,IAAI,CAAC,WAAW,OAAO,OAAO,IAAc,CAC5D;AAAA,EACA,MAAM,MAAM,aACV,QACA,aAAa,IAAI,CAAC,QAAQ,EAAE,IAAc,CAC5C;AAAA,EACA,MAAM,eAAe,cAAc,IAAI,CAAC,QAAQ,WAAW;AAAA,IACzD,MAAM,OAAO;AAAA,IACb,OAAO,IAAI,aAAa,UAAU;AAAA,EACpC,EAAE;AAAA,EAIF,MAAM,SAAS,IAAI,MAAc,IAAI,EAAE,KAAK,OAAO,GAAG;AAAA,EACtD,MAAM,YAAY,IAAI,MAAc,IAAI,EAAE,KAAK,OAAO,GAAG;AAAA,EACzD,aAAa,QAAQ,CAAC,KAAK,aAAa;AAAA,IACtC,OAAO,OAAO,IAAI,OAAO;AAAA,IACzB,UAAU,OAAO,IAAI,UAAU;AAAA,GAChC;AAAA,EAKD,MAAM,WAAW,KAAK,GAAG,OAAO,QAAQ,GAAG,UAAU;AAAA,EACrD,MAAM,YAAY,KAAK,GAAG,OAAO,SAAS,GAAG,UAAU;AAAA,EACvD,MAAM,QAAQ,OAAO,YACnB,SAAS,IAAI,CAAC,SAAS,UAAU;AAAA,IAC/B;AAAA,IACA,KACG,eAAe,OAA6B,OAAO,OAAO,QAAQ,CACrE;AAAA,EACF,CAAC,CACH;AAAA,EAIA,MAAM,UAAU,aAAa,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAAA,EAC1D,MAAM,cAAc,UAAU,QAAQ,CAAC,aACrC,SAAS,IAAI,CAAC,YAAY;AAAA,IACxB,MAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG,SAAS,IAAI,CAAC,YAAY,MAAM,QAAkB;AAAA,MACrD,GAAI,cAAc,CAAC,UAAU,QAAQ,IAAI,CAAC;AAAA,IAC5C;AAAA,IACA,OAAO,IAAI,QAAQ,SAAS,SAAS,CAAC,OAAO,WAAW,QAAQ,MAAM,CAAC;AAAA,GACxE,CACH;AAAA,EAEA,OAAO,SAAS,YAAY,OAAO,CAAC;AAAA,EACpC,OAAO,YAAY,eAAe,OAAO,WAAW;AAAA,EAEpD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,CAAC,KAAK,IAAI,SAAS,UAAU,GAAG,KAAK,IAAI,UAAU,WAAW,CAAC;AAAA,IACrE;AAAA,EACF;AAAA;AAoBF,SAAS,IAAI,CAAC,MAAc,IAAY,QAA0B;AAAA,EAChE,IAAI,SAAS,IAAI;AAAA,IACf,OAAO,IAAI,MAAc,MAAM,EAAE,KAAK,IAAI;AAAA,EAC5C;AAAA,EAEA,MAAM,MAAM,KAAK,SAAS,SAAS;AAAA,EACnC,OAAO,MAAM,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,UAChC,UAAU,IAAI,OAAO,UAAU,SAAS,IAAI,KAAK,OAAO,QAAQ,EAClE;AAAA;;ACnRK,SAAS,iBAAiB,CAAC,QAA6C;AAAA,EAC7E,OAAO,OAAO,QAAQ,CAAC,OAAO,QAC5B,OAAO,SAAS,MAAM,CAAC,KAAK,OAAO,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAClE;AAAA;AAgDK,SAAS,gBAAgB,CAC9B,QACsB;AAAA,EACtB,MAAM,OAAO,kBAAkB,MAAM;AAAA,EACrC,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,KAAK,IAAI,CAAC,QAAS,OAAO,KAAe,CAAC;AAAA,EACrD,MAAM,KAAK,KAAK,IAAI,CAAC,QAAS,OAAO,KAAe,CAAC;AAAA,EACrD,MAAM,QAAQ,KAAK,EAAE;AAAA,EACrB,MAAM,QAAQ,KAAK,EAAE;AAAA,EAErB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK;AAAA,EACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK;AAAA,EACpC,MAAM,cAAc,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAAA,EAC9C,MAAM,cAAc,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAAA,EAC9C,MAAM,cAAc,IAAI,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC;AAAA,EAEhE,MAAM,QAAQ,gBAAgB,IAAI,OAAO,cAAc;AAAA,EACvD,MAAM,YAAY,UAAU,OAAO,QAAQ,QAAQ,QAAQ;AAAA,EAC3D,MAAM,cACJ,gBAAgB,KAAK,gBAAgB,IACjC,OACA,cAAc,KAAK,KAAK,cAAc,WAAW;AAAA,EAEvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAC7B,UAAU,OAAO,YAAY,YAAY,QAAQ,CACnD;AAAA,EAEA,MAAM,MAAM,IAAI,eAAe,IAAI,CAAC,OAAO,IAAI,UAAU,IAAI,MAAM,CAAC;AAAA,EACpE,MAAM,MAAM,IAAI,QAAQ,IAAI,gBAAgB,CAAC,GAAG,OAAO,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EACxE,MAAM,MAAM;AAAA,EACZ,MAAM,WAAW,QAAQ,IAAI,OAAO,MAAM;AAAA,EAI1C,MAAM,SAAS,IAAI,MAAc,OAAO,MAAM,EAAE,KAAK,OAAO,GAAG;AAAA,EAC/D,KAAK,QAAQ,CAAC,KAAK,aAAa;AAAA,IAC9B,OAAO,OAAO,eAAe;AAAA,GAC9B;AAAA,EAED,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;AChFF,IAAM,kBAAkB;AAqFjB,SAAS,WAAW,CAAC,QAAyB;AAAA,EACnD,OAAO,cAAc,UAAU,MAAM,CAAC;AAAA;AAiBjC,SAAS,YAAY,CAAC,QAAkC;AAAA,EAC7D,MAAM,gBAAgB,UAAU,MAAM;AAAA,EACtC,MAAM,eAAc,cAAc,aAAa;AAAA,EAC/C,MAAM,YAAY,YAAY,aAAa;AAAA,EAE3C,IAAI,cAAc,MAAM;AAAA,IACtB,OAAO;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,iBAAiB,aAAa;AAAA,EAI9C,MAAM,QAAQ,KAAK,QAAQ,MAAM,IAAI,QAAQ,OAAO;AAAA,EAIpD,IAAI,QAAQ,OAAO,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,aAAa;AAAA,MACb;AAAA,MACA,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,WAAW;AAAA,EACb;AAAA;AAmBF,SAAS,SAAS,CAAC,QAAgC;AAAA,EAEjD,MAAM,eAAe,KAAK,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,EAAE;AAAA,EAC7D,MAAM,UAAU,eAAe,OAAO,KAAK,OAAO;AAAA,EAClD,MAAM,aAAa,eAAe,OAAO,KAAK,OAAO;AAAA,EACrD,MAAM,QAAQ,eAAe,OAAO,KAAK,OAAO;AAAA,EAChD,MAAM,aAAa,eAAe,OAAO,KAAK,OAAO;AAAA,EAKrD,MAAM,aACJ,KAAK,IAAI,OAAO,KAAK,kBAAkB,SAAS,IAAI,WAAW,QAAQ;AAAA,EACzE,MAAM,WAAW,iBAAiB,CAAC,YAAY,YAAY,UAAU;AAAA,EAErE,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAC1B;AAAA,EACF;AAAA;AAIF,SAAS,aAAa,CAAC,eAAsC;AAAA,EAC3D,QAAQ,cAAc,WAAW;AAAA,EAKjC,IAAI,YAAY,aAAa,MAAM,MAAM;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;AAAA,EACpE,MAAM,OAAO,OAAO,OAClB,CAAC,SAAS,UAAW,QAAQ,IAAI,CAAC,UAAU,SAC5C,eAAe,KAAK,CACtB;AAAA,EAEA,OAAO,OAAO,KAAK,IAAI,OAAO;AAAA;AAIhC,SAAS,WAAW,CAAC,eAA4C;AAAA,EAC/D,OAAO,SAAS,YAAY,cAAc;AAAA,EAC1C,IAAI,YAAY,GAAG;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,aAAa,IAAI,IAAI;AAAA;AAU9B,SAAS,gBAAgB,CAAC,eAAuC;AAAA,EAC/D,QAAQ,iBAAiB;AAAA,EACzB,OAAO,UAAU,eAAe,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAAA,EAC7D,OAAO,WAAW,gBAAgB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAAA,EAE/D,OAAO,IAAI,MAAM,YAAY,eAAe,UAAU,WAAW;AAAA,EACjE,OAAO,IAAI,MAAM,YAAY,eAAe,WAAW,YAAY;AAAA,EAGnE,OAAO;AAAA,IACL,IAAI,oBAAoB,EAAE;AAAA,IAC1B,IAAI,oBAAoB,EAAE;AAAA,IAC1B,IAAI,oBAAoB,EAAE;AAAA,IAC1B,IAAI,oBAAoB,EAAE;AAAA,EAC5B;AAAA;AAIF,SAAS,WAAW,CAClB,eACA,KACA,QACkB;AAAA,EAClB,QAAQ,YAAY,QAAQ,eAAe;AAAA,EAE3C,MAAM,QAAQ,iBAAiB,CAAC,YAAY,KAAK,MAAM,IAAI,OAAO;AAAA,EAClE,MAAM,QAAQ,iBAAiB,CAAC,YAAY,OAAO,GAAG,IAAI,OAAO;AAAA,EAEjE,OAAO,CAAC,OAAO,KAAK;AAAA;AAItB,SAAS,OAAO,CAAC,QAAyB;AAAA,EACxC,OAAO,KAAK,IACV,KAAK,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,EAAE,GACxC,KAAK,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,EAAE,CAC1C;AAAA;;ACxMK,SAAS,mBAAmB,CACjC,QACkB;AAAA,EAClB,MAAM,OAAO,kBAAkB,MAAM;AAAA,EACrC,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,KAAK,IAAI,CAAC,QAAQ,OAAO,IAAa;AAAA,EAEvD,MAAM,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC;AAAA,EACrD,MAAM,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC;AAAA,EACrD,MAAM,OAAO,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI,OAAO;AAAA,EACtD,MAAM,OAAO,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI,OAAO;AAAA,EAItD,MAAM,UAAU,KAAK,IAAI,GAAG,SAAS,SAAS,CAAC;AAAA,EAC/C,MAAM,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI;AAAA,EAC3C,MAAM,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI;AAAA,EAC3C,MAAM,aAAa,IAAI,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC,IAAI;AAAA,EAEnE,OAAO,OAAO,UAAU,aAAa,MAAM,MAAM,UAAU;AAAA,EAI3D,MAAM,SAAS,OAAO,IAAI,OAAO,EAAE,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,EAAE;AAAA,EAClE,KAAK,QAAQ,CAAC,KAAK,aAAa;AAAA,IAC9B,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,KAAK,KAAK;AAAA,IAChB,OAAO,OAAO;AAAA,MACZ,GAAG,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS;AAAA,MAChD,GAAG,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,SAAS;AAAA,IACpD;AAAA,GACD;AAAA,EAED,OAAO;AAAA,IACL,MAAM,CAAC,OAAO,MAAM,QAAQ,GAAG,OAAO,OAAO,QAAQ,CAAC;AAAA,IACtD,UAAU,CAAC,MAAM,UAAU,OAAO,QAAQ;AAAA,IAC1C,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ;AAAA,IACjC;AAAA,EACF;AAAA;AAwBF,SAAS,YAAY,CACnB,MACA,MACA,YACiC;AAAA,EACjC,IAAI,eAAe,GAAG;AAAA,IACpB,MAAM,SAAoB,EAAE,UAAU,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE;AAAA,IAC7D,MAAM,SAAoB,EAAE,UAAU,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE;AAAA,IAC7D,OAAO,QAAQ,OAAO,CAAC,QAAQ,MAAM,IAAI,CAAC,QAAQ,MAAM;AAAA,EAC1D;AAAA,EAEA,MAAM,UAAU,OAAO,QAAQ;AAAA,EAC/B,MAAM,SAAS,KAAK,OAAO,OAAO,QAAQ,GAAG,UAAU;AAAA,EACvD,MAAM,SAAS,SAAS;AAAA,EACxB,MAAM,UAAU,SAAS;AAAA,EAIzB,MAAM,WAAW,SAAS;AAAA,EAC1B,MAAM,WAAW,SAAS;AAAA,EAC1B,MAAM,YACJ,YAAY,WAAW,CAAC,YAAY,QAAQ,IAAI,CAAC,UAAU,UAAU;AAAA,EACvE,MAAM,UAAU,OAAO,KAAK,SAAS,CAAC;AAAA,EAItC,MAAM,WAAW,OAAO,CAAC,QAAQ,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;AAAA,EAEzD,OAAO;AAAA,IACL,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACtC,EAAE,UAAU,SAAS,UAAU,SAAS;AAAA,EAC1C;AAAA;AAIF,SAAS,IAAI,CAAC,QAA4B;AAAA,EACxC,MAAM,SAAS,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;AAAA,EAC9C,OAAO,CAAC,OAAO,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA;AAOhD,SAAS,MAAM,CAAC,QAA4B;AAAA,EAC1C,MAAM,WACJ,KAAK,IAAI,OAAO,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE,IAAI,OAAO,KAAK,OAAO;AAAA,EAClE,OAAO,YAAY,IAAI,SAAS,CAAC,QAAQ,OAAO,EAAE,GAAG,QAAQ,OAAO,EAAE,CAAC;AAAA;AAIzE,SAAS,OAAO,CAAC,OAAuB;AAAA,EACtC,OAAO,oBAAoB,CAAC,KAAK;AAAA;AAUnC,SAAS,MAAM,CAAC,UAA0B;AAAA,EACxC,OAAO,KAAK,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC;AAAA;;AC/MjC,IAAM,wBAAwB;AAC9B,IAAM,+BAA+B;AA4D5C,IAAM,iBAAiB;AAEvB,IAAM,QAAQ,KAAK,OAAO;AA0BnB,SAAS,kBAAkB,CAChC,QACA,UAAwB,CAAC,GACR;AAAA,EACjB;AAAA,IACE,UAAU;AAAA,IACV,gBAAgB;AAAA,MACd;AAAA,EAEJ,MAAM,OAAO,kBAAkB,MAAM;AAAA,EACrC,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,KAAK,IAAI,CAAC,QAAQ,OAAO,IAAa;AAAA,EACvD,IAAI,SAAS,KAAK,CAAC,UAAU,MAAM,MAAM,KAAK,MAAM,MAAM,CAAC,GAAG;AAAA,IAC5D,MAAM,IAAI,WAAW,8BAA8B;AAAA,EACrD;AAAA,EAEA,MAAM,WAAW,SAAS,IAAI,CAAC,UAAU,MAAM,CAAC;AAAA,EAChD,MAAM,SAAS,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAInD,IAAI,SAAS,SAAS,IAAI,CAAC,aAAa,UAAU,OAAO,CAAC;AAAA,EAC1D,IAAI,aAAa,OAAO,IAAI,KAAK;AAAA,EACjC,IAAI,mBAAmB,cAAc,UAAU,MAAM;AAAA,EACrD,IAAI,WAAW;AAAA,EAEf,IAAI,eAA2C,CAAC,OAAO,KAAK,IAAI;AAAA,EAChE,IAAI,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,EACjB,IAAI,YAAY;AAAA,EAEhB,SAAS,YAAY,EAAG,aAAa,eAAe,aAAa;AAAA,IAC/D,aAAa;AAAA,IAIb,MAAM,UAAU,WAAW,IAAI,CAAC,WAAW,QAAQ;AAAA,MACjD,MAAM,cAAc,OAAO;AAAA,MAC3B,MAAM,QAAQ,UAAU,SAAS;AAAA,MACjC,OAAO;AAAA,QACL,QAAS,QAAQ,SAAU,eAAe,IAAI;AAAA,QAC9C,UAAU,aAAc,SAAS,OAAkB,eAAe;AAAA,MACpE;AAAA,KACD;AAAA,IAED,MAAM,OAAO,aACX,QACA,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,GACjC;AAAA,MACE,SAAS,QAAQ,IAAI,CAAC,QAAQ,IAAI,MAAM;AAAA,MAExC,WAAW,KAAK,IAAI,WAAM,UAAU,IAAI;AAAA,IAC1C,CACF;AAAA,IAGA,IACE,KAAK,aAAa,KAChB,CAAC,gBAAgB,gBAAgB,QAAQ,CAAC,OAAO,SAAS,WAAW,CACvE,GACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,eAAe,KAAK;AAAA,IACpB,OAAO,KAAK;AAAA,IAGZ,aAAa,OAAO,IAAI,CAAC,QACvB,IACE,QAAQ,KAAK,cAAc,CAAC,OAAO,gBACjC,gBAAgB,OAAO,IAAI,QAAQ,WACrC,CACF,CACF;AAAA,IACA,SAAS,WAAW,IAAI,WAAW;AAAA,IACnC,WAAW,cAAc,UAAU,MAAM;AAAA,IAEzC,IACE,KAAK,IAAI,WAAW,gBAAgB,KAAK,MAAM,KAAK,IAAI,QAAQ,KAChE,SACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EAEA,MAAM,YAAY,KAAK,QAAQ;AAAA,EAC/B,MAAM,eAAe,cACnB,UACA,SAAS,IAAI,MAAM,SAAS,CAC9B;AAAA,EAIA,MAAM,eAAe,IAAI,MAAc,OAAO,MAAM,EAAE,KAAK,OAAO,GAAG;AAAA,EACrE,MAAM,mBAAmB,IAAI,MAAc,OAAO,MAAM,EAAE,KAAK,OAAO,GAAG;AAAA,EACzE,KAAK,QAAQ,CAAC,KAAK,aAAa;AAAA,IAC9B,aAAa,OAAO,OAAO;AAAA,IAC3B,iBAAiB,OAAO,WAAW;AAAA,GACpC;AAAA,EAED,OAAO;AAAA,IAGL,WAAW,aAAa,MAAM,OAAO;AAAA,IACrC,OAAO,aAAa,MAAM;AAAA,IAC1B,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IAIA,KAAK,WAAW,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,OAAO,KAChB,CAAC,gBAAgB,cAAc,IAAI,SAAS,cAAc,KAC5D;AAAA,EACF;AAAA;AAUK,SAAS,YAAY,CAAC,KAAe,GAAmB;AAAA,EAC7D,OAAO,YAAY,IAAI,aAAa,IAAI,SAAS,KAAK,CAAC;AAAA;AAIzD,SAAS,KAAK,CAAC,aAA6B;AAAA,EAC1C,OAAO,KAAK,IAAI,eAAe,IAAI,YAAY;AAAA;AAWjD,SAAS,WAAW,CAAC,WAA2B;AAAA,EAC9C,MAAM,OACJ,YAAY,CAAC,iBACT,OAAO,UACP,YAAY,iBACV,IAAI,OAAO,UACX,KAAK,IAAI,SAAS;AAAA,EAC1B,OAAO,QAAQ,IAAI;AAAA;AAarB,SAAS,SAAS,CAAC,WAA2B;AAAA,EAC5C,IAAI,YAAY,kBAAkB,YAAY,CAAC,gBAAgB;AAAA,IAC7D,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,OAAO,KAAK,IAAI,SAAS;AAAA,EAC/B,OAAO,SAAS,IAAI,SAAS,IAAI;AAAA;AAInC,SAAS,aAAa,CACpB,UACA,eACQ;AAAA,EACR,OAAO,IACL,QACE,UACA,eACA,CAAC,SAAS,gBACR,KACC,SAAS,SAAS,WAAW,IAC5B,SAAS,IAAI,SAAS,IAAI,WAAW,EAC3C,CACF;AAAA;AAIF,SAAS,QAAQ,CAAC,SAAiB,aAA6B;AAAA,EAC9D,OAAO,YAAY,IAAI,UAAU,KAAK,IAAI,UAAU,WAAW,IAAI;AAAA;;ACpSrE,IAAM,YAAY,MAAM;AAExB,IAAM,eAAe;AAErB,IAAM,eAAkC;AAAA,EACtC;AAAA,EAAuB;AAAA,EAAwB;AAAA,EAC/C;AAAA,EAAyB;AAAA,EACzB;AAAA,EAA2B;AAAA,EAC3B;AAAA,EAA2B;AAAA,EAC3B;AAAA,EAA0B;AAAA,EAC1B;AAAA,EAA2B;AAAA,EAC3B;AACF;AAEA,IAAM,kBAAkB,MAAM,KAAK,IAAI,IAAI,KAAK,EAAE;AAOlD,SAAS,aAAa,CAAC,GAAmB;AAAA,EACxC,OACE,eACA,IAAI,aAAa,IAAI,CAAC,aAAa,UAAU,eAAe,IAAI,MAAM,CAAC;AAAA;AAUpE,SAAS,QAAQ,CAAC,GAAmB;AAAA,EAC1C,IAAI,EAAE,IAAI,IAAI;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,UAAU,IAAI,YAAY;AAAA,EAChC,OACE,mBACC,IAAI,OAAO,KAAK,IAAI,OAAO,IAC5B,UACA,KAAK,IAAI,cAAc,CAAC,CAAC;AAAA;AAsBtB,SAAS,OAAO,CAAC,GAAW,GAAmB;AAAA,EACpD,IAAI,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI;AAAA,IACxB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,aAAa,IAAI,IAAI,YAAY;AAAA,EACvC,OACE,mBACC,YAAY,OACb,KAAK,IAAI,cAAc,CAAC,CAAC,IACzB,KAAK,IAAI,cAAc,CAAC,CAAC,IACzB,KAAK,IAAI,cAAc,IAAI,CAAC,CAAC,KAC5B,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,UAAU,KACrC,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,UAAU,IACtC,MAAM,KAAK,IAAI,UAAU;AAAA;AAK7B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AASvB,SAAS,qBAAqB,CAAC,GAAW,GAAW,GAAmB;AAAA,EACtE,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,SAAS,IAAI;AAAA,EAEnB,IAAI,IAAI;AAAA,EACR,IAAI,IAAI,IAAK,QAAQ,IAAK;AAAA,EAC1B,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,IAChC,IAAI;AAAA,EACN;AAAA,EACA,IAAI,IAAI;AAAA,EACR,IAAI,QAAQ;AAAA,EAEZ,SAAS,OAAO,EAAG,QAAQ,oBAAoB,QAAQ,GAAG;AAAA,IACxD,MAAM,QAAQ,IAAI;AAAA,IAElB,MAAM,OAAQ,QAAQ,IAAI,QAAQ,MAAO,SAAS,UAAU,IAAI;AAAA,IAChE,IAAI,IAAI,OAAO;AAAA,IACf,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI,OAAO;AAAA,IACf,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI;AAAA,IACR,SAAS,IAAI;AAAA,IAEb,MAAM,MAAO,EAAE,IAAI,SAAS,QAAQ,QAAQ,MAAO,IAAI,UAAU,QAAQ;AAAA,IACzE,IAAI,IAAI,MAAM;AAAA,IACd,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI,MAAM;AAAA,IACd,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI;AAAA,IAER,MAAM,QAAQ,IAAI;AAAA,IAClB,SAAS;AAAA,IACT,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,kBAAkB;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAeF,SAAS,cAAc,CAAC,GAAW,GAAW,GAAmB;AAAA,EACtE,IAAI,OAAO,MAAM,CAAC,GAAG;AAAA,IACnB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,OAAO,oBAAoB,GAAG,IAAI,GAAG,GAAG,CAAC;AAAA;AAqBpC,SAAS,mBAAmB,CACjC,GACA,YACA,GACA,GACQ;AAAA,EACR,IAAI,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,UAAU,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI;AAAA,IACvE,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,IAAI,cAAc,GAAG;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,aAAa,MAAM,KAAK,MAAM,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC;AAAA,EACpE,MAAM,gBAAgB,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,UAAU;AAAA,EACpE,MAAM,QAAQ,KAAK,IAAI,IAAI,OAAO,IAAI,gBAAgB,QAAQ,GAAG,CAAC,CAAC;AAAA,EAEnE,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,IAAI;AAAA,IAC7B,OAAQ,QAAQ,sBAAsB,GAAG,GAAG,CAAC,IAAK;AAAA,EACpD;AAAA,EACA,OAAO,IAAK,QAAQ,sBAAsB,YAAY,GAAG,CAAC,IAAK;AAAA;AAIjE,IAAM,kBAAkB;AACxB,IAAM,gBAAgB;AAQtB,SAAS,gBAAgB,CAAC,GAAW,GAAmB;AAAA,EACtD,IAAI,OAAO,IAAI;AAAA,EACf,IAAI,QAAQ;AAAA,EACZ,SAAS,OAAO,EAAG,QAAQ,iBAAiB,QAAQ,GAAG;AAAA,IACrD,QAAQ,KAAK,IAAI;AAAA,IACjB,SAAS;AAAA,IACT,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,eAAe;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;AAAA;AAU5D,SAAS,kBAAkB,CAAC,GAAW,GAAmB;AAAA,EACxD,IAAI,IAAI,IAAI,IAAI;AAAA,EAChB,IAAI,IAAI,IAAI;AAAA,EACZ,IAAI,IAAI,IAAI;AAAA,EACZ,IAAI,QAAQ;AAAA,EAEZ,SAAS,OAAO,EAAG,QAAQ,iBAAiB,QAAQ,GAAG;AAAA,IACrD,MAAM,YAAY,CAAC,QAAQ,OAAO;AAAA,IAClC,KAAK;AAAA,IACL,IAAI,YAAY,IAAI;AAAA,IACpB,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI,YAAY;AAAA,IACpB,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB;AAAA,MAChC,IAAI;AAAA,IACN;AAAA,IACA,IAAI,IAAI;AAAA,IACR,MAAM,QAAQ,IAAI;AAAA,IAClB,SAAS;AAAA,IACT,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,eAAe;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;AAAA;AAI5D,SAAS,UAAU,CAAC,GAAW,GAAmB;AAAA,EAChD,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,IAAI,CAAC,OAAO,SAAS,CAAC,GAAG;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,IAAI,IAAI,IAAI,IAAI,iBAAiB,GAAG,CAAC,IAAI,mBAAmB,GAAG,CAAC;AAAA;AAalE,SAAS,SAAS,CAAC,GAAmB;AAAA,EAC3C,IAAI,OAAO,MAAM,CAAC,GAAG;AAAA,IACnB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,QAAQ,MAAM,WAAW,KAAK,MAAM,IAAI,CAAC;AAAA,EAC/C,OAAO,IAAI,IAAI,IAAI,QAAQ;AAAA;AAI7B,IAAM,YAAY,IAAI,OAAO,UAAU;AAGvC,IAAM,oBAAoB;AAS1B,SAAS,YAAY,CAAC,GAAW,GAAW,GAAmB;AAAA,EAC7D,IAAI,KAAK,KAAK,KAAK,GAAG;AAAA,IACpB,MAAM,OAAO,IAAI,MAAM,IAAI,IAAI;AAAA,IAC/B,MAAM,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,IACvC,MAAM,UACH,IAAI,MAAM,KAAK,OACd,UAAU,IAAI,YAAY,IAAI,KAAK,UAAU,IAAI,YAAY;AAAA,IACjE,MAAM,SAAS,SAAS,SAAS,KAAK;AAAA,IACtC,MAAM,WAAW,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI;AAAA,IACrD,MAAM,IACH,SAAS,KAAK,KAAK,QAAQ,QAAQ,IAAK,YACxC,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,OAC7B,QAAQ,IAAI,IAAI,KAAK,IAAI;AAAA,IAC9B,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC;AAAA,EACpC;AAAA,EAEA,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI;AAAA,EACpD,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI;AAAA,EACpD,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI,IAAI,QAAQ,OAAO;AAAA,IACrB,OAAO,KAAK,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AAAA,EACtC;AAAA,EACA,OAAO,IAAI,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC;AAAA;AAezC,SAAS,qBAAqB,CACnC,GACA,GACA,GACQ;AAAA,EACR,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI;AAAA,IAC3C,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,QAAQ,GAAG,CAAC;AAAA,EACjC,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,IAAI,aAAa,GAAG,GAAG,CAAC;AAAA,EAC5B,IAAI,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI;AAAA,IACxB,IAAI;AAAA,EACN;AAAA,EAIA,SAAS,OAAO,EAAG,OAAO,mBAAmB,QAAQ,GAAG;AAAA,IACtD,MAAM,WAAW,eAAe,GAAG,GAAG,CAAC,IAAI;AAAA,IAC3C,IAAI,WAAW,GAAG;AAAA,MAChB,QAAQ;AAAA,IACV,EAAO;AAAA,MACL,QAAQ;AAAA;AAAA,IAGV,MAAM,UAAU,KAAK,KAClB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,IAAI,YACrD;AAAA,IACA,IAAI,OACF,UAAU,KAAK,OAAO,SAAS,OAAO,IAAI,IAAI,WAAW,UAAU,OAAO;AAAA,IAC5E,IAAI,EAAE,OAAO,UAAU,EAAE,OAAO,QAAQ;AAAA,MACtC,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,SAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,KAAK,IAAI,OAAO,CAAC;AAAA,IAC/B,IAAI;AAAA,IACJ,IAAI,SAAS,OAAO,UAAU,GAAG;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,IAAI,GAAG,SAAS;AAAA;;;AClY9B,SAAS,YAAY,CAAC,KAAwC;AAAA,EAC5D,OAAO,QAAQ,aAAa,QAAQ;AAAA;AAItC,SAAS,aAAa,CAAC,OAAe,IAAY,KAAkC;AAAA,EAClF,OACE,OAAO,MAAM,KAAK,KAClB,EAAE,KAAK,MACN,QAAQ,aAAa,OAAO,MAAM,GAAG;AAAA;AAYnC,SAAS,EAAE,CAAC,GAAW,IAAY,KAAsB;AAAA,EAC9D,IAAI,cAAc,GAAG,IAAI,GAAG,GAAG;AAAA,IAC7B,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,aAAa,GAAG,IACnB,kBAAkB,GAAG,IAAI,GAAG,IAC5B,eAAe,GAAG,EAAE;AAAA;AAWnB,SAAS,EAAE,CAAC,GAAW,IAAY,KAAsB;AAAA,EAC9D,IAAI,cAAc,GAAG,IAAI,GAAG,GAAG;AAAA,IAC7B,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,aAAa,GAAG,IACnB,sBAAsB,GAAG,IAAI,GAAG,IAChC,mBAAmB,GAAG,EAAE;AAAA;AAYvB,SAAS,EAAE,CAAC,GAAW,IAAY,KAAsB;AAAA,EAC9D,IAAI,cAAc,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IAC/C,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,aAAa,GAAG,IACnB,mBAAmB,GAAG,IAAI,GAAG,IAC7B,gBAAgB,GAAG,EAAE;AAAA;AAW3B,SAAS,cAAc,CAAC,GAAW,IAAoB;AAAA,EACrD,IAAI,CAAC,OAAO,SAAS,CAAC,GAAG;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,aACJ,OAAO,KAAK,IAAI,EAAE,IAClB,QAAQ,KAAK,KAAK,CAAC,KACjB,KAAK,KAAK,IAAK,KAAK,MAAO,IAAI,IAAK,EAAE;AAAA,EAC1C,OAAO,KAAK,IAAI,UAAU;AAAA;AAS5B,SAAS,kBAAkB,CAAC,GAAW,IAAoB;AAAA,EACzD,IAAI,MAAM,GAAG;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,IAAI,MAAM,OAAO,mBAAmB;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,MAAM,OAAO,mBAAmB;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,UAAU,KAAK,IAAI,CAAC,GAAG,EAAE;AAAA,EACtC,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA;AAe5B,SAAS,SAAS,CAAC,GAAW,IAAoB;AAAA,EAChD,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,CAAC,OAAO,SAAS,OAAO,GAAG;AAAA,IAE7B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAK;AAAA,EACnB,OAAO,MAAM,oBAAoB,KAAK,OAAO,UAAU,OAAO,KAAK,GAAG,GAAG;AAAA;AAI3E,IAAM,mBAAmB;AAUzB,SAAS,eAAe,CAAC,GAAW,IAAoB;AAAA,EACtD,IAAI,MAAM,KAAK;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,OAAO,IAAI,MAAM,IAAI,IAAI;AAAA,EAC/B,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA,EAC5B,MAAM,WAAW,IAAI;AAAA,EAErB,IAAI;AAAA,EACJ,IAAI,WAAW,KAAK;AAAA,IAElB,MAAM,OAAO,sBAAsB,IAAI,UAAU,KAAK,KAAK,CAAC;AAAA,IAC5D,UAAW,KAAK,QAAS,IAAI;AAAA,EAC/B,EAAO;AAAA,IAEL,MAAM,MAAM,sBAAsB,UAAU,KAAK,GAAG,GAAG;AAAA,IACvD,UAAW,MAAM,IAAI,OAAQ;AAAA;AAAA,EAG/B,OAAO,OAAO,OAAO,KAAK,KAAK,OAAO,GAAG,MAAM,EAAE;AAAA;AAYnD,SAAS,MAAM,CAAC,OAAe,MAAc,IAAoB;AAAA,EAC/D,IAAI,IAAI;AAAA,EAIR,SAAS,OAAO,EAAG,OAAO,kBAAkB,QAAQ,GAAG;AAAA,IACrD,MAAM,UAAU,eAAe,GAAG,EAAE;AAAA,IACpC,IAAI,EAAE,UAAU,MAAM,CAAC,OAAO,SAAS,CAAC,GAAG;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,UAAU,GAAG,EAAE,IAAI,QAAQ;AAAA,IACzC,MAAM,OAAO,IAAI;AAAA,IACjB,IAAI,EAAE,OAAO,MAAM,CAAC,OAAO,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,IACA,IAAI,SAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI,KAAK,IAAI,IAAI,KAAK,OAAO,UAAU,GAAG;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAWT,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AAGzB,IAAM,2BAA2B,IAAI,KAAK,MAAM;AAGhD,IAAM,kBAAkB;AAExB,IAAM,mBAAmB,KAAK,KAAK,IAAI,KAAK,EAAE;AAS9C,SAAS,qBAAqB,CAAC,GAAW,IAAY,KAAqB;AAAA,EACzE,IAAI,MAAM,OAAO,mBAAmB;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,MAAM,OAAO,mBAAmB;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,IAAI,YAAY,CAAC,IAAI;AAAA,EAC3B,MAAM,QAAQ,YAAY,CAAC,MAAM;AAAA,EACjC,MAAM,QACJ,KAAK,mBAAmB,QAAQ,QAAQ,2BACpC,oBAAoB,GAAG,IAAI,KAAK,IAChC,YAAY,GAAG,IAAI,KAAK;AAAA,EAE9B,OAAO,YAAY,IAAI,QAAQ;AAAA;AAWjC,SAAS,mBAAmB,CAAC,GAAW,IAAY,OAAuB;AAAA,EACzE,MAAM,SAAS,KAAK,IAAI;AAAA,EACxB,MAAM,SAAS,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,MAAM;AAAA,EAC/C,OAAO,WAAW,KAAK,IAAI,UAAU,SAAS,MAAM;AAAA;AAetD,SAAS,WAAW,CAAC,GAAW,IAAY,OAAuB;AAAA,EACjE,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAQ,KAAK;AAAA,EACnB,MAAM,IAAI,UAAU;AAAA,EACpB,MAAM,aAAa,KAAK;AAAA,EAExB,IAAI,OAAM;AAAA,EACV,IAAI,IAAI,GAAG;AAAA,IACT,MAAM,SAAS,QAAQ;AAAA,IACvB,IAAI,YAAY,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,IAC5C,IAAI,aAAa,mBAAmB,YAAY;AAAA,IAEhD,IAAI,YAAY,MAAM;AAAA,IACtB,IAAI,YAAY,WAAM;AAAA,MACpB,YAAY,OAAO,KAAK,MAAM,OAAO,MAAM;AAAA,IAC7C;AAAA,IAEA,IAAI,IAAI;AAAA,IACR,MAAM,IAAI,MAAM;AAAA,IAChB,MAAM,UAAU,KAAK,IAAI,YAAY,CAAC;AAAA,IACtC,MAAM,eAAe,QAAQ,KAAK,CAAC;AAAA,IAEnC,IAAI,UAAU,oBAAoB,GAAG,YAAY,GAAG,CAAC;AAAA,IACrD,IAAI,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,YAAY;AAAA,IACnE,IAAI,WAAW,IAAI;AAAA,IACnB,IAAI,WAAW,IAAI,IAAI;AAAA,IACvB,OAAM,YAAY,UAAU,aAAa;AAAA,IAIzC,SAAS,OAAO,EAAG,QAAQ,kBAAkB,QAAQ,GAAG;AAAA,MACtD,KAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAY,KAAK,IAAI,IAAI,KAAM;AAAA,MAC/B,YAAa,KAAK,IAAI,IAAI,QAAS,IAAI;AAAA,MACvC,aAAa,UAAU,IAAI;AAAA,MAC3B,cAAc,UAAU,IAAI,OAAO;AAAA,MACnC,aAAa;AAAA,MACb,IAAI,aAAa,GAAG;AAAA,QAClB;AAAA,MACF;AAAA,MACA,QAAO,YAAY,UAAU,aAAa;AAAA,MAC1C,IAAI,KAAK,IAAI,IAAI,aAAa,UAAU,QAAQ,IAAI,kBAAkB;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,IAAI,KAAK,IAAI,OAAM,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;AAAA;AAazD,SAAS,iBAAiB,CAAC,GAAW,IAAY,KAAqB;AAAA,EACrE,IAAI,CAAC,OAAO,SAAS,CAAC,GAAG;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK,OAAO,OAAO,GAAG;AAAA,IAChD,MAAM,UAAU,IAAI,KAAK,MAAM,KAAK,KAAK,EAAE;AAAA,IAC3C,MAAM,aACJ,sBAAsB,SAAS,KAAK,GAAG,GAAG,IAC1C,sBAAsB,GAAG,IAAI,GAAG;AAAA,IAClC,OAAQ,KAAK,KAAK,IAAI,CAAC,IAAK,KAAK,IAAI,UAAU;AAAA,EACjD;AAAA,EAIA,OAAO,KAAK,IACV,OAAO,KAAK,IAAI,EAAE,IAAI,QAAQ,KAAK,KAAK,CAAC,IAAI,MAAM,MAAM,GAC3D;AAAA;AAIF,IAAM,qBAAqB;AAU3B,SAAS,kBAAkB,CAAC,GAAW,IAAY,KAAqB;AAAA,EACtE,IAAI,KAAK,GAAG;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,GAAG;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EAGA,IAAI,QAAQ,KAAK,IAAI,GAAG,GAAG;AAAA,EAC3B,OACE,OAAO,SAAS,KAAK,KACrB,sBAAsB,OAAO,IAAI,GAAG,IAAI,GACxC;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EACA,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,GAAG;AAAA,EAC7B,OACE,OAAO,SAAS,KAAK,KACrB,sBAAsB,OAAO,IAAI,GAAG,IAAI,GACxC;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EAEA,IAAI,IAAI,OAAO,QAAQ;AAAA,EAIvB,SAAS,OAAO,EAAG,OAAO,oBAAoB,QAAQ,GAAG;AAAA,IACvD,MAAM,WAAW,sBAAsB,GAAG,IAAI,GAAG,IAAI;AAAA,IACrD,IAAI,WAAW,GAAG;AAAA,MAChB,QAAQ;AAAA,IACV,EAAO;AAAA,MACL,QAAQ;AAAA;AAAA,IAGV,MAAM,UAAU,kBAAkB,GAAG,IAAI,GAAG;AAAA,IAC5C,IAAI,OACF,UAAU,KAAK,OAAO,SAAS,OAAO,IAAI,IAAI,WAAW,UAAU,OAAO;AAAA,IAC5E,IAAI,EAAE,OAAO,UAAU,EAAE,OAAO,QAAQ;AAAA,MACtC,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,SAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,KAAK,IAAI,OAAO,CAAC;AAAA,IAC/B,IAAI;AAAA,IACJ,IAAI,SAAS,OAAO,UAAU,KAAK,IAAI,CAAC,GAAG;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;ACjaF,IAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,OAAO;AACT;AAoGA,IAAM,sBAAsB;AAarB,SAAS,UAAU,CAAC,UAAwB,CAAC,GAAe;AAAA,EACjE,QAAQ,MAAM,SAAI,GAAG,UAAU,KAAK,2BAA2B,QAAQ;AAAA,EAEvE,MAAM,KAAK,IAAI;AAAA,EACf,MAAM,IAAI,QAAQ,MAAK,KAAK,KAAK,CAAC;AAAA,EAKlC,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAAA,EACtC,MAAM,OAAO,GAAG,eAAe,IAAI,CAAC;AAAA,EACpC,MAAM,QAAQ,IAAI;AAAA,EAElB,MAAM,YAAY,GAAG,KAAK,IAAI,CAAC;AAAA,EAK/B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAAA,EAElC,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB,GAAG,WAAW,IAAI,CAAC;AAAA,IACrC,SAAS;AAAA,MACP,MAAM;AAAA,MACN,IAAI,GAAG,qBAAqB,IAAI,CAAC;AAAA,IACnC;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,IAAI,GAAG,qBAAqB,EAAE;AAAA,IAChC;AAAA,IACA,aAAa;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,MACf,qBAAqB,IAAI;AAAA,MACzB,SAAS;AAAA,MACT,iBAAiB,cAAc;AAAA,IACjC;AAAA,EACF;AAAA;;AClKK,IAAM,iBAAiC;AAAA,EAC5C,GAAG;AAAA,IACD;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAuB;AAAA,IACvB;AAAA,IAAkB;AAAA,IAClB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,EACvB;AAAA,EACA,GAAG;AAAA,IACD;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAuB;AAAA,IACvB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAwB;AAAA,IACxB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAwB;AAAA,IACxB;AAAA,IAAkB;AAAA,IAClB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAuB;AAAA,IACvB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAuB;AAAA,IACvB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,EACtB;AAAA,EACA,GAAG;AAAA,IACD;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAuB;AAAA,IACvB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,EACxB;AAAA,EACA,GAAG;AAAA,IACD;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,I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",
|
|
45
|
-
"debugId": "
|
|
44
|
+
"mappings": "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IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAmB;AAAA,IACnB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAsB;AAAA,IACtB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAqB;AAAA,IACrB;AAAA,IAAoB;AAAA,IACpB;AAAA,I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",
|
|
45
|
+
"debugId": "CC683922C616AE5764756E2164756E21",
|
|
46
46
|
"names": []
|
|
47
47
|
}
|
package/dist/plot/sampling.d.ts
CHANGED
|
@@ -100,6 +100,49 @@ export interface PlotSamplingOptions {
|
|
|
100
100
|
* reason and so that every curve in the picture is comparable.
|
|
101
101
|
*/
|
|
102
102
|
readonly densityWindow?: "data" | "frozen";
|
|
103
|
+
/**
|
|
104
|
+
* Mark the chosen statistic on all three panels. Nothing is marked by
|
|
105
|
+
* default, and the picture is then what it was before this option existed.
|
|
106
|
+
*/
|
|
107
|
+
readonly mark?: SamplingMarkOptions;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* What the caller knows about the statistic that the panels cannot compute.
|
|
111
|
+
*
|
|
112
|
+
* The library sees the samples and the pile, so it takes those two numbers
|
|
113
|
+
* itself. It cannot see the population's truth: that is a fact about the shape
|
|
114
|
+
* the values came from, not about the values. A Cauchy population has no mean,
|
|
115
|
+
* and the arithmetic mean of any finite draw from it is still a number, so the
|
|
116
|
+
* caller must say which of the two the panel shows.
|
|
117
|
+
*/
|
|
118
|
+
export interface SamplingMarkOptions {
|
|
119
|
+
/** A place on the axis, or a distance from a center. */
|
|
120
|
+
readonly kind: "location" | "spread";
|
|
121
|
+
/** The true value in the population, or null when the population has none. */
|
|
122
|
+
readonly populationValue: number | null;
|
|
123
|
+
/**
|
|
124
|
+
* Where the population's span hangs from. Read only when `kind` is
|
|
125
|
+
* `"spread"`. A spread with a value but no center draws nothing: a span at
|
|
126
|
+
* an invented center would say something the caller did not say.
|
|
127
|
+
*/
|
|
128
|
+
readonly populationCenter?: number | null;
|
|
129
|
+
/** What the panel calls the statistic, in the singular: `"mean"`. */
|
|
130
|
+
readonly label: string;
|
|
131
|
+
}
|
|
132
|
+
/** The three numbers the marks drew. Null where a number does not exist. */
|
|
133
|
+
export interface SamplingMarks {
|
|
134
|
+
/** What the caller declared, copied back. */
|
|
135
|
+
readonly population: number | null;
|
|
136
|
+
/** The statistic of this call's pooled sample. Null when reps is 0. */
|
|
137
|
+
readonly sample: number | null;
|
|
138
|
+
/**
|
|
139
|
+
* The average of every statistic drawn so far. Null on an empty pile.
|
|
140
|
+
*
|
|
141
|
+
* It counts the whole pile, including the statistics outside the window that
|
|
142
|
+
* the histogram drops. Under a population whose statistic does not settle,
|
|
143
|
+
* the average therefore walks, and it can walk out of the window.
|
|
144
|
+
*/
|
|
145
|
+
readonly pile: number | null;
|
|
103
146
|
}
|
|
104
147
|
/** Everything this draw produced, for the caller to hold and to read. */
|
|
105
148
|
export interface PlotSamplingResult {
|
|
@@ -118,6 +161,8 @@ export interface PlotSamplingResult {
|
|
|
118
161
|
* not set the width of the cells either — see `plotSampling`.
|
|
119
162
|
*/
|
|
120
163
|
readonly histogram: Histogram | null;
|
|
164
|
+
/** The three numbers the marks drew, or null when no mark was asked for. */
|
|
165
|
+
readonly marks: SamplingMarks | null;
|
|
121
166
|
}
|
|
122
167
|
/**
|
|
123
168
|
* Build the scale for one panel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampling.d.ts","sourceRoot":"","sources":["../../src/plot/sampling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAOnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG5C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IACvD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"sampling.d.ts","sourceRoot":"","sources":["../../src/plot/sampling.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compstats/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Interactive 2D and 3D visualization of data and statistical concepts, in the browser.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -59,13 +59,19 @@
|
|
|
59
59
|
"dev": "bun run demo/server.ts",
|
|
60
60
|
"prepublishOnly": "bun test && bun run typecheck && bun run build"
|
|
61
61
|
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"plotly.js-dist-min": "^3.0.0"
|
|
64
|
+
},
|
|
65
|
+
"peerDependenciesMeta": {
|
|
66
|
+
"plotly.js-dist-min": {
|
|
67
|
+
"optional": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
62
70
|
"devDependencies": {
|
|
63
71
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
64
72
|
"@types/bun": "^1.3.0",
|
|
65
73
|
"happy-dom": "^20.0.0",
|
|
74
|
+
"plotly.js-dist-min": "^3.7.0",
|
|
66
75
|
"typescript": "^5.9.0"
|
|
67
|
-
},
|
|
68
|
-
"dependencies": {
|
|
69
|
-
"plotly.js-dist-min": "^3.7.0"
|
|
70
76
|
}
|
|
71
77
|
}
|