@ac-bench/measure-duration 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +28 -0
- package/README.md +34 -0
- package/dist/_harness-overhead.d.ts +36 -0
- package/dist/_harness-overhead.d.ts.map +1 -0
- package/dist/_harness-overhead.js +62 -0
- package/dist/_harness-overhead.js.map +1 -0
- package/dist/_iteration-protocol.d.ts +18 -0
- package/dist/_iteration-protocol.d.ts.map +1 -0
- package/dist/_iteration-protocol.js +17 -0
- package/dist/_iteration-protocol.js.map +1 -0
- package/dist/_iteration-source.d.ts +64 -0
- package/dist/_iteration-source.d.ts.map +1 -0
- package/dist/_iteration-source.js +135 -0
- package/dist/_iteration-source.js.map +1 -0
- package/dist/_pool.d.ts +48 -0
- package/dist/_pool.d.ts.map +1 -0
- package/dist/_pool.js +219 -0
- package/dist/_pool.js.map +1 -0
- package/dist/_process-execution.d.ts +62 -0
- package/dist/_process-execution.d.ts.map +1 -0
- package/dist/_process-execution.js +142 -0
- package/dist/_process-execution.js.map +1 -0
- package/dist/_run-case.d.ts +32 -0
- package/dist/_run-case.d.ts.map +1 -0
- package/dist/_run-case.js +267 -0
- package/dist/_run-case.js.map +1 -0
- package/dist/_sampling-options.d.ts +61 -0
- package/dist/_sampling-options.d.ts.map +1 -0
- package/dist/_sampling-options.js +19 -0
- package/dist/_sampling-options.js.map +1 -0
- package/dist/_sampling-report.d.ts +44 -0
- package/dist/_sampling-report.d.ts.map +1 -0
- package/dist/_sampling-report.js +43 -0
- package/dist/_sampling-report.js.map +1 -0
- package/dist/_spawn-baseline.d.ts +35 -0
- package/dist/_spawn-baseline.d.ts.map +1 -0
- package/dist/_spawn-baseline.js +22 -0
- package/dist/_spawn-baseline.js.map +1 -0
- package/dist/_statistics-schema.d.ts +28 -0
- package/dist/_statistics-schema.d.ts.map +1 -0
- package/dist/_statistics-schema.js +59 -0
- package/dist/_statistics-schema.js.map +1 -0
- package/dist/_statistics.d.ts +25 -0
- package/dist/_statistics.d.ts.map +1 -0
- package/dist/_statistics.js +72 -0
- package/dist/_statistics.js.map +1 -0
- package/dist/_types.d.ts +302 -0
- package/dist/_types.d.ts.map +1 -0
- package/dist/_types.js +57 -0
- package/dist/_types.js.map +1 -0
- package/dist/_warnings.d.ts +62 -0
- package/dist/_warnings.d.ts.map +1 -0
- package/dist/_warnings.js +132 -0
- package/dist/_warnings.js.map +1 -0
- package/dist/decl.d.ts +21 -0
- package/dist/decl.d.ts.map +1 -0
- package/dist/decl.js +54 -0
- package/dist/decl.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/iteration-child.d.ts +2 -0
- package/dist/iteration-child.d.ts.map +1 -0
- package/dist/iteration-child.js +37 -0
- package/dist/iteration-child.js.map +1 -0
- package/dist/options.d.ts +59 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +2 -0
- package/dist/options.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +205 -0
- package/dist/plugin.js.map +1 -0
- package/dist/spawn-overhead.d.ts +59 -0
- package/dist/spawn-overhead.d.ts.map +1 -0
- package/dist/spawn-overhead.js +80 -0
- package/dist/spawn-overhead.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type RatioWithUncertainty } from "@ac-kit/math-stats";
|
|
2
|
+
import { DurationStatistics } from "./_statistics-schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Compute descriptive statistics for a set of timings.
|
|
5
|
+
*
|
|
6
|
+
* @param samples Durations in milliseconds. Not modified.
|
|
7
|
+
* @param outlierThreshold Modified Z-score above which a sample is flagged.
|
|
8
|
+
* @returns The computed statistics.
|
|
9
|
+
* @throws {RangeError} If `samples` is empty.
|
|
10
|
+
*/
|
|
11
|
+
export declare function summarise(samples: readonly number[], outlierThreshold?: number): DurationStatistics;
|
|
12
|
+
/**
|
|
13
|
+
* Ratio of two measurements with propagated uncertainty.
|
|
14
|
+
*
|
|
15
|
+
* Reporting `2.4x` without an error term invites reading noise as signal, so
|
|
16
|
+
* the relative dispersions of both operands are combined.
|
|
17
|
+
*
|
|
18
|
+
* @param value Statistics for the measurement being compared.
|
|
19
|
+
* @param baseline Statistics for the reference measurement.
|
|
20
|
+
* @param basis Which central tendency to compare. `median` pairs with the
|
|
21
|
+
* median absolute deviation and is the robust choice.
|
|
22
|
+
* @returns The ratio and its error margin.
|
|
23
|
+
*/
|
|
24
|
+
export declare function relativeTo(value: DurationStatistics, baseline: DurationStatistics, basis?: "mean" | "median"): RatioWithUncertainty;
|
|
25
|
+
//# sourceMappingURL=_statistics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_statistics.d.ts","sourceRoot":"","sources":["../src/_statistics.ts"],"names":[],"mappings":"AAAA,OAAO,EAQN,KAAK,oBAAoB,EAEzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACxB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,gBAAgB,GAAE,MAAkC,GAClD,kBAAkB,CA+BpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,GAAE,MAAM,GAAG,QAAmB,GACjC,oBAAoB,CAUtB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DEFAULT_OUTLIER_THRESHOLD, findOutliers, mean, medianAbsoluteDeviation, medianConfidenceInterval, quantile, ratioWithUncertainty, sampleStandardDeviation, } from "@ac-kit/math-stats";
|
|
2
|
+
/** Normal quantile for a two-sided 95% interval. */
|
|
3
|
+
const Z_95 = 1.959964;
|
|
4
|
+
/**
|
|
5
|
+
* Compute descriptive statistics for a set of timings.
|
|
6
|
+
*
|
|
7
|
+
* @param samples Durations in milliseconds. Not modified.
|
|
8
|
+
* @param outlierThreshold Modified Z-score above which a sample is flagged.
|
|
9
|
+
* @returns The computed statistics.
|
|
10
|
+
* @throws {RangeError} If `samples` is empty.
|
|
11
|
+
*/
|
|
12
|
+
export function summarise(samples, outlierThreshold = DEFAULT_OUTLIER_THRESHOLD) {
|
|
13
|
+
if (samples.length === 0) {
|
|
14
|
+
throw new RangeError("Cannot summarise an empty sample set");
|
|
15
|
+
}
|
|
16
|
+
const sorted = [...samples].sort((left, right) => left - right);
|
|
17
|
+
const count = sorted.length;
|
|
18
|
+
const meanMs = mean(sorted);
|
|
19
|
+
const stdDevMs = sampleStandardDeviation(sorted);
|
|
20
|
+
const medianMs = quantile(sorted, 0.5);
|
|
21
|
+
const madMs = medianAbsoluteDeviation(sorted, medianMs);
|
|
22
|
+
return {
|
|
23
|
+
samples: count,
|
|
24
|
+
meanMs,
|
|
25
|
+
stdDevMs,
|
|
26
|
+
confidence95Ms: count > 1 ? (Z_95 * stdDevMs) / Math.sqrt(count) : 0,
|
|
27
|
+
medianMs,
|
|
28
|
+
medianConfidence95Ms: medianHalfWidth_(sorted),
|
|
29
|
+
madMs,
|
|
30
|
+
minMs: sorted[0],
|
|
31
|
+
maxMs: sorted[count - 1],
|
|
32
|
+
p95Ms: quantile(sorted, 0.95),
|
|
33
|
+
p99Ms: quantile(sorted, 0.99),
|
|
34
|
+
relativeStdDev: meanMs > 0 ? stdDevMs / meanMs : 0,
|
|
35
|
+
relativeMad: medianMs > 0 ? madMs / medianMs : 0,
|
|
36
|
+
outlierIndices: findOutliers(samples, outlierThreshold),
|
|
37
|
+
// An overhead correction can legitimately drive the mean to zero or below,
|
|
38
|
+
// and there is no rate to report when it does.
|
|
39
|
+
opsPerSecond: meanMs > 0 ? 1000 / meanMs : null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Ratio of two measurements with propagated uncertainty.
|
|
44
|
+
*
|
|
45
|
+
* Reporting `2.4x` without an error term invites reading noise as signal, so
|
|
46
|
+
* the relative dispersions of both operands are combined.
|
|
47
|
+
*
|
|
48
|
+
* @param value Statistics for the measurement being compared.
|
|
49
|
+
* @param baseline Statistics for the reference measurement.
|
|
50
|
+
* @param basis Which central tendency to compare. `median` pairs with the
|
|
51
|
+
* median absolute deviation and is the robust choice.
|
|
52
|
+
* @returns The ratio and its error margin.
|
|
53
|
+
*/
|
|
54
|
+
export function relativeTo(value, baseline, basis = "median") {
|
|
55
|
+
const centre = basis === "mean" ? "meanMs" : "medianMs";
|
|
56
|
+
const spread = basis === "mean" ? "relativeStdDev" : "relativeMad";
|
|
57
|
+
return ratioWithUncertainty(value[centre], value[spread], baseline[centre], baseline[spread]);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Half-width of the distribution-free 95% interval around the median.
|
|
61
|
+
*
|
|
62
|
+
* A single sample has no spread to measure, so the interval collapses to zero
|
|
63
|
+
* width rather than being undefined.
|
|
64
|
+
*/
|
|
65
|
+
function medianHalfWidth_(sorted) {
|
|
66
|
+
if (sorted.length < 2) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
const interval = medianConfidenceInterval(sorted);
|
|
70
|
+
return (interval.upper - interval.lower) / 2;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=_statistics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_statistics.js","sourceRoot":"","sources":["../src/_statistics.ts"],"names":[],"mappings":"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"}
|
package/dist/_types.d.ts
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import * as z from "zod/mini";
|
|
2
|
+
import { durationStatisticsSchema } from "./_statistics-schema.js";
|
|
3
|
+
export type { DurationStatistics } from "./_statistics-schema.js";
|
|
4
|
+
export { durationStatisticsSchema };
|
|
5
|
+
export declare const durationBenchRunCaseResultSchema: z.ZodMiniObject<{
|
|
6
|
+
name: z.ZodMiniString<string>;
|
|
7
|
+
tags: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>;
|
|
8
|
+
statistics: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
9
|
+
samples: z.ZodMiniNumber<number>;
|
|
10
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
11
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
12
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
13
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
14
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
15
|
+
madMs: z.ZodMiniNumber<number>;
|
|
16
|
+
minMs: z.ZodMiniNumber<number>;
|
|
17
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
18
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
19
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
20
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
21
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
22
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
23
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
adjusted: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
26
|
+
samples: z.ZodMiniNumber<number>;
|
|
27
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
28
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
29
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
30
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
31
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
32
|
+
madMs: z.ZodMiniNumber<number>;
|
|
33
|
+
minMs: z.ZodMiniNumber<number>;
|
|
34
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
35
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
36
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
37
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
38
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
39
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
40
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
overheadMs: z.ZodMiniNumber<number>;
|
|
43
|
+
timings: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
44
|
+
sampling: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
45
|
+
requestedRelativeError: z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniLiteral<"auto">, z.ZodMiniLiteral<"off">]>;
|
|
46
|
+
effectiveRelativeErrorTarget: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
47
|
+
achievedRelativeError: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
48
|
+
targetReached: z.ZodMiniBoolean<boolean>;
|
|
49
|
+
confidenceLevel: z.ZodMiniNumber<number>;
|
|
50
|
+
estimator: z.ZodMiniEnum<{
|
|
51
|
+
mean: "mean";
|
|
52
|
+
median: "median";
|
|
53
|
+
}>;
|
|
54
|
+
stopReason: z.ZodMiniEnum<{
|
|
55
|
+
cancelled: "cancelled";
|
|
56
|
+
failure: "failure";
|
|
57
|
+
"max-runs": "max-runs";
|
|
58
|
+
"max-time": "max-time";
|
|
59
|
+
"min-time": "min-time";
|
|
60
|
+
mixed: "mixed";
|
|
61
|
+
"policy-satisfied": "policy-satisfied";
|
|
62
|
+
}>;
|
|
63
|
+
measuredMs: z.ZodMiniNumber<number>;
|
|
64
|
+
activeMs: z.ZodMiniNumber<number>;
|
|
65
|
+
elapsedMs: z.ZodMiniNumber<number>;
|
|
66
|
+
samples: z.ZodMiniNumber<number>;
|
|
67
|
+
batches: z.ZodMiniNumber<number>;
|
|
68
|
+
}, z.core.$strip>>;
|
|
69
|
+
harnessOverhead: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
70
|
+
shape: z.ZodMiniEnum<{
|
|
71
|
+
"async-function": "async-function";
|
|
72
|
+
sync: "sync";
|
|
73
|
+
thenable: "thenable";
|
|
74
|
+
}>;
|
|
75
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
76
|
+
share: z.ZodMiniNumber<number>;
|
|
77
|
+
subtracted: z.ZodMiniBoolean<boolean>;
|
|
78
|
+
}, z.core.$strip>>;
|
|
79
|
+
execution: z.ZodMiniEnum<{
|
|
80
|
+
command: "command";
|
|
81
|
+
"in-process": "in-process";
|
|
82
|
+
"per-iteration-process": "per-iteration-process";
|
|
83
|
+
}>;
|
|
84
|
+
spawnBaseline: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
85
|
+
command: z.ZodMiniString<string>;
|
|
86
|
+
statistics: z.ZodMiniObject<{
|
|
87
|
+
samples: z.ZodMiniNumber<number>;
|
|
88
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
89
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
90
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
91
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
92
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
93
|
+
madMs: z.ZodMiniNumber<number>;
|
|
94
|
+
minMs: z.ZodMiniNumber<number>;
|
|
95
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
96
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
97
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
98
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
99
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
100
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
101
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
102
|
+
}, z.core.$strip>;
|
|
103
|
+
share: z.ZodMiniNumber<number>;
|
|
104
|
+
subtracted: z.ZodMiniBoolean<boolean>;
|
|
105
|
+
}, z.core.$strip>>;
|
|
106
|
+
coldStart: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
107
|
+
startupMs: z.ZodMiniNumber<number>;
|
|
108
|
+
importMs: z.ZodMiniNumber<number>;
|
|
109
|
+
runMs: z.ZodMiniNumber<number>;
|
|
110
|
+
}, z.core.$strip>>;
|
|
111
|
+
estimate: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
112
|
+
estimateMs: z.ZodMiniNumber<number>;
|
|
113
|
+
lowerMs: z.ZodMiniNumber<number>;
|
|
114
|
+
upperMs: z.ZodMiniNumber<number>;
|
|
115
|
+
betweenVarianceMs2: z.ZodMiniNumber<number>;
|
|
116
|
+
heterogeneity: z.ZodMiniNumber<number>;
|
|
117
|
+
executions: z.ZodMiniNumber<number>;
|
|
118
|
+
estimator: z.ZodMiniEnum<{
|
|
119
|
+
mean: "mean";
|
|
120
|
+
median: "median";
|
|
121
|
+
}>;
|
|
122
|
+
}, z.core.$strip>>;
|
|
123
|
+
contamination: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
124
|
+
differenceMs: z.ZodMiniNumber<number>;
|
|
125
|
+
share: z.ZodMiniNumber<number>;
|
|
126
|
+
sharedExecutions: z.ZodMiniNumber<number>;
|
|
127
|
+
isolatedExecutions: z.ZodMiniNumber<number>;
|
|
128
|
+
}, z.core.$strip>>;
|
|
129
|
+
warnings: z.ZodMiniArray<z.ZodMiniObject<{
|
|
130
|
+
kind: z.ZodMiniEnum<{
|
|
131
|
+
"first-run-slow": "first-run-slow";
|
|
132
|
+
"harness-overhead-dominates": "harness-overhead-dominates";
|
|
133
|
+
"high-variance": "high-variance";
|
|
134
|
+
"no-baseline-args": "no-baseline-args";
|
|
135
|
+
outliers: "outliers";
|
|
136
|
+
"overhead-dominates": "overhead-dominates";
|
|
137
|
+
"overhead-subtracted": "overhead-subtracted";
|
|
138
|
+
"spawn-baseline-dominates": "spawn-baseline-dominates";
|
|
139
|
+
"spawn-baseline-subtracted": "spawn-baseline-subtracted";
|
|
140
|
+
"target-not-reached": "target-not-reached";
|
|
141
|
+
"too-few-samples": "too-few-samples";
|
|
142
|
+
}>;
|
|
143
|
+
message: z.ZodMiniString<string>;
|
|
144
|
+
severity: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
145
|
+
info: "info";
|
|
146
|
+
warning: "warning";
|
|
147
|
+
}>>;
|
|
148
|
+
}, z.core.$strip>>;
|
|
149
|
+
failure: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
150
|
+
}, z.core.$strip>;
|
|
151
|
+
export type DurationBenchRunCaseResult = z.infer<typeof durationBenchRunCaseResultSchema>;
|
|
152
|
+
export declare const durationBenchRunConditionResultSchema: z.ZodMiniObject<{
|
|
153
|
+
title: z.ZodMiniString<string>;
|
|
154
|
+
results: z.ZodMiniArray<z.ZodMiniObject<{
|
|
155
|
+
name: z.ZodMiniString<string>;
|
|
156
|
+
tags: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniString<string>>;
|
|
157
|
+
statistics: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
158
|
+
samples: z.ZodMiniNumber<number>;
|
|
159
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
160
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
161
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
162
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
163
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
164
|
+
madMs: z.ZodMiniNumber<number>;
|
|
165
|
+
minMs: z.ZodMiniNumber<number>;
|
|
166
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
167
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
168
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
169
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
170
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
171
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
172
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
173
|
+
}, z.core.$strip>>;
|
|
174
|
+
adjusted: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
175
|
+
samples: z.ZodMiniNumber<number>;
|
|
176
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
177
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
178
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
179
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
180
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
181
|
+
madMs: z.ZodMiniNumber<number>;
|
|
182
|
+
minMs: z.ZodMiniNumber<number>;
|
|
183
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
184
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
185
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
186
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
187
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
188
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
189
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
190
|
+
}, z.core.$strip>>;
|
|
191
|
+
overheadMs: z.ZodMiniNumber<number>;
|
|
192
|
+
timings: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
193
|
+
sampling: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
194
|
+
requestedRelativeError: z.ZodMiniUnion<readonly [z.ZodMiniNumber<number>, z.ZodMiniLiteral<"auto">, z.ZodMiniLiteral<"off">]>;
|
|
195
|
+
effectiveRelativeErrorTarget: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
196
|
+
achievedRelativeError: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
197
|
+
targetReached: z.ZodMiniBoolean<boolean>;
|
|
198
|
+
confidenceLevel: z.ZodMiniNumber<number>;
|
|
199
|
+
estimator: z.ZodMiniEnum<{
|
|
200
|
+
mean: "mean";
|
|
201
|
+
median: "median";
|
|
202
|
+
}>;
|
|
203
|
+
stopReason: z.ZodMiniEnum<{
|
|
204
|
+
cancelled: "cancelled";
|
|
205
|
+
failure: "failure";
|
|
206
|
+
"max-runs": "max-runs";
|
|
207
|
+
"max-time": "max-time";
|
|
208
|
+
"min-time": "min-time";
|
|
209
|
+
mixed: "mixed";
|
|
210
|
+
"policy-satisfied": "policy-satisfied";
|
|
211
|
+
}>;
|
|
212
|
+
measuredMs: z.ZodMiniNumber<number>;
|
|
213
|
+
activeMs: z.ZodMiniNumber<number>;
|
|
214
|
+
elapsedMs: z.ZodMiniNumber<number>;
|
|
215
|
+
samples: z.ZodMiniNumber<number>;
|
|
216
|
+
batches: z.ZodMiniNumber<number>;
|
|
217
|
+
}, z.core.$strip>>;
|
|
218
|
+
harnessOverhead: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
219
|
+
shape: z.ZodMiniEnum<{
|
|
220
|
+
"async-function": "async-function";
|
|
221
|
+
sync: "sync";
|
|
222
|
+
thenable: "thenable";
|
|
223
|
+
}>;
|
|
224
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
225
|
+
share: z.ZodMiniNumber<number>;
|
|
226
|
+
subtracted: z.ZodMiniBoolean<boolean>;
|
|
227
|
+
}, z.core.$strip>>;
|
|
228
|
+
execution: z.ZodMiniEnum<{
|
|
229
|
+
command: "command";
|
|
230
|
+
"in-process": "in-process";
|
|
231
|
+
"per-iteration-process": "per-iteration-process";
|
|
232
|
+
}>;
|
|
233
|
+
spawnBaseline: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
234
|
+
command: z.ZodMiniString<string>;
|
|
235
|
+
statistics: z.ZodMiniObject<{
|
|
236
|
+
samples: z.ZodMiniNumber<number>;
|
|
237
|
+
meanMs: z.ZodMiniNumber<number>;
|
|
238
|
+
stdDevMs: z.ZodMiniNumber<number>;
|
|
239
|
+
confidence95Ms: z.ZodMiniNumber<number>;
|
|
240
|
+
medianMs: z.ZodMiniNumber<number>;
|
|
241
|
+
medianConfidence95Ms: z.ZodMiniNumber<number>;
|
|
242
|
+
madMs: z.ZodMiniNumber<number>;
|
|
243
|
+
minMs: z.ZodMiniNumber<number>;
|
|
244
|
+
maxMs: z.ZodMiniNumber<number>;
|
|
245
|
+
p95Ms: z.ZodMiniNumber<number>;
|
|
246
|
+
p99Ms: z.ZodMiniNumber<number>;
|
|
247
|
+
relativeStdDev: z.ZodMiniNumber<number>;
|
|
248
|
+
relativeMad: z.ZodMiniNumber<number>;
|
|
249
|
+
outlierIndices: z.ZodMiniArray<z.ZodMiniNumber<number>>;
|
|
250
|
+
opsPerSecond: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
|
|
251
|
+
}, z.core.$strip>;
|
|
252
|
+
share: z.ZodMiniNumber<number>;
|
|
253
|
+
subtracted: z.ZodMiniBoolean<boolean>;
|
|
254
|
+
}, z.core.$strip>>;
|
|
255
|
+
coldStart: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
256
|
+
startupMs: z.ZodMiniNumber<number>;
|
|
257
|
+
importMs: z.ZodMiniNumber<number>;
|
|
258
|
+
runMs: z.ZodMiniNumber<number>;
|
|
259
|
+
}, z.core.$strip>>;
|
|
260
|
+
estimate: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
261
|
+
estimateMs: z.ZodMiniNumber<number>;
|
|
262
|
+
lowerMs: z.ZodMiniNumber<number>;
|
|
263
|
+
upperMs: z.ZodMiniNumber<number>;
|
|
264
|
+
betweenVarianceMs2: z.ZodMiniNumber<number>;
|
|
265
|
+
heterogeneity: z.ZodMiniNumber<number>;
|
|
266
|
+
executions: z.ZodMiniNumber<number>;
|
|
267
|
+
estimator: z.ZodMiniEnum<{
|
|
268
|
+
mean: "mean";
|
|
269
|
+
median: "median";
|
|
270
|
+
}>;
|
|
271
|
+
}, z.core.$strip>>;
|
|
272
|
+
contamination: z.ZodMiniNullable<z.ZodMiniObject<{
|
|
273
|
+
differenceMs: z.ZodMiniNumber<number>;
|
|
274
|
+
share: z.ZodMiniNumber<number>;
|
|
275
|
+
sharedExecutions: z.ZodMiniNumber<number>;
|
|
276
|
+
isolatedExecutions: z.ZodMiniNumber<number>;
|
|
277
|
+
}, z.core.$strip>>;
|
|
278
|
+
warnings: z.ZodMiniArray<z.ZodMiniObject<{
|
|
279
|
+
kind: z.ZodMiniEnum<{
|
|
280
|
+
"first-run-slow": "first-run-slow";
|
|
281
|
+
"harness-overhead-dominates": "harness-overhead-dominates";
|
|
282
|
+
"high-variance": "high-variance";
|
|
283
|
+
"no-baseline-args": "no-baseline-args";
|
|
284
|
+
outliers: "outliers";
|
|
285
|
+
"overhead-dominates": "overhead-dominates";
|
|
286
|
+
"overhead-subtracted": "overhead-subtracted";
|
|
287
|
+
"spawn-baseline-dominates": "spawn-baseline-dominates";
|
|
288
|
+
"spawn-baseline-subtracted": "spawn-baseline-subtracted";
|
|
289
|
+
"target-not-reached": "target-not-reached";
|
|
290
|
+
"too-few-samples": "too-few-samples";
|
|
291
|
+
}>;
|
|
292
|
+
message: z.ZodMiniString<string>;
|
|
293
|
+
severity: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
294
|
+
info: "info";
|
|
295
|
+
warning: "warning";
|
|
296
|
+
}>>;
|
|
297
|
+
}, z.core.$strip>>;
|
|
298
|
+
failure: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
299
|
+
}, z.core.$strip>>;
|
|
300
|
+
}, z.core.$strip>;
|
|
301
|
+
export type DurationBenchRunConditionResult = z.infer<typeof durationBenchRunConditionResultSchema>;
|
|
302
|
+
//# sourceMappingURL=_types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../src/_types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAO9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuD3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,gCAAgC,CACvC,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,qCAAqC,CAC5C,CAAC"}
|
package/dist/_types.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as z from "zod/mini";
|
|
2
|
+
import { harnessOverheadSchema } from "./_harness-overhead.js";
|
|
3
|
+
import { contaminationSchema, pooledEstimateSchema } from "./_pool.js";
|
|
4
|
+
import { coldStartPhasesSchema } from "./_process-execution.js";
|
|
5
|
+
import { durationSamplingReportSchema } from "./_sampling-report.js";
|
|
6
|
+
import { spawnBaselineReportSchema } from "./_spawn-baseline.js";
|
|
7
|
+
import { durationStatisticsSchema } from "./_statistics-schema.js";
|
|
8
|
+
import { durationBenchWarningSchema } from "./_warnings.js";
|
|
9
|
+
export { durationStatisticsSchema };
|
|
10
|
+
export const durationBenchRunCaseResultSchema = z.object({
|
|
11
|
+
name: z.string(),
|
|
12
|
+
tags: z.record(z.string(), z.string()),
|
|
13
|
+
/** `null` when the case failed. */
|
|
14
|
+
statistics: z.nullable(durationStatisticsSchema),
|
|
15
|
+
/**
|
|
16
|
+
* Statistics with the declared fixed overhead removed from every sample, or
|
|
17
|
+
* `null` when no overhead was declared.
|
|
18
|
+
*/
|
|
19
|
+
adjusted: z.nullable(durationStatisticsSchema),
|
|
20
|
+
/** Declared fixed overhead, in milliseconds. */
|
|
21
|
+
overheadMs: z.number(),
|
|
22
|
+
/** Raw timings in collection order, for export and re-analysis. */
|
|
23
|
+
timings: z.array(z.number()),
|
|
24
|
+
/** How the sampler ran, or `null` when the case never got that far. */
|
|
25
|
+
sampling: z.nullable(durationSamplingReportSchema),
|
|
26
|
+
/** What the measuring apparatus itself cost, or `null` when uncalibrated. */
|
|
27
|
+
harnessOverhead: z.nullable(harnessOverheadSchema),
|
|
28
|
+
/** How one iteration was executed. */
|
|
29
|
+
execution: z.enum(["in-process", "per-iteration-process", "command"]),
|
|
30
|
+
/**
|
|
31
|
+
* Cost of merely starting the program, for a process-based execution mode.
|
|
32
|
+
*
|
|
33
|
+
* `null` for `"in-process"`, and for a command case that declared no
|
|
34
|
+
* `baselineArgs` — there is no honest way to guess what "this program doing
|
|
35
|
+
* nothing" means.
|
|
36
|
+
*/
|
|
37
|
+
spawnBaseline: z.nullable(spawnBaselineReportSchema),
|
|
38
|
+
/** Median phase breakdown of a cold start, when the process reported one. */
|
|
39
|
+
coldStart: z.nullable(coldStartPhasesSchema),
|
|
40
|
+
/**
|
|
41
|
+
* The answer, weighted across every process that measured this case.
|
|
42
|
+
*
|
|
43
|
+
* `null` when one process measured it: there is no between-process spread to
|
|
44
|
+
* estimate, and `statistics` already says everything that was measured.
|
|
45
|
+
*/
|
|
46
|
+
estimate: z.nullable(pooledEstimateSchema),
|
|
47
|
+
/** How much the case's neighbours cost it. `null` unless both arms ran. */
|
|
48
|
+
contamination: z.nullable(contaminationSchema),
|
|
49
|
+
warnings: z.array(durationBenchWarningSchema),
|
|
50
|
+
/** Present when the case threw or crashed. */
|
|
51
|
+
failure: z.optional(z.string()),
|
|
52
|
+
});
|
|
53
|
+
export const durationBenchRunConditionResultSchema = z.object({
|
|
54
|
+
title: z.string(),
|
|
55
|
+
results: z.array(durationBenchRunCaseResultSchema),
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=_types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../src/_types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEtC,mCAAmC;IACnC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAEhD;;;OAGG;IACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAE9C,gDAAgD;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAEtB,mEAAmE;IACnE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAE5B,uEAAuE;IACvE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAElD,6EAA6E;IAC7E,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAElD,sCAAsC;IACtC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAEpD,6EAA6E;IAC7E,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAE1C,2EAA2E;IAC3E,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAE9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;IAE7C,8CAA8C;IAC9C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC;CAClD,CAAC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as z from "zod/mini";
|
|
2
|
+
import { HarnessOverhead } from "./_harness-overhead.js";
|
|
3
|
+
import { DurationSamplingReport } from "./_sampling-report.js";
|
|
4
|
+
import { SpawnBaselineReport } from "./_spawn-baseline.js";
|
|
5
|
+
import { DurationStatistics } from "./_statistics-schema.js";
|
|
6
|
+
/** Categories of quality problem detected in a result. */
|
|
7
|
+
export declare const durationBenchWarningKindSchema: z.ZodMiniEnum<{
|
|
8
|
+
"first-run-slow": "first-run-slow";
|
|
9
|
+
"harness-overhead-dominates": "harness-overhead-dominates";
|
|
10
|
+
"high-variance": "high-variance";
|
|
11
|
+
"no-baseline-args": "no-baseline-args";
|
|
12
|
+
outliers: "outliers";
|
|
13
|
+
"overhead-dominates": "overhead-dominates";
|
|
14
|
+
"overhead-subtracted": "overhead-subtracted";
|
|
15
|
+
"spawn-baseline-dominates": "spawn-baseline-dominates";
|
|
16
|
+
"spawn-baseline-subtracted": "spawn-baseline-subtracted";
|
|
17
|
+
"target-not-reached": "target-not-reached";
|
|
18
|
+
"too-few-samples": "too-few-samples";
|
|
19
|
+
}>;
|
|
20
|
+
export type DurationBenchWarningKind = z.infer<typeof durationBenchWarningKindSchema>;
|
|
21
|
+
/** A quality problem that should be shown alongside the numbers. */
|
|
22
|
+
export declare const durationBenchWarningSchema: z.ZodMiniObject<{
|
|
23
|
+
kind: z.ZodMiniEnum<{
|
|
24
|
+
"first-run-slow": "first-run-slow";
|
|
25
|
+
"harness-overhead-dominates": "harness-overhead-dominates";
|
|
26
|
+
"high-variance": "high-variance";
|
|
27
|
+
"no-baseline-args": "no-baseline-args";
|
|
28
|
+
outliers: "outliers";
|
|
29
|
+
"overhead-dominates": "overhead-dominates";
|
|
30
|
+
"overhead-subtracted": "overhead-subtracted";
|
|
31
|
+
"spawn-baseline-dominates": "spawn-baseline-dominates";
|
|
32
|
+
"spawn-baseline-subtracted": "spawn-baseline-subtracted";
|
|
33
|
+
"target-not-reached": "target-not-reached";
|
|
34
|
+
"too-few-samples": "too-few-samples";
|
|
35
|
+
}>;
|
|
36
|
+
message: z.ZodMiniString<string>;
|
|
37
|
+
severity: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
38
|
+
info: "info";
|
|
39
|
+
warning: "warning";
|
|
40
|
+
}>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type DurationBenchWarning = z.infer<typeof durationBenchWarningSchema>;
|
|
43
|
+
export type DetectWarningsInput = {
|
|
44
|
+
readonly timings: readonly number[];
|
|
45
|
+
readonly statistics: DurationStatistics;
|
|
46
|
+
readonly overheadMs: number;
|
|
47
|
+
readonly minRuns: number;
|
|
48
|
+
/** Omitted when the case never got as far as sampling. */
|
|
49
|
+
readonly sampling?: DurationSamplingReport | null;
|
|
50
|
+
readonly harnessOverhead?: HarnessOverhead | null;
|
|
51
|
+
readonly spawnBaseline?: SpawnBaselineReport | null;
|
|
52
|
+
/** A process-based case that declared no do-nothing invocation. */
|
|
53
|
+
readonly needsBaselineArgs?: boolean;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Surfaces conditions that make a number untrustworthy.
|
|
57
|
+
*
|
|
58
|
+
* Reporting a tidy median while the machine was busy is worse than reporting
|
|
59
|
+
* nothing, because it looks authoritative.
|
|
60
|
+
*/
|
|
61
|
+
export declare function detectWarnings_(input: DetectWarningsInput): DurationBenchWarning[];
|
|
62
|
+
//# sourceMappingURL=_warnings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_warnings.d.ts","sourceRoot":"","sources":["../src/_warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAEN,eAAe,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAEN,mBAAmB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAc7D,0DAA0D;AAC1D,eAAO,MAAM,8BAA8B;;;;;;;;;;;;EAYzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,8BAA8B,CACrC,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;iBAKrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,MAAM,MAAM,mBAAmB,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpD,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,mBAAmB,GACxB,oBAAoB,EAAE,CAwHxB"}
|