waveform-analysis 0.1.74 → 0.1.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +422 -60
- package/dist/assets/workerRuntime-BJiRmIZD.js +2446 -0
- package/dist/index.cjs +1 -2
- package/dist/index.js +1 -7119
- package/dist/style.css +1 -1
- package/dist/types/animation/WaveformAnimationController.d.ts +30 -0
- package/dist/types/animation/core/Animation.d.ts +13 -0
- package/dist/types/animation/core/Animator.d.ts +23 -0
- package/dist/types/animation/core/easing.d.ts +3 -0
- package/dist/types/animation/core/errors.d.ts +4 -0
- package/dist/types/animation/core/handle.d.ts +7 -0
- package/dist/types/animation/core/owner.d.ts +3 -0
- package/dist/types/animation/core/propertyGroups.d.ts +17 -0
- package/dist/types/animation/core/task.d.ts +29 -0
- package/dist/types/animation/core/types.d.ts +74 -0
- package/dist/types/animation/core/validation.d.ts +30 -0
- package/dist/types/animation/core/values.d.ts +8 -0
- package/dist/types/animation/presets/annotation.d.ts +4 -0
- package/dist/types/animation/presets/lineDrawing.d.ts +7 -0
- package/dist/types/animation/presets/shared.d.ts +14 -0
- package/dist/types/animation/presets/transitions.d.ts +4 -0
- package/dist/types/animation/types.d.ts +84 -0
- package/dist/types/components/WaveformChart.vue.d.ts +3 -2
- package/dist/types/components/animation/annotationPresentation.d.ts +17 -0
- package/dist/types/components/animation/chartExportVersion.d.ts +2 -0
- package/dist/types/components/animation/config.d.ts +31 -0
- package/dist/types/components/animation/context.d.ts +20 -0
- package/dist/types/components/animation/geometry.d.ts +10 -0
- package/dist/types/components/animation/paginationPresentation.d.ts +13 -0
- package/dist/types/components/animation/pathBuffer.d.ts +4 -0
- package/dist/types/components/animation/trackPresentation.d.ts +35 -0
- package/dist/types/components/animation/useWaveformAnimations.d.ts +27 -0
- package/dist/types/components/annotation/WaveformAnnotationContextMenu.vue.d.ts +2 -2
- package/dist/types/components/annotation/types.d.ts +7 -0
- package/dist/types/components/controls/useChartImageExport.d.ts +2 -0
- package/dist/types/components/core/amplitudeLimits.d.ts +6 -0
- package/dist/types/components/core/layout.d.ts +6 -9
- package/dist/types/components/core/trackLayoutBuilder.d.ts +3 -1
- package/dist/types/components/core/types.d.ts +8 -0
- package/dist/types/components/core/useWaveformChartController.d.ts +26 -1
- package/dist/types/components/core/useWaveformData.d.ts +2 -2
- package/dist/types/components/core/useWaveformMeasurements.d.ts +4 -1
- package/dist/types/components/core/useWaveformRenderSampling.d.ts +2 -0
- package/dist/types/components/core/waveformChartTypes.d.ts +6 -3
- package/dist/types/components/core/xAxisTicks.d.ts +2 -0
- package/dist/types/components/core/yAxisLayoutMetrics.d.ts +2 -1
- package/dist/types/components/core/yAxisTicks.d.ts +6 -0
- package/dist/types/components/data/types.d.ts +1 -1
- package/dist/types/components/interaction/integerZoom.d.ts +3 -3
- package/dist/types/components/interaction/stepZoom.d.ts +5 -0
- package/dist/types/components/interaction/useWaveformViewport.d.ts +0 -3
- package/dist/types/components/interaction/useWaveformZoom.d.ts +0 -2
- package/dist/types/components/rendering/WaveformSeriesLayer.vue.d.ts +1 -0
- package/dist/types/components/rendering/WaveformTrack.vue.d.ts +4 -3
- package/dist/types/components/rendering/updateAxis.d.ts +5 -0
- package/dist/types/components/rendering/updateGrid.d.ts +3 -0
- package/dist/types/components/rendering/yAxisTickVisibility.d.ts +2 -0
- package/dist/types/components/utils/assignElement.d.ts +2 -0
- package/dist/types/core/data.d.ts +1 -1
- package/dist/types/demo/DemoChartHost.vue.d.ts +1 -1
- package/dist/types/demo/remoteWaveformLoader.d.ts +23 -0
- package/dist/types/demo/types.d.ts +11 -2
- package/dist/types/demo/useRemoteWaveformWindow.d.ts +22 -0
- package/dist/types/index.d.ts +10 -1
- package/dist/types/types/chart.d.ts +8 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/utils/formatters.d.ts +4 -4
- package/dist/types/utils/xAxisNumber.d.ts +2 -0
- package/dist/types/views/AnimationDemo.vue.d.ts +3 -0
- package/package.json +5 -2
- package/src/App.vue +34 -100
- package/src/DemoRouterApp.vue +1 -0
- package/src/animation/WaveformAnimationController.ts +328 -0
- package/src/animation/core/Animation.ts +37 -0
- package/src/animation/core/Animator.ts +200 -0
- package/src/animation/core/easing.ts +74 -0
- package/src/animation/core/errors.ts +24 -0
- package/src/animation/core/handle.ts +34 -0
- package/src/animation/core/owner.ts +9 -0
- package/src/animation/core/propertyGroups.ts +143 -0
- package/src/animation/core/task.ts +153 -0
- package/src/animation/core/types.ts +81 -0
- package/src/animation/core/validation.ts +173 -0
- package/src/animation/core/values.ts +38 -0
- package/src/animation/presets/annotation.ts +66 -0
- package/src/animation/presets/lineDrawing.ts +51 -0
- package/src/animation/presets/shared.ts +58 -0
- package/src/animation/presets/transitions.ts +77 -0
- package/src/animation/types.ts +81 -0
- package/src/components/WaveformChart.vue +1 -0
- package/src/components/WaveformChartView.vue +13 -6
- package/src/components/animation/annotationPresentation.ts +145 -0
- package/src/components/animation/chartExportVersion.ts +5 -0
- package/src/components/animation/config.ts +87 -0
- package/src/components/animation/context.ts +56 -0
- package/src/components/animation/geometry.ts +148 -0
- package/src/components/animation/paginationPresentation.ts +114 -0
- package/src/components/animation/pathBuffer.ts +61 -0
- package/src/components/animation/trackPresentation.ts +172 -0
- package/src/components/animation/useWaveformAnimations.ts +420 -0
- package/src/components/annotation/WaveformAnnotationLayer.vue +43 -30
- package/src/components/annotation/types.ts +3 -0
- package/src/components/controls/useChartCommands.ts +12 -13
- package/src/components/controls/useChartImageExport.ts +4 -0
- package/src/components/core/amplitudeLimits.ts +44 -0
- package/src/components/core/layout.ts +22 -34
- package/src/components/core/trackLayoutBuilder.ts +21 -23
- package/src/components/core/types.ts +4 -0
- package/src/components/core/useWaveformChartController.ts +27 -23
- package/src/components/core/useWaveformChartLifecycle.ts +11 -2
- package/src/components/core/useWaveformData.ts +11 -5
- package/src/components/core/useWaveformLayout.ts +9 -4
- package/src/components/core/useWaveformMeasurements.ts +3 -0
- package/src/components/core/useWaveformRenderSampling.ts +23 -1
- package/src/components/core/useWaveformYAxisLayout.ts +2 -0
- package/src/components/core/waveformChartTypes.ts +6 -2
- package/src/components/core/xAxisTicks.ts +69 -0
- package/src/components/core/yAxisLayoutMetrics.ts +4 -0
- package/src/components/core/yAxisTicks.ts +39 -0
- package/src/components/data/types.ts +2 -0
- package/src/components/interaction/integerZoom.ts +31 -12
- package/src/components/interaction/remoteViewport.ts +26 -4
- package/src/components/interaction/stepZoom.ts +33 -0
- package/src/components/interaction/useWaveformViewport.ts +3 -26
- package/src/components/interaction/useWaveformZoom.ts +50 -157
- package/src/components/interaction/zoomConstraints.ts +5 -5
- package/src/components/rendering/WaveformSeriesLayer.vue +13 -1
- package/src/components/rendering/WaveformTrack.vue +6 -1
- package/src/components/rendering/WaveformTrackAxes.vue +64 -51
- package/src/components/rendering/WaveformTrackBackdrop.vue +35 -49
- package/src/components/rendering/updateAxis.ts +57 -0
- package/src/components/rendering/updateGrid.ts +42 -0
- package/src/components/rendering/yAxisTickVisibility.ts +45 -18
- package/src/components/utils/assignElement.ts +7 -0
- package/src/core/data.ts +5 -2
- package/src/data/simulatedWaveforms.ts +0 -10
- package/src/demo/DemoChartHost.vue +49 -4
- package/src/demo/remoteWaveformLoader.ts +114 -0
- package/src/demo/types.ts +11 -1
- package/src/demo/useRemoteWaveformWindow.ts +229 -0
- package/src/index.ts +54 -0
- package/src/router.ts +1 -0
- package/src/types/chart.ts +10 -1
- package/src/types/index.ts +2 -0
- package/src/utils/formatters.ts +10 -5
- package/src/utils/xAxisNumber.ts +36 -0
- package/src/views/AnimationDemo.vue +129 -0
- package/dist/assets/workerRuntime-5p-EI-GL.js +0 -1
- package/dist/types/data/sx2Channel.d.ts +0 -10
- package/src/data/sx2Channel.ts +0 -315
|
@@ -0,0 +1,2446 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
function A(A, g, I, t, C) {
|
|
3
|
+
const B = o.sample_dataset_indexes(A, g, I, t, C);
|
|
4
|
+
if (B[3]) throw E(B[2]);
|
|
5
|
+
var i = Q(B[0], B[1]).slice();
|
|
6
|
+
return o.__wbindgen_free(B[0], 4 * B[1], 4), i;
|
|
7
|
+
}
|
|
8
|
+
function g(A, g, I, t) {
|
|
9
|
+
const C = n(A, o.__wbindgen_malloc), B = a, i = n(g, o.__wbindgen_malloc), e = a, s = o.sample_indexes(C, B, i, e, I, t);
|
|
10
|
+
if (s[3]) throw E(s[2]);
|
|
11
|
+
var r = Q(s[0], s[1]).slice();
|
|
12
|
+
return o.__wbindgen_free(s[0], 4 * s[1], 4), r;
|
|
13
|
+
}
|
|
14
|
+
function I(A, g) {
|
|
15
|
+
return A >>>= 0, C().subarray(A / 8, A / 8 + g);
|
|
16
|
+
}
|
|
17
|
+
function Q(A, g) {
|
|
18
|
+
return A >>>= 0, i().subarray(A / 4, A / 4 + g);
|
|
19
|
+
}
|
|
20
|
+
let t = null;
|
|
21
|
+
function C() {
|
|
22
|
+
return null !== t && 0 !== t.byteLength || (t = new Float64Array(o.memory.buffer)), t;
|
|
23
|
+
}
|
|
24
|
+
let B = null;
|
|
25
|
+
function i() {
|
|
26
|
+
return null !== B && 0 !== B.byteLength || (B = new Uint32Array(o.memory.buffer)), B;
|
|
27
|
+
}
|
|
28
|
+
let e = null;
|
|
29
|
+
function n(A, g) {
|
|
30
|
+
const I = g(8 * A.length, 8) >>> 0;
|
|
31
|
+
return C().set(A, I / 8), a = A.length, I;
|
|
32
|
+
}
|
|
33
|
+
function E(A) {
|
|
34
|
+
const g = o.__wbindgen_externrefs.get(A);
|
|
35
|
+
return o.__externref_table_dealloc(A), g;
|
|
36
|
+
}
|
|
37
|
+
let s = new TextDecoder("utf-8", {
|
|
38
|
+
ignoreBOM: !0,
|
|
39
|
+
fatal: !0
|
|
40
|
+
});
|
|
41
|
+
s.decode();
|
|
42
|
+
let o, r = 0, a = 0;
|
|
43
|
+
const h = {
|
|
44
|
+
none: 0,
|
|
45
|
+
peak: 1,
|
|
46
|
+
lttb: 2,
|
|
47
|
+
average: 3,
|
|
48
|
+
min: 4,
|
|
49
|
+
max: 5,
|
|
50
|
+
minmax: 6,
|
|
51
|
+
sum: 7
|
|
52
|
+
};
|
|
53
|
+
let c;
|
|
54
|
+
function l(A) {
|
|
55
|
+
if (A.x.length !== A.y.length) throw new Error("x and y must have the same length");
|
|
56
|
+
}
|
|
57
|
+
function u(A, g, I, Q) {
|
|
58
|
+
const t = Q - I;
|
|
59
|
+
return {
|
|
60
|
+
start: I + Math.floor(A * t / g),
|
|
61
|
+
end: I + Math.floor((A + 1) * t / g)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function D(A, g) {
|
|
65
|
+
A[A.length - 1] !== g && A.push(g);
|
|
66
|
+
}
|
|
67
|
+
function N(A) {
|
|
68
|
+
return "minimumIndexes" in A ? A.minimumIndexes.byteLength + A.maximumIndexes.byteLength : A.x.byteLength + A.y.byteLength + A.count.byteLength;
|
|
69
|
+
}
|
|
70
|
+
function y(A, g) {
|
|
71
|
+
let I = 1;
|
|
72
|
+
for (; 2 * I <= g && A % (2 * I) == 0;) I *= 2;
|
|
73
|
+
return I;
|
|
74
|
+
}
|
|
75
|
+
var w = class {
|
|
76
|
+
points;
|
|
77
|
+
extremaLayers = [];
|
|
78
|
+
sumLayers = [];
|
|
79
|
+
indexBytes = 0;
|
|
80
|
+
maxBytes;
|
|
81
|
+
constructor(A, g = {}) {
|
|
82
|
+
this.points = A, this.maxBytes = Number.isFinite(g.maxBytes) ? Math.max(0, Math.floor(g.maxBytes ?? 0)) : 8388608;
|
|
83
|
+
}
|
|
84
|
+
get byteLength() {
|
|
85
|
+
return this.indexBytes;
|
|
86
|
+
}
|
|
87
|
+
dispose() {
|
|
88
|
+
this.extremaLayers.length = 0, this.sumLayers.length = 0, this.indexBytes = 0;
|
|
89
|
+
}
|
|
90
|
+
sample(A, g, I, Q) {
|
|
91
|
+
const t = Math.max(0, Math.min(this.points.length, Math.floor(A))), C = Math.max(t, Math.min(this.points.length, Math.floor(g))), B = C - t, i = (e = Q, 0 === (n = B) ? 0 : Number.isFinite(e) ? Math.min(n, Math.max(1, Math.floor(e))) : n);
|
|
92
|
+
var e, n;
|
|
93
|
+
if ("lttb" !== I) return "average" === I || "sum" === I ? this.aggregate(t, C, i, I) : "none" === I || B <= i ? this.allIndexes(t, C) : 1 === i ? this.indexes([t]) : 2 === i ? this.indexes([t, C - 1]) : this.extrema(t, C, i, I);
|
|
94
|
+
}
|
|
95
|
+
allIndexes(A, g) {
|
|
96
|
+
return {
|
|
97
|
+
kind: "source-indexes",
|
|
98
|
+
sourceIndexes: Uint32Array.from({ length: g - A }, (g, I) => A + I)
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
indexes(A) {
|
|
102
|
+
return {
|
|
103
|
+
kind: "source-indexes",
|
|
104
|
+
sourceIndexes: Uint32Array.from(A)
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
extrema(A, g, I, Q) {
|
|
108
|
+
const t = "peak" === Q ? Math.floor((I - 2) / 4) : "minmax" === Q ? Math.floor((I - 2) / 2) : Math.max(0, I - 2);
|
|
109
|
+
if (0 === t) return this.indexes([A, g - 1]);
|
|
110
|
+
const C = [A];
|
|
111
|
+
for (let B = 0; B < t; B += 1) {
|
|
112
|
+
const I = u(B, t, A + 1, g - 1), i = this.queryExtrema(I.start, I.end);
|
|
113
|
+
if (!i) return;
|
|
114
|
+
if ("min" === Q) D(C, i.minimum);
|
|
115
|
+
else if ("max" === Q) D(C, i.maximum);
|
|
116
|
+
else if ("minmax" === Q) i.minimum <= i.maximum ? (D(C, i.minimum), D(C, i.maximum)) : (D(C, i.maximum), D(C, i.minimum));
|
|
117
|
+
else for (const A of [
|
|
118
|
+
I.start,
|
|
119
|
+
i.minimum,
|
|
120
|
+
i.maximum,
|
|
121
|
+
I.end - 1
|
|
122
|
+
].sort((A, g) => A - g)) D(C, A);
|
|
123
|
+
}
|
|
124
|
+
return D(C, g - 1), this.indexes(C);
|
|
125
|
+
}
|
|
126
|
+
aggregate(A, g, I, Q) {
|
|
127
|
+
const t = new Float64Array(I), C = new Float64Array(I);
|
|
128
|
+
for (let B = 0; B < I; B += 1) {
|
|
129
|
+
const i = u(B, I, A, g), e = this.querySum(i.start, i.end);
|
|
130
|
+
if (!e || 0 === e.count) return;
|
|
131
|
+
t[B] = e.x / e.count, C[B] = "average" === Q ? e.y / e.count : e.y;
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
kind: "aggregates",
|
|
135
|
+
x: t,
|
|
136
|
+
y: C
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
queryExtrema(A, g) {
|
|
140
|
+
const I = Math.floor(Math.log2(Math.max(1, g - A)));
|
|
141
|
+
if (!this.ensureExtrema(I)) return;
|
|
142
|
+
let Q = A, t = A;
|
|
143
|
+
for (let C = A; C < g;) {
|
|
144
|
+
const A = y(C, g - C), I = Math.floor(Math.log2(A)), B = C / A, i = this.extremaLayers[I], e = i ? i.minimumIndexes[B] : C, n = i ? i.maximumIndexes[B] : C;
|
|
145
|
+
this.isMinimum(e, Q) && (Q = e), this.isMaximum(n, t) && (t = n), C += A;
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
minimum: Q,
|
|
149
|
+
maximum: t
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
querySum(A, g) {
|
|
153
|
+
const I = Math.floor(Math.log2(Math.max(1, g - A)));
|
|
154
|
+
if (!this.ensureSum(I)) return;
|
|
155
|
+
let Q = 0, t = 0, C = 0;
|
|
156
|
+
for (let B = A; B < g;) {
|
|
157
|
+
const A = y(B, g - B), I = Math.floor(Math.log2(A)), i = B / A, e = this.sumLayers[I];
|
|
158
|
+
if (e) Q += e.x[i], t += e.y[i], C += e.count[i];
|
|
159
|
+
else {
|
|
160
|
+
const A = this.points[B];
|
|
161
|
+
Q += A.x, t += A.y, C += 1;
|
|
162
|
+
}
|
|
163
|
+
B += A;
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
x: Q,
|
|
167
|
+
y: t,
|
|
168
|
+
count: C
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
ensureExtrema(A) {
|
|
172
|
+
for (let g = 1; g <= A; g += 1) {
|
|
173
|
+
if (this.extremaLayers[g]) continue;
|
|
174
|
+
const A = Math.ceil(this.points.length / 2 ** g), I = {
|
|
175
|
+
minimumIndexes: new Uint32Array(A),
|
|
176
|
+
maximumIndexes: new Uint32Array(A)
|
|
177
|
+
};
|
|
178
|
+
if (!this.reserve(N(I))) return !1;
|
|
179
|
+
const Q = this.extremaLayers[g - 1];
|
|
180
|
+
for (let g = 0; g < A; g += 1) {
|
|
181
|
+
const A = 2 * g, t = A + 1, C = Q ? Q.minimumIndexes[A] : A, B = Q ? Q.maximumIndexes[A] : A, i = Q ? t < Q.minimumIndexes.length : t < this.points.length, e = Q && i ? Q.minimumIndexes[t] : t, n = Q && i ? Q.maximumIndexes[t] : t;
|
|
182
|
+
I.minimumIndexes[g] = i && this.isMinimum(e, C) ? e : C, I.maximumIndexes[g] = i && this.isMaximum(n, B) ? n : B;
|
|
183
|
+
}
|
|
184
|
+
this.extremaLayers[g] = I;
|
|
185
|
+
}
|
|
186
|
+
return !0;
|
|
187
|
+
}
|
|
188
|
+
ensureSum(A) {
|
|
189
|
+
for (let g = 1; g <= A; g += 1) {
|
|
190
|
+
if (this.sumLayers[g]) continue;
|
|
191
|
+
const A = Math.ceil(this.points.length / 2 ** g), I = {
|
|
192
|
+
x: new Float64Array(A),
|
|
193
|
+
y: new Float64Array(A),
|
|
194
|
+
count: new Uint32Array(A)
|
|
195
|
+
};
|
|
196
|
+
if (!this.reserve(N(I))) return !1;
|
|
197
|
+
const Q = this.sumLayers[g - 1];
|
|
198
|
+
for (let g = 0; g < A; g += 1) {
|
|
199
|
+
const A = 2 * g, t = A + 1;
|
|
200
|
+
if (Q) I.x[g] = Q.x[A] + (t < Q.x.length ? Q.x[t] : 0), I.y[g] = Q.y[A] + (t < Q.y.length ? Q.y[t] : 0), I.count[g] = Q.count[A] + (t < Q.count.length ? Q.count[t] : 0);
|
|
201
|
+
else {
|
|
202
|
+
const Q = this.points[A], C = this.points[t];
|
|
203
|
+
I.x[g] = Q.x + (C?.x ?? 0), I.y[g] = Q.y + (C?.y ?? 0), I.count[g] = C ? 2 : 1;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
this.sumLayers[g] = I;
|
|
207
|
+
}
|
|
208
|
+
return !0;
|
|
209
|
+
}
|
|
210
|
+
reserve(A) {
|
|
211
|
+
return !(this.indexBytes + A > this.maxBytes || (this.indexBytes += A, 0));
|
|
212
|
+
}
|
|
213
|
+
isMinimum(A, g) {
|
|
214
|
+
const I = this.points[A], Q = this.points[g];
|
|
215
|
+
return I.y < Q.y || I.y === Q.y && A < g;
|
|
216
|
+
}
|
|
217
|
+
isMaximum(A, g) {
|
|
218
|
+
const I = this.points[A], Q = this.points[g];
|
|
219
|
+
return I.y > Q.y || I.y === Q.y && A < g;
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
function G(A, g) {
|
|
223
|
+
return null == A || null == g ? NaN : A < g ? -1 : A > g ? 1 : A >= g ? 0 : NaN;
|
|
224
|
+
}
|
|
225
|
+
function d(A, g) {
|
|
226
|
+
return null == A || null == g ? NaN : g < A ? -1 : g > A ? 1 : g >= A ? 0 : NaN;
|
|
227
|
+
}
|
|
228
|
+
function Y() {
|
|
229
|
+
return 0;
|
|
230
|
+
}
|
|
231
|
+
var m = { value: () => {} };
|
|
232
|
+
function k() {
|
|
233
|
+
for (var A, g = 0, I = arguments.length, Q = {}; g < I; ++g) {
|
|
234
|
+
if (!(A = arguments[g] + "") || A in Q || /[\s.]/.test(A)) throw new Error("illegal type: " + A);
|
|
235
|
+
Q[A] = [];
|
|
236
|
+
}
|
|
237
|
+
return new f(Q);
|
|
238
|
+
}
|
|
239
|
+
function f(A) {
|
|
240
|
+
this._ = A;
|
|
241
|
+
}
|
|
242
|
+
function M(A, g) {
|
|
243
|
+
for (var I, Q = 0, t = A.length; Q < t; ++Q) if ((I = A[Q]).name === g) return I.value;
|
|
244
|
+
}
|
|
245
|
+
function F(A, g, I) {
|
|
246
|
+
for (var Q = 0, t = A.length; Q < t; ++Q) if (A[Q].name === g) {
|
|
247
|
+
A[Q] = m, A = A.slice(0, Q).concat(A.slice(Q + 1));
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
return null != I && A.push({
|
|
251
|
+
name: g,
|
|
252
|
+
value: I
|
|
253
|
+
}), A;
|
|
254
|
+
}
|
|
255
|
+
f.prototype = k.prototype = {
|
|
256
|
+
constructor: f,
|
|
257
|
+
on: function(A, g) {
|
|
258
|
+
var I, Q, t = this._, C = (Q = t, (A + "").trim().split(/^|\s+/).map(function(A) {
|
|
259
|
+
var g = "", I = A.indexOf(".");
|
|
260
|
+
if (I >= 0 && (g = A.slice(I + 1), A = A.slice(0, I)), A && !Q.hasOwnProperty(A)) throw new Error("unknown type: " + A);
|
|
261
|
+
return {
|
|
262
|
+
type: A,
|
|
263
|
+
name: g
|
|
264
|
+
};
|
|
265
|
+
})), B = -1, i = C.length;
|
|
266
|
+
if (!(arguments.length < 2)) {
|
|
267
|
+
if (null != g && "function" != typeof g) throw new Error("invalid callback: " + g);
|
|
268
|
+
for (; ++B < i;) if (I = (A = C[B]).type) t[I] = F(t[I], A.name, g);
|
|
269
|
+
else if (null == g) for (I in t) t[I] = F(t[I], A.name, null);
|
|
270
|
+
return this;
|
|
271
|
+
}
|
|
272
|
+
for (; ++B < i;) if ((I = (A = C[B]).type) && (I = M(t[I], A.name))) return I;
|
|
273
|
+
},
|
|
274
|
+
copy: function() {
|
|
275
|
+
var A = {}, g = this._;
|
|
276
|
+
for (var I in g) A[I] = g[I].slice();
|
|
277
|
+
return new f(A);
|
|
278
|
+
},
|
|
279
|
+
call: function(A, g) {
|
|
280
|
+
if ((I = arguments.length - 2) > 0) for (var I, Q, t = new Array(I), C = 0; C < I; ++C) t[C] = arguments[C + 2];
|
|
281
|
+
if (!this._.hasOwnProperty(A)) throw new Error("unknown type: " + A);
|
|
282
|
+
for (C = 0, I = (Q = this._[A]).length; C < I; ++C) Q[C].value.apply(g, t);
|
|
283
|
+
},
|
|
284
|
+
apply: function(A, g, I) {
|
|
285
|
+
if (!this._.hasOwnProperty(A)) throw new Error("unknown type: " + A);
|
|
286
|
+
for (var Q = this._[A], t = 0, C = Q.length; t < C; ++t) Q[t].value.apply(g, I);
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
var J = {
|
|
290
|
+
svg: "http://www.w3.org/2000/svg",
|
|
291
|
+
xhtml: "http://www.w3.org/1999/xhtml",
|
|
292
|
+
xlink: "http://www.w3.org/1999/xlink",
|
|
293
|
+
xml: "http://www.w3.org/XML/1998/namespace",
|
|
294
|
+
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
295
|
+
};
|
|
296
|
+
function p(A) {
|
|
297
|
+
var g = A += "", I = g.indexOf(":");
|
|
298
|
+
return I >= 0 && "xmlns" !== (g = A.slice(0, I)) && (A = A.slice(I + 1)), J.hasOwnProperty(g) ? {
|
|
299
|
+
space: J[g],
|
|
300
|
+
local: A
|
|
301
|
+
} : A;
|
|
302
|
+
}
|
|
303
|
+
function R(A) {
|
|
304
|
+
return function() {
|
|
305
|
+
var g = this.ownerDocument, I = this.namespaceURI;
|
|
306
|
+
return "http://www.w3.org/1999/xhtml" === I && "http://www.w3.org/1999/xhtml" === g.documentElement.namespaceURI ? g.createElement(A) : g.createElementNS(I, A);
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
function x(A) {
|
|
310
|
+
return function() {
|
|
311
|
+
return this.ownerDocument.createElementNS(A.space, A.local);
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function b(A) {
|
|
315
|
+
var g = p(A);
|
|
316
|
+
return (g.local ? x : R)(g);
|
|
317
|
+
}
|
|
318
|
+
function S() {}
|
|
319
|
+
function Z(A) {
|
|
320
|
+
return null == A ? S : function() {
|
|
321
|
+
return this.querySelector(A);
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
function U() {
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
function j(A) {
|
|
328
|
+
return null == A ? U : function() {
|
|
329
|
+
return this.querySelectorAll(A);
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
function X(A) {
|
|
333
|
+
return function() {
|
|
334
|
+
return this.matches(A);
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
function H(A) {
|
|
338
|
+
return function(g) {
|
|
339
|
+
return g.matches(A);
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
var L = Array.prototype.find;
|
|
343
|
+
function v() {
|
|
344
|
+
return this.firstElementChild;
|
|
345
|
+
}
|
|
346
|
+
var W = Array.prototype.filter;
|
|
347
|
+
function K() {
|
|
348
|
+
return Array.from(this.children);
|
|
349
|
+
}
|
|
350
|
+
function T(A) {
|
|
351
|
+
return new Array(A.length);
|
|
352
|
+
}
|
|
353
|
+
function O(A, g) {
|
|
354
|
+
this.ownerDocument = A.ownerDocument, this.namespaceURI = A.namespaceURI, this._next = null, this._parent = A, this.__data__ = g;
|
|
355
|
+
}
|
|
356
|
+
function V(A, g, I, Q, t, C) {
|
|
357
|
+
for (var B, i = 0, e = g.length, n = C.length; i < n; ++i) (B = g[i]) ? (B.__data__ = C[i], Q[i] = B) : I[i] = new O(A, C[i]);
|
|
358
|
+
for (; i < e; ++i) (B = g[i]) && (t[i] = B);
|
|
359
|
+
}
|
|
360
|
+
function q(A, g, I, Q, t, C, B) {
|
|
361
|
+
var i, e, n, E = /* @__PURE__ */ new Map(), s = g.length, o = C.length, r = new Array(s);
|
|
362
|
+
for (i = 0; i < s; ++i) (e = g[i]) && (r[i] = n = B.call(e, e.__data__, i, g) + "", E.has(n) ? t[i] = e : E.set(n, e));
|
|
363
|
+
for (i = 0; i < o; ++i) n = B.call(A, C[i], i, C) + "", (e = E.get(n)) ? (Q[i] = e, e.__data__ = C[i], E.delete(n)) : I[i] = new O(A, C[i]);
|
|
364
|
+
for (i = 0; i < s; ++i) (e = g[i]) && E.get(r[i]) === e && (t[i] = e);
|
|
365
|
+
}
|
|
366
|
+
function z(A) {
|
|
367
|
+
return A.__data__;
|
|
368
|
+
}
|
|
369
|
+
function _(A) {
|
|
370
|
+
return "object" == typeof A && "length" in A ? A : Array.from(A);
|
|
371
|
+
}
|
|
372
|
+
function P(A, g) {
|
|
373
|
+
return A < g ? -1 : A > g ? 1 : A >= g ? 0 : NaN;
|
|
374
|
+
}
|
|
375
|
+
function $(A) {
|
|
376
|
+
return function() {
|
|
377
|
+
this.removeAttribute(A);
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
function AA(A) {
|
|
381
|
+
return function() {
|
|
382
|
+
this.removeAttributeNS(A.space, A.local);
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
function gA(A, g) {
|
|
386
|
+
return function() {
|
|
387
|
+
this.setAttribute(A, g);
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function IA(A, g) {
|
|
391
|
+
return function() {
|
|
392
|
+
this.setAttributeNS(A.space, A.local, g);
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
function QA(A, g) {
|
|
396
|
+
return function() {
|
|
397
|
+
var I = g.apply(this, arguments);
|
|
398
|
+
null == I ? this.removeAttribute(A) : this.setAttribute(A, I);
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
function tA(A, g) {
|
|
402
|
+
return function() {
|
|
403
|
+
var I = g.apply(this, arguments);
|
|
404
|
+
null == I ? this.removeAttributeNS(A.space, A.local) : this.setAttributeNS(A.space, A.local, I);
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
function CA(A) {
|
|
408
|
+
return A.ownerDocument && A.ownerDocument.defaultView || A.document && A || A.defaultView;
|
|
409
|
+
}
|
|
410
|
+
function BA(A) {
|
|
411
|
+
return function() {
|
|
412
|
+
this.style.removeProperty(A);
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
function iA(A, g, I) {
|
|
416
|
+
return function() {
|
|
417
|
+
this.style.setProperty(A, g, I);
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
function eA(A, g, I) {
|
|
421
|
+
return function() {
|
|
422
|
+
var Q = g.apply(this, arguments);
|
|
423
|
+
null == Q ? this.style.removeProperty(A) : this.style.setProperty(A, Q, I);
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
function nA(A, g) {
|
|
427
|
+
return A.style.getPropertyValue(g) || CA(A).getComputedStyle(A, null).getPropertyValue(g);
|
|
428
|
+
}
|
|
429
|
+
function EA(A) {
|
|
430
|
+
return function() {
|
|
431
|
+
delete this[A];
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
function sA(A, g) {
|
|
435
|
+
return function() {
|
|
436
|
+
this[A] = g;
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
function oA(A, g) {
|
|
440
|
+
return function() {
|
|
441
|
+
var I = g.apply(this, arguments);
|
|
442
|
+
null == I ? delete this[A] : this[A] = I;
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
function rA(A) {
|
|
446
|
+
return A.trim().split(/^|\s+/);
|
|
447
|
+
}
|
|
448
|
+
function aA(A) {
|
|
449
|
+
return A.classList || new hA(A);
|
|
450
|
+
}
|
|
451
|
+
function hA(A) {
|
|
452
|
+
this._node = A, this._names = rA(A.getAttribute("class") || "");
|
|
453
|
+
}
|
|
454
|
+
function cA(A, g) {
|
|
455
|
+
for (var I = aA(A), Q = -1, t = g.length; ++Q < t;) I.add(g[Q]);
|
|
456
|
+
}
|
|
457
|
+
function lA(A, g) {
|
|
458
|
+
for (var I = aA(A), Q = -1, t = g.length; ++Q < t;) I.remove(g[Q]);
|
|
459
|
+
}
|
|
460
|
+
function uA(A) {
|
|
461
|
+
return function() {
|
|
462
|
+
cA(this, A);
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
function DA(A) {
|
|
466
|
+
return function() {
|
|
467
|
+
lA(this, A);
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function NA(A, g) {
|
|
471
|
+
return function() {
|
|
472
|
+
(g.apply(this, arguments) ? cA : lA)(this, A);
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
function yA() {
|
|
476
|
+
this.textContent = "";
|
|
477
|
+
}
|
|
478
|
+
function wA(A) {
|
|
479
|
+
return function() {
|
|
480
|
+
this.textContent = A;
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
function GA(A) {
|
|
484
|
+
return function() {
|
|
485
|
+
var g = A.apply(this, arguments);
|
|
486
|
+
this.textContent = null == g ? "" : g;
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
function dA() {
|
|
490
|
+
this.innerHTML = "";
|
|
491
|
+
}
|
|
492
|
+
function YA(A) {
|
|
493
|
+
return function() {
|
|
494
|
+
this.innerHTML = A;
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
function mA(A) {
|
|
498
|
+
return function() {
|
|
499
|
+
var g = A.apply(this, arguments);
|
|
500
|
+
this.innerHTML = null == g ? "" : g;
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
function kA() {
|
|
504
|
+
this.nextSibling && this.parentNode.appendChild(this);
|
|
505
|
+
}
|
|
506
|
+
function fA() {
|
|
507
|
+
this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild);
|
|
508
|
+
}
|
|
509
|
+
function MA() {
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
function FA() {
|
|
513
|
+
var A = this.parentNode;
|
|
514
|
+
A && A.removeChild(this);
|
|
515
|
+
}
|
|
516
|
+
function JA() {
|
|
517
|
+
var A = this.cloneNode(!1), g = this.parentNode;
|
|
518
|
+
return g ? g.insertBefore(A, this.nextSibling) : A;
|
|
519
|
+
}
|
|
520
|
+
function pA() {
|
|
521
|
+
var A = this.cloneNode(!0), g = this.parentNode;
|
|
522
|
+
return g ? g.insertBefore(A, this.nextSibling) : A;
|
|
523
|
+
}
|
|
524
|
+
function RA(A) {
|
|
525
|
+
return function() {
|
|
526
|
+
var g = this.__on;
|
|
527
|
+
if (g) {
|
|
528
|
+
for (var I, Q = 0, t = -1, C = g.length; Q < C; ++Q) I = g[Q], A.type && I.type !== A.type || I.name !== A.name ? g[++t] = I : this.removeEventListener(I.type, I.listener, I.options);
|
|
529
|
+
++t ? g.length = t : delete this.__on;
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
function xA(A, g, I) {
|
|
534
|
+
return function() {
|
|
535
|
+
var Q, t = this.__on, C = function(A) {
|
|
536
|
+
return function(g) {
|
|
537
|
+
A.call(this, g, this.__data__);
|
|
538
|
+
};
|
|
539
|
+
}(g);
|
|
540
|
+
if (t) {
|
|
541
|
+
for (var B = 0, i = t.length; B < i; ++B) if ((Q = t[B]).type === A.type && Q.name === A.name) return this.removeEventListener(Q.type, Q.listener, Q.options), this.addEventListener(Q.type, Q.listener = C, Q.options = I), void (Q.value = g);
|
|
542
|
+
}
|
|
543
|
+
this.addEventListener(A.type, C, I), Q = {
|
|
544
|
+
type: A.type,
|
|
545
|
+
name: A.name,
|
|
546
|
+
value: g,
|
|
547
|
+
listener: C,
|
|
548
|
+
options: I
|
|
549
|
+
}, t ? t.push(Q) : this.__on = [Q];
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
function bA(A, g, I) {
|
|
553
|
+
var Q = CA(A), t = Q.CustomEvent;
|
|
554
|
+
"function" == typeof t ? t = new t(g, I) : (t = Q.document.createEvent("Event"), I ? (t.initEvent(g, I.bubbles, I.cancelable), t.detail = I.detail) : t.initEvent(g, !1, !1)), A.dispatchEvent(t);
|
|
555
|
+
}
|
|
556
|
+
function SA(A, g) {
|
|
557
|
+
return function() {
|
|
558
|
+
return bA(this, A, g);
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
function ZA(A, g) {
|
|
562
|
+
return function() {
|
|
563
|
+
return bA(this, A, g.apply(this, arguments));
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
O.prototype = {
|
|
567
|
+
constructor: O,
|
|
568
|
+
appendChild: function(A) {
|
|
569
|
+
return this._parent.insertBefore(A, this._next);
|
|
570
|
+
},
|
|
571
|
+
insertBefore: function(A, g) {
|
|
572
|
+
return this._parent.insertBefore(A, g);
|
|
573
|
+
},
|
|
574
|
+
querySelector: function(A) {
|
|
575
|
+
return this._parent.querySelector(A);
|
|
576
|
+
},
|
|
577
|
+
querySelectorAll: function(A) {
|
|
578
|
+
return this._parent.querySelectorAll(A);
|
|
579
|
+
}
|
|
580
|
+
}, hA.prototype = {
|
|
581
|
+
add: function(A) {
|
|
582
|
+
this._names.indexOf(A) < 0 && (this._names.push(A), this._node.setAttribute("class", this._names.join(" ")));
|
|
583
|
+
},
|
|
584
|
+
remove: function(A) {
|
|
585
|
+
var g = this._names.indexOf(A);
|
|
586
|
+
g >= 0 && (this._names.splice(g, 1), this._node.setAttribute("class", this._names.join(" ")));
|
|
587
|
+
},
|
|
588
|
+
contains: function(A) {
|
|
589
|
+
return this._names.indexOf(A) >= 0;
|
|
590
|
+
}
|
|
591
|
+
};
|
|
592
|
+
var UA = [null];
|
|
593
|
+
function jA(A, g) {
|
|
594
|
+
this._groups = A, this._parents = g;
|
|
595
|
+
}
|
|
596
|
+
function XA() {
|
|
597
|
+
return new jA([[document.documentElement]], UA);
|
|
598
|
+
}
|
|
599
|
+
function HA(A, g, I) {
|
|
600
|
+
A.prototype = g.prototype = I, I.constructor = A;
|
|
601
|
+
}
|
|
602
|
+
function LA(A, g) {
|
|
603
|
+
var I = Object.create(A.prototype);
|
|
604
|
+
for (var Q in g) I[Q] = g[Q];
|
|
605
|
+
return I;
|
|
606
|
+
}
|
|
607
|
+
function vA() {}
|
|
608
|
+
jA.prototype = XA.prototype = {
|
|
609
|
+
constructor: jA,
|
|
610
|
+
select: function(A) {
|
|
611
|
+
"function" != typeof A && (A = Z(A));
|
|
612
|
+
for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B, i = g[t], e = i.length, n = Q[t] = new Array(e), E = 0; E < e; ++E) (C = i[E]) && (B = A.call(C, C.__data__, E, i)) && ("__data__" in C && (B.__data__ = C.__data__), n[E] = B);
|
|
613
|
+
return new jA(Q, this._parents);
|
|
614
|
+
},
|
|
615
|
+
selectAll: function(A) {
|
|
616
|
+
A = "function" == typeof A ? function(A) {
|
|
617
|
+
return function() {
|
|
618
|
+
return null == (g = A.apply(this, arguments)) ? [] : Array.isArray(g) ? g : Array.from(g);
|
|
619
|
+
var g;
|
|
620
|
+
};
|
|
621
|
+
}(A) : j(A);
|
|
622
|
+
for (var g = this._groups, I = g.length, Q = [], t = [], C = 0; C < I; ++C) for (var B, i = g[C], e = i.length, n = 0; n < e; ++n) (B = i[n]) && (Q.push(A.call(B, B.__data__, n, i)), t.push(B));
|
|
623
|
+
return new jA(Q, t);
|
|
624
|
+
},
|
|
625
|
+
selectChild: function(A) {
|
|
626
|
+
return this.select(null == A ? v : function(A) {
|
|
627
|
+
return function() {
|
|
628
|
+
return L.call(this.children, A);
|
|
629
|
+
};
|
|
630
|
+
}("function" == typeof A ? A : H(A)));
|
|
631
|
+
},
|
|
632
|
+
selectChildren: function(A) {
|
|
633
|
+
return this.selectAll(null == A ? K : function(A) {
|
|
634
|
+
return function() {
|
|
635
|
+
return W.call(this.children, A);
|
|
636
|
+
};
|
|
637
|
+
}("function" == typeof A ? A : H(A)));
|
|
638
|
+
},
|
|
639
|
+
filter: function(A) {
|
|
640
|
+
"function" != typeof A && (A = X(A));
|
|
641
|
+
for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B = g[t], i = B.length, e = Q[t] = [], n = 0; n < i; ++n) (C = B[n]) && A.call(C, C.__data__, n, B) && e.push(C);
|
|
642
|
+
return new jA(Q, this._parents);
|
|
643
|
+
},
|
|
644
|
+
data: function(A, g) {
|
|
645
|
+
if (!arguments.length) return Array.from(this, z);
|
|
646
|
+
var I, Q = g ? q : V, t = this._parents, C = this._groups;
|
|
647
|
+
"function" != typeof A && (I = A, A = function() {
|
|
648
|
+
return I;
|
|
649
|
+
});
|
|
650
|
+
for (var B = C.length, i = new Array(B), e = new Array(B), n = new Array(B), E = 0; E < B; ++E) {
|
|
651
|
+
var s = t[E], o = C[E], r = o.length, a = _(A.call(s, s && s.__data__, E, t)), h = a.length, c = e[E] = new Array(h), l = i[E] = new Array(h);
|
|
652
|
+
Q(s, o, c, l, n[E] = new Array(r), a, g);
|
|
653
|
+
for (var u, D, N = 0, y = 0; N < h; ++N) if (u = c[N]) {
|
|
654
|
+
for (N >= y && (y = N + 1); !(D = l[y]) && ++y < h;);
|
|
655
|
+
u._next = D || null;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
return (i = new jA(i, t))._enter = e, i._exit = n, i;
|
|
659
|
+
},
|
|
660
|
+
enter: function() {
|
|
661
|
+
return new jA(this._enter || this._groups.map(T), this._parents);
|
|
662
|
+
},
|
|
663
|
+
exit: function() {
|
|
664
|
+
return new jA(this._exit || this._groups.map(T), this._parents);
|
|
665
|
+
},
|
|
666
|
+
join: function(A, g, I) {
|
|
667
|
+
var Q = this.enter(), t = this, C = this.exit();
|
|
668
|
+
return "function" == typeof A ? (Q = A(Q)) && (Q = Q.selection()) : Q = Q.append(A + ""), null != g && (t = g(t)) && (t = t.selection()), null == I ? C.remove() : I(C), Q && t ? Q.merge(t).order() : t;
|
|
669
|
+
},
|
|
670
|
+
merge: function(A) {
|
|
671
|
+
for (var g = A.selection ? A.selection() : A, I = this._groups, Q = g._groups, t = I.length, C = Q.length, B = Math.min(t, C), i = new Array(t), e = 0; e < B; ++e) for (var n, E = I[e], s = Q[e], o = E.length, r = i[e] = new Array(o), a = 0; a < o; ++a) (n = E[a] || s[a]) && (r[a] = n);
|
|
672
|
+
for (; e < t; ++e) i[e] = I[e];
|
|
673
|
+
return new jA(i, this._parents);
|
|
674
|
+
},
|
|
675
|
+
selection: function() {
|
|
676
|
+
return this;
|
|
677
|
+
},
|
|
678
|
+
order: function() {
|
|
679
|
+
for (var A = this._groups, g = -1, I = A.length; ++g < I;) for (var Q, t = A[g], C = t.length - 1, B = t[C]; --C >= 0;) (Q = t[C]) && (B && 4 ^ Q.compareDocumentPosition(B) && B.parentNode.insertBefore(Q, B), B = Q);
|
|
680
|
+
return this;
|
|
681
|
+
},
|
|
682
|
+
sort: function(A) {
|
|
683
|
+
function g(g, I) {
|
|
684
|
+
return g && I ? A(g.__data__, I.__data__) : !g - !I;
|
|
685
|
+
}
|
|
686
|
+
A || (A = P);
|
|
687
|
+
for (var I = this._groups, Q = I.length, t = new Array(Q), C = 0; C < Q; ++C) {
|
|
688
|
+
for (var B, i = I[C], e = i.length, n = t[C] = new Array(e), E = 0; E < e; ++E) (B = i[E]) && (n[E] = B);
|
|
689
|
+
n.sort(g);
|
|
690
|
+
}
|
|
691
|
+
return new jA(t, this._parents).order();
|
|
692
|
+
},
|
|
693
|
+
call: function() {
|
|
694
|
+
var A = arguments[0];
|
|
695
|
+
return arguments[0] = this, A.apply(null, arguments), this;
|
|
696
|
+
},
|
|
697
|
+
nodes: function() {
|
|
698
|
+
return Array.from(this);
|
|
699
|
+
},
|
|
700
|
+
node: function() {
|
|
701
|
+
for (var A = this._groups, g = 0, I = A.length; g < I; ++g) for (var Q = A[g], t = 0, C = Q.length; t < C; ++t) {
|
|
702
|
+
var B = Q[t];
|
|
703
|
+
if (B) return B;
|
|
704
|
+
}
|
|
705
|
+
return null;
|
|
706
|
+
},
|
|
707
|
+
size: function() {
|
|
708
|
+
let A = 0;
|
|
709
|
+
for (const g of this) ++A;
|
|
710
|
+
return A;
|
|
711
|
+
},
|
|
712
|
+
empty: function() {
|
|
713
|
+
return !this.node();
|
|
714
|
+
},
|
|
715
|
+
each: function(A) {
|
|
716
|
+
for (var g = this._groups, I = 0, Q = g.length; I < Q; ++I) for (var t, C = g[I], B = 0, i = C.length; B < i; ++B) (t = C[B]) && A.call(t, t.__data__, B, C);
|
|
717
|
+
return this;
|
|
718
|
+
},
|
|
719
|
+
attr: function(A, g) {
|
|
720
|
+
var I = p(A);
|
|
721
|
+
if (arguments.length < 2) {
|
|
722
|
+
var Q = this.node();
|
|
723
|
+
return I.local ? Q.getAttributeNS(I.space, I.local) : Q.getAttribute(I);
|
|
724
|
+
}
|
|
725
|
+
return this.each((null == g ? I.local ? AA : $ : "function" == typeof g ? I.local ? tA : QA : I.local ? IA : gA)(I, g));
|
|
726
|
+
},
|
|
727
|
+
style: function(A, g, I) {
|
|
728
|
+
return arguments.length > 1 ? this.each((null == g ? BA : "function" == typeof g ? eA : iA)(A, g, null == I ? "" : I)) : nA(this.node(), A);
|
|
729
|
+
},
|
|
730
|
+
property: function(A, g) {
|
|
731
|
+
return arguments.length > 1 ? this.each((null == g ? EA : "function" == typeof g ? oA : sA)(A, g)) : this.node()[A];
|
|
732
|
+
},
|
|
733
|
+
classed: function(A, g) {
|
|
734
|
+
var I = rA(A + "");
|
|
735
|
+
if (arguments.length < 2) {
|
|
736
|
+
for (var Q = aA(this.node()), t = -1, C = I.length; ++t < C;) if (!Q.contains(I[t])) return !1;
|
|
737
|
+
return !0;
|
|
738
|
+
}
|
|
739
|
+
return this.each(("function" == typeof g ? NA : g ? uA : DA)(I, g));
|
|
740
|
+
},
|
|
741
|
+
text: function(A) {
|
|
742
|
+
return arguments.length ? this.each(null == A ? yA : ("function" == typeof A ? GA : wA)(A)) : this.node().textContent;
|
|
743
|
+
},
|
|
744
|
+
html: function(A) {
|
|
745
|
+
return arguments.length ? this.each(null == A ? dA : ("function" == typeof A ? mA : YA)(A)) : this.node().innerHTML;
|
|
746
|
+
},
|
|
747
|
+
raise: function() {
|
|
748
|
+
return this.each(kA);
|
|
749
|
+
},
|
|
750
|
+
lower: function() {
|
|
751
|
+
return this.each(fA);
|
|
752
|
+
},
|
|
753
|
+
append: function(A) {
|
|
754
|
+
var g = "function" == typeof A ? A : b(A);
|
|
755
|
+
return this.select(function() {
|
|
756
|
+
return this.appendChild(g.apply(this, arguments));
|
|
757
|
+
});
|
|
758
|
+
},
|
|
759
|
+
insert: function(A, g) {
|
|
760
|
+
var I = "function" == typeof A ? A : b(A), Q = null == g ? MA : "function" == typeof g ? g : Z(g);
|
|
761
|
+
return this.select(function() {
|
|
762
|
+
return this.insertBefore(I.apply(this, arguments), Q.apply(this, arguments) || null);
|
|
763
|
+
});
|
|
764
|
+
},
|
|
765
|
+
remove: function() {
|
|
766
|
+
return this.each(FA);
|
|
767
|
+
},
|
|
768
|
+
clone: function(A) {
|
|
769
|
+
return this.select(A ? pA : JA);
|
|
770
|
+
},
|
|
771
|
+
datum: function(A) {
|
|
772
|
+
return arguments.length ? this.property("__data__", A) : this.node().__data__;
|
|
773
|
+
},
|
|
774
|
+
on: function(A, g, I) {
|
|
775
|
+
var Q, t, C = function(A) {
|
|
776
|
+
return A.trim().split(/^|\s+/).map(function(A) {
|
|
777
|
+
var g = "", I = A.indexOf(".");
|
|
778
|
+
return I >= 0 && (g = A.slice(I + 1), A = A.slice(0, I)), {
|
|
779
|
+
type: A,
|
|
780
|
+
name: g
|
|
781
|
+
};
|
|
782
|
+
});
|
|
783
|
+
}(A + ""), B = C.length;
|
|
784
|
+
if (!(arguments.length < 2)) {
|
|
785
|
+
for (i = g ? xA : RA, Q = 0; Q < B; ++Q) this.each(i(C[Q], g, I));
|
|
786
|
+
return this;
|
|
787
|
+
}
|
|
788
|
+
var i = this.node().__on;
|
|
789
|
+
if (i) {
|
|
790
|
+
for (var e, n = 0, E = i.length; n < E; ++n) for (Q = 0, e = i[n]; Q < B; ++Q) if ((t = C[Q]).type === e.type && t.name === e.name) return e.value;
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
dispatch: function(A, g) {
|
|
794
|
+
return this.each(("function" == typeof g ? ZA : SA)(A, g));
|
|
795
|
+
},
|
|
796
|
+
[Symbol.iterator]: function* () {
|
|
797
|
+
for (var A = this._groups, g = 0, I = A.length; g < I; ++g) for (var Q, t = A[g], C = 0, B = t.length; C < B; ++C) (Q = t[C]) && (yield Q);
|
|
798
|
+
}
|
|
799
|
+
};
|
|
800
|
+
var WA = .7, KA = 1 / WA, TA = "\\s*([+-]?\\d+)\\s*", OA = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", VA = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", qA = /^#([0-9a-f]{3,8})$/, zA = new RegExp(`^rgb\\(${TA},${TA},${TA}\\)$`), _A = new RegExp(`^rgb\\(${VA},${VA},${VA}\\)$`), PA = new RegExp(`^rgba\\(${TA},${TA},${TA},${OA}\\)$`), $A = new RegExp(`^rgba\\(${VA},${VA},${VA},${OA}\\)$`), Ag = new RegExp(`^hsl\\(${OA},${VA},${VA}\\)$`), gg = new RegExp(`^hsla\\(${OA},${VA},${VA},${OA}\\)$`), Ig = {
|
|
801
|
+
aliceblue: 15792383,
|
|
802
|
+
antiquewhite: 16444375,
|
|
803
|
+
aqua: 65535,
|
|
804
|
+
aquamarine: 8388564,
|
|
805
|
+
azure: 15794175,
|
|
806
|
+
beige: 16119260,
|
|
807
|
+
bisque: 16770244,
|
|
808
|
+
black: 0,
|
|
809
|
+
blanchedalmond: 16772045,
|
|
810
|
+
blue: 255,
|
|
811
|
+
blueviolet: 9055202,
|
|
812
|
+
brown: 10824234,
|
|
813
|
+
burlywood: 14596231,
|
|
814
|
+
cadetblue: 6266528,
|
|
815
|
+
chartreuse: 8388352,
|
|
816
|
+
chocolate: 13789470,
|
|
817
|
+
coral: 16744272,
|
|
818
|
+
cornflowerblue: 6591981,
|
|
819
|
+
cornsilk: 16775388,
|
|
820
|
+
crimson: 14423100,
|
|
821
|
+
cyan: 65535,
|
|
822
|
+
darkblue: 139,
|
|
823
|
+
darkcyan: 35723,
|
|
824
|
+
darkgoldenrod: 12092939,
|
|
825
|
+
darkgray: 11119017,
|
|
826
|
+
darkgreen: 25600,
|
|
827
|
+
darkgrey: 11119017,
|
|
828
|
+
darkkhaki: 12433259,
|
|
829
|
+
darkmagenta: 9109643,
|
|
830
|
+
darkolivegreen: 5597999,
|
|
831
|
+
darkorange: 16747520,
|
|
832
|
+
darkorchid: 10040012,
|
|
833
|
+
darkred: 9109504,
|
|
834
|
+
darksalmon: 15308410,
|
|
835
|
+
darkseagreen: 9419919,
|
|
836
|
+
darkslateblue: 4734347,
|
|
837
|
+
darkslategray: 3100495,
|
|
838
|
+
darkslategrey: 3100495,
|
|
839
|
+
darkturquoise: 52945,
|
|
840
|
+
darkviolet: 9699539,
|
|
841
|
+
deeppink: 16716947,
|
|
842
|
+
deepskyblue: 49151,
|
|
843
|
+
dimgray: 6908265,
|
|
844
|
+
dimgrey: 6908265,
|
|
845
|
+
dodgerblue: 2003199,
|
|
846
|
+
firebrick: 11674146,
|
|
847
|
+
floralwhite: 16775920,
|
|
848
|
+
forestgreen: 2263842,
|
|
849
|
+
fuchsia: 16711935,
|
|
850
|
+
gainsboro: 14474460,
|
|
851
|
+
ghostwhite: 16316671,
|
|
852
|
+
gold: 16766720,
|
|
853
|
+
goldenrod: 14329120,
|
|
854
|
+
gray: 8421504,
|
|
855
|
+
green: 32768,
|
|
856
|
+
greenyellow: 11403055,
|
|
857
|
+
grey: 8421504,
|
|
858
|
+
honeydew: 15794160,
|
|
859
|
+
hotpink: 16738740,
|
|
860
|
+
indianred: 13458524,
|
|
861
|
+
indigo: 4915330,
|
|
862
|
+
ivory: 16777200,
|
|
863
|
+
khaki: 15787660,
|
|
864
|
+
lavender: 15132410,
|
|
865
|
+
lavenderblush: 16773365,
|
|
866
|
+
lawngreen: 8190976,
|
|
867
|
+
lemonchiffon: 16775885,
|
|
868
|
+
lightblue: 11393254,
|
|
869
|
+
lightcoral: 15761536,
|
|
870
|
+
lightcyan: 14745599,
|
|
871
|
+
lightgoldenrodyellow: 16448210,
|
|
872
|
+
lightgray: 13882323,
|
|
873
|
+
lightgreen: 9498256,
|
|
874
|
+
lightgrey: 13882323,
|
|
875
|
+
lightpink: 16758465,
|
|
876
|
+
lightsalmon: 16752762,
|
|
877
|
+
lightseagreen: 2142890,
|
|
878
|
+
lightskyblue: 8900346,
|
|
879
|
+
lightslategray: 7833753,
|
|
880
|
+
lightslategrey: 7833753,
|
|
881
|
+
lightsteelblue: 11584734,
|
|
882
|
+
lightyellow: 16777184,
|
|
883
|
+
lime: 65280,
|
|
884
|
+
limegreen: 3329330,
|
|
885
|
+
linen: 16445670,
|
|
886
|
+
magenta: 16711935,
|
|
887
|
+
maroon: 8388608,
|
|
888
|
+
mediumaquamarine: 6737322,
|
|
889
|
+
mediumblue: 205,
|
|
890
|
+
mediumorchid: 12211667,
|
|
891
|
+
mediumpurple: 9662683,
|
|
892
|
+
mediumseagreen: 3978097,
|
|
893
|
+
mediumslateblue: 8087790,
|
|
894
|
+
mediumspringgreen: 64154,
|
|
895
|
+
mediumturquoise: 4772300,
|
|
896
|
+
mediumvioletred: 13047173,
|
|
897
|
+
midnightblue: 1644912,
|
|
898
|
+
mintcream: 16121850,
|
|
899
|
+
mistyrose: 16770273,
|
|
900
|
+
moccasin: 16770229,
|
|
901
|
+
navajowhite: 16768685,
|
|
902
|
+
navy: 128,
|
|
903
|
+
oldlace: 16643558,
|
|
904
|
+
olive: 8421376,
|
|
905
|
+
olivedrab: 7048739,
|
|
906
|
+
orange: 16753920,
|
|
907
|
+
orangered: 16729344,
|
|
908
|
+
orchid: 14315734,
|
|
909
|
+
palegoldenrod: 15657130,
|
|
910
|
+
palegreen: 10025880,
|
|
911
|
+
paleturquoise: 11529966,
|
|
912
|
+
palevioletred: 14381203,
|
|
913
|
+
papayawhip: 16773077,
|
|
914
|
+
peachpuff: 16767673,
|
|
915
|
+
peru: 13468991,
|
|
916
|
+
pink: 16761035,
|
|
917
|
+
plum: 14524637,
|
|
918
|
+
powderblue: 11591910,
|
|
919
|
+
purple: 8388736,
|
|
920
|
+
rebeccapurple: 6697881,
|
|
921
|
+
red: 16711680,
|
|
922
|
+
rosybrown: 12357519,
|
|
923
|
+
royalblue: 4286945,
|
|
924
|
+
saddlebrown: 9127187,
|
|
925
|
+
salmon: 16416882,
|
|
926
|
+
sandybrown: 16032864,
|
|
927
|
+
seagreen: 3050327,
|
|
928
|
+
seashell: 16774638,
|
|
929
|
+
sienna: 10506797,
|
|
930
|
+
silver: 12632256,
|
|
931
|
+
skyblue: 8900331,
|
|
932
|
+
slateblue: 6970061,
|
|
933
|
+
slategray: 7372944,
|
|
934
|
+
slategrey: 7372944,
|
|
935
|
+
snow: 16775930,
|
|
936
|
+
springgreen: 65407,
|
|
937
|
+
steelblue: 4620980,
|
|
938
|
+
tan: 13808780,
|
|
939
|
+
teal: 32896,
|
|
940
|
+
thistle: 14204888,
|
|
941
|
+
tomato: 16737095,
|
|
942
|
+
turquoise: 4251856,
|
|
943
|
+
violet: 15631086,
|
|
944
|
+
wheat: 16113331,
|
|
945
|
+
white: 16777215,
|
|
946
|
+
whitesmoke: 16119285,
|
|
947
|
+
yellow: 16776960,
|
|
948
|
+
yellowgreen: 10145074
|
|
949
|
+
};
|
|
950
|
+
function Qg() {
|
|
951
|
+
return this.rgb().formatHex();
|
|
952
|
+
}
|
|
953
|
+
function tg() {
|
|
954
|
+
return this.rgb().formatRgb();
|
|
955
|
+
}
|
|
956
|
+
function Cg(A) {
|
|
957
|
+
var g, I;
|
|
958
|
+
return A = (A + "").trim().toLowerCase(), (g = qA.exec(A)) ? (I = g[1].length, g = parseInt(g[1], 16), 6 === I ? Bg(g) : 3 === I ? new ng(g >> 8 & 15 | g >> 4 & 240, g >> 4 & 15 | 240 & g, (15 & g) << 4 | 15 & g, 1) : 8 === I ? ig(g >> 24 & 255, g >> 16 & 255, g >> 8 & 255, (255 & g) / 255) : 4 === I ? ig(g >> 12 & 15 | g >> 8 & 240, g >> 8 & 15 | g >> 4 & 240, g >> 4 & 15 | 240 & g, ((15 & g) << 4 | 15 & g) / 255) : null) : (g = zA.exec(A)) ? new ng(g[1], g[2], g[3], 1) : (g = _A.exec(A)) ? new ng(255 * g[1] / 100, 255 * g[2] / 100, 255 * g[3] / 100, 1) : (g = PA.exec(A)) ? ig(g[1], g[2], g[3], g[4]) : (g = $A.exec(A)) ? ig(255 * g[1] / 100, 255 * g[2] / 100, 255 * g[3] / 100, g[4]) : (g = Ag.exec(A)) ? hg(g[1], g[2] / 100, g[3] / 100, 1) : (g = gg.exec(A)) ? hg(g[1], g[2] / 100, g[3] / 100, g[4]) : Ig.hasOwnProperty(A) ? Bg(Ig[A]) : "transparent" === A ? new ng(NaN, NaN, NaN, 0) : null;
|
|
959
|
+
}
|
|
960
|
+
function Bg(A) {
|
|
961
|
+
return new ng(A >> 16 & 255, A >> 8 & 255, 255 & A, 1);
|
|
962
|
+
}
|
|
963
|
+
function ig(A, g, I, Q) {
|
|
964
|
+
return Q <= 0 && (A = g = I = NaN), new ng(A, g, I, Q);
|
|
965
|
+
}
|
|
966
|
+
function eg(A, g, I, Q) {
|
|
967
|
+
return 1 === arguments.length ? ((t = A) instanceof vA || (t = Cg(t)), t ? new ng((t = t.rgb()).r, t.g, t.b, t.opacity) : new ng()) : new ng(A, g, I, null == Q ? 1 : Q);
|
|
968
|
+
var t;
|
|
969
|
+
}
|
|
970
|
+
function ng(A, g, I, Q) {
|
|
971
|
+
this.r = +A, this.g = +g, this.b = +I, this.opacity = +Q;
|
|
972
|
+
}
|
|
973
|
+
function Eg() {
|
|
974
|
+
return `#${ag(this.r)}${ag(this.g)}${ag(this.b)}`;
|
|
975
|
+
}
|
|
976
|
+
function sg() {
|
|
977
|
+
const A = og(this.opacity);
|
|
978
|
+
return `${1 === A ? "rgb(" : "rgba("}${rg(this.r)}, ${rg(this.g)}, ${rg(this.b)}${1 === A ? ")" : `, ${A})`}`;
|
|
979
|
+
}
|
|
980
|
+
function og(A) {
|
|
981
|
+
return isNaN(A) ? 1 : Math.max(0, Math.min(1, A));
|
|
982
|
+
}
|
|
983
|
+
function rg(A) {
|
|
984
|
+
return Math.max(0, Math.min(255, Math.round(A) || 0));
|
|
985
|
+
}
|
|
986
|
+
function ag(A) {
|
|
987
|
+
return ((A = rg(A)) < 16 ? "0" : "") + A.toString(16);
|
|
988
|
+
}
|
|
989
|
+
function hg(A, g, I, Q) {
|
|
990
|
+
return Q <= 0 ? A = g = I = NaN : I <= 0 || I >= 1 ? A = g = NaN : g <= 0 && (A = NaN), new lg(A, g, I, Q);
|
|
991
|
+
}
|
|
992
|
+
function cg(A) {
|
|
993
|
+
if (A instanceof lg) return new lg(A.h, A.s, A.l, A.opacity);
|
|
994
|
+
if (A instanceof vA || (A = Cg(A)), !A) return new lg();
|
|
995
|
+
if (A instanceof lg) return A;
|
|
996
|
+
var g = (A = A.rgb()).r / 255, I = A.g / 255, Q = A.b / 255, t = Math.min(g, I, Q), C = Math.max(g, I, Q), B = NaN, i = C - t, e = (C + t) / 2;
|
|
997
|
+
return i ? (B = g === C ? (I - Q) / i + 6 * (I < Q) : I === C ? (Q - g) / i + 2 : (g - I) / i + 4, i /= e < .5 ? C + t : 2 - C - t, B *= 60) : i = e > 0 && e < 1 ? 0 : B, new lg(B, i, e, A.opacity);
|
|
998
|
+
}
|
|
999
|
+
function lg(A, g, I, Q) {
|
|
1000
|
+
this.h = +A, this.s = +g, this.l = +I, this.opacity = +Q;
|
|
1001
|
+
}
|
|
1002
|
+
function ug(A) {
|
|
1003
|
+
return (A = (A || 0) % 360) < 0 ? A + 360 : A;
|
|
1004
|
+
}
|
|
1005
|
+
function Dg(A) {
|
|
1006
|
+
return Math.max(0, Math.min(1, A || 0));
|
|
1007
|
+
}
|
|
1008
|
+
function Ng(A, g, I) {
|
|
1009
|
+
return 255 * (A < 60 ? g + (I - g) * A / 60 : A < 180 ? I : A < 240 ? g + (I - g) * (240 - A) / 60 : g);
|
|
1010
|
+
}
|
|
1011
|
+
HA(vA, Cg, {
|
|
1012
|
+
copy(A) {
|
|
1013
|
+
return Object.assign(new this.constructor(), this, A);
|
|
1014
|
+
},
|
|
1015
|
+
displayable() {
|
|
1016
|
+
return this.rgb().displayable();
|
|
1017
|
+
},
|
|
1018
|
+
hex: Qg,
|
|
1019
|
+
formatHex: Qg,
|
|
1020
|
+
formatHex8: function() {
|
|
1021
|
+
return this.rgb().formatHex8();
|
|
1022
|
+
},
|
|
1023
|
+
formatHsl: function() {
|
|
1024
|
+
return cg(this).formatHsl();
|
|
1025
|
+
},
|
|
1026
|
+
formatRgb: tg,
|
|
1027
|
+
toString: tg
|
|
1028
|
+
}), HA(ng, eg, LA(vA, {
|
|
1029
|
+
brighter(A) {
|
|
1030
|
+
return A = null == A ? KA : Math.pow(KA, A), new ng(this.r * A, this.g * A, this.b * A, this.opacity);
|
|
1031
|
+
},
|
|
1032
|
+
darker(A) {
|
|
1033
|
+
return A = null == A ? WA : Math.pow(WA, A), new ng(this.r * A, this.g * A, this.b * A, this.opacity);
|
|
1034
|
+
},
|
|
1035
|
+
rgb() {
|
|
1036
|
+
return this;
|
|
1037
|
+
},
|
|
1038
|
+
clamp() {
|
|
1039
|
+
return new ng(rg(this.r), rg(this.g), rg(this.b), og(this.opacity));
|
|
1040
|
+
},
|
|
1041
|
+
displayable() {
|
|
1042
|
+
return -.5 <= this.r && this.r < 255.5 && -.5 <= this.g && this.g < 255.5 && -.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;
|
|
1043
|
+
},
|
|
1044
|
+
hex: Eg,
|
|
1045
|
+
formatHex: Eg,
|
|
1046
|
+
formatHex8: function() {
|
|
1047
|
+
return `#${ag(this.r)}${ag(this.g)}${ag(this.b)}${ag(255 * (isNaN(this.opacity) ? 1 : this.opacity))}`;
|
|
1048
|
+
},
|
|
1049
|
+
formatRgb: sg,
|
|
1050
|
+
toString: sg
|
|
1051
|
+
})), HA(lg, function(A, g, I, Q) {
|
|
1052
|
+
return 1 === arguments.length ? cg(A) : new lg(A, g, I, null == Q ? 1 : Q);
|
|
1053
|
+
}, LA(vA, {
|
|
1054
|
+
brighter(A) {
|
|
1055
|
+
return A = null == A ? KA : Math.pow(KA, A), new lg(this.h, this.s, this.l * A, this.opacity);
|
|
1056
|
+
},
|
|
1057
|
+
darker(A) {
|
|
1058
|
+
return A = null == A ? WA : Math.pow(WA, A), new lg(this.h, this.s, this.l * A, this.opacity);
|
|
1059
|
+
},
|
|
1060
|
+
rgb() {
|
|
1061
|
+
var A = this.h % 360 + 360 * (this.h < 0), g = isNaN(A) || isNaN(this.s) ? 0 : this.s, I = this.l, Q = I + (I < .5 ? I : 1 - I) * g, t = 2 * I - Q;
|
|
1062
|
+
return new ng(Ng(A >= 240 ? A - 240 : A + 120, t, Q), Ng(A, t, Q), Ng(A < 120 ? A + 240 : A - 120, t, Q), this.opacity);
|
|
1063
|
+
},
|
|
1064
|
+
clamp() {
|
|
1065
|
+
return new lg(ug(this.h), Dg(this.s), Dg(this.l), og(this.opacity));
|
|
1066
|
+
},
|
|
1067
|
+
displayable() {
|
|
1068
|
+
return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;
|
|
1069
|
+
},
|
|
1070
|
+
formatHsl() {
|
|
1071
|
+
const A = og(this.opacity);
|
|
1072
|
+
return `${1 === A ? "hsl(" : "hsla("}${ug(this.h)}, ${100 * Dg(this.s)}%, ${100 * Dg(this.l)}%${1 === A ? ")" : `, ${A})`}`;
|
|
1073
|
+
}
|
|
1074
|
+
}));
|
|
1075
|
+
var wg = (A) => () => A;
|
|
1076
|
+
function Gg(A, g) {
|
|
1077
|
+
var I = g - A;
|
|
1078
|
+
return I ? function(A, g) {
|
|
1079
|
+
return function(I) {
|
|
1080
|
+
return A + I * g;
|
|
1081
|
+
};
|
|
1082
|
+
}(A, I) : wg(isNaN(A) ? g : A);
|
|
1083
|
+
}
|
|
1084
|
+
var dg = function A(g) {
|
|
1085
|
+
var I = function(A) {
|
|
1086
|
+
return 1 === (A = +A) ? Gg : function(g, I) {
|
|
1087
|
+
return I - g ? function(A, g, I) {
|
|
1088
|
+
return A = Math.pow(A, I), g = Math.pow(g, I) - A, I = 1 / I, function(Q) {
|
|
1089
|
+
return Math.pow(A + Q * g, I);
|
|
1090
|
+
};
|
|
1091
|
+
}(g, I, A) : wg(isNaN(g) ? I : g);
|
|
1092
|
+
};
|
|
1093
|
+
}(g);
|
|
1094
|
+
function Q(A, g) {
|
|
1095
|
+
var Q = I((A = eg(A)).r, (g = eg(g)).r), t = I(A.g, g.g), C = I(A.b, g.b), B = Gg(A.opacity, g.opacity);
|
|
1096
|
+
return function(g) {
|
|
1097
|
+
return A.r = Q(g), A.g = t(g), A.b = C(g), A.opacity = B(g), A + "";
|
|
1098
|
+
};
|
|
1099
|
+
}
|
|
1100
|
+
return Q.gamma = A, Q;
|
|
1101
|
+
}(1);
|
|
1102
|
+
function mg(A, g) {
|
|
1103
|
+
return A = +A, g = +g, function(I) {
|
|
1104
|
+
return A * (1 - I) + g * I;
|
|
1105
|
+
};
|
|
1106
|
+
}
|
|
1107
|
+
var kg = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, fg = new RegExp(kg.source, "g");
|
|
1108
|
+
function Mg(A, g) {
|
|
1109
|
+
var I, Q, t, C = kg.lastIndex = fg.lastIndex = 0, B = -1, i = [], e = [];
|
|
1110
|
+
for (A += "", g += ""; (I = kg.exec(A)) && (Q = fg.exec(g));) (t = Q.index) > C && (t = g.slice(C, t), i[B] ? i[B] += t : i[++B] = t), (I = I[0]) === (Q = Q[0]) ? i[B] ? i[B] += Q : i[++B] = Q : (i[++B] = null, e.push({
|
|
1111
|
+
i: B,
|
|
1112
|
+
x: mg(I, Q)
|
|
1113
|
+
})), C = fg.lastIndex;
|
|
1114
|
+
return C < g.length && (t = g.slice(C), i[B] ? i[B] += t : i[++B] = t), i.length < 2 ? e[0] ? function(A) {
|
|
1115
|
+
return function(g) {
|
|
1116
|
+
return A(g) + "";
|
|
1117
|
+
};
|
|
1118
|
+
}(e[0].x) : function(A) {
|
|
1119
|
+
return function() {
|
|
1120
|
+
return A;
|
|
1121
|
+
};
|
|
1122
|
+
}(g) : (g = e.length, function(A) {
|
|
1123
|
+
for (var I, Q = 0; Q < g; ++Q) i[(I = e[Q]).i] = I.x(A);
|
|
1124
|
+
return i.join("");
|
|
1125
|
+
});
|
|
1126
|
+
}
|
|
1127
|
+
var Fg, Jg = 180 / Math.PI, pg = {
|
|
1128
|
+
translateX: 0,
|
|
1129
|
+
translateY: 0,
|
|
1130
|
+
rotate: 0,
|
|
1131
|
+
skewX: 0,
|
|
1132
|
+
scaleX: 1,
|
|
1133
|
+
scaleY: 1
|
|
1134
|
+
};
|
|
1135
|
+
function Rg(A, g, I, Q, t, C) {
|
|
1136
|
+
var B, i, e;
|
|
1137
|
+
return (B = Math.sqrt(A * A + g * g)) && (A /= B, g /= B), (e = A * I + g * Q) && (I -= A * e, Q -= g * e), (i = Math.sqrt(I * I + Q * Q)) && (I /= i, Q /= i, e /= i), A * Q < g * I && (A = -A, g = -g, e = -e, B = -B), {
|
|
1138
|
+
translateX: t,
|
|
1139
|
+
translateY: C,
|
|
1140
|
+
rotate: Math.atan2(g, A) * Jg,
|
|
1141
|
+
skewX: Math.atan(e) * Jg,
|
|
1142
|
+
scaleX: B,
|
|
1143
|
+
scaleY: i
|
|
1144
|
+
};
|
|
1145
|
+
}
|
|
1146
|
+
function xg(A, g, I, Q) {
|
|
1147
|
+
function t(A) {
|
|
1148
|
+
return A.length ? A.pop() + " " : "";
|
|
1149
|
+
}
|
|
1150
|
+
return function(C, B) {
|
|
1151
|
+
var i = [], e = [];
|
|
1152
|
+
return C = A(C), B = A(B), function(A, Q, t, C, B, i) {
|
|
1153
|
+
if (A !== t || Q !== C) {
|
|
1154
|
+
var e = B.push("translate(", null, g, null, I);
|
|
1155
|
+
i.push({
|
|
1156
|
+
i: e - 4,
|
|
1157
|
+
x: mg(A, t)
|
|
1158
|
+
}, {
|
|
1159
|
+
i: e - 2,
|
|
1160
|
+
x: mg(Q, C)
|
|
1161
|
+
});
|
|
1162
|
+
} else (t || C) && B.push("translate(" + t + g + C + I);
|
|
1163
|
+
}(C.translateX, C.translateY, B.translateX, B.translateY, i, e), function(A, g, I, C) {
|
|
1164
|
+
A !== g ? (A - g > 180 ? g += 360 : g - A > 180 && (A += 360), C.push({
|
|
1165
|
+
i: I.push(t(I) + "rotate(", null, Q) - 2,
|
|
1166
|
+
x: mg(A, g)
|
|
1167
|
+
})) : g && I.push(t(I) + "rotate(" + g + Q);
|
|
1168
|
+
}(C.rotate, B.rotate, i, e), function(A, g, I, C) {
|
|
1169
|
+
A !== g ? C.push({
|
|
1170
|
+
i: I.push(t(I) + "skewX(", null, Q) - 2,
|
|
1171
|
+
x: mg(A, g)
|
|
1172
|
+
}) : g && I.push(t(I) + "skewX(" + g + Q);
|
|
1173
|
+
}(C.skewX, B.skewX, i, e), function(A, g, I, Q, C, B) {
|
|
1174
|
+
if (A !== I || g !== Q) {
|
|
1175
|
+
var i = C.push(t(C) + "scale(", null, ",", null, ")");
|
|
1176
|
+
B.push({
|
|
1177
|
+
i: i - 4,
|
|
1178
|
+
x: mg(A, I)
|
|
1179
|
+
}, {
|
|
1180
|
+
i: i - 2,
|
|
1181
|
+
x: mg(g, Q)
|
|
1182
|
+
});
|
|
1183
|
+
} else 1 === I && 1 === Q || C.push(t(C) + "scale(" + I + "," + Q + ")");
|
|
1184
|
+
}(C.scaleX, C.scaleY, B.scaleX, B.scaleY, i, e), C = B = null, function(A) {
|
|
1185
|
+
for (var g, I = -1, Q = e.length; ++I < Q;) i[(g = e[I]).i] = g.x(A);
|
|
1186
|
+
return i.join("");
|
|
1187
|
+
};
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
var bg, Sg, Zg = xg(function(A) {
|
|
1191
|
+
const g = new ("function" == typeof DOMMatrix ? DOMMatrix : WebKitCSSMatrix)(A + "");
|
|
1192
|
+
return g.isIdentity ? pg : Rg(g.a, g.b, g.c, g.d, g.e, g.f);
|
|
1193
|
+
}, "px, ", "px)", "deg)"), Ug = xg(function(A) {
|
|
1194
|
+
return null == A ? pg : (Fg || (Fg = document.createElementNS("http://www.w3.org/2000/svg", "g")), Fg.setAttribute("transform", A), (A = Fg.transform.baseVal.consolidate()) ? Rg((A = A.matrix).a, A.b, A.c, A.d, A.e, A.f) : pg);
|
|
1195
|
+
}, ", ", ")", ")"), jg = 0, Xg = 0, Hg = 0, Lg = 0, vg = 0, Wg = 0, Kg = "object" == typeof performance && performance.now ? performance : Date, Tg = "object" == typeof window && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(A) {
|
|
1196
|
+
setTimeout(A, 17);
|
|
1197
|
+
};
|
|
1198
|
+
function Og() {
|
|
1199
|
+
return vg || (Tg(Vg), vg = Kg.now() + Wg);
|
|
1200
|
+
}
|
|
1201
|
+
function Vg() {
|
|
1202
|
+
vg = 0;
|
|
1203
|
+
}
|
|
1204
|
+
function qg() {
|
|
1205
|
+
this._call = this._time = this._next = null;
|
|
1206
|
+
}
|
|
1207
|
+
function zg(A, g, I) {
|
|
1208
|
+
var Q = new qg();
|
|
1209
|
+
return Q.restart(A, g, I), Q;
|
|
1210
|
+
}
|
|
1211
|
+
function _g() {
|
|
1212
|
+
vg = (Lg = Kg.now()) + Wg, jg = Xg = 0;
|
|
1213
|
+
try {
|
|
1214
|
+
(function() {
|
|
1215
|
+
Og(), ++jg;
|
|
1216
|
+
for (var A, g = bg; g;) (A = vg - g._time) >= 0 && g._call.call(void 0, A), g = g._next;
|
|
1217
|
+
--jg;
|
|
1218
|
+
})();
|
|
1219
|
+
} finally {
|
|
1220
|
+
jg = 0, function() {
|
|
1221
|
+
for (var A, g, I = bg, Q = Infinity; I;) I._call ? (Q > I._time && (Q = I._time), A = I, I = I._next) : (g = I._next, I._next = null, I = A ? A._next = g : bg = g);
|
|
1222
|
+
Sg = A, $g(Q);
|
|
1223
|
+
}(), vg = 0;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
function Pg() {
|
|
1227
|
+
var A = Kg.now(), g = A - Lg;
|
|
1228
|
+
g > 1e3 && (Wg -= g, Lg = A);
|
|
1229
|
+
}
|
|
1230
|
+
function $g(A) {
|
|
1231
|
+
jg || (Xg && (Xg = clearTimeout(Xg)), A - vg > 24 ? (A < Infinity && (Xg = setTimeout(_g, A - Kg.now() - Wg)), Hg && (Hg = clearInterval(Hg))) : (Hg || (Lg = Kg.now(), Hg = setInterval(Pg, 1e3)), jg = 1, Tg(_g)));
|
|
1232
|
+
}
|
|
1233
|
+
function AI(A, g, I) {
|
|
1234
|
+
var Q = new qg();
|
|
1235
|
+
return g = null == g ? 0 : +g, Q.restart((I) => {
|
|
1236
|
+
Q.stop(), A(I + g);
|
|
1237
|
+
}, g, I), Q;
|
|
1238
|
+
}
|
|
1239
|
+
qg.prototype = zg.prototype = {
|
|
1240
|
+
constructor: qg,
|
|
1241
|
+
restart: function(A, g, I) {
|
|
1242
|
+
if ("function" != typeof A) throw new TypeError("callback is not a function");
|
|
1243
|
+
I = (null == I ? Og() : +I) + (null == g ? 0 : +g), this._next || Sg === this || (Sg ? Sg._next = this : bg = this, Sg = this), this._call = A, this._time = I, $g();
|
|
1244
|
+
},
|
|
1245
|
+
stop: function() {
|
|
1246
|
+
this._call && (this._call = null, this._time = Infinity, $g());
|
|
1247
|
+
}
|
|
1248
|
+
};
|
|
1249
|
+
var gI = k("start", "end", "cancel", "interrupt"), II = [];
|
|
1250
|
+
function QI(A, g, I, Q, t, C) {
|
|
1251
|
+
var B = A.__transition;
|
|
1252
|
+
if (B) {
|
|
1253
|
+
if (I in B) return;
|
|
1254
|
+
} else A.__transition = {};
|
|
1255
|
+
(function(A, g, I) {
|
|
1256
|
+
var Q, t = A.__transition;
|
|
1257
|
+
function C(e) {
|
|
1258
|
+
var n, E, s, o;
|
|
1259
|
+
if (1 !== I.state) return i();
|
|
1260
|
+
for (n in t) if ((o = t[n]).name === I.name) {
|
|
1261
|
+
if (3 === o.state) return AI(C);
|
|
1262
|
+
4 === o.state ? (o.state = 6, o.timer.stop(), o.on.call("interrupt", A, A.__data__, o.index, o.group), delete t[n]) : +n < g && (o.state = 6, o.timer.stop(), o.on.call("cancel", A, A.__data__, o.index, o.group), delete t[n]);
|
|
1263
|
+
}
|
|
1264
|
+
if (AI(function() {
|
|
1265
|
+
3 === I.state && (I.state = 4, I.timer.restart(B, I.delay, I.time), B(e));
|
|
1266
|
+
}), I.state = 2, I.on.call("start", A, A.__data__, I.index, I.group), 2 === I.state) {
|
|
1267
|
+
for (I.state = 3, Q = new Array(s = I.tween.length), n = 0, E = -1; n < s; ++n) (o = I.tween[n].value.call(A, A.__data__, I.index, I.group)) && (Q[++E] = o);
|
|
1268
|
+
Q.length = E + 1;
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
function B(g) {
|
|
1272
|
+
for (var t = g < I.duration ? I.ease.call(null, g / I.duration) : (I.timer.restart(i), I.state = 5, 1), C = -1, B = Q.length; ++C < B;) Q[C].call(A, t);
|
|
1273
|
+
5 === I.state && (I.on.call("end", A, A.__data__, I.index, I.group), i());
|
|
1274
|
+
}
|
|
1275
|
+
function i() {
|
|
1276
|
+
for (var Q in I.state = 6, I.timer.stop(), delete t[g], t) return;
|
|
1277
|
+
delete A.__transition;
|
|
1278
|
+
}
|
|
1279
|
+
t[g] = I, I.timer = zg(function(A) {
|
|
1280
|
+
I.state = 1, I.timer.restart(C, I.delay, I.time), I.delay <= A && C(A - I.delay);
|
|
1281
|
+
}, 0, I.time);
|
|
1282
|
+
})(A, I, {
|
|
1283
|
+
name: g,
|
|
1284
|
+
index: Q,
|
|
1285
|
+
group: t,
|
|
1286
|
+
on: gI,
|
|
1287
|
+
tween: II,
|
|
1288
|
+
time: C.time,
|
|
1289
|
+
delay: C.delay,
|
|
1290
|
+
duration: C.duration,
|
|
1291
|
+
ease: C.ease,
|
|
1292
|
+
timer: null,
|
|
1293
|
+
state: 0
|
|
1294
|
+
});
|
|
1295
|
+
}
|
|
1296
|
+
function tI(A, g) {
|
|
1297
|
+
var I = BI(A, g);
|
|
1298
|
+
if (I.state > 0) throw new Error("too late; already scheduled");
|
|
1299
|
+
return I;
|
|
1300
|
+
}
|
|
1301
|
+
function CI(A, g) {
|
|
1302
|
+
var I = BI(A, g);
|
|
1303
|
+
if (I.state > 3) throw new Error("too late; already running");
|
|
1304
|
+
return I;
|
|
1305
|
+
}
|
|
1306
|
+
function BI(A, g) {
|
|
1307
|
+
var I = A.__transition;
|
|
1308
|
+
if (!I || !(I = I[g])) throw new Error("transition not found");
|
|
1309
|
+
return I;
|
|
1310
|
+
}
|
|
1311
|
+
function iI(A, g) {
|
|
1312
|
+
var I, Q;
|
|
1313
|
+
return function() {
|
|
1314
|
+
var t = CI(this, A), C = t.tween;
|
|
1315
|
+
if (C !== I) {
|
|
1316
|
+
for (var B = 0, i = (Q = I = C).length; B < i; ++B) if (Q[B].name === g) {
|
|
1317
|
+
(Q = Q.slice()).splice(B, 1);
|
|
1318
|
+
break;
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
t.tween = Q;
|
|
1322
|
+
};
|
|
1323
|
+
}
|
|
1324
|
+
function eI(A, g, I) {
|
|
1325
|
+
var Q, t;
|
|
1326
|
+
if ("function" != typeof I) throw new Error();
|
|
1327
|
+
return function() {
|
|
1328
|
+
var C = CI(this, A), B = C.tween;
|
|
1329
|
+
if (B !== Q) {
|
|
1330
|
+
t = (Q = B).slice();
|
|
1331
|
+
for (var i = {
|
|
1332
|
+
name: g,
|
|
1333
|
+
value: I
|
|
1334
|
+
}, e = 0, n = t.length; e < n; ++e) if (t[e].name === g) {
|
|
1335
|
+
t[e] = i;
|
|
1336
|
+
break;
|
|
1337
|
+
}
|
|
1338
|
+
e === n && t.push(i);
|
|
1339
|
+
}
|
|
1340
|
+
C.tween = t;
|
|
1341
|
+
};
|
|
1342
|
+
}
|
|
1343
|
+
function nI(A, g, I) {
|
|
1344
|
+
var Q = A._id;
|
|
1345
|
+
return A.each(function() {
|
|
1346
|
+
var A = CI(this, Q);
|
|
1347
|
+
(A.value || (A.value = {}))[g] = I.apply(this, arguments);
|
|
1348
|
+
}), function(A) {
|
|
1349
|
+
return BI(A, Q).value[g];
|
|
1350
|
+
};
|
|
1351
|
+
}
|
|
1352
|
+
function EI(A, g) {
|
|
1353
|
+
var I;
|
|
1354
|
+
return ("number" == typeof g ? mg : g instanceof Cg ? dg : (I = Cg(g)) ? (g = I, dg) : Mg)(A, g);
|
|
1355
|
+
}
|
|
1356
|
+
function sI(A) {
|
|
1357
|
+
return function() {
|
|
1358
|
+
this.removeAttribute(A);
|
|
1359
|
+
};
|
|
1360
|
+
}
|
|
1361
|
+
function oI(A) {
|
|
1362
|
+
return function() {
|
|
1363
|
+
this.removeAttributeNS(A.space, A.local);
|
|
1364
|
+
};
|
|
1365
|
+
}
|
|
1366
|
+
function rI(A, g, I) {
|
|
1367
|
+
var Q, t, C = I + "";
|
|
1368
|
+
return function() {
|
|
1369
|
+
var B = this.getAttribute(A);
|
|
1370
|
+
return B === C ? null : B === Q ? t : t = g(Q = B, I);
|
|
1371
|
+
};
|
|
1372
|
+
}
|
|
1373
|
+
function aI(A, g, I) {
|
|
1374
|
+
var Q, t, C = I + "";
|
|
1375
|
+
return function() {
|
|
1376
|
+
var B = this.getAttributeNS(A.space, A.local);
|
|
1377
|
+
return B === C ? null : B === Q ? t : t = g(Q = B, I);
|
|
1378
|
+
};
|
|
1379
|
+
}
|
|
1380
|
+
function hI(A, g, I) {
|
|
1381
|
+
var Q, t, C;
|
|
1382
|
+
return function() {
|
|
1383
|
+
var B, i, e = I(this);
|
|
1384
|
+
if (null != e) return (B = this.getAttribute(A)) === (i = e + "") ? null : B === Q && i === t ? C : (t = i, C = g(Q = B, e));
|
|
1385
|
+
this.removeAttribute(A);
|
|
1386
|
+
};
|
|
1387
|
+
}
|
|
1388
|
+
function cI(A, g, I) {
|
|
1389
|
+
var Q, t, C;
|
|
1390
|
+
return function() {
|
|
1391
|
+
var B, i, e = I(this);
|
|
1392
|
+
if (null != e) return (B = this.getAttributeNS(A.space, A.local)) === (i = e + "") ? null : B === Q && i === t ? C : (t = i, C = g(Q = B, e));
|
|
1393
|
+
this.removeAttributeNS(A.space, A.local);
|
|
1394
|
+
};
|
|
1395
|
+
}
|
|
1396
|
+
function lI(A, g) {
|
|
1397
|
+
var I, Q;
|
|
1398
|
+
function t() {
|
|
1399
|
+
var t = g.apply(this, arguments);
|
|
1400
|
+
return t !== Q && (I = (Q = t) && function(A, g) {
|
|
1401
|
+
return function(I) {
|
|
1402
|
+
this.setAttributeNS(A.space, A.local, g.call(this, I));
|
|
1403
|
+
};
|
|
1404
|
+
}(A, t)), I;
|
|
1405
|
+
}
|
|
1406
|
+
return t._value = g, t;
|
|
1407
|
+
}
|
|
1408
|
+
function uI(A, g) {
|
|
1409
|
+
var I, Q;
|
|
1410
|
+
function t() {
|
|
1411
|
+
var t = g.apply(this, arguments);
|
|
1412
|
+
return t !== Q && (I = (Q = t) && function(A, g) {
|
|
1413
|
+
return function(I) {
|
|
1414
|
+
this.setAttribute(A, g.call(this, I));
|
|
1415
|
+
};
|
|
1416
|
+
}(A, t)), I;
|
|
1417
|
+
}
|
|
1418
|
+
return t._value = g, t;
|
|
1419
|
+
}
|
|
1420
|
+
function DI(A, g) {
|
|
1421
|
+
return function() {
|
|
1422
|
+
tI(this, A).delay = +g.apply(this, arguments);
|
|
1423
|
+
};
|
|
1424
|
+
}
|
|
1425
|
+
function NI(A, g) {
|
|
1426
|
+
return g = +g, function() {
|
|
1427
|
+
tI(this, A).delay = g;
|
|
1428
|
+
};
|
|
1429
|
+
}
|
|
1430
|
+
function yI(A, g) {
|
|
1431
|
+
return function() {
|
|
1432
|
+
CI(this, A).duration = +g.apply(this, arguments);
|
|
1433
|
+
};
|
|
1434
|
+
}
|
|
1435
|
+
function wI(A, g) {
|
|
1436
|
+
return g = +g, function() {
|
|
1437
|
+
CI(this, A).duration = g;
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1440
|
+
var GI = XA.prototype.constructor;
|
|
1441
|
+
function dI(A) {
|
|
1442
|
+
return function() {
|
|
1443
|
+
this.style.removeProperty(A);
|
|
1444
|
+
};
|
|
1445
|
+
}
|
|
1446
|
+
var YI = 0;
|
|
1447
|
+
function mI(A, g, I, Q) {
|
|
1448
|
+
this._groups = A, this._parents = g, this._name = I, this._id = Q;
|
|
1449
|
+
}
|
|
1450
|
+
function kI() {
|
|
1451
|
+
return ++YI;
|
|
1452
|
+
}
|
|
1453
|
+
var fI = XA.prototype;
|
|
1454
|
+
mI.prototype = function(A) {
|
|
1455
|
+
return XA().transition(A);
|
|
1456
|
+
}.prototype = {
|
|
1457
|
+
constructor: mI,
|
|
1458
|
+
select: function(A) {
|
|
1459
|
+
var g = this._name, I = this._id;
|
|
1460
|
+
"function" != typeof A && (A = Z(A));
|
|
1461
|
+
for (var Q = this._groups, t = Q.length, C = new Array(t), B = 0; B < t; ++B) for (var i, e, n = Q[B], E = n.length, s = C[B] = new Array(E), o = 0; o < E; ++o) (i = n[o]) && (e = A.call(i, i.__data__, o, n)) && ("__data__" in i && (e.__data__ = i.__data__), s[o] = e, QI(s[o], g, I, o, s, BI(i, I)));
|
|
1462
|
+
return new mI(C, this._parents, g, I);
|
|
1463
|
+
},
|
|
1464
|
+
selectAll: function(A) {
|
|
1465
|
+
var g = this._name, I = this._id;
|
|
1466
|
+
"function" != typeof A && (A = j(A));
|
|
1467
|
+
for (var Q = this._groups, t = Q.length, C = [], B = [], i = 0; i < t; ++i) for (var e, n = Q[i], E = n.length, s = 0; s < E; ++s) if (e = n[s]) {
|
|
1468
|
+
for (var o, r = A.call(e, e.__data__, s, n), a = BI(e, I), h = 0, c = r.length; h < c; ++h) (o = r[h]) && QI(o, g, I, h, r, a);
|
|
1469
|
+
C.push(r), B.push(e);
|
|
1470
|
+
}
|
|
1471
|
+
return new mI(C, B, g, I);
|
|
1472
|
+
},
|
|
1473
|
+
selectChild: fI.selectChild,
|
|
1474
|
+
selectChildren: fI.selectChildren,
|
|
1475
|
+
filter: function(A) {
|
|
1476
|
+
"function" != typeof A && (A = X(A));
|
|
1477
|
+
for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B = g[t], i = B.length, e = Q[t] = [], n = 0; n < i; ++n) (C = B[n]) && A.call(C, C.__data__, n, B) && e.push(C);
|
|
1478
|
+
return new mI(Q, this._parents, this._name, this._id);
|
|
1479
|
+
},
|
|
1480
|
+
merge: function(A) {
|
|
1481
|
+
if (A._id !== this._id) throw new Error();
|
|
1482
|
+
for (var g = this._groups, I = A._groups, Q = g.length, t = I.length, C = Math.min(Q, t), B = new Array(Q), i = 0; i < C; ++i) for (var e, n = g[i], E = I[i], s = n.length, o = B[i] = new Array(s), r = 0; r < s; ++r) (e = n[r] || E[r]) && (o[r] = e);
|
|
1483
|
+
for (; i < Q; ++i) B[i] = g[i];
|
|
1484
|
+
return new mI(B, this._parents, this._name, this._id);
|
|
1485
|
+
},
|
|
1486
|
+
selection: function() {
|
|
1487
|
+
return new GI(this._groups, this._parents);
|
|
1488
|
+
},
|
|
1489
|
+
transition: function() {
|
|
1490
|
+
for (var A = this._name, g = this._id, I = kI(), Q = this._groups, t = Q.length, C = 0; C < t; ++C) for (var B, i = Q[C], e = i.length, n = 0; n < e; ++n) if (B = i[n]) {
|
|
1491
|
+
var E = BI(B, g);
|
|
1492
|
+
QI(B, A, I, n, i, {
|
|
1493
|
+
time: E.time + E.delay + E.duration,
|
|
1494
|
+
delay: 0,
|
|
1495
|
+
duration: E.duration,
|
|
1496
|
+
ease: E.ease
|
|
1497
|
+
});
|
|
1498
|
+
}
|
|
1499
|
+
return new mI(Q, this._parents, A, I);
|
|
1500
|
+
},
|
|
1501
|
+
call: fI.call,
|
|
1502
|
+
nodes: fI.nodes,
|
|
1503
|
+
node: fI.node,
|
|
1504
|
+
size: fI.size,
|
|
1505
|
+
empty: fI.empty,
|
|
1506
|
+
each: fI.each,
|
|
1507
|
+
on: function(A, g) {
|
|
1508
|
+
var I = this._id;
|
|
1509
|
+
return arguments.length < 2 ? BI(this.node(), I).on.on(A) : this.each(function(A, g, I) {
|
|
1510
|
+
var Q, t, C = function(A) {
|
|
1511
|
+
return (A + "").trim().split(/^|\s+/).every(function(A) {
|
|
1512
|
+
var g = A.indexOf(".");
|
|
1513
|
+
return g >= 0 && (A = A.slice(0, g)), !A || "start" === A;
|
|
1514
|
+
});
|
|
1515
|
+
}(g) ? tI : CI;
|
|
1516
|
+
return function() {
|
|
1517
|
+
var B = C(this, A), i = B.on;
|
|
1518
|
+
i !== Q && (t = (Q = i).copy()).on(g, I), B.on = t;
|
|
1519
|
+
};
|
|
1520
|
+
}(I, A, g));
|
|
1521
|
+
},
|
|
1522
|
+
attr: function(A, g) {
|
|
1523
|
+
var I = p(A), Q = "transform" === I ? Ug : EI;
|
|
1524
|
+
return this.attrTween(A, "function" == typeof g ? (I.local ? cI : hI)(I, Q, nI(this, "attr." + A, g)) : null == g ? (I.local ? oI : sI)(I) : (I.local ? aI : rI)(I, Q, g));
|
|
1525
|
+
},
|
|
1526
|
+
attrTween: function(A, g) {
|
|
1527
|
+
var I = "attr." + A;
|
|
1528
|
+
if (arguments.length < 2) return (I = this.tween(I)) && I._value;
|
|
1529
|
+
if (null == g) return this.tween(I, null);
|
|
1530
|
+
if ("function" != typeof g) throw new Error();
|
|
1531
|
+
var Q = p(A);
|
|
1532
|
+
return this.tween(I, (Q.local ? lI : uI)(Q, g));
|
|
1533
|
+
},
|
|
1534
|
+
style: function(A, g, I) {
|
|
1535
|
+
var Q = "transform" == (A += "") ? Zg : EI;
|
|
1536
|
+
return null == g ? this.styleTween(A, function(A, g) {
|
|
1537
|
+
var I, Q, t;
|
|
1538
|
+
return function() {
|
|
1539
|
+
var C = nA(this, A), B = (this.style.removeProperty(A), nA(this, A));
|
|
1540
|
+
return C === B ? null : C === I && B === Q ? t : t = g(I = C, Q = B);
|
|
1541
|
+
};
|
|
1542
|
+
}(A, Q)).on("end.style." + A, dI(A)) : "function" == typeof g ? this.styleTween(A, function(A, g, I) {
|
|
1543
|
+
var Q, t, C;
|
|
1544
|
+
return function() {
|
|
1545
|
+
var B = nA(this, A), i = I(this), e = i + "";
|
|
1546
|
+
return null == i && (this.style.removeProperty(A), e = i = nA(this, A)), B === e ? null : B === Q && e === t ? C : (t = e, C = g(Q = B, i));
|
|
1547
|
+
};
|
|
1548
|
+
}(A, Q, nI(this, "style." + A, g))).each(function(A, g) {
|
|
1549
|
+
var I, Q, t, C, B = "style." + g, i = "end." + B;
|
|
1550
|
+
return function() {
|
|
1551
|
+
var e = CI(this, A), n = e.on, E = null == e.value[B] ? C || (C = dI(g)) : void 0;
|
|
1552
|
+
n === I && t === E || (Q = (I = n).copy()).on(i, t = E), e.on = Q;
|
|
1553
|
+
};
|
|
1554
|
+
}(this._id, A)) : this.styleTween(A, function(A, g, I) {
|
|
1555
|
+
var Q, t, C = I + "";
|
|
1556
|
+
return function() {
|
|
1557
|
+
var B = nA(this, A);
|
|
1558
|
+
return B === C ? null : B === Q ? t : t = g(Q = B, I);
|
|
1559
|
+
};
|
|
1560
|
+
}(A, Q, g), I).on("end.style." + A, null);
|
|
1561
|
+
},
|
|
1562
|
+
styleTween: function(A, g, I) {
|
|
1563
|
+
var Q = "style." + (A += "");
|
|
1564
|
+
if (arguments.length < 2) return (Q = this.tween(Q)) && Q._value;
|
|
1565
|
+
if (null == g) return this.tween(Q, null);
|
|
1566
|
+
if ("function" != typeof g) throw new Error();
|
|
1567
|
+
return this.tween(Q, function(A, g, I) {
|
|
1568
|
+
var Q, t;
|
|
1569
|
+
function C() {
|
|
1570
|
+
var C = g.apply(this, arguments);
|
|
1571
|
+
return C !== t && (Q = (t = C) && function(A, g, I) {
|
|
1572
|
+
return function(Q) {
|
|
1573
|
+
this.style.setProperty(A, g.call(this, Q), I);
|
|
1574
|
+
};
|
|
1575
|
+
}(A, C, I)), Q;
|
|
1576
|
+
}
|
|
1577
|
+
return C._value = g, C;
|
|
1578
|
+
}(A, g, null == I ? "" : I));
|
|
1579
|
+
},
|
|
1580
|
+
text: function(A) {
|
|
1581
|
+
return this.tween("text", "function" == typeof A ? function(A) {
|
|
1582
|
+
return function() {
|
|
1583
|
+
var g = A(this);
|
|
1584
|
+
this.textContent = null == g ? "" : g;
|
|
1585
|
+
};
|
|
1586
|
+
}(nI(this, "text", A)) : function(A) {
|
|
1587
|
+
return function() {
|
|
1588
|
+
this.textContent = A;
|
|
1589
|
+
};
|
|
1590
|
+
}(null == A ? "" : A + ""));
|
|
1591
|
+
},
|
|
1592
|
+
textTween: function(A) {
|
|
1593
|
+
var g = "text";
|
|
1594
|
+
if (arguments.length < 1) return (g = this.tween(g)) && g._value;
|
|
1595
|
+
if (null == A) return this.tween(g, null);
|
|
1596
|
+
if ("function" != typeof A) throw new Error();
|
|
1597
|
+
return this.tween(g, function(A) {
|
|
1598
|
+
var g, I;
|
|
1599
|
+
function Q() {
|
|
1600
|
+
var Q = A.apply(this, arguments);
|
|
1601
|
+
return Q !== I && (g = (I = Q) && function(A) {
|
|
1602
|
+
return function(g) {
|
|
1603
|
+
this.textContent = A.call(this, g);
|
|
1604
|
+
};
|
|
1605
|
+
}(Q)), g;
|
|
1606
|
+
}
|
|
1607
|
+
return Q._value = A, Q;
|
|
1608
|
+
}(A));
|
|
1609
|
+
},
|
|
1610
|
+
remove: function() {
|
|
1611
|
+
return this.on("end.remove", function(A) {
|
|
1612
|
+
return function() {
|
|
1613
|
+
var g = this.parentNode;
|
|
1614
|
+
for (var I in this.__transition) if (+I !== A) return;
|
|
1615
|
+
g && g.removeChild(this);
|
|
1616
|
+
};
|
|
1617
|
+
}(this._id));
|
|
1618
|
+
},
|
|
1619
|
+
tween: function(A, g) {
|
|
1620
|
+
var I = this._id;
|
|
1621
|
+
if (A += "", arguments.length < 2) {
|
|
1622
|
+
for (var Q, t = BI(this.node(), I).tween, C = 0, B = t.length; C < B; ++C) if ((Q = t[C]).name === A) return Q.value;
|
|
1623
|
+
return null;
|
|
1624
|
+
}
|
|
1625
|
+
return this.each((null == g ? iI : eI)(I, A, g));
|
|
1626
|
+
},
|
|
1627
|
+
delay: function(A) {
|
|
1628
|
+
var g = this._id;
|
|
1629
|
+
return arguments.length ? this.each(("function" == typeof A ? DI : NI)(g, A)) : BI(this.node(), g).delay;
|
|
1630
|
+
},
|
|
1631
|
+
duration: function(A) {
|
|
1632
|
+
var g = this._id;
|
|
1633
|
+
return arguments.length ? this.each(("function" == typeof A ? yI : wI)(g, A)) : BI(this.node(), g).duration;
|
|
1634
|
+
},
|
|
1635
|
+
ease: function(A) {
|
|
1636
|
+
var g = this._id;
|
|
1637
|
+
return arguments.length ? this.each(function(A, g) {
|
|
1638
|
+
if ("function" != typeof g) throw new Error();
|
|
1639
|
+
return function() {
|
|
1640
|
+
CI(this, A).ease = g;
|
|
1641
|
+
};
|
|
1642
|
+
}(g, A)) : BI(this.node(), g).ease;
|
|
1643
|
+
},
|
|
1644
|
+
easeVarying: function(A) {
|
|
1645
|
+
if ("function" != typeof A) throw new Error();
|
|
1646
|
+
return this.each(function(A, g) {
|
|
1647
|
+
return function() {
|
|
1648
|
+
var I = g.apply(this, arguments);
|
|
1649
|
+
if ("function" != typeof I) throw new Error();
|
|
1650
|
+
CI(this, A).ease = I;
|
|
1651
|
+
};
|
|
1652
|
+
}(this._id, A));
|
|
1653
|
+
},
|
|
1654
|
+
end: function() {
|
|
1655
|
+
var A, g, I = this, Q = I._id, t = I.size();
|
|
1656
|
+
return new Promise(function(C, B) {
|
|
1657
|
+
var i = { value: B }, e = { value: function() {
|
|
1658
|
+
0 === --t && C();
|
|
1659
|
+
} };
|
|
1660
|
+
I.each(function() {
|
|
1661
|
+
var I = CI(this, Q), t = I.on;
|
|
1662
|
+
t !== A && ((g = (A = t).copy())._.cancel.push(i), g._.interrupt.push(i), g._.end.push(e)), I.on = g;
|
|
1663
|
+
}), 0 === t && C();
|
|
1664
|
+
});
|
|
1665
|
+
},
|
|
1666
|
+
[Symbol.iterator]: fI[Symbol.iterator]
|
|
1667
|
+
};
|
|
1668
|
+
var MI = {
|
|
1669
|
+
time: null,
|
|
1670
|
+
delay: 0,
|
|
1671
|
+
duration: 250,
|
|
1672
|
+
ease: function(A) {
|
|
1673
|
+
return ((A *= 2) <= 1 ? A * A * A : (A -= 2) * A * A + 2) / 2;
|
|
1674
|
+
}
|
|
1675
|
+
};
|
|
1676
|
+
function FI(A, g) {
|
|
1677
|
+
for (var I; !(I = A.__transition) || !(I = I[g]);) if (!(A = A.parentNode)) throw new Error(`transition ${g} not found`);
|
|
1678
|
+
return I;
|
|
1679
|
+
}
|
|
1680
|
+
XA.prototype.interrupt = function(A) {
|
|
1681
|
+
return this.each(function() {
|
|
1682
|
+
(function(A, g) {
|
|
1683
|
+
var I, Q, t, C = A.__transition, B = !0;
|
|
1684
|
+
if (C) {
|
|
1685
|
+
for (t in g = null == g ? null : g + "", C) (I = C[t]).name === g ? (Q = I.state > 2 && I.state < 5, I.state = 6, I.timer.stop(), I.on.call(Q ? "interrupt" : "cancel", A, A.__data__, I.index, I.group), delete C[t]) : B = !1;
|
|
1686
|
+
B && delete A.__transition;
|
|
1687
|
+
}
|
|
1688
|
+
})(this, A);
|
|
1689
|
+
});
|
|
1690
|
+
}, XA.prototype.transition = function(A) {
|
|
1691
|
+
var g, I;
|
|
1692
|
+
A instanceof mI ? (g = A._id, A = A._name) : (g = kI(), (I = MI).time = Og(), A = null == A ? null : A + "");
|
|
1693
|
+
for (var Q = this._groups, t = Q.length, C = 0; C < t; ++C) for (var B, i = Q[C], e = i.length, n = 0; n < e; ++n) (B = i[n]) && QI(B, A, g, n, i, I || FI(B, g));
|
|
1694
|
+
return new mI(Q, this._parents, A, g);
|
|
1695
|
+
};
|
|
1696
|
+
const { abs: JI, max: pI, min: RI } = Math;
|
|
1697
|
+
function xI(A) {
|
|
1698
|
+
return { type: A };
|
|
1699
|
+
}
|
|
1700
|
+
function bI(A, g, I) {
|
|
1701
|
+
this.k = A, this.x = g, this.y = I;
|
|
1702
|
+
}
|
|
1703
|
+
["w", "e"].map(xI), ["n", "s"].map(xI), [
|
|
1704
|
+
"n",
|
|
1705
|
+
"w",
|
|
1706
|
+
"e",
|
|
1707
|
+
"s",
|
|
1708
|
+
"nw",
|
|
1709
|
+
"ne",
|
|
1710
|
+
"sw",
|
|
1711
|
+
"se"
|
|
1712
|
+
].map(xI), bI.prototype = {
|
|
1713
|
+
constructor: bI,
|
|
1714
|
+
scale: function(A) {
|
|
1715
|
+
return 1 === A ? this : new bI(this.k * A, this.x, this.y);
|
|
1716
|
+
},
|
|
1717
|
+
translate: function(A, g) {
|
|
1718
|
+
return 0 === A & 0 === g ? this : new bI(this.k, this.x + this.k * A, this.y + this.k * g);
|
|
1719
|
+
},
|
|
1720
|
+
apply: function(A) {
|
|
1721
|
+
return [A[0] * this.k + this.x, A[1] * this.k + this.y];
|
|
1722
|
+
},
|
|
1723
|
+
applyX: function(A) {
|
|
1724
|
+
return A * this.k + this.x;
|
|
1725
|
+
},
|
|
1726
|
+
applyY: function(A) {
|
|
1727
|
+
return A * this.k + this.y;
|
|
1728
|
+
},
|
|
1729
|
+
invert: function(A) {
|
|
1730
|
+
return [(A[0] - this.x) / this.k, (A[1] - this.y) / this.k];
|
|
1731
|
+
},
|
|
1732
|
+
invertX: function(A) {
|
|
1733
|
+
return (A - this.x) / this.k;
|
|
1734
|
+
},
|
|
1735
|
+
invertY: function(A) {
|
|
1736
|
+
return (A - this.y) / this.k;
|
|
1737
|
+
},
|
|
1738
|
+
rescaleX: function(A) {
|
|
1739
|
+
return A.copy().domain(A.range().map(this.invertX, this).map(A.invert, A));
|
|
1740
|
+
},
|
|
1741
|
+
rescaleY: function(A) {
|
|
1742
|
+
return A.copy().domain(A.range().map(this.invertY, this).map(A.invert, A));
|
|
1743
|
+
},
|
|
1744
|
+
toString: function() {
|
|
1745
|
+
return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
|
|
1746
|
+
}
|
|
1747
|
+
}, new bI(1, 0, 0), bI.prototype;
|
|
1748
|
+
const SI = function(A) {
|
|
1749
|
+
let g, I, Q;
|
|
1750
|
+
function t(A, Q, t = 0, C = A.length) {
|
|
1751
|
+
if (t < C) {
|
|
1752
|
+
if (0 !== g(Q, Q)) return C;
|
|
1753
|
+
do {
|
|
1754
|
+
const g = t + C >>> 1;
|
|
1755
|
+
I(A[g], Q) < 0 ? t = g + 1 : C = g;
|
|
1756
|
+
} while (t < C);
|
|
1757
|
+
}
|
|
1758
|
+
return t;
|
|
1759
|
+
}
|
|
1760
|
+
return 2 !== A.length ? (g = G, I = (g, I) => G(A(g), I), Q = (g, I) => A(g) - I) : (g = A === G || A === d ? A : Y, I = A, Q = A), {
|
|
1761
|
+
left: t,
|
|
1762
|
+
center: function(A, g, I = 0, C = A.length) {
|
|
1763
|
+
const B = t(A, g, I, C - 1);
|
|
1764
|
+
return B > I && Q(A[B - 1], g) > -Q(A[B], g) ? B - 1 : B;
|
|
1765
|
+
},
|
|
1766
|
+
right: function(A, Q, t = 0, C = A.length) {
|
|
1767
|
+
if (t < C) {
|
|
1768
|
+
if (0 !== g(Q, Q)) return C;
|
|
1769
|
+
do {
|
|
1770
|
+
const g = t + C >>> 1;
|
|
1771
|
+
I(A[g], Q) <= 0 ? t = g + 1 : C = g;
|
|
1772
|
+
} while (t < C);
|
|
1773
|
+
}
|
|
1774
|
+
return t;
|
|
1775
|
+
}
|
|
1776
|
+
};
|
|
1777
|
+
}((A) => A.x);
|
|
1778
|
+
function ZI(A, g) {
|
|
1779
|
+
let I = Number.POSITIVE_INFINITY, Q = Number.NEGATIVE_INFINITY, t = Number.POSITIVE_INFINITY, C = Number.NEGATIVE_INFINITY;
|
|
1780
|
+
for (const B of A) I = Math.min(I, B.x), Q = Math.max(Q, B.x), t = Math.min(t, B.y), C = Math.max(C, B.y);
|
|
1781
|
+
return {
|
|
1782
|
+
inputPointCount: g,
|
|
1783
|
+
validPointCount: A.length,
|
|
1784
|
+
xDomain: A.length ? [I, Q] : null,
|
|
1785
|
+
yDomain: A.length ? [t, C] : null
|
|
1786
|
+
};
|
|
1787
|
+
}
|
|
1788
|
+
function UI(A, g, I = A.length) {
|
|
1789
|
+
let Q = Number.POSITIVE_INFINITY, t = Number.NEGATIVE_INFINITY, C = Number.POSITIVE_INFINITY, B = Number.NEGATIVE_INFINITY;
|
|
1790
|
+
for (let i = 0; i < A.length; i += 1) Q = Math.min(Q, A[i]), t = Math.max(t, A[i]), C = Math.min(C, g[i]), B = Math.max(B, g[i]);
|
|
1791
|
+
return {
|
|
1792
|
+
inputPointCount: I,
|
|
1793
|
+
validPointCount: A.length,
|
|
1794
|
+
xDomain: A.length ? [Q, t] : null,
|
|
1795
|
+
yDomain: A.length ? [C, B] : null
|
|
1796
|
+
};
|
|
1797
|
+
}
|
|
1798
|
+
function jI(A, g) {
|
|
1799
|
+
return A ? A.revision === g ? "ok" : "stale-revision" : "not-found";
|
|
1800
|
+
}
|
|
1801
|
+
function XI(A) {
|
|
1802
|
+
return "auto" === A ? "peak" : A;
|
|
1803
|
+
}
|
|
1804
|
+
function HI(A, g) {
|
|
1805
|
+
const I = A[0], Q = A.at(-1);
|
|
1806
|
+
return Number.isFinite(g) && I && Q && g >= I.x && g <= Q.x ? A[SI.center(A, g)] : void 0;
|
|
1807
|
+
}
|
|
1808
|
+
function LI(A) {
|
|
1809
|
+
return A?.y.length ?? 0;
|
|
1810
|
+
}
|
|
1811
|
+
function vI(A, g) {
|
|
1812
|
+
return A.x ? A.x[g] : A.sampleStartTime + (A.sampleSourceIndexes?.[g] ?? g) / A.sampleRate;
|
|
1813
|
+
}
|
|
1814
|
+
function WI(A, g) {
|
|
1815
|
+
const I = (g, I) => {
|
|
1816
|
+
let Q = 0, t = LI(A);
|
|
1817
|
+
for (; Q < t;) {
|
|
1818
|
+
const C = Q + Math.floor((t - Q) / 2);
|
|
1819
|
+
(I ? vI(A, C) <= g : vI(A, C) < g) ? Q = C + 1 : t = C;
|
|
1820
|
+
}
|
|
1821
|
+
return Q;
|
|
1822
|
+
}, Q = Math.min(g[0], g[1]), t = Math.max(g[0], g[1]);
|
|
1823
|
+
return {
|
|
1824
|
+
start: I(Q, !1),
|
|
1825
|
+
end: I(t, !0)
|
|
1826
|
+
};
|
|
1827
|
+
}
|
|
1828
|
+
function KI(A, g, I) {
|
|
1829
|
+
return A.x ? A.x.subarray(g, I) : Float64Array.from({ length: I - g }, (I, Q) => vI(A, g + Q));
|
|
1830
|
+
}
|
|
1831
|
+
function TI(A) {
|
|
1832
|
+
return "wasm" === A?.kind && "registerDataset" in A && "disposeDataset" in A && "disposeAllDatasets" in A && "datasetIndexBytes" in A && "registerSamples" in A && "sampleDataset" in A;
|
|
1833
|
+
}
|
|
1834
|
+
function OI(A, g, I, Q) {
|
|
1835
|
+
if ("typed" === g?.kind) {
|
|
1836
|
+
const A = function(A, g) {
|
|
1837
|
+
const I = Math.min(A.length, g.length);
|
|
1838
|
+
let Q = A.length === g.length;
|
|
1839
|
+
for (let C = 0; C < I && Q; C += 1) Q = Number.isFinite(A[C]) && Number.isFinite(g[C]) && (0 === C || A[C] >= A[C - 1]);
|
|
1840
|
+
if (Q) return {
|
|
1841
|
+
x: A.slice(),
|
|
1842
|
+
y: Float64Array.from(g)
|
|
1843
|
+
};
|
|
1844
|
+
const t = [];
|
|
1845
|
+
for (let C = 0; C < I; C += 1) Number.isFinite(A[C]) && Number.isFinite(g[C]) && t.push(C);
|
|
1846
|
+
return t.sort((g, I) => A[g] - A[I] || g - I), {
|
|
1847
|
+
x: Float64Array.from(t, (g) => A[g]),
|
|
1848
|
+
y: Float64Array.from(t, (A) => g[A])
|
|
1849
|
+
};
|
|
1850
|
+
}(g.x, g.y);
|
|
1851
|
+
return {
|
|
1852
|
+
x: A.x,
|
|
1853
|
+
y: A.y,
|
|
1854
|
+
revision: I,
|
|
1855
|
+
metrics: UI(A.x, A.y, Math.max(g.x.length, g.y.length))
|
|
1856
|
+
};
|
|
1857
|
+
}
|
|
1858
|
+
if ("samples" === g?.kind) {
|
|
1859
|
+
if (!(Number.isFinite(g.sampleRate) && g.sampleRate > 0 && Number.isFinite(g.startTime)) || g.sourceIndexes && g.sourceIndexes.length !== g.values.length) return {
|
|
1860
|
+
y: /* @__PURE__ */ new Float64Array(),
|
|
1861
|
+
sampleStartTime: 0,
|
|
1862
|
+
sampleRate: 1,
|
|
1863
|
+
revision: I,
|
|
1864
|
+
metrics: {
|
|
1865
|
+
inputPointCount: g.values.length,
|
|
1866
|
+
validPointCount: 0,
|
|
1867
|
+
xDomain: null,
|
|
1868
|
+
yDomain: null
|
|
1869
|
+
}
|
|
1870
|
+
};
|
|
1871
|
+
if (!g.sourceIndexes && g.values.every(Number.isFinite)) {
|
|
1872
|
+
const A = Float64Array.from(g.values);
|
|
1873
|
+
let Q = Infinity, t = -Infinity;
|
|
1874
|
+
for (const g of A) Q = Math.min(Q, g), t = Math.max(t, g);
|
|
1875
|
+
return {
|
|
1876
|
+
y: A,
|
|
1877
|
+
sampleStartTime: g.startTime,
|
|
1878
|
+
sampleRate: g.sampleRate,
|
|
1879
|
+
revision: I,
|
|
1880
|
+
metrics: {
|
|
1881
|
+
inputPointCount: A.length,
|
|
1882
|
+
validPointCount: A.length,
|
|
1883
|
+
xDomain: A.length ? [g.startTime, g.startTime + (A.length - 1) / g.sampleRate] : null,
|
|
1884
|
+
yDomain: A.length ? [Q, t] : null
|
|
1885
|
+
}
|
|
1886
|
+
};
|
|
1887
|
+
}
|
|
1888
|
+
const A = Array.from({ length: g.values.length }, (A, g) => g).filter((A) => Number.isFinite(g.values[A])), Q = (A) => g.sourceIndexes?.[A] ?? A;
|
|
1889
|
+
A.sort((A, g) => Q(A) - Q(g) || A - g);
|
|
1890
|
+
const t = Float64Array.from(A, (A) => g.values[A]), C = Uint32Array.from(A, Q), B = (A) => g.startTime + C[A] / g.sampleRate;
|
|
1891
|
+
let i = Number.POSITIVE_INFINITY, e = Number.NEGATIVE_INFINITY;
|
|
1892
|
+
for (const g of t) i = Math.min(i, g), e = Math.max(e, g);
|
|
1893
|
+
return {
|
|
1894
|
+
y: t,
|
|
1895
|
+
sampleStartTime: g.startTime,
|
|
1896
|
+
sampleRate: g.sampleRate,
|
|
1897
|
+
sampleSourceIndexes: C.length === g.values.length && C.every((A, g) => A === g) ? void 0 : C,
|
|
1898
|
+
revision: I,
|
|
1899
|
+
metrics: {
|
|
1900
|
+
inputPointCount: g.values.length,
|
|
1901
|
+
validPointCount: t.length,
|
|
1902
|
+
xDomain: t.length ? [B(0), B(t.length - 1)] : null,
|
|
1903
|
+
yDomain: t.length ? [i, e] : null
|
|
1904
|
+
}
|
|
1905
|
+
};
|
|
1906
|
+
}
|
|
1907
|
+
const t = function(A) {
|
|
1908
|
+
const g = [];
|
|
1909
|
+
let I = !0, Q = Number.NEGATIVE_INFINITY;
|
|
1910
|
+
for (const t of A) Number.isFinite(t.x) && Number.isFinite(t.y) && (t.x < Q && (I = !1), Q = t.x, g.push({
|
|
1911
|
+
x: t.x,
|
|
1912
|
+
y: t.y,
|
|
1913
|
+
...Number.isFinite(t.error) ? { error: t.error } : {},
|
|
1914
|
+
...Number.isFinite(t.lowerError) ? { lowerError: t.lowerError } : {},
|
|
1915
|
+
...Number.isFinite(t.upperError) ? { upperError: t.upperError } : {}
|
|
1916
|
+
}));
|
|
1917
|
+
return I || g.sort((A, g) => A.x - g.x), g;
|
|
1918
|
+
}(A ?? g?.points ?? []);
|
|
1919
|
+
return {
|
|
1920
|
+
x: Float64Array.from(t, (A) => A.x),
|
|
1921
|
+
y: Float64Array.from(t, (A) => A.y),
|
|
1922
|
+
points: t,
|
|
1923
|
+
revision: I,
|
|
1924
|
+
metrics: ZI(t, A?.length ?? g?.points.length ?? 0),
|
|
1925
|
+
index: new w(t, { maxBytes: Q })
|
|
1926
|
+
};
|
|
1927
|
+
}
|
|
1928
|
+
function VI(A, g, I) {
|
|
1929
|
+
TI(A) && void 0 === g.wasmDatasetHandle && (g.wasmDatasetHandle = g.x ? A.registerDataset(g.x, g.y, I) : A.registerSamples(g.y, g.sampleSourceIndexes, g.sampleStartTime, g.sampleRate, I), g.wasmIndexBytes = A.datasetIndexBytes(g.wasmDatasetHandle));
|
|
1930
|
+
}
|
|
1931
|
+
function qI(A, g) {
|
|
1932
|
+
g.index?.dispose(), void 0 !== g.wasmDatasetHandle && TI(A) && A.disposeDataset(g.wasmDatasetHandle);
|
|
1933
|
+
}
|
|
1934
|
+
function zI(A, g, I) {
|
|
1935
|
+
const Q = LI(I);
|
|
1936
|
+
if (g.start === g.end && (0 === g.start || g.end === Q)) return A;
|
|
1937
|
+
const t = g.start > 0 ? [g.start - 1] : [], C = g.end < Q ? [g.end] : [];
|
|
1938
|
+
if ("source-indexes" === A.kind) {
|
|
1939
|
+
const g = Array.from(A.sourceIndexes);
|
|
1940
|
+
return {
|
|
1941
|
+
kind: "source-indexes",
|
|
1942
|
+
sourceIndexes: Uint32Array.from([
|
|
1943
|
+
...t,
|
|
1944
|
+
...g,
|
|
1945
|
+
...C
|
|
1946
|
+
])
|
|
1947
|
+
};
|
|
1948
|
+
}
|
|
1949
|
+
const B = Array.from(A.x), i = Array.from(A.y);
|
|
1950
|
+
return t.length && (B.unshift(vI(I, t[0])), i.unshift(I.y[t[0]])), C.length && (B.push(vI(I, C[0])), i.push(I.y[C[0]])), {
|
|
1951
|
+
kind: "aggregates",
|
|
1952
|
+
x: Float64Array.from(B),
|
|
1953
|
+
y: Float64Array.from(i)
|
|
1954
|
+
};
|
|
1955
|
+
}
|
|
1956
|
+
function _I(A, g) {
|
|
1957
|
+
return 0 === g ? 0 : Number.isFinite(A) ? Math.min(g, Math.max(1, Math.floor(A))) : g;
|
|
1958
|
+
}
|
|
1959
|
+
function PI(A, g, I, Q) {
|
|
1960
|
+
const t = Q - I;
|
|
1961
|
+
return {
|
|
1962
|
+
start: I + Math.floor(A * t / g),
|
|
1963
|
+
end: I + Math.floor((A + 1) * t / g)
|
|
1964
|
+
};
|
|
1965
|
+
}
|
|
1966
|
+
function $I(A, g) {
|
|
1967
|
+
A[A.length - 1] !== g && A.push(g);
|
|
1968
|
+
}
|
|
1969
|
+
function AQ(A, g, I) {
|
|
1970
|
+
if (A <= g) return Array.from({ length: A }, (A, g) => g);
|
|
1971
|
+
if (1 === g) return [0];
|
|
1972
|
+
if (2 === g) return [0, A - 1];
|
|
1973
|
+
const Q = [0];
|
|
1974
|
+
return I().forEach((A) => $I(Q, A)), $I(Q, A - 1), Q;
|
|
1975
|
+
}
|
|
1976
|
+
const gQ = {
|
|
1977
|
+
kind: "javascript",
|
|
1978
|
+
sample: (A) => function(A, g, I, Q) {
|
|
1979
|
+
if (A.length !== g.length) throw new Error("x and y must have the same length");
|
|
1980
|
+
if ("average" === I || "sum" === I) return function(A, g, I, Q) {
|
|
1981
|
+
const t = _I(I, A.length), C = new Float64Array(t), B = new Float64Array(t);
|
|
1982
|
+
for (let i = 0; i < t; i += 1) {
|
|
1983
|
+
const I = PI(i, t, 0, A.length);
|
|
1984
|
+
for (let Q = I.start; Q < I.end; Q += 1) C[i] += A[Q], B[i] += g[Q];
|
|
1985
|
+
const e = I.end - I.start;
|
|
1986
|
+
C[i] /= e, "average" === Q && (B[i] /= e);
|
|
1987
|
+
}
|
|
1988
|
+
return {
|
|
1989
|
+
kind: "aggregates",
|
|
1990
|
+
x: C,
|
|
1991
|
+
y: B
|
|
1992
|
+
};
|
|
1993
|
+
}(A, g, Q, I);
|
|
1994
|
+
const t = _I(Q, A.length), C = "none" === I || A.length <= t ? Array.from({ length: A.length }, (A, g) => g) : "peak" === I ? function(A, g) {
|
|
1995
|
+
const I = Math.floor((g - 2) / 4);
|
|
1996
|
+
return AQ(A.length, g, () => {
|
|
1997
|
+
if (!I) return [];
|
|
1998
|
+
const g = [];
|
|
1999
|
+
for (let Q = 0; Q < I; Q += 1) {
|
|
2000
|
+
const t = PI(Q, I, 1, A.length - 1);
|
|
2001
|
+
let C = t.start, B = t.start;
|
|
2002
|
+
for (let g = t.start + 1; g < t.end; g += 1) A[g] < A[C] && (C = g), A[g] > A[B] && (B = g);
|
|
2003
|
+
[
|
|
2004
|
+
t.start,
|
|
2005
|
+
C,
|
|
2006
|
+
B,
|
|
2007
|
+
t.end - 1
|
|
2008
|
+
].sort((A, g) => A - g).forEach((A) => $I(g, A));
|
|
2009
|
+
}
|
|
2010
|
+
return g;
|
|
2011
|
+
});
|
|
2012
|
+
}(g, t) : "lttb" === I ? function(A, g, I) {
|
|
2013
|
+
return AQ(A.length, I, () => {
|
|
2014
|
+
const Q = (A.length - 2) / (I - 2), t = [];
|
|
2015
|
+
let C = 0;
|
|
2016
|
+
for (let B = 0; B < I - 2; B += 1) {
|
|
2017
|
+
const i = Math.min(A.length, Math.floor((B + 1) * Q) + 1), e = Math.min(A.length, Math.floor((B + 2) * Q) + 1);
|
|
2018
|
+
let n = 0, E = 0;
|
|
2019
|
+
for (let I = i; I < e; I += 1) n += A[I], E += g[I];
|
|
2020
|
+
const s = e - i;
|
|
2021
|
+
s ? (n /= s, E /= s) : (n = A[A.length - 1], E = g[g.length - 1]);
|
|
2022
|
+
const o = PI(B, I - 2, 1, A.length - 1);
|
|
2023
|
+
let r = o.start, a = -1;
|
|
2024
|
+
for (let I = o.start; I < o.end; I += 1) {
|
|
2025
|
+
const Q = Math.abs((A[C] - n) * (g[I] - g[C]) - (A[C] - A[I]) * (E - g[C]));
|
|
2026
|
+
Q > a && (a = Q, r = I);
|
|
2027
|
+
}
|
|
2028
|
+
t.push(r), C = r;
|
|
2029
|
+
}
|
|
2030
|
+
return t;
|
|
2031
|
+
});
|
|
2032
|
+
}(A, g, t) : function(A, g, I) {
|
|
2033
|
+
const Q = "minmax" === I ? Math.floor((g - 2) / 2) : Math.max(0, g - 2);
|
|
2034
|
+
return AQ(A.length, g, () => {
|
|
2035
|
+
if (!Q) return [];
|
|
2036
|
+
const g = [];
|
|
2037
|
+
for (let t = 0; t < Q; t += 1) {
|
|
2038
|
+
const C = PI(t, Q, 1, A.length - 1);
|
|
2039
|
+
let B = C.start, i = C.start;
|
|
2040
|
+
for (let g = C.start + 1; g < C.end; g += 1) A[g] < A[B] && (B = g), A[g] > A[i] && (i = g);
|
|
2041
|
+
"min" === I ? $I(g, B) : "max" === I ? $I(g, i) : B <= i ? ($I(g, B), $I(g, i)) : ($I(g, i), $I(g, B));
|
|
2042
|
+
}
|
|
2043
|
+
return g;
|
|
2044
|
+
});
|
|
2045
|
+
}(g, t, I);
|
|
2046
|
+
return {
|
|
2047
|
+
kind: "source-indexes",
|
|
2048
|
+
sourceIndexes: Uint32Array.from(C)
|
|
2049
|
+
};
|
|
2050
|
+
}(A.x, A.y, A.strategy, A.targetPointCount)
|
|
2051
|
+
};
|
|
2052
|
+
var IQ = class {
|
|
2053
|
+
entries = /* @__PURE__ */ new Map();
|
|
2054
|
+
bytes = 0;
|
|
2055
|
+
maxEntries;
|
|
2056
|
+
maxBytes;
|
|
2057
|
+
constructor(A = {}) {
|
|
2058
|
+
this.maxEntries = Number.isFinite(A.maxEntries) ? Math.max(0, Math.floor(A.maxEntries ?? 0)) : 96, this.maxBytes = Number.isFinite(A.maxBytes) ? Math.max(0, Math.floor(A.maxBytes ?? 0)) : 16777216;
|
|
2059
|
+
}
|
|
2060
|
+
get metrics() {
|
|
2061
|
+
return {
|
|
2062
|
+
entries: this.entries.size,
|
|
2063
|
+
bytes: this.bytes,
|
|
2064
|
+
maxEntries: this.maxEntries,
|
|
2065
|
+
maxBytes: this.maxBytes
|
|
2066
|
+
};
|
|
2067
|
+
}
|
|
2068
|
+
get(A) {
|
|
2069
|
+
const g = this.entries.get(A);
|
|
2070
|
+
if (g) return this.entries.delete(A), this.entries.set(A, g), g.output;
|
|
2071
|
+
}
|
|
2072
|
+
set(A, g) {
|
|
2073
|
+
const I = function(A) {
|
|
2074
|
+
return "source-indexes" === A.kind ? A.sourceIndexes.byteLength : A.x.byteLength + A.y.byteLength;
|
|
2075
|
+
}(g);
|
|
2076
|
+
if (I > this.maxBytes || 0 === this.maxEntries) return;
|
|
2077
|
+
const Q = this.entries.get(A);
|
|
2078
|
+
for (Q && (this.bytes -= Q.bytes, this.entries.delete(A)), this.entries.set(A, {
|
|
2079
|
+
output: g,
|
|
2080
|
+
bytes: I
|
|
2081
|
+
}), this.bytes += I; this.entries.size > this.maxEntries || this.bytes > this.maxBytes;) {
|
|
2082
|
+
const A = this.entries.entries().next().value;
|
|
2083
|
+
if (!A) break;
|
|
2084
|
+
const [g, I] = A;
|
|
2085
|
+
this.entries.delete(g), this.bytes -= I.bytes;
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
deleteDataset(A) {
|
|
2089
|
+
const g = `${A}\0`;
|
|
2090
|
+
for (const [I, Q] of this.entries) I.startsWith(g) && (this.entries.delete(I), this.bytes -= Q.bytes);
|
|
2091
|
+
}
|
|
2092
|
+
clear() {
|
|
2093
|
+
this.entries.clear(), this.bytes = 0;
|
|
2094
|
+
}
|
|
2095
|
+
};
|
|
2096
|
+
const QQ = new class {
|
|
2097
|
+
datasets = /* @__PURE__ */ new Map();
|
|
2098
|
+
javascriptBackend;
|
|
2099
|
+
cache;
|
|
2100
|
+
indexMaxBytes;
|
|
2101
|
+
wasmBackend;
|
|
2102
|
+
constructor(A = {}) {
|
|
2103
|
+
this.javascriptBackend = A.javascriptBackend ?? gQ, this.wasmBackend = A.wasmBackend, this.indexMaxBytes = A.indexMaxBytes, this.cache = new IQ({
|
|
2104
|
+
maxEntries: A.cacheMaxEntries,
|
|
2105
|
+
maxBytes: A.cacheMaxBytes
|
|
2106
|
+
});
|
|
2107
|
+
}
|
|
2108
|
+
get resourceMetrics() {
|
|
2109
|
+
return {
|
|
2110
|
+
datasetCount: this.datasets.size,
|
|
2111
|
+
indexBytes: [...this.datasets.values()].reduce((A, g) => A + (g.wasmIndexBytes ?? g.index?.byteLength ?? 0), 0),
|
|
2112
|
+
cache: this.cache.metrics
|
|
2113
|
+
};
|
|
2114
|
+
}
|
|
2115
|
+
setWasmBackend(A) {
|
|
2116
|
+
this.wasmBackend && this.wasmBackend !== A && TI(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((A) => {
|
|
2117
|
+
A.wasmDatasetHandle = void 0, A.wasmIndexBytes = void 0;
|
|
2118
|
+
})), this.wasmBackend = A, TI(A) && this.datasets.forEach((g) => VI(A, g, this.indexMaxBytes));
|
|
2119
|
+
}
|
|
2120
|
+
handle(A) {
|
|
2121
|
+
switch (A.type) {
|
|
2122
|
+
case "register-dataset": return this.register(A.datasetId, A.requestId, A.points, A.dataset);
|
|
2123
|
+
case "replace-dataset": return this.replace(A.datasetId, A.requestId, A.revision, A.points, A.dataset);
|
|
2124
|
+
case "sample-viewport": return this.sample(A);
|
|
2125
|
+
case "find-nearest-point": return this.findNearest(A.datasetId, A.requestId, A.revision, A.x);
|
|
2126
|
+
case "get-dataset-metrics": return this.metrics(A.datasetId, A.requestId, A.revision);
|
|
2127
|
+
case "dispose-dataset": return this.dispose(A.datasetId, A.requestId, A.revision);
|
|
2128
|
+
case "dispose-all": return this.disposeAll(A.requestId);
|
|
2129
|
+
}
|
|
2130
|
+
}
|
|
2131
|
+
register(A, g, I, Q) {
|
|
2132
|
+
const t = this.datasets.get(A);
|
|
2133
|
+
if (t) return this.datasetResponse(g, A, t, "stale-revision");
|
|
2134
|
+
const C = OI(I, Q, 1, this.indexMaxBytes);
|
|
2135
|
+
return VI(this.wasmBackend, C, this.indexMaxBytes), this.datasets.set(A, C), this.datasetResponse(g, A, C, "ok");
|
|
2136
|
+
}
|
|
2137
|
+
replace(A, g, I, Q, t) {
|
|
2138
|
+
const C = this.datasets.get(A), B = jI(C, I);
|
|
2139
|
+
if ("ok" !== B || !C) return this.datasetResponse(g, A, C, B);
|
|
2140
|
+
qI(this.wasmBackend, C), this.cache.deleteDataset(A);
|
|
2141
|
+
const i = OI(Q, t, C.revision + 1, this.indexMaxBytes);
|
|
2142
|
+
return VI(this.wasmBackend, i, this.indexMaxBytes), this.datasets.set(A, i), this.datasetResponse(g, A, i, "ok");
|
|
2143
|
+
}
|
|
2144
|
+
sample(A) {
|
|
2145
|
+
return {
|
|
2146
|
+
type: "sample-viewport-response",
|
|
2147
|
+
requestId: A.requestId,
|
|
2148
|
+
results: A.series.map((g) => this.sampleSeries(A.requestId, g))
|
|
2149
|
+
};
|
|
2150
|
+
}
|
|
2151
|
+
sampleSeries(A, g) {
|
|
2152
|
+
const I = performance.now(), Q = this.datasets.get(g.datasetId), t = jI(Q, g.revision);
|
|
2153
|
+
if ("ok" !== t || !Q) return this.sampleResponse(A, g, t, void 0, "unavailable", "sampled", 0, I, !1);
|
|
2154
|
+
const C = WI(Q, g.xDomain), B = C.end - C.start;
|
|
2155
|
+
if (function(A, g) {
|
|
2156
|
+
if ("raw" === A.mode) return !0;
|
|
2157
|
+
if ("auto" !== A.mode) return !1;
|
|
2158
|
+
const I = Number.isFinite(A.autoThreshold) ? Math.max(1, Math.floor(A.autoThreshold ?? 0)) : 1e3;
|
|
2159
|
+
if (!A.previousSelectedMode) return g <= I;
|
|
2160
|
+
const Q = Number.isFinite(A.autoHysteresis) ? Math.max(0, Math.floor(A.autoHysteresis ?? 0)) : 0;
|
|
2161
|
+
return "raw" === A.previousSelectedMode ? g <= I + Q : g <= Math.max(0, I - Q);
|
|
2162
|
+
}(g, B)) return this.sampleResponse(A, g, "ok", zI({
|
|
2163
|
+
kind: "source-indexes",
|
|
2164
|
+
sourceIndexes: Uint32Array.from({ length: B }, (A, g) => C.start + g)
|
|
2165
|
+
}, C, Q), "raw", "raw", B, I, !1);
|
|
2166
|
+
const i = "wasm" === g.mode || "auto" === g.mode && this.wasmBackend ? this.wasmBackend : this.javascriptBackend, e = !i && "javascript" === g.wasmFailureFallback, n = i ?? (e ? this.javascriptBackend : void 0);
|
|
2167
|
+
if (!n) return this.sampleResponse(A, g, "wasm-unavailable", void 0, "unavailable", "sampled", B, I, !1);
|
|
2168
|
+
const E = XI(g.strategy), s = function(A) {
|
|
2169
|
+
if (Number.isFinite(A.maxPointCount) && (A.maxPointCount ?? 0) >= 1) return Math.floor(A.maxPointCount);
|
|
2170
|
+
const g = Number.isFinite(A.plotWidth) ? Math.max(0, A.plotWidth) : 0, I = Number.isFinite(A.maxPointsPerPixel) ? Math.max(0, A.maxPointsPerPixel ?? 0) : 4;
|
|
2171
|
+
return Math.max(1, Math.floor(g * I));
|
|
2172
|
+
}(g), o = function(A, g, I, Q, t) {
|
|
2173
|
+
return [
|
|
2174
|
+
A.datasetId,
|
|
2175
|
+
A.revision,
|
|
2176
|
+
g.start,
|
|
2177
|
+
g.end,
|
|
2178
|
+
A.plotWidth,
|
|
2179
|
+
Q,
|
|
2180
|
+
A.maxPointsPerPixel,
|
|
2181
|
+
A.maxPointCount,
|
|
2182
|
+
A.mode,
|
|
2183
|
+
t,
|
|
2184
|
+
I,
|
|
2185
|
+
A.lineType ?? "linear",
|
|
2186
|
+
A.pointType ?? "none",
|
|
2187
|
+
!0 === A.errorBarVisible ? 1 : 0,
|
|
2188
|
+
A.pointMinSpacing ?? 0,
|
|
2189
|
+
A.errorBarMinSpacing ?? 0
|
|
2190
|
+
].join("\0");
|
|
2191
|
+
}(g, C, E, s, n.kind), r = this.cache.get(o);
|
|
2192
|
+
if (r) return this.sampleResponse(A, g, e ? "wasm-unavailable" : "ok", r, n.kind, "sampled", B, I, !0);
|
|
2193
|
+
const a = zI(("wasm" === n.kind ? void 0 !== Q.wasmDatasetHandle && TI(n) ? n.sampleDataset(Q.wasmDatasetHandle, C.start, C.end, E, s) : void 0 : Q.index?.sample(C.start, C.end, E, s)) ?? function(A, g) {
|
|
2194
|
+
return "aggregates" === A.kind ? A : {
|
|
2195
|
+
kind: "source-indexes",
|
|
2196
|
+
sourceIndexes: Uint32Array.from(A.sourceIndexes, (A) => A + g)
|
|
2197
|
+
};
|
|
2198
|
+
}(n.sample({
|
|
2199
|
+
x: KI(Q, C.start, C.end),
|
|
2200
|
+
y: Q.y.subarray(C.start, C.end),
|
|
2201
|
+
points: Q.points?.slice(C.start, C.end) ?? [],
|
|
2202
|
+
strategy: E,
|
|
2203
|
+
targetPointCount: s
|
|
2204
|
+
}), C.start), C, Q);
|
|
2205
|
+
return this.cache.set(o, a), void 0 !== Q.wasmDatasetHandle && TI(n) && (Q.wasmIndexBytes = n.datasetIndexBytes(Q.wasmDatasetHandle)), this.sampleResponse(A, g, e ? "wasm-unavailable" : "ok", a, n.kind, "sampled", B, I, !1);
|
|
2206
|
+
}
|
|
2207
|
+
sampleResponse(A, g, I, Q, t, C, B, i, e) {
|
|
2208
|
+
const n = function(A, g, I, Q, t, C, B, i) {
|
|
2209
|
+
return {
|
|
2210
|
+
seriesId: A.seriesId,
|
|
2211
|
+
datasetId: A.datasetId,
|
|
2212
|
+
mode: A.mode,
|
|
2213
|
+
selectedMode: t,
|
|
2214
|
+
backend: Q,
|
|
2215
|
+
strategy: XI(A.strategy),
|
|
2216
|
+
sourcePointCount: g,
|
|
2217
|
+
visiblePointCount: I,
|
|
2218
|
+
renderedPointCount: B,
|
|
2219
|
+
durationMs: C,
|
|
2220
|
+
cacheHit: i,
|
|
2221
|
+
requestId: 0,
|
|
2222
|
+
revision: A.revision,
|
|
2223
|
+
rawPointLimitExceeded: "raw" === t && Number.isFinite(A.rawPointLimit) && I > (A.rawPointLimit ?? Number.POSITIVE_INFINITY),
|
|
2224
|
+
scheduledRequestCount: 0,
|
|
2225
|
+
coalescedRequestCount: 0,
|
|
2226
|
+
maxPendingRequestCount: 0
|
|
2227
|
+
};
|
|
2228
|
+
}(g, LI(this.datasets.get(g.datasetId)), B, t, C, performance.now() - i, function(A) {
|
|
2229
|
+
return A ? "source-indexes" === A.kind ? A.sourceIndexes.length : A.x.length : 0;
|
|
2230
|
+
}(Q), e);
|
|
2231
|
+
return n.requestId = A, {
|
|
2232
|
+
seriesId: g.seriesId,
|
|
2233
|
+
datasetId: g.datasetId,
|
|
2234
|
+
revision: g.revision,
|
|
2235
|
+
status: I,
|
|
2236
|
+
output: Q,
|
|
2237
|
+
diagnostics: n
|
|
2238
|
+
};
|
|
2239
|
+
}
|
|
2240
|
+
findNearest(A, g, I, Q) {
|
|
2241
|
+
const t = this.datasets.get(A), C = jI(t, I);
|
|
2242
|
+
return "ok" === C && t ? {
|
|
2243
|
+
type: "find-nearest-point-response",
|
|
2244
|
+
requestId: g,
|
|
2245
|
+
datasetId: A,
|
|
2246
|
+
revision: I,
|
|
2247
|
+
status: C,
|
|
2248
|
+
point: t.points ? HI(t.points, Q) : (() => {
|
|
2249
|
+
const A = WI(t, [Q, Q]);
|
|
2250
|
+
if (!LI(t) || Q < vI(t, 0) || Q > vI(t, LI(t) - 1)) return;
|
|
2251
|
+
const g = Math.min(LI(t) - 1, A.start), I = Math.max(0, g - 1), C = Math.abs(Q - vI(t, I)) < Math.abs(vI(t, g) - Q) ? I : g;
|
|
2252
|
+
return Number.isFinite(Q) && LI(t) ? {
|
|
2253
|
+
x: vI(t, C),
|
|
2254
|
+
y: t.y[C]
|
|
2255
|
+
} : void 0;
|
|
2256
|
+
})()
|
|
2257
|
+
} : {
|
|
2258
|
+
type: "find-nearest-point-response",
|
|
2259
|
+
requestId: g,
|
|
2260
|
+
datasetId: A,
|
|
2261
|
+
revision: I,
|
|
2262
|
+
status: C
|
|
2263
|
+
};
|
|
2264
|
+
}
|
|
2265
|
+
metrics(A, g, I) {
|
|
2266
|
+
const Q = this.datasets.get(A);
|
|
2267
|
+
return this.datasetResponse(g, A, Q, jI(Q, I));
|
|
2268
|
+
}
|
|
2269
|
+
dispose(A, g, I) {
|
|
2270
|
+
const Q = this.datasets.get(A), t = jI(Q, I);
|
|
2271
|
+
return "ok" === t && Q && (qI(this.wasmBackend, Q), this.cache.deleteDataset(A), this.datasets.delete(A)), this.datasetResponse(g, A, Q, t);
|
|
2272
|
+
}
|
|
2273
|
+
disposeAll(A) {
|
|
2274
|
+
const g = [...this.datasets.keys()];
|
|
2275
|
+
return this.datasets.forEach((A) => qI(this.wasmBackend, A)), TI(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
|
|
2276
|
+
type: "dispose-all-response",
|
|
2277
|
+
requestId: A,
|
|
2278
|
+
disposedDatasetIds: g
|
|
2279
|
+
};
|
|
2280
|
+
}
|
|
2281
|
+
datasetResponse(A, g, I, Q) {
|
|
2282
|
+
return {
|
|
2283
|
+
type: "dataset-response",
|
|
2284
|
+
requestId: A,
|
|
2285
|
+
datasetId: g,
|
|
2286
|
+
revision: I?.revision ?? 0,
|
|
2287
|
+
status: Q,
|
|
2288
|
+
metrics: I ? {
|
|
2289
|
+
...I.metrics,
|
|
2290
|
+
indexBytes: I.wasmIndexBytes ?? I.index?.byteLength ?? 0
|
|
2291
|
+
} : void 0
|
|
2292
|
+
};
|
|
2293
|
+
}
|
|
2294
|
+
}();
|
|
2295
|
+
let tQ, CQ;
|
|
2296
|
+
const BQ = globalThis;
|
|
2297
|
+
BQ.onmessage = async (Q) => {
|
|
2298
|
+
try {
|
|
2299
|
+
"sample-viewport" === (u = Q.data).type && u.series.some((A) => "raw" !== A.mode) && await async function() {
|
|
2300
|
+
CQ || (tQ ??= (c ??= Promise.resolve(async function(A) {
|
|
2301
|
+
if (void 0 !== o) return o;
|
|
2302
|
+
void 0 !== A && (Object.getPrototypeOf(A) === Object.prototype ? {module_or_path: A} = A : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), void 0 === A && (A = new URL("data:application/wasm;base64,AGFzbQEAAAAB0AEZYAAAYAABf2ABfwBgAX8Bf2ACf38AYAJ/fwF/YAJ/fwFvYAN/f38AYAN/f38Bf2AEf39/fwBgBH9/f38Bf2AEf39/fwR/f39/YAV/f39/fwBgBX9/f39/AX9gBX9/f39/A39/f2AFf39/f38Ef39/f2AGf39/f39/AGAGf39/f39/AX9gBn9/f39/fwR/f39/YAd/f39/f39/AGAHf39/f398fABgCH9/f39/fHx/AGAGf39/f3x8BH9/f39gB39/f398fH8Df39/YAJ8fAF8AoQBAh4uL3dhdmVmb3JtX3NhbXBsaW5nX3dhc21fYmcuanMfX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZQAAHi4vd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMQAGA4wBigEDEAwQEBMMBQoMAhEQFQgMCgwEBxQEAgQFBAQTAQQECQkFBRAQFBMMBw0HBwQTBAwMBxAQEAwDCRUQBAIAAgICAgMHAwcIBAcFAwIEBwUFDRIWEg8XDwQLBQMOAgICAgkEAwICBAIFGBgEBwUHBAQICgIEBQcECAACAgAFBQQEBAUFAgIEBAUDAAAECQJwARcXbwCACAUDAQARBgkBfwFBgIDAAAsH5AIRBm1lbW9yeQIAD2NhbGN1bGF0ZV9yYW5nZQBZD2Rpc3Bvc2VfZGF0YXNldAA4EmZpbmRfdmlzaWJsZV9yYW5nZQBTEHJlZ2lzdGVyX2RhdGFzZXQAXBdyZWdpc3Rlcl9zYW1wbGVfZGF0YXNldABWEXNhbXBsZV9hZ2dyZWdhdGVzAFIZc2FtcGxlX2RhdGFzZXRfYWdncmVnYXRlcwBXFnNhbXBsZV9kYXRhc2V0X2luZGV4ZXMAVQ5zYW1wbGVfaW5kZXhlcwBUFGRpc3Bvc2VfYWxsX2RhdGFzZXRzAD4TZGF0YXNldF9pbmRleF9ieXRlcwBFFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBEV9fd2JpbmRnZW5fbWFsbG9jAE8ZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwA/D19fd2JpbmRnZW5fZnJlZQBuEF9fd2JpbmRnZW5fc3RhcnQAAAkiAQBBAQsWiQEBhgFaZ0ckeHVNdIABZFAuPIcBcG8jggGDAQrXywKKAc0kAgl/AX4jAEEQayIBJAACQAJAAkACQCAAQfUBSQ0AAkAgAEHM/3tNDQBBACEADAQLIABBC2oiAkF4cSEDQQAoAtCZQCIERQ0CQR8hBSAAQfX//wdPDQEgA0EmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEFDAELAkACQAJAAkACQAJAQQAoAsyZQCIGQRAgAEELakH4A3EgAEELSRsiA0EDdiICdiIAQQNxRQ0AIABBf3NBAXEgAmoiB0EDdCIDQcSXwABqIgAgA0HMl8AAaigCACICKAIIIghGDQEgCCAANgIMIAAgCDYCCAwCCyADQQAoAtSZQE0NBiAADQJBACgC0JlAIgBFDQYgAGhBAnRBtJbAAGooAgAiCCgCBEF4cSADayECIAghBgNAAkAgCCgCECIADQAgCCgCFCIADQAgBigCGCEFAkACQAJAIAYoAgwiACAGRw0AIAZBFEEQIAYoAhQiABtqKAIAIggNAUEAIQAMAgsgBigCCCIIIAA2AgwgACAINgIIDAELIAZBFGogBkEQaiAAGyEHA0AgByEJIAgiAEEUaiAAQRBqIAAoAhQiCBshByAAQRRBECAIG2ooAgAiCA0ACyAJQQA2AgALIAVFDQYCQAJAIAYgBigCHEECdEG0lsAAaiIIKAIARg0AAkAgBSgCECAGRg0AIAUgADYCFCAADQIMCQsgBSAANgIQIAANAQwICyAIIAA2AgAgAEUNBgsgACAFNgIYAkAgBigCECIIRQ0AIAAgCDYCECAIIAA2AhgLIAYoAhQiCEUNBiAAIAg2AhQgCCAANgIYDAYLIAAoAgRBeHEgA2siCCACIAggAkkiCBshAiAAIAYgCBshBiAAIQgMAAsLQQAgBkF+IAd3cTYCzJlACyACQQhqIQAgAiADQQNyNgIEIAIgA2oiAyADKAIEQQFyNgIEDAULAkACQCAAIAJ0QQIgAnQiAEEAIABrcnFoIglBA3QiAkHEl8AAaiIIIAJBzJfAAGooAgAiACgCCCIHRg0AIAcgCDYCDCAIIAc2AggMAQtBACAGQX4gCXdxNgLMmUALIAAgA0EDcjYCBCAAIANqIgYgAiADayIIQQFyNgIEIAAgAmogCDYCAAJAQQAoAtSZQCICRQ0AQQAoAtyZQCEDAkACQEEAKALMmUAiB0EBIAJBA3Z0IglxDQBBACAHIAlyNgLMmUAgAkF4cUHEl8AAaiICIQcMAQsgAkF4cSICQcSXwABqIQcgAkHMl8AAaigCACECCyAHIAM2AgggAiADNgIMIAMgBzYCDCADIAI2AggLIABBCGohAEEAIAY2AtyZQEEAIAg2AtSZQAwEC0EAQQAoAtCZQEF+IAYoAhx3cTYC0JlACwJAAkACQCACQRBJDQAgBiADQQNyNgIEIAYgA2oiCCACQQFyNgIEIAggAmogAjYCAEEAKALUmUAiB0UNAUEAKALcmUAhAAJAAkBBACgCzJlAIglBASAHQQN2dCIFcQ0AQQAgCSAFcjYCzJlAIAdBeHFBxJfAAGoiByEJDAELIAdBeHEiB0HEl8AAaiEJIAdBzJfAAGooAgAhBwsgCSAANgIIIAcgADYCDCAAIAk2AgwgACAHNgIIDAELIAYgAiADaiIAQQNyNgIEIAYgAGoiACAAKAIEQQFyNgIEDAELQQAgCDYC3JlAQQAgAjYC1JlACyAGQQhqIgBFDQEMAgtBACADayECAkACQAJAAkAgBUECdEG0lsAAaigCACIGDQBBACEIQQAhAAwBC0EAIQggA0EAQRkgBUEBdmsgBUEfRht0IQdBACEAA0ACQCAGIgYoAgRBeHEiCSADSQ0AIAkgA2siCSACTw0AIAYhCCAJIQIgCQ0AQQAhAiAGIQAgBiEIDAMLIAYoAhQiCSAAIAkgBiAHQR12QQRxaigCECIGRxsgACAJGyEAIAdBAXQhByAGDQALCwJAIAAgCHINAEEAIQhBAiAFdCIAQQAgAGtyIARxIgBFDQMgAGhBAnRBtJbAAGooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIgYgA2siByACIAcgAkkiCRshBSAGIANJIQcgACAIIAkbIQkCQCAAKAIQIgYNACAAKAIUIQYLIAIgBSAHGyECIAggCSAHGyEIIAYhACAGDQALCyAIRQ0AAkBBACgC1JlAIgAgA0kNACACIAAgA2tPDQELIAgoAhghBQJAAkACQCAIKAIMIgAgCEcNACAIQRRBECAIKAIUIgAbaigCACIGDQFBACEADAILIAgoAggiBiAANgIMIAAgBjYCCAwBCyAIQRRqIAhBEGogABshBwNAIAchCSAGIgBBFGogAEEQaiAAKAIUIgYbIQcgAEEUQRAgBhtqKAIAIgYNAAsgCUEANgIACwJAIAVFDQACQAJAAkAgCCAIKAIcQQJ0QbSWwABqIgYoAgBGDQACQCAFKAIQIAhGDQAgBSAANgIUIAANAgwECyAFIAA2AhAgAA0BDAMLIAYgADYCACAARQ0BCyAAIAU2AhgCQCAIKAIQIgZFDQAgACAGNgIQIAYgADYCGAsgCCgCFCIGRQ0BIAAgBjYCFCAGIAA2AhgMAQtBAEEAKALQmUBBfiAIKAIcd3E2AtCZQAsCQAJAIAJBEEkNACAIIANBA3I2AgQgCCADaiIAIAJBAXI2AgQgACACaiACNgIAAkAgAkGAAkkNACAAIAIQHwwCCwJAAkBBACgCzJlAIgZBASACQQN2dCIHcQ0AQQAgBiAHcjYCzJlAIAJB+AFxQcSXwABqIgIhBgwBCyACQfgBcSICQcSXwABqIQYgAkHMl8AAaigCACECCyAGIAA2AgggAiAANgIMIAAgBjYCDCAAIAI2AggMAQsgCCACIANqIgBBA3I2AgQgCCAAaiIAIAAoAgRBAXI2AgQLIAhBCGoiAA0BCwJAAkACQAJAAkACQEEAKALUmUAiACADTw0AAkBBACgC2JlAIgAgA0sNACABQQRqQfiZwAAgA0GvgARqQYCAfHEQRAJAIAEoAgQiBg0AQQAhAAwICyABKAIMIQVBAEEAKALkmUAgASgCCCIJaiIANgLkmUBBACAAQQAoAuiZQCICIAAgAksbNgLomUACQAJAAkBBACgC4JlAIgJFDQBBtJfAACEAA0AgBiAAKAIAIgggACgCBCIHakYNAiAAKAIIIgANAAwDCwsCQAJAQQAoAvCZQCIARQ0AIAYgAE8NAQtBACAGNgLwmUALQQBB/x82AvSZQEEAIAU2AsCXQEEAIAk2AriXQEEAIAY2ArSXQEEAQcSXwAA2AtCXQEEAQcyXwAA2AtiXQEEAQcSXwAA2AsyXQEEAQdSXwAA2AuCXQEEAQcyXwAA2AtSXQEEAQdyXwAA2AuiXQEEAQdSXwAA2AtyXQEEAQeSXwAA2AvCXQEEAQdyXwAA2AuSXQEEAQeyXwAA2AviXQEEAQeSXwAA2AuyXQEEAQfSXwAA2AoCYQEEAQeyXwAA2AvSXQEEAQfyXwAA2AoiYQEEAQfSXwAA2AvyXQEEAQYSYwAA2ApCYQEEAQfyXwAA2AoSYQEEAQYSYwAA2AoyYQEEAQYyYwAA2ApiYQEEAQYyYwAA2ApSYQEEAQZSYwAA2AqCYQEEAQZSYwAA2ApyYQEEAQZyYwAA2AqiYQEEAQZyYwAA2AqSYQEEAQaSYwAA2ArCYQEEAQaSYwAA2AqyYQEEAQayYwAA2AriYQEEAQayYwAA2ArSYQEEAQbSYwAA2AsCYQEEAQbSYwAA2AryYQEEAQbyYwAA2AsiYQEEAQbyYwAA2AsSYQEEAQcSYwAA2AtCYQEEAQcyYwAA2AtiYQEEAQcSYwAA2AsyYQEEAQdSYwAA2AuCYQEEAQcyYwAA2AtSYQEEAQdyYwAA2AuiYQEEAQdSYwAA2AtyYQEEAQeSYwAA2AvCYQEEAQdyYwAA2AuSYQEEAQeyYwAA2AviYQEEAQeSYwAA2AuyYQEEAQfSYwAA2AoCZQEEAQeyYwAA2AvSYQEEAQfyYwAA2AoiZQEEAQfSYwAA2AvyYQEEAQYSZwAA2ApCZQEEAQfyYwAA2AoSZQEEAQYyZwAA2ApiZQEEAQYSZwAA2AoyZQEEAQZSZwAA2AqCZQEEAQYyZwAA2ApSZQEEAQZyZwAA2AqiZQEEAQZSZwAA2ApyZQEEAQaSZwAA2ArCZQEEAQZyZwAA2AqSZQEEAQayZwAA2AriZQEEAQaSZwAA2AqyZQEEAQbSZwAA2AsCZQEEAQayZwAA2ArSZQEEAQbyZwAA2AsiZQEEAQbSZwAA2AryZQEEAIAZBD2pBeHEiAEF4aiICNgLgmUBBAEG8mcAANgLEmUBBACAGIABrIAlBWGoiAGpBCGoiCDYC2JlAIAIgCEEBcjYCBCAGIABqQSg2AgRBAEGAgIABNgLsmUAMCAsgAiAGTw0AIAggAksNACAAKAIMIghBAXENACAIQQF2IAVGDQMLQQBBACgC8JlAIgAgBiAAIAZJGzYC8JlAIAYgCWohCEG0l8AAIQACQAJAAkADQCAAKAIAIgcgCEYNASAAKAIIIgANAAwCCwsgACgCDCIIQQFxDQAgCEEBdiAFRg0BC0G0l8AAIQACQANAAkAgACgCACIIIAJLDQAgAiAIIAAoAgRqIghJDQILIAAoAgghAAwACwtBACAGQQ9qQXhxIgBBeGoiBzYC4JlAQQAgBiAAayAJQVhqIgBqQQhqIgQ2AtiZQCAHIARBAXI2AgQgBiAAakEoNgIEQQBBgICAATYC7JlAIAIgCEFgakF4cUF4aiIAIAAgAkEQakkbIgdBGzYCBEEAKQK0l0AhCiAHQRBqQQApAryXQDcCACAHQQhqIgAgCjcCAEEAIAU2AsCXQEEAIAk2AriXQEEAIAY2ArSXQEEAIAA2AryXQCAHQRxqIQADQCAAQQc2AgAgAEEEaiIAIAhJDQALIAcgAkYNByAHIAcoAgRBfnE2AgQgAiAHIAJrIgBBAXI2AgQgByAANgIAAkAgAEGAAkkNACACIAAQHwwICwJAAkBBACgCzJlAIghBASAAQQN2dCIGcQ0AQQAgCCAGcjYCzJlAIABB+AFxQcSXwABqIgAhCAwBCyAAQfgBcSIAQcSXwABqIQggAEHMl8AAaigCACEACyAIIAI2AgggACACNgIMIAIgCDYCDCACIAA2AggMBwsgACAGNgIAIAAgACgCBCAJajYCBCAGQQ9qQXhxQXhqIgggA0EDcjYCBCAHQQ9qQXhxQXhqIgIgCCADaiIAayEDIAJBACgC4JlARg0DIAJBACgC3JlARg0EAkAgAigCBCIGQQNxQQFHDQAgAiAGQXhxIgYQHCAGIANqIQMgAiAGaiICKAIEIQYLIAIgBkF+cTYCBCAAIANBAXI2AgQgACADaiADNgIAAkAgA0GAAkkNACAAIAMQHwwGCwJAAkBBACgCzJlAIgJBASADQQN2dCIGcQ0AQQAgAiAGcjYCzJlAIANB+AFxQcSXwABqIgMhAgwBCyADQfgBcSIDQcSXwABqIQIgA0HMl8AAaigCACEDCyACIAA2AgggAyAANgIMIAAgAjYCDCAAIAM2AggMBQtBACAAIANrIgI2AtiZQEEAQQAoAuCZQCIAIANqIgg2AuCZQCAIIAJBAXI2AgQgACADQQNyNgIEIABBCGohAAwGC0EAKALcmUAhAgJAAkAgACADayIIQQ9LDQBBAEEANgLcmUBBAEEANgLUmUAgAiAAQQNyNgIEIAIgAGoiACAAKAIEQQFyNgIEDAELQQAgCDYC1JlAQQAgAiADaiIGNgLcmUAgBiAIQQFyNgIEIAIgAGogCDYCACACIANBA3I2AgQLIAJBCGohAAwFCyAAIAcgCWo2AgRBAEEAKALgmUAiAEEPakF4cSICQXhqIgg2AuCZQEEAIAAgAmtBACgC2JlAIAlqIgJqQQhqIgY2AtiZQCAIIAZBAXI2AgQgACACakEoNgIEQQBBgICAATYC7JlADAMLQQAgADYC4JlAQQBBACgC2JlAIANqIgM2AtiZQCAAIANBAXI2AgQMAQtBACAANgLcmUBBAEEAKALUmUAgA2oiAzYC1JlAIAAgA0EBcjYCBCAAIANqIAM2AgALIAhBCGohAAwBC0EAIQBBACgC2JlAIgIgA00NAEEAIAIgA2siAjYC2JlAQQBBACgC4JlAIgAgA2oiCDYC4JlAIAggAkEBcjYCBCAAIANBA3I2AgQgAEEIaiEACyABQRBqJAAgAAujIAIcfwJ8IwBBMGsiBiQAIAEoAjgiByACIAcgAkkbIgggByADIAcgA0kbIgMgCCADSxsiCSAIayEHAkACQAJAAkACQCACIANJDQACQCAEQQJHDQBBACEKDAMLQQAhC0EEIQxBACEDDAELQQEhCgJAAkACQAJAAkAgBUEBSw0AIAdBAUYNAUEBIQogBA4DBAIGAgsgBSAHIAUgB0kbIQoLAkAgBA4DAwAFAAsgByAKTQ0CAkAgCkF/ag4CAQACCxCKAQJAQQhBBBB9IgJFDQAgAiAINgIAIABBAjYCCCAAIAI2AgQgAEECNgIAIAIgCUF/ajYCBAwGC0EEQQgQgQEACxCKAQJAQQRBBBB9IgJFDQAgAEEBNgIIIAAgAjYCBCAAQQE2AgAgAiAINgIADAULQQRBBBCBAQALQQEhAgJAAkACQAJAAkACQAJAIARBf2oOBgAEBAICAQQLQQIhAgsgCkF+aiACdiINDQFBCBBjIgIgCUF/ajYCBCACIAg2AgAgAEECNgIIIAAgAjYCBCAAQQI2AgAMCAsgCkF+aiENC0EEEGMiAiAINgIAIAZBATYCFCAGIAI2AhAgBkEBNgIMIAFBPGohDiAIQQFqIQ8gB0F+aiEQQQAhEQNAIBEgEGwgDW4iAiAPaiISIBFBAWoiESAQbCANbiITIA9qIhRPDQICQCATIAJrZyICQR9GDQAgAkEfcyEVQQEhFgNAAkACQCAWIAEoAkRPDQAgASgCQCAWQRhsaigCAEGAgICAeEcNAQtBfyABKAIQIgcgASgCOCICIBZ2IAJBfyAWdEF/c3FBAEdqIhdBA3RqIgIgAiAHSRsgASgCFEsNBSABIAI2AhACQAJAIBcNAEEAIQdBBCEYQQQhGQwBCxCKAQJAIBdBAnQiGkEEEH4iGUUNABCKAQJAIBpBBBB+IhhFDQAgASgCQCAWQX9qIgdBGGxqIRsgASgCNCEcIAEoAjghHUEAIQVBASECQQQhCyAHIAEoAkRJIR4DQCACQX9qIQcCQAJAAkACQAJAAkACQAJAAkACQCAeRQ0AIBsoAgBBgICAgHhHDQELIAIhHyAHIQMgAiEMIAIgHUkNAQwHCyAHIBsoAggiDE8NASAHIBsoAhQiIE8NAiAbKAIEIAtqIh9BfGooAgAhByAbKAIQIAtqIiFBfGooAgAhAyACIAxPDQYgHygCACEfQQAhDCACICBPDQAgISgCACEMCyAfIB1PDQIgByAdTw0EAkACQCAcIB9BA3RqKwMAIiIgHCAHQQN0aisDACIjYw0AICIgI2INASAfIAdPDQELIB8hBwsgGSAFaiAHNgIAIAwgHU8NAwJAAkAgAyAdTw0AIBwgDEEDdGorAwAiIiAcIANBA3RqKwMAIiNkRQ0BIAwhAwwICyADIB1B7IfAABBJAAsgDCADIAwgA0kbIAMgIiAjYRshAwwGCyACQX9qIAxB/InAABBJAAsgAkF/aiAgQYyKwAAQSQALIB8gHUH8h8AAEEkACyAMIB1B3IfAABBJAAsgByAdQYyIwAAQSQALIBkgBWogBzYCAAsgGCAFaiADNgIAIAtBCGohCyACQQJqIQIgGiAFQQRqIgVHDQALIBchBwwCC0EEIBoQawALQQQgGhBrAAsCQCABKAJEIgIgFksNACAOIBZBAWoQGyABKAJEIQILIBYgAk8NBgJAIAEoAkAgFkEYbGoiAigCACIDQYCAgIB4Rg0AAkAgA0UNACACKAIEIANBAnRBBBB2CyACKAIMIgNFDQAgAigCECADQQJ0QQQQdgsgAiAXNgIUIAIgGDYCECACIAc2AgwgAiAXNgIIIAIgGTYCBCACIAc2AgALIBYgFU8NASAWIBYgFUlqIhYgFU0NAAsLIAEoAjghHSABKAI0IQwgASgCQCEZIAEoAkQhGyASIQIgEiELIBIhHwJAAkACQAJAAkACQANAQQEhBQJAIBQgAmsiB0ECSQ0AIAJBAXENAEECIQUgB0EESQ0AIAJBAnENAEEEIQUgB0EISQ0AIAJBBHENAEEIIQUgB0EQSQ0AIAJBCHENAEEQIQUgB0EgSQ0AIAJBEHENAEEgIQUgB0HAAEkNACACQSBxDQBBwAAhBSAHQYABSQ0AIAJBwABxDQBBgAEhBSAHQYACSQ0AIAJBgAFxDQBBgAIhBSAHQYAESQ0AIAJBgAJxDQBBgAQhBSAHQYAISQ0AIAJBgARxDQBBgAghBSAHQYAQSQ0AIAJBgAhxDQBBgBAhBSAHQYAgSQ0AIAJBgBBxDQBBgCAhBSAHQYDAAEkNACACQYAgcQ0AQYDAACEFIAdBgIABSQ0AIAJBgMAAcQ0AQYCAASEFIAdBgIACSQ0AIAJBgIABcQ0AQYCAAiEFIAdBgIAESQ0AIAJBgIACcQ0AQYCABCEFIAdBgIAISQ0AIAJBgIAEcQ0AQYCACCEFIAdBgIAQSQ0AIAJBgIAIcQ0AQYCAECEFIAdBgIAgSQ0AIAJBgIAQcQ0AQYCAICEFIAdBgIDAAEkNACACQYCAIHENAEGAgMAAIQUgB0GAgIABSQ0AIAJBgIDAAHENAEGAgIABIQUgB0GAgIACSQ0AIAJBgICAAXENAEGAgIACIQUgB0GAgIAESQ0AIAJBgICAAnENAEGAgIAEIQUgB0GAgIAISQ0AIAJBgICABHENAEGAgIAIIQUgB0GAgIAQSQ0AIAJBgICACHENAEGAgIAQIQUgB0GAgIAgSQ0AIAJBgICAEHENAEGAgIAgIQUgB0GAgIDAAEkNACACQYCAgCBxDQBBgICAwAAhBSAHQYCAgIABSQ0AIAJBgICAwABxDQBBgICAgAEhBSAHQYCAgIACSQ0AIAJBgICAgAFxDQBBgICAgAIhBSAHQYCAgIAESQ0AIAJBgICAgAJxDQBBgICAgAQhBSAHQX9KDQAgAkGAgICABHENAEGsicAAEHsACyACIQcgAiEDAkAgBWgiHEUNAAJAAkAgHCAbTw0AIBkgHEEYbGoiBygCAEGAgICAeEcNAQwMCyAcIBtBvInAABBJAAsCQCACIBx2IgMgBygCCCIcTw0AAkAgAyAHKAIUIhxPDQAgBygCECADQQJ0IhxqKAIAIQMgBygCBCAcaigCACEHDAILIAMgHEHcicAAEEkACyADIBxBzInAABBJAAsgByAdTw0BIAsgHU8NAgJAAkAgDCAHQQN0aisDACIiIAwgC0EDdGorAwAiI2MNACAiICNiDQEgByALTw0BCyAHIQsLIAMgHU8NAyAfIB1PDQQCQAJAIAwgA0EDdGorAwAiIiAMIB9BA3RqKwMAIiNkDQAgIiAjYg0BIAMgH08NAQsgAyEfCyAFIAJqIgIgFEkNAAsCQAJAAkACQAJAIARBf2oOBgMAAAECBAALQZyKwABBKEHEisAAEGwACwJAIAYoAhQiAkUNACAGKAIQIAJBAnRqQXxqKAIAIAtGDQkLAkAgAiAGKAIMRw0AIAZBDGoQTAsgBigCECACQQJ0aiALNgIAIAYgAkEBajYCFAwICwJAIAYoAhQiAkUNACAGKAIQIAJBAnRqQXxqKAIAIB9GDQgLAkAgAiAGKAIMRw0AIAZBDGoQTAsgBigCECACQQJ0aiAfNgIAIAYgAkEBajYCFAwHCyAGIB82AgggBiASNgIkIAYgCzYCGAJAAkAgCyASSQ0AIBIhByALIRIMAQsgBiALNgIkIAYgEjYCGCALIQcLIBMgCGohAgJAAkAgHyASSQ0AIBIhByAfIRIMAQsgBiASNgIIIAZBGGohAwJAIB8gB08NACAGIAc2AhggBkEkaiEDCyADIB82AgAgBigCGCEHCwJAAkAgAiASSQ0AIBIhAyACIRIMAQsCQAJAIAIgB0kNACAGQQhqIQcMAQsgBiAHNgIIAkAgAiAGKAIkIgdJDQAgBkEYaiEHDAELIAYgBzYCGCAGQSRqIQcLIAcgAjYCACAGKAIIIQMgBigCGCEHCyAGQQxqIAYoAiQQSCAGQQxqIAcQSCAGQQxqIAMQSCAGQQxqIBIQSAwGCyALIB9LDQQCQAJAAkAgBigCFCICRQ0AIAYoAhAgAkECdGpBfGooAgAgC0YNAQsCQCACIAYoAgxHDQAgBkEMahBMIAYoAhAgAkECdGogCzYCACAGIAJBAWoiAjYCFAwBCyAGKAIQIAJBAnRqIAs2AgAgBiACQQFqIgI2AhRBACEHIAJFDQELIAIhByAGKAIQIAJBAnRqQXxqKAIAIB9GDQYLAkAgByAGKAIMRw0AIAZBDGoQTAsgBigCECAHQQJ0aiAfNgIAIAYgB0EBajYCFAwFCyAHIB1B/IfAABBJAAsgCyAdQYyIwAAQSQALIAMgHUHch8AAEEkACyAfIB1B7IfAABBJAAsCQAJAAkAgBigCFCICRQ0AIAYoAhAgAkECdGpBfGooAgAgH0YNAQsCQCACIAYoAgxHDQAgBkEMahBMIAYoAhAgAkECdGogHzYCACAGIAJBAWoiAjYCFAwBCyAGKAIQIAJBAnRqIB82AgAgBiACQQFqIgI2AhRBACEHIAJFDQELIAIhByAGKAIQIAJBAnRqQXxqKAIAIAtGDQELAkAgByAGKAIMRw0AIAZBDGoQTAsgBigCECAHQQJ0aiALNgIAIAYgB0EBajYCFAsgESANRw0ACyAGQQxqIAlBf2oQSCAAIAYoAhQ2AgggACAGKQIMNwIADAYLQdSKwABBJxBtIQggAEGAgICAeDYCACAAIAg2AgQMBQsgBiAJNgIsIAYgCDYCKCAGIAE2AiQgBkEYaiAGQSRqEDAgACAGKAIcIgggBigCICAEIAoQBAJAIAYoAhgiAkUNACAIIAJBGGxBCBB2CyAGKAIMIghFDQQgBigCECAIQQJ0QQQQdgwECyAWIAJB7InAABBJAAtBACEDEIoBAkBBACAHIAcgCUsbIgtBAnQiAkEEEH0iDEUNACAHQQNxIQUCQCAIIAlrQXxLDQAgB0F8cSEdQQAhAyAMIQIDQCACIAggA2oiBzYCACACQQxqIAdBA2o2AgAgAkEIaiAHQQJqNgIAIAJBBGogB0EBajYCACACQRBqIQIgHSADQQRqIgNHDQALIAVFDQIgCCADaiEICyADIAVqIQcgDCADQQJ0aiECA0AgAiAINgIAIAJBBGohAiAIQQFqIQggBUF/aiIFDQALIAchAwwBC0EEIAIQawALIAAgAzYCCCAAIAw2AgQgACALNgIADAELIAYgATYCDCAGIAg2AhAgBiAJNgIUQQAhA0EAIAcgByAJSxsiAkEYbCEIIAJB1arVKksNAUEAIQNBCCEHAkAgCEUNABCKAUEIIQMgCEEIEH0iB0UNAiACIQMLIAZBADYCICAGIAc2AhwgBiADNgIYIAZBADYCKCAGIAZBIGo2AiQgBiAHNgIsIAZBDGogBkEkahAgIAYoAhghCCAAIAYoAhwiAiAGKAIgIAQgChAEIAhFDQAgAiAIQRhsQQgQdgsgBkEwaiQADwsgAyAIEGsAC7kZAgt/BnwjAEEgayIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOBwECBwAEBAQAC0HUisAAQScQbSEDIABBgICAgHg2AgAgACADNgIEDA4LAkAgAg0AQQQhBkEAIQdBACEIDA0LEIoBIAJBAnQiA0EEEH0iBkUNASACQQdxIQRBACEDAkACQCACQX9qQQdJDQAgAkH4//8/cSEIQQAhB0EAIQMDQCAGIAdqIgkgAzYCACAJQRxqIANBB2o2AgAgCUEYaiADQQZqNgIAIAlBFGogA0EFajYCACAJQRBqIANBBGo2AgAgCUEMaiADQQNqNgIAIAlBCGogA0ECajYCACAJQQRqIANBAWo2AgAgB0EgaiEHIANBCGoiAyAIRw0ACyAERQ0BCyAGIANBAnRqIQkDQCAJIAM2AgAgCUEEaiEJIANBAWohAyAEQX9qIgQNAAsLIAIhByACIQgMCwsgBUEUaiACIAQQFSAFKAIUIgdBgICAgHhHDQgCQCAEQX5qQQJ2IgoNABCKAUEIQQQQfSIGDQNBBEEIEIEBAAsQigECQEEEQQQQfSIDRQ0AQQAhCyADQQA2AgAgBUEBNgIcIAUgAzYCGCAFQQE2AhQgAkF+aiEMQQEhCANAIAsgDGwgCm4iA0EBaiINIQkgDSEEAkACQCADQQJqIgMgC0EBaiILIAxsIApuIg5BAWoiBkkNACAFIA02AhAgBSANNgIMIAUgDTYCCCANIQkMAQsCQAJAAkADQCADIAJPDQIgCSACTw0BAkAgBCACTw0AIAMgBCABIANBGGxqKwMIIhAgASAEQRhsaisDCGQbIQQgAyAJIBAgASAJQRhsaisDCGMbIQkgA0EBaiIHIQMgByAGTw0EDAELCyAEIAJB/IbAABBJAAsgCSACQeyGwAAQSQALIAMgAkHchsAAEEkACyAFIAQ2AgggBSANNgIQIAUgCTYCDAJAAkAgCSANSQ0AIA0hAwwBCyAFIAk2AhAgBSANNgIMIAkhAyANIQkLAkAgBCAJSQ0AIAkhDSAEIQkMAQsgBSAJNgIIIAVBDGohBwJAIAQgA08NACAFIAM2AgwgBUEQaiEHCyAHIAQ2AgAgBSgCDCENCwJAAkAgDiAJSQ0AIAkhBCAOIQkMAQsCQAJAIA4gDUkNACAFQQhqIQMMAQsgBSANNgIIAkAgDiAFKAIQIgNJDQAgBUEMaiEDDAELIAUgAzYCDCAFQRBqIQMLIAMgDjYCACAFKAIIIQQgBSgCDCENCyAFKAIQIQMCQAJAAkACQAJAAkACQAJAIAhFDQAgBSgCGCAIQQJ0akF8aigCACADRg0BCwJAIAggBSgCFEcNACAFQRRqEEwgBSgCGCAIQQJ0aiADNgIAIAUgCEEBaiIINgIcDAELIAUoAhggCEECdGogAzYCACAFIAhBAWoiCDYCHEEAIQMgCEUNAQsgCCEDIAUoAhggCEECdGpBfGooAgAgDUYNAQsCQCADIAUoAhRHDQAgBUEUahBMIAUoAhggA0ECdGogDTYCACAFIANBAWoiCDYCHAwBCyAFKAIYIANBAnRqIA02AgAgBSADQQFqIgg2AhxBACEDIAhFDQELIAghAyAFKAIYIAhBAnRqQXxqKAIAIARGDQELAkAgAyAFKAIURw0AIAVBFGoQTCAFKAIYIANBAnRqIAQ2AgAgBSADQQFqIgg2AhwMAQsgBSgCGCADQQJ0aiAENgIAIAUgA0EBaiIINgIcQQAhAyAIRQ0BCyAIIQMgBSgCGCAIQQJ0akF8aigCACAJRg0BCwJAIAMgBSgCFEcNACAFQRRqEEwLIAUoAhggA0ECdGogCTYCACAFIANBAWoiCDYCHAsgCyAKRg0HDAALC0EEQQQQgQEAC0EEIAMQawALIAVBFGogAiAEEBUgBSgCFCIHQYCAgIB4Rw0GAkAgBEF+aiADQQZGdiILDQAQigFBCEEEEH0iBg0BQQRBCBCBAQALEIoBAkBBBEEEEH0iCUUNAEEAIQ0gCUEANgIAIAVBATYCHCAFIAk2AhggBUEBNgIUIAJBfmohDiADQXxqIQpBASEIA0AgDSAObCALbiIDQQFqIgQhCQJAIANBAmoiAyANQQFqIg0gDmwgC25BAWoiBk8NAAJAAkADQCADIAJPDQIgCSACTw0BAkAgBCACTw0AIAMgBCABIANBGGxqKwMIIhAgASAEQRhsaisDCGQbIQQgAyAJIBAgASAJQRhsaisDCGMbIQkgA0EBaiIHIQMgByAGTw0EDAELCyAEIAJBnI3AABBJAAsgCSACQYyNwAAQSQALIAMgAkH8jMAAEEkACwJAAkACQAJAAkACQAJAIAoOAwECAwALQZyKwABBKEHsjMAAEGwACwJAIAhFDQAgBSgCGCAIQQJ0akF8aigCACAJRg0FCyAIIAUoAhRGDQIMAwsCQCAIRQ0AIAUoAhggCEECdGpBfGooAgAgBEYNBAsgBCEJIAggBSgCFEcNAgwBCwJAIAkgBEsNAAJAAkACQCAIRQ0AIAUoAhggCEECdGpBfGooAgAgCUYNAQsCQCAIIAUoAhRHDQAgBUEUahBMIAUoAhggCEECdGogCTYCACAFIAhBAWoiCDYCHAwBCyAFKAIYIAhBAnRqIAk2AgAgBSAIQQFqIgg2AhxBACEDIAhFDQELIAghAyAFKAIYIAhBAnRqQXxqKAIAIARGDQQLIAMhCCAEIQkgAyAFKAIURg0BDAILAkACQCAIRQ0AIAUoAhggCEECdGpBfGooAgAgBEYNAQsCQCAIIAUoAhRHDQAgBUEUahBMCyAFKAIYIAhBAnRqIAQ2AgAgBSAIQQFqIgg2AhwLAkAgCEUNACAFKAIYIAhBAnRqQXxqKAIAIAlGDQMLIAggBSgCFEcNAQsgBUEUahBMCyAFKAIYIAhBAnRqIAk2AgAgBSAIQQFqIgg2AhwLIA0gC0YNAwwACwtBBEEEEIEBAAsgBkEANgIAIAYgAkF/ajYCBEECIQdBAiEIDAcLIAJBf2ohAwJAIAhFDQAgBSgCGCIGIAhBAnRqQXxqKAIAIANGDQQLAkAgCCAFKAIURw0AIAVBFGoQTAsgBSgCGCAIQQJ0aiADNgIAIAhBAWohCAwCCyAFQRRqIAIgBBAVIAUoAhQiB0GAgICAeEcNAxCKAQJAQQRBBBB9IgNFDQBBACEJIANBADYCAEEBIQggBUEBNgIcIAUgAzYCGCAFQQE2AhQgAkF/aiEPAkACQCAEQX5qIgtFDQAgAkF+aiIOuCALuKMhESABIA9BGGxqIQpBACEHQQEhCANAIAIgESAHQQJquKKc/ANBAWoiAyACIANJGyEEAkACQAJAIAMgAiARIAdBAWoiDbiinPwDQQFqIgYgAiAGSRsiBkkNAAJAAkAgBCAGRg0AIAQgBmshDCABIARBGGxqIQQgASAGQRhsaiEDRAAAAAAAAAAAIRBEAAAAAAAAAAAhEgNAIBAgAysDAKAhECASIANBCGorAwCgIRIgA0EYaiIDIARHDQALIBIgDLgiE6MhFCAQIBOjIRUMAQsgAkUNAiAKKwMIIRQgCisDACEVCwJAIAcgDmwgC25BAWoiAyANIA5sIAtuQQFqIgZJDQAgAyEJDAMLAkACQCAJIAJPDQAgASAJQRhsaiEERAAAAAAAAPC/IRAgAyEJA0AgAyACTw0CIAQrAwAiEiAVoSABIANBGGxqIgcrAwggBCsDCCIToaIgFCAToSASIAcrAwChoqGZIhIgECASIBBkIgcbIRAgAyAJIAcbIQkgA0EBaiIDIAZPDQUMAAsLIAkgAkGshsAAEEkACyADIAJBvIbAABBJAAsgBiAEIAJBzIbAABAiAAsgD0EAQZyGwAAQSQALAkAgCCAFKAIURw0AIAVBFGoQTAsgBSgCGCAIQQJ0aiAJNgIAIAUgCEEBaiIINgIcIA0hByANIAtHDQALIAggBSgCFEcNAQsgBUEUahBMCyAFKAIYIAhBAnRqIA82AgAgCEEBaiEIDAILQQRBBBCBAQALIAJBf2ohAwJAIAhFDQAgBSgCGCIGIAhBAnRqQXxqKAIAIANGDQILAkAgCCAFKAIURw0AIAVBFGoQTAsgBSgCGCAIQQJ0aiADNgIAIAhBAWohCAsgBSgCGCEGCyAFKAIUIQcMAQsgBSgCHCEIIAUoAhghBgsgCA0AQQAhCAwBCyAGIQMgCCEJA0AgAygCACIEIAJPDQMgAyABIARBGGxqKAIQNgIAIANBBGohAyAJQX9qIgkNAAsLIAAgCDYCCCAAIAY2AgQgACAHNgIACyAFQSBqJAAPCyAEIAJBlI/AABBJAAvfGQMhfwF+BXwjAEEwayIGJAACQAJAAkACQCAEQX1qDgUAAQEBAAELQQAhByAFQQEgBUEBSxsiCCABKAI4IgUgAiAFIAJJGyIJIAUgAyAFIANJGyIFIAkgBUsbIgogCWsiCyAIIAtJGyIMQQAgAiAFSRsiDUEEdCECAkACQCANQQF0IgVB/////wFLDQAgAkH4////B0sNAAJAAkAgAg0AQQghA0EAIQUMAQsQigFBCCEHIAJBCBB9IgNFDQELIAZBADYCCCAGIAM2AgQgBiAFNgIAAkAgDUUNACABQcgAaiEOQQAhDwNAIA8gC2wgDG4iBSAJaiICIA9BAWoiDyALbCAMbiIDIAlqIhBPDQMCQCADIAVrZyIFQR9GDQAgBUEfcyERQQEhEgNAAkACQCASIAEoAlBPDQAgASgCTCASQSRsaigCAEGAgICAeEcNAQsCQAJAIAEoAjgiBSASdiAFQX8gEnRBf3NxQQBHaiITrUIUfiInQiCIpw0AICenIQUMAQtBfyEFC0F/IAEoAhAiAyAFaiIFIAUgA0kbIAEoAhRLDQYgASAFNgIQQQAhBQJAAkACQCATQf////8ASw0AAkAgEw0AQQghFEEEIRVBCCEWDAMLEIoBQQghBSATQQN0IgNBCBB+IhQNASADIRQLIAUgFBBrAAsQigECQCADQQgQfiIWRQ0AEIoBAkAgE0ECdCIFQQQQfiIVRQ0AIBNBAXQhFyABKAJMIBJBf2oiCEEkbGohGCABKAI4IRkgASgCNCEaIAEoAighGyABKAIsIRwgASsDCCEoIAErAwAhKSABKAIkIR0gASgCHCEeIAEoAiAhH0EEIQNBACEFIAggASgCUEkhICABKAIYQYCAgIB4RiEhQQAhByAVISICQANAIAVBAWohCAJAAkACQAJAAkACQAJAAkACQCAgRQ0AIBgoAgBBgICAgHhGDQAgBSAYKAIIIiNPDQEgGCgCBCAHaiIkKwMAISpEAAAAAAAAAAAhKwJAIAggI08NACAkQQhqKwMAISsLIBQgA2pBfGogKiAroDkDACAFIBgoAhQiI08NAyAYKAIQIAdqIiQrAwAhKkQAAAAAAAAAACErAkAgCCAjTw0AICRBCGorAwAhKwsgFiADakF8aiAqICugOQMAIAUgGCgCICIkTw0EIBgoAhwgA2oiJUF8aigCACEmQQAhIwJAIAggJE8NACAlKAIAISMLICIgIyAmajYCAAwICwJAAkACQAJAICENACAFIB9JDQEgBSAfQfiLwAAQSQALIAUhIwJAAkAgHUGAgICAeEYiJA0AIAUgHE8NASAbIANqQXxqKAIAISMLICkgKCAjuKKgISsgCCAZSQ0CRAAAAAAAAAAAISoMCgsgBSAcQYiMwAAQSQALIB4gB2oiIysDACErIAggGUkNAUQAAAAAAAAAACEqDAgLIAghIyAkRQ0FDAYLIAggH08NASAjQQhqKwMAISoMBgsgBSAjQayHwAAQSQALIAVBAWogH0H4i8AAEEkACyAFICNBvIfAABBJAAsgBSAkQcyHwAAQSQALAkAgCCAcTw0AIBsgA2ooAgAhIwwBCyAFQQFqIBxBiIzAABBJAAsgKSAoICO4oqAhKgsgFCADakF8aiArICqgOQMAIAUgGU8NAiAaIAdqIiMrAwAhKkQAAAAAAAAAACErAkAgCCAZSSIIRQ0AICNBCGorAwAhKwsgIkECQQEgCBs2AgAgFiADakF8aiAqICugOQMACyAHQRBqIQcgA0EIaiEDICJBBGohIiAXIAVBAmoiBUYNBAwACwsgBSAZQZyHwAAQSQALQQQgBRBrAAtBCCADEGsACwJAIAEoAlAiBSASSw0AIA4gEkEBahAZIAEoAlAhBQsgEiAFTw0JAkAgASgCTCASQSRsaiIFKAIAIgNBgICAgHhGDQACQCADRQ0AIAUoAgQgA0EDdEEIEHYLAkAgBSgCDCIDRQ0AIAUoAhAgA0EDdEEIEHYLIAUoAhgiA0UNACAFKAIcIANBAnRBBBB2CyAFIBM2AiAgBSAVNgIcIAUgEzYCGCAFIBM2AhQgBSAWNgIQIAUgEzYCDCAFIBM2AgggBSAUNgIEIAUgEzYCAAsgEiARTw0BIBIgEiARSWoiEiARTQ0ACwsgASgCNCEgIAEoAjghIyABKwMIISkgASsDACEsIAEoAighEyABKAIsIRogASgCHCEhIAEoAiAhFyABKAJMIRggASgCUCEZQQAhB0QAAAAAAAAAACEqIAEoAhhBgICAgHhGIRYgASgCJEGAgICAeEYhEkQAAAAAAAAAACErA0BBASEDAkAgECACayIFQQJJDQAgAkEBcQ0AQQIhAyAFQQRJDQAgAkECcQ0AQQQhAyAFQQhJDQAgAkEEcQ0AQQghAyAFQRBJDQAgAkEIcQ0AQRAhAyAFQSBJDQAgAkEQcQ0AQSAhAyAFQcAASQ0AIAJBIHENAEHAACEDIAVBgAFJDQAgAkHAAHENAEGAASEDIAVBgAJJDQAgAkGAAXENAEGAAiEDIAVBgARJDQAgAkGAAnENAEGABCEDIAVBgAhJDQAgAkGABHENAEGACCEDIAVBgBBJDQAgAkGACHENAEGAECEDIAVBgCBJDQAgAkGAEHENAEGAICEDIAVBgMAASQ0AIAJBgCBxDQBBgMAAIQMgBUGAgAFJDQAgAkGAwABxDQBBgIABIQMgBUGAgAJJDQAgAkGAgAFxDQBBgIACIQMgBUGAgARJDQAgAkGAgAJxDQBBgIAEIQMgBUGAgAhJDQAgAkGAgARxDQBBgIAIIQMgBUGAgBBJDQAgAkGAgAhxDQBBgIAQIQMgBUGAgCBJDQAgAkGAgBBxDQBBgIAgIQMgBUGAgMAASQ0AIAJBgIAgcQ0AQYCAwAAhAyAFQYCAgAFJDQAgAkGAgMAAcQ0AQYCAgAEhAyAFQYCAgAJJDQAgAkGAgIABcQ0AQYCAgAIhAyAFQYCAgARJDQAgAkGAgIACcQ0AQYCAgAQhAyAFQYCAgAhJDQAgAkGAgIAEcQ0AQYCAgAghAyAFQYCAgBBJDQAgAkGAgIAIcQ0AQYCAgBAhAyAFQYCAgCBJDQAgAkGAgIAQcQ0AQYCAgCAhAyAFQYCAgMAASQ0AIAJBgICAIHENAEGAgIDAACEDIAVBgICAgAFJDQAgAkGAgIDAAHENAEGAgICAASEDIAVBgICAgAJJDQAgAkGAgICAAXENAEGAgICAAiEDIAVBgICAgARJDQAgAkGAgICAAnENAEGAgICABCEDIAVBf0oNACACQYCAgIAEcQ0AQayJwAAQewALAkACQAJAAkACQAJAIANoIggNAAJAAkAgFg0AIAIgF08NBCAhIAJBA3RqKwMAISgMAQsgAiEFAkAgEg0AIAIgGk8NAyATIAJBAnRqKAIAIQULICwgKSAFuKKgISgLIAIgI08NAyAHQQFqIQcgICACQQN0aiEiDAULAkAgCCAZSQ0AIAggGUGojMAAEEkACyAYIAhBJGxqIgUoAgBBgICAgHhHDQMMCQsgAiAaQYiMwAAQSQALIAIgF0H4i8AAEEkACyACICNBmIzAABBJAAsCQAJAIAIgCHYiCCAFKAIIIiJPDQAgCCAFKAIUIiJPDQECQCAIIAUoAiAiIk8NACAFKAIEIAhBA3QiImorAwAhKCAFKAIQICJqISIgBSgCHCAIQQJ0aigCACAHaiEHDAMLIAggIkHYjMAAEEkACyAIICJBuIzAABBJAAsgCCAiQciMwAAQSQALICogKKAhKiArICIrAwCgISsgAyACaiICIBBJDQALICogB7giKKMhKgJAIAYoAggiAiAGKAIARw0AIAYQQQsgBigCBCACQQN0aiAqOQMAIAYgAkEBaiIFNgIIICsgKKMgKyAEQQNGGyErAkAgBSAGKAIARw0AIAYQQQsgBigCBCAFQQN0aiArOQMAIAYgAkECajYCCCAPIA1HDQALCyAAIAYoAgg2AgggACAGKQIANwIADAMLIAcgAhBrAAsgBiABNgIMIAYgCTYCECAGIAo2AhRBACEDQQAgCyALIApLGyIFQRhsIQICQCAFQdWq1SpLDQBBACEDQQghCAJAIAJFDQAQigFBCCEDIAJBCBB9IghFDQEgBSEDCyAGQQA2AiAgBiAINgIcIAYgAzYCGCAGQQA2AiggBiAGQSBqNgIkIAYgCDYCLCAGQQxqIAZBJGoQICAGKAIYIQIgACAGKAIcIgUgBigCICANIAQQCwJAIAJFDQAgBSACQRhsQQgQdgsgBigCACICRQ0CIAYoAgQgAkEDdEEIEHYMAgsgAyACEGsAC0H7isAAQSkQbSECIABBgICAgHg2AgAgACACNgIECyAGQTBqJAAPCyASIAVBjIfAABBJAAucDAMSfwJ+AnwjAEHQAmsiBiQAAkAgAUECSQ0AQoCAgICAgICAwAAgAa0iGIAiGSAYfkKAgICAgICAgMAAUq0hGAJAAkAgAUGBIEkNACABEFshBwwBCyABIAFBAXZrIghBwAAgCEHAAEkbIQcLIBkgGHwhGCAAQWhqIQkgAEEwaiEKQQEhC0EAIQxBACEIA0BBACENQQEhDgJAIAEgDEsiD0UNACAAIAxBGGwiEGohEQJAAkAgASAMayISIAdJDQACQAJAIBJBAk8NACASIRMMAQsCQAJAAkAgESsDGCIaIBphIBErAwAiGyAbYXFFDQACQAJAAkACQCAaIBtjIhQNAEECIRMgEkECRg0HIAogEGohFUECIRMDQCAVKwMAIhsgG2EgGiAaYXFFDQYgGyAaYw0DIBVBGGohFSAbIRogEiATQQFqIhNHDQAMAgsLQQIhE0EBIRYgEkECRg0CIAogEGohFUECIRMDQCAVKwMAIhsgG2EgGiAaYXFFDQYgGyAaY0UNAiAVQRhqIRUgGyEaIBIgE0EBaiITRw0ACwsgEiETCyATIAdJDQUgFEUNBCATQQF2IhZFDQQLIAkgE0EYbGohESAAIRQDQCARIBBqIhIoAgAhFyASIBQgEGoiFSgCADYCACAVIBc2AgAgFUEEaiIXKAIAIQ0gFyASQQRqIg4oAgA2AgAgDiANNgIAIBJBCGoiFygCACENIBcgFUEIaiIOKAIANgIAIA4gDTYCACAVQQxqIhcoAgAhDSAXIBJBDGoiDigCADYCACAOIA02AgAgEkEQaiIXKAIAIQ0gFyAVQRBqIg4oAgA2AgAgDiANNgIAIBVBFGoiFSgCACEXIBUgEkEUaiISKAIANgIAIBIgFzYCACARQWhqIREgFEEYaiEUIBZBf2oiFg0ADAQLC0G0j8AAEHoAC0G0j8AAEHoAC0G0j8AAEHoACyATQQF0QQFyIQ4MAQsCQCAEDQAgEiAHIBIgB0kbQQF0IQ4MAQsgESASQSAgEkEgSRsiEiACIANBAEEAIAUQByASQQF0QQFyIQ4LIA5BAXYgDGqtIAytIhl8IBh+IAwgC0EBdmutIBl8IBh+hXmnIQ0LAkACQCAIQQJJDQAgCSAMQRhsIhJqIRMgACASaiEXA0AgBkGOAmogCEF/aiIQai0AACANSQ0BAkACQAJAAkACQCAGQQRqIBBBAnRqKAIAIhFBAXYiEiALQQF2IhVqIhYgA0sNACARIAtyQQFxRQ0BCyAAIAwgFmtBGGxqIQggEUEBcUUNAQwCCyAWQQF0IQsMAgsgCCASIAIgAyASQQFyZ0EBdEE+c0EAIAUQBwsCQCALQQFxDQAgCCASQRhsaiAVIAIgAyAVQQFyZ0EBdEE+c0EAIAUQBwsCQCAVRQ0AIBJFDQAgAyAVIBIgFSASSSIRGyIVSQ0AIAggEkEYbGohCwJAIBVBGGwiEkUNACACIAsgCCARGyAS/AoAAAsgAiASaiEVAkACQAJAAkAgEQ0AIAIhEgNAIAsrAwAiGiAaYSASKwMAIhsgG2FxRQ0CIAggCyASIBogG2MiFBsiESkDEDcDECAIIBEpAwg3AwggCCARKQMANwMAIAhBGGohCCASIBRBAXNBGGxqIhIgFUYNBCALIBRBGGxqIgsgF0cNAAwECwsgEyESAkADQCAVQWhqIhUrAwAiGiAaYSALQWhqIgsrAwAiGyAbYXFFDQEgEiALIBUgGiAbYyIRGyIUKQMQNwMQIBIgFCkDCDcDCCASIBQpAwA3AwAgFSARQRhsaiEVIAsgEUEBc0EYbGoiCyAIRg0DIBJBaGohEiAVIAJHDQAMAwsLQcyNwAAQegALQcyNwAAQegALIAshCCACIRILIBUgEmsiC0UNACAIIBIgC/wKAAALIBZBAXRBAXIhCwtBASESIBAhCCAQQQFLDQAMAgsLIAghEgsgBkGOAmogEmogDToAACAGQQRqIBJBAnRqIAs2AgACQCAPRQ0AIBJBAWohCCAOQQF2IAxqIQwgDiELDAELCyALQQFxDQAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQBwsgBkHQAmokAAviCwIQfwN8IwBBIGsiByQAAkACQCABQSFPDQAgACABIAIgAyAGEAgMAQsgAkFoaiEIAkACQAJAAkACQAJAAkACQANAAkAgBA0AIAAgASACIANBASAGEAYMCgsgACABQQN2IglBqAFsaiEKIAAgCUHgAGxqIQsCQAJAIAFBwABJDQAgACALIAogCSAGECshDAwBCyAAKwMAIhcgF2EiCSALKwMAIhggGGEiDXFFDQkgCSAKKwMAIhkgGWEiDnFFDQggACEMIBcgGGMiCSAXIBljcw0AIA0gDnFFDQcgCiALIAkgGCAZY3MbIQwLIARBf2ohBCAHIAwpAxA3AxggByAMKQMINwMQIAcgDCkDADcDCCAMIABrQRhuIQ8CQAJAAkAgBUUNACAFKwMAIhcgF2EgDCsDACIYIBhhcUUNCCAXIBhjRQ0BCyADIAFJDQZBACELIAAhCSACIAFBGGwiEGoiESENIA8hEgNAAkAgCSAAIBJBGGxqIhNPDQACQANAIAkrAwAiFyAXYSAMKwMAIhggGGFxRQ0BIAIgDUFoaiINIBcgGGMiDhsgC0EYbGoiCiAJKQMQNwMQIAogCSkDCDcDCCAKIAkpAwA3AwAgCyAOaiELIAlBGGoiCSATTw0CDAALC0HMjcAAEHoACwJAIBIgAUYNACANQWhqIg0gC0EYbGoiCiAJKQMQNwMQIAogCSkDCDcDCCAKIAkpAwA3AwAgCUEYaiEJIAEhEgwBCwsCQCALQRhsIhJFDQAgACACIBL8CgAACyABIAtrIRQCQCABIAtGDQAgACASaiEVQQAhDQJAIAEgC0EBakYNACAUQQFxIRYgFEF+cSETIAggEGohCkEAIQ0gFSEJA0AgCSAKKQMQNwMQIAkgCikDCDcDCCAJIAopAwA3AwAgCUEYaiARIA1B/v///wFzQRhsaiIOKQMANwMAIAlBIGogDikDCDcDACAJQShqIA5BEGopAwA3AwAgCkFQaiEKIAlBMGohCSATIA1BAmoiDUcNAAsgFkUNAQsgFSANQRhsaiIJIBEgDUF/c0EYbGoiCikDEDcDECAJIAopAwg3AwggCSAKKQMANwMACyALRQ0AIAEgC0kNBSAAIBJqIBQgAiADIAQgB0EIaiAGEAcgCyEBIAtBIU8NAgwBCyADIAFJDQVBACEKIAAhCSACIAFBGGwiEWoiEiENA0ACQCAJIAAgD0EYbGoiE08NAAJAA0AgDCsDACIXIBdhIAkrAwAiGCAYYXFFDQEgDUFoaiINIAIgFyAYYyIOGyAKQRhsaiILIAkpAxA3AxAgCyAJKQMINwMIIAsgCSkDADcDACAKIA5BAXNqIQogCUEYaiIJIBNPDQIMAAsLQcyNwAAQegALAkAgDyABRg0AIAIgCkEYbGoiCyAJKQMQNwMQIAsgCSkDCDcDCCALIAkpAwA3AwAgCUEYaiEJIApBAWohCiANQWhqIQ0gASEPDAELCwJAIApBGGwiCUUNACAAIAIgCfwKAAALIAEgCkYNAyABIAprIQsgACAJaiEAQQAhDgJAAkAgASAKQQFqRg0AIAtBAXEhDyALQX5xIQwgCCARaiENQQAhDiAAIQkDQCAJIA0pAxA3AxAgCSANKQMINwMIIAkgDSkDADcDACAJQRhqIBIgDkH+////AXNBGGxqIhMpAwA3AwAgCUEgaiATKQMINwMAIAlBKGogE0EQaikDADcDACANQVBqIQ0gCUEwaiEJIAwgDkECaiIORw0ACyAPRQ0BCyAAIA5BGGxqIgkgEiAOQX9zQRhsaiINKQMQNwMQIAkgDSkDCDcDCCAJIA0pAwA3AwALIAEgCkkNAkEAIQUgCyEBIAtBIU8NAQsLIAAgCyACIAMgBhAIDAgLIAogASABQfSOwAAQIgALIAAgAUEYbGpBACACIAMgBhAIDAYLQdiOwABBE0HkjsAAEE4LAAtBzI3AABB6AAtBzI3AABB6AAtBzI3AABB6AAtBzI3AABB6AAsgB0EgaiQAC/MIAg1/AnwjAEEQayIFJAACQAJAAkACQAJAAkAgAUECSQ0AAkACQCADIAFBEGpJDQBBASEGIAIgAUEBdiIHQRhsIgNqIQggACADaiEJAkACQCABQQdNDQAgACACEBcgCSAIEBdBBCEGDAELIAIgACkDEDcDECACIAApAwg3AwggAiAAKQMANwMAIAggCSkDADcDACAIIAkpAwg3AwggCCAJKQMQNwMQCyAGIAdPDQEgBkEYbCEKIAYhCwNAIAIgC0EYbCIMaiIDIAAgDGoiDCkDADcDACADIAwpAxA3AxAgAyAMKQMINwMIIAMrAwAiEiASYSINIANBaGorAwAiEyATYXFFDQgCQCASIBNjRQ0AIAUgDCkDEDcDCCAFIAwpAwg3AwAgCiEMAkADQCACIAxqIgMgA0FoaiIOKQMQNwMQIAMgDikDCDcDCCADIA4pAwA3AwACQCAMQRhHDQAgAiEDDAILIA0gA0FQaisDACITIBNhcUUNCSAMQWhqIQwgEiATYw0ACyACIAxqIQMLIAMgEjkDACADIAUpAwA3AwggAyAFKQMINwMQCyAKQRhqIQogC0EBaiILIAdHDQAMAgsLAAsCQCAGIAEgB2siD08NACAGQRhsIQtBGCEQIAghEQNAIAggBkEYbCIMaiIDIAkgDGoiDCkDADcDACADIAwpAxA3AxAgAyAMKQMINwMIIAMrAwAiEiASYiIKIANBaGorAwAiEyATYnINBwJAIBIgE2NFDQAgBSAMKQMQNwMIIAUgDCkDCDcDACAQIQ0gESEMAkADQCAMIAtqIgMgA0FoaiIOKQMQNwMQIAMgDikDCDcDCCADIA4pAwA3AwACQCALIA1HDQAgCCEDDAILIAogA0FQaisDACITIBNicg0IIA1BGGohDSAMQWhqIQwgEiATYw0ACyAMIAtqIQMLIAMgEjkDACADIAUpAwA3AwggAyAFKQMINwMQCyAQQWhqIRAgEUEYaiERIAZBAWoiBiAPRw0ACwsgCEFoaiEMIAIgAUEYbEFoaiIDaiEOIAAgA2ohAwNAIAgrAwAiEyATYSACKwMAIhIgEmFxRQ0CIAAgCCACIBMgEmMiCxsiDSkDEDcDECAAIA0pAwg3AwggACANKQMANwMAIA4rAwAiEyATYSAMKwMAIhIgEmFxRQ0DIAMgDCAOIBMgEmMiDRsiCikDEDcDECADIAopAwg3AwggAyAKKQMANwMAIANBaGohAyAAQRhqIQAgDEFoQQAgDRtqIQwgDkEAQWggDRtqIQ4gCCALQRhsaiEIIAIgC0EBc0EYbGohAiAHQX9qIgcNAAsgDEEYaiEDAkAgAUEBcUUNACAAIAIgCCACIANJIg0bIgwpAxA3AxAgACAMKQMINwMIIAAgDCkDADcDACAIIAIgA09BGGxqIQggAiANQRhsaiECCyACIANHDQQgCCAOQRhqRw0ECyAFQRBqJAAPC0G0j8AAEHoAC0G0j8AAEHoAC0G0j8AAEHoACxB8AAtBtI/AABB6AAvrBgEIfwJAAkAgASAAQQNqQXxxIgIgAGsiA0kNACABIANrIgRBAnYiBUUNACAEQQNxIQZBACEHQQAhAQJAIAIgAEYNAEEAIQhBACEBAkAgACACayIJQXxLDQBBACEIQQAhAQNAIAEgACAIaiICLAAAQb9/SmogAkEBaiwAAEG/f0pqIAJBAmosAABBv39KaiACQQNqLAAAQb9/SmohASAIQQRqIggNAAsLIAAgCGohAgNAIAEgAiwAAEG/f0pqIQEgAkEBaiECIAlBAWoiCQ0ACwsgACADaiEJAkAgBkUNACAJIARB/P///wdxaiICLAAAQb9/SiEHIAZBAUYNACAHIAIsAAFBv39KaiEHIAZBAkYNACAHIAIsAAJBv39KaiEHCyAHIAFqIQgDQCAJIQMgBUUNAiAFQcABIAVBwAFJGyIHQQNxIQYCQAJAIAdBAnQiBEHwB3EiAQ0AQQAhAgwBCyADIAFqIQBBACECIAMhAQNAIAFBDGooAgAiCUF/c0EHdiAJQQZ2ckGBgoQIcSABQQhqKAIAIglBf3NBB3YgCUEGdnJBgYKECHEgAUEEaigCACIJQX9zQQd2IAlBBnZyQYGChAhxIAEoAgAiCUF/c0EHdiAJQQZ2ckGBgoQIcSACampqaiECIAFBEGoiASAARw0ACwsgBSAHayEFIAMgBGohCSACQQh2Qf+B/AdxIAJB/4H8B3FqQYGABGxBEHYgCGohCCAGRQ0ACyADIAdB/AFxQQJ0aiICKAIAIgFBf3NBB3YgAUEGdnJBgYKECHEhAQJAIAZBAUYNACACKAIEIglBf3NBB3YgCUEGdnJBgYKECHEgAWohASAGQQJGDQAgAigCCCICQX9zQQd2IAJBBnZyQYGChAhxIAFqIQELIAFBCHZB/4EccSABQf+B/AdxakGBgARsQRB2IAhqIQgMAQsCQCABDQBBAA8LIAFBA3EhAkEAIQlBACEIAkAgAUEESQ0AIAFBfHEhBUEAIQhBACEJA0AgCCAAIAlqIgEsAABBv39KaiABQQFqLAAAQb9/SmogAUECaiwAAEG/f0pqIAFBA2osAABBv39KaiEIIAUgCUEEaiIJRw0ACyACRQ0BCyAAIAlqIQEDQCAIIAEsAABBv39KaiEIIAFBAWohASACQX9qIgINAAsLIAgL9QYBBn8CQAJAAkACQAJAAkACQAJAIABBfGoiBCgCACIFQXhxIgZBBEEIIAVBA3EiBxsgAWpJDQAgAUEnaiEIAkAgB0UNACAGIAhLDQILAkACQCACQQlJDQAgAiADEBoiAg0BQQAPC0EAIQIgA0HM/3tLDQhBECADQQtqQXhxIANBC0kbIQEgAEF4aiEIAkAgBw0AIAFBgAJJDQcgCEUNByAGIAFNDQcgBiABa0GAgAhLDQcgAA8LIAggBmohBwJAAkAgBiABTw0AIAdBACgC4JlARg0BAkAgB0EAKALcmUBGDQAgBygCBCIFQQJxDQkgBUF4cSIJIAZqIgUgAUkNCSAHIAkQHAJAIAUgAWsiB0EQSQ0AIAQgASAEKAIAQQFxckECcjYCACAIIAFqIgEgB0EDcjYCBCAIIAVqIgUgBSgCBEEBcjYCBCABIAcQFAwJCyAEIAUgBCgCAEEBcXJBAnI2AgAgCCAFaiIBIAEoAgRBAXI2AgQMCAtBACgC1JlAIAZqIgcgAUkNCAJAAkAgByABayIGQQ9LDQAgBCAFQQFxIAdyQQJyNgIAIAggB2oiASABKAIEQQFyNgIEQQAhBkEAIQEMAQsgBCABIAVBAXFyQQJyNgIAIAggAWoiASAGQQFyNgIEIAggB2oiByAGNgIAIAcgBygCBEF+cTYCBAtBACABNgLcmUBBACAGNgLUmUAMBwsgBiABayIGQQ9NDQYgBCABIAVBAXFyQQJyNgIAIAggAWoiASAGQQNyNgIEIAcgBygCBEEBcjYCBCABIAYQFAwGC0EAKALYmUAgBmoiByABSw0EDAYLAkAgAyABIAMgAUkbIgNFDQAgAiAAIAP8CgAACyAEKAIAIgNBeHEiB0EEQQggA0EDcSIDGyABakkNAiADRQ0GIAcgCE0NBkGUkcAAQS5BxJHAABBsAAtB1JDAAEEuQYSRwAAQbAALQZSRwABBLkHEkcAAEGwAC0HUkMAAQS5BhJHAABBsAAsgBCABIAVBAXFyQQJyNgIAIAggAWoiBSAHIAFrIgFBAXI2AgRBACABNgLYmUBBACAFNgLgmUALIAhFDQAgAA8LIAMQAiIBRQ0BAkAgA0F8QXggBCgCACICQQNxGyACQXhxaiICIAMgAkkbIgNFDQAgASAAIAP8CgAACyABIQILIAAQDAsgAguCBgIHfwN8IwBBEGsiBSQAAkACQAJAAkACQAJAIARBfWoOBQABAQEAAQsgA0EEdCEGQQAhBwJAIANBAXQiCEH/////AUsNACAGQfj///8HSw0AAkACQCAGDQBBCCEJQQAhCAwBCxCKAUEIIQcgBkEIEH0iCUUNAQsgBUEANgIMIAUgCTYCCCAFIAg2AgQgBEEDRg0CQQAhCkEAIQgDQCAIIAJsIQQgCEEBaiIIIAJsIANuIgYgBCADbiIHSQ0GIAYgAksNBiAGIAdrIQtEAAAAAAAAAAAhDEQAAAAAAAAAACENAkAgBiAHRg0AIAEgBkEYbGohBCABIAdBGGxqIQZEAAAAAAAAAAAhDUQAAAAAAAAAACEMA0AgDSAGKwMAoCENIAwgBkEIaisDAKAhDCAGQRhqIgYgBEcNAAsLIA0gC7ijIQ0CQCAFKAIEIAprQQFLDQAgBUEEaiAKQQJBCEEIEDEgBSgCCCEJIAUoAgwhCgsgCSAKQQN0aiIGIAw5AwggBiANOQMAIAUgCkECaiIKNgIMIAggA0cNAAwECwsgByAGEGsAC0H7isAAQSkQbSEGIABBgICAgHg2AgAgACAGNgIEDAILQQAhCkEAIQgDQCAIIAJsIQQgCEEBaiIIIAJsIANuIgYgBCADbiIHSQ0DIAYgAksNAyAGIAdrIQtEAAAAAAAAAAAhDEQAAAAAAAAAACENAkAgBiAHRg0AIAEgBkEYbGohBCABIAdBGGxqIQZEAAAAAAAAAAAhDUQAAAAAAAAAACEMA0AgDSAGKwMAoCENIAwgBkEIaisDAKAhDCAGQRhqIgYgBEcNAAsLIAwgC7giDqMhDCANIA6jIQ0CQCAFKAIEIAprQQFLDQAgBUEEaiAKQQJBCEEIEDEgBSgCCCEJIAUoAgwhCgsgCSAKQQN0aiIGIAw5AwggBiANOQMAIAUgCkECaiIKNgIMIAggA0cNAAsLIAAgBSgCDDYCCCAAIAUpAgQ3AgALIAVBEGokAA8LIAcgBiACQayNwAAQIgALoAYBBH8gAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKALcmUBHDQAgAygCBEEDcUEDRw0BQQAgADYC1JlAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBwLAkACQAJAAkACQAJAAkACQCADKAIEIgJBAnENACADQQAoAuCZQEYNAiADQQAoAtyZQEYNAyADIAJBeHEiAhAcIAEgAiAAaiIAQQFyNgIEIAEgAGogADYCACABQQAoAtyZQEcNAUEAIAA2AtSZQA8LIAMgAkF+cTYCBCABIABBAXI2AgQgASAAaiAANgIACyAAQYACSQ0EIAEgABAfQQBBACgC9JlAQX9qIgE2AvSZQCABDQZBACgCvJdAIgANAkH/HyEBDAMLQQAgATYC4JlAQQBBACgC2JlAIABqIgA2AtiZQCABIABBAXI2AgQCQCABQQAoAtyZQEcNAEEAQQA2AtSZQEEAQQA2AtyZQAsgAEEAKALsmUAiAk0NBUEAKALgmUAiAEUNBUEAKALYmUAiBEEpSQ0EQbSXwAAhAQNAAkAgASgCACIDIABLDQAgACADIAEoAgRqSQ0GCyABKAIIIQEMAAsLQQAgATYC3JlAQQBBACgC1JlAIABqIgA2AtSZQCABIABBAXI2AgQgASAAaiAANgIADwtBACEBA0AgAUEBaiEBIAAoAggiAA0ACyABQf8fIAFB/x9LGyEBC0EAIAE2AvSZQA8LAkACQEEAKALMmUAiA0EBIABBA3Z0IgJxDQBBACADIAJyNgLMmUAgAEH4AXFBxJfAAGoiACEDDAELIABB+AFxIgBBxJfAAGohAyAAQcyXwABqKAIAIQALIAMgATYCCCAAIAE2AgwgASADNgIMIAEgADYCCA8LAkACQEEAKAK8l0AiAA0AQf8fIQEMAQtBACEBA0AgAUEBaiEBIAAoAggiAA0ACyABQf8fIAFB/x9LGyEBC0EAIAE2AvSZQCAEIAJNDQBBAEF/NgLsmUALC9wFAgh/AX5BK0GAgMQAIAAoAggiBkGAgIABcSIHGyEIIAdBFXZBASABGyAFaiEJAkACQCAGQYCAgARxDQBBACECDAELAkACQCADQRBJDQAgAiADEAkhBwwBCwJAIAMNAEEAIQcMAQsgA0EDcSEKQQAhC0EAIQcCQCADQQRJDQAgA0EMcSEMQQAhC0EAIQcDQCAHIAIgC2oiDSwAAEG/f0pqIA1BAWosAABBv39KaiANQQJqLAAAQb9/SmogDUEDaiwAAEG/f0pqIQcgDCALQQRqIgtHDQALIApFDQELIAIgC2ohDQNAIAcgDSwAAEG/f0pqIQcgDUEBaiENIApBf2oiCg0ACwsgByAJaiEJCyAIQS0gARshDAJAAkAgCSAALwEMIgFPDQACQAJAAkAgBkGAgIAIcQ0AIAEgCWshCEEAIQdBACEBAkACQAJAIAZBHXZBA3EOBAIAAQACCyAIIQEMAQsgCEH+/wNxQQF2IQELIAZB////AHEhCSAAKAIEIQsgACgCACEKA0AgB0H//wNxIAFB//8DcU8NAkEBIQ0gB0EBaiEHIAogCSALKAIQEQUARQ0ADAULCyAAIAApAggiDqdBgICA/3lxQbCAgIACcjYCCEEBIQ0gACgCACIKIAAoAgQiCyAMIAIgAxBRDQNBACEHIAEgCWtB//8DcSECA0AgB0H//wNxIAJPDQJBASENIAdBAWohByAKQTAgCygCEBEFAEUNAAwECwtBASENIAogCyAMIAIgAxBRDQIgCiAEIAUgCygCDBEIAA0CQQAhByAIIAFrQf//A3EhAANAIAdB//8DcSICIABJIQ0gAiAATw0DIAdBAWohByAKIAkgCygCEBEFAEUNAAwDCwtBASENIAogBCAFIAsoAgwRCAANASAAIA43AghBAA8LQQEhDSAAKAIAIgcgACgCBCIKIAwgAiADEFENACAHIAQgBSAKKAIMEQgAIQ0LIA0L/QUDBX8CfgN8IwBB8ABrIgYkAAJAAkACQAJAIAIgBEYNAEHXi8AAQSEQba0hC0GAgICAeCEHIAZBGGohBAwBC0EAIQcCQAJAIAINAEIAIQtBgICAgHghCEQAAAAAAAAAACENQQghCUEAIQEMAQsgAkEDdCEKQQAhCCABIQQgAyEJAkACQAJAAkADQCAEKQMAQv///////////wCDQv/////////3/wBVDQEgCSkDAEL///////////8Ag0L/////////9/8AVQ0BIARBCGohBCAJQQhqIQkgAiAIQQFqIghGDQIMAAsLIAggAkkNAQtEAAAAAAAAAAAhDSACQQFGDQEgASACQX9qIgRBA3RqKwMAIAErAwChIAS4oyENDAELQaSLwABBMxBtrSELQYCAgIB4IQcgBkEYaiEEDAILQQAhBEEAIQkCQANAAkAgCiAERw0AQYCAgIB4IQgMAgsgASAEaiEIIAm4IQ4gBEEIaiEEIAlBAWohCSAIKwMAIg8gDSAOoiABKwMAoCIOoZkgD5kgDpkQaUQAAAAAAADwPxBpRAAAAAAAACA9omUNAAsQigEgCkEIEH0iBEUNAwJAIApFDQAgBCABIAr8CgAACyACrUIghiAErYQhDCACIQgLEIoBIApBCBB9IglFDQMCQCAKRQ0AIAkgAyAK/AoAAAsgASkDACELIAIhAQsgBkEANgIYIAZBEGohBAsgBCAHNgIAAkACQCAGKAIYIgRBgICAgHhHDQAgC6chBEEBIQkMAQsgBiAGKAIQNgJoIAZBBDYCZCAGIAQ2AmAgBkEANgJcIAZC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Cw8AQZqUwABB8wAgABBOAAsSAEHTlMAAQZkBQaCVwAAQTgALCQAgACABEGgPCwkAIAAgARBKDwsJACABIAAQYgALDAAgACABKQIANwMACwkAIAEgABB/AAsNACABQdCVwABBGBAQCw0AIAFBsJXAAEEgEBALBwAgABBlAAsHACAAED0ACwsAQQBBAToA+JlACwkAIABBADYCAAsGABCLAQALBwBB6JXAAAsDAA8LAwAACwuiFgIAQYCAwAAL6BUWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTE4L3NyYy9leHRlcm5yZWYucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTEvc3JjL2RsbWFsbG9jLnJzAHNyYy9saWIucnMAAAAADgMQAAoAAADSAAAAGQAAAA4DEAAKAAAA2gAAABoAAAAOAxAACgAAANoAAAA9AAAADgMQAAoAAADJAAAAHQAAAA4DEAAKAAAAqgAAABAAAAAOAxAACgAAAKoAAAAiAAAADgMQAAoAAACtAAAAIgAAAA4DEAAKAAAAFwIAABwAAAAOAxAACgAAAAsCAAAmAAAADgMQAAoAAADyAQAAKgAAAA4DEAAKAAAA+AEAACoAAAAOAxAACgAAAP4BAAAyAAAADgMQAAoAAACSAQAADwAAAA4DEAAKAAAAkgEAACwAAAAOAxAACgAAAI0BAAAPAAAADgMQAAoAAACNAQAALAAAAHNvdXJjZSBpbmRleGVzIG11c3QgYmUgZW1wdHkgb3Igbm9uZGVjcmVhc2luZ3NhbXBsZSB2YWx1ZXMgbXVzdCBiZSBmaW5pdGUgYW5kIGFkZHJlc3NhYmxlc2FtcGxlIG1ldGFkYXRhIG11c3QgYmUgZmluaXRlIGFuZCBzYW1wbGVSYXRlIHBvc2l0aXZlAA4DEAAKAAAAFgEAACQAAAAOAxAACgAAAC4CAAAwAAAADgMQAAoAAAAvAgAAHwAAAA4DEAAKAAAALwIAADUAAAAOAxAACgAAANYBAAAgAAAADgMQAAoAAACxAQAALQAAAA4DEAAKAAAAsgEAAC0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlDgMQAAoAAACaAgAAFgAAAHN0cmF0ZWd5IGRvZXMgbm90IHJldHVybiBzb3VyY2UgaW5kZXhlc3N0cmF0ZWd5IGRvZXMgbm90IHJldHVybiBhZ2dyZWdhdGUgdmFsdWVzcmVnaXN0ZXJlZCBkYXRhc2V0cyBtdXN0IGNvbnRhaW4gZmluaXRlIGNvb3JkaW5hdGVzeCBhbmQgeSBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoDgMQAAoAAAB2AQAAEgAAAA4DEAAKAAAAcwEAADwAAAAOAxAACgAAAEwCAAAcAAAADgMQAAoAAABPAgAALAAAAA4DEAAKAAAAUAIAAB0AAAAOAxAACgAAAFECAAAdAAAADgMQAAoAAABSAgAAJQAAAAEAAAAOAxAACgAAAJQAAAASAAAADgMQAAoAAACCAAAAEAAAAA4DEAAKAAAAggAAACIAAAAOAxAACgAAAIUAAAAiAAAADgMQAAoAAAABAQAAHQAAAA4DEAAKAAAAHAMAACUAAAAOAxAACgAAAEkAAABDAAAADgMQAAoAAAAtAwAADgAAAA4DEAAKAAAAJgMAACcAAABkYXRhc2V0IGhhbmRsZSB3YXMgbm90IGZvdW5kDgMQAAoAAAA/AwAAJQAAAA4DEAAKAAAACgMAACUAAAAOAxAACgAAAFEDAAAlAAAA2gEQAE8AAADfAQAAGQAAAG1pZCA+IGxlbgAAAHoBEABfAAAATQAAAB8AAAB6ARAAXwAAAEcAAAAXAAAADgMQAAoAAAB/AQAAGgAAAA4DEAAKAAAA8wAAABYAAAAOAxAACgAAAEkAAABDAAAADgMQAAoAAABJAAAAQwAAACoCEABnAAAAfAAAABEAAAAqAhAAZwAAAIkAAAARAAAABQAAAAwAAAAEAAAABgAAAAcAAAAIAAAAAAAAAAgAAAAEAAAACQAAAAoAAAALAAAADAAAAA0AAAAQAAAABAAAAA4AAAAPAAAAEAAAABEAAABtXcvWLFDrY3hBpldxG4u5FaJcVTRVB9RTeK2BUfCj92Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAOMCEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADjAhAAKgAAALcEAAANAAAAAAAAAAgAAAAEAAAAEgAAAEFjY2Vzc0Vycm9yAAUAAAAMAAAABAAAABMAAABjYXBhY2l0eSBvdmVyZmxvdwAAAJICEABQAAAAHAAAAAUAAAB9IH1jYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm91c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyABoBEABfAAAAXAMAAAUAAABSZWZDZWxsIGFscmVhZHkgbXV0YWJseSBib3Jyb3dlZFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB6JXAAAsoAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAADURARuYW1lABwbd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbS53YXNtAe1DiwEBGFJlZihTdHJpbmcpIC0+IEV4dGVybnJlZgJhPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpkbG1hbGxvYzo6RGxtYWxsb2M8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OnN5czo6U3lzdGVtPj46Om1hbGxvYwNId2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6U3RvcmVkRGF0YXNldDo6c2FtcGxlX2luZGV4ZXM6Omg2MWUzZjgxMTcwZDM3MDY3BDl3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpzb3VyY2VfaW5kZXhlczo6aDQ2ZjNjMTMyODIyNWU2NzIFS3dhdmVmb3JtX3NhbXBsaW5nX3dhc206OlN0b3JlZERhdGFzZXQ6OnNhbXBsZV9hZ2dyZWdhdGVzOjpoOThiYzBkMGNkZWQ4MmY2ZQY5Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnQ6OnNvcnQ6OmhiMGYzYWUzMDFkNTZkNDVhB0Jjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDQyMGFkOTE2NGI2NDVlM2IIWGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c21hbGxfc29ydF9nZW5lcmFsX3dpdGhfc2NyYXRjaDo6aGNmYzk3ZmQzMzIxNzQ2MWYJMmNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnN0cjo6Y291bnQ6OmRvX2NvdW50X2NoYXJzCihfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3JkbF9yZWFsbG9jCzR3YXZlZm9ybV9zYW1wbGluZ193YXNtOjphZ2dyZWdhdGU6OmhkY2UwYWY2ODJjNjRkZjNhDF88ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6ZnJlZQ02PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6Rm9ybWF0dGVyPjo6cGFkX2ludGVncmFsDjt3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpyZWdpc3Rlcl9kYXRhc2V0OjpoM2YzMzNhZDk0ZDVkYTI0MA9Cd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6cmVnaXN0ZXJfc2FtcGxlX2RhdGFzZXQ6OmhhYzNjYTBmNWUyMzNlNzhiEC08Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpGb3JtYXR0ZXI+OjpwYWQROndhdmVmb3JtX3NhbXBsaW5nX3dhc206OmNhbGN1bGF0ZV9yYW5nZTo6aGI4ZjY0N2JhZGEyYWYwOWMSImNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6d3JpdGUTO3dhdmVmb3JtX3NhbXBsaW5nX3dhc206OnZhbGlkYXRlZF9wb2ludHM6Omg5YTcxMGE2MTYxZjE1NjY3FGg8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6ZGlzcG9zZV9jaHVuaxU7d2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6ZW5kcG9pbnRzX29yX2FsbDo6aGZmNmE2YTc2YjM0YmZiYTQWPXdhdmVmb3JtX3NhbXBsaW5nX3dhc206OmZpbmRfdmlzaWJsZV9yYW5nZTo6aDVhYzhjM2I0MTU5NDIxNzIXRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDRfc3RhYmxlOjpoZTAzMTE1NjhkZDE5NTM4OBhSY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHdhdmVmb3JtX3NhbXBsaW5nX3dhc206OlN0b3JlZERhdGFzZXQ+OjpoNzUwMjgxMjc0Y2ExNmZjNhk0YWxsb2M6OnZlYzo6VmVjPFQsQT46OnJlc2l6ZV93aXRoOjpoNTY4NjEzOTQ2NGQyNzM2ZhpjPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpkbG1hbGxvYzo6RGxtYWxsb2M8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OnN5czo6U3lzdGVtPj46Om1lbWFsaWduGzRhbGxvYzo6dmVjOjpWZWM8VCxBPjo6cmVzaXplX3dpdGg6Omg0Yzc1ODgxZTExZWY5YzI0HGc8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6dW5saW5rX2NodW5rHQ5zYW1wbGVfaW5kZXhlcx4XX19leHRlcm5yZWZfdGFibGVfYWxsb2MfbTxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6ZGxtYWxsb2M6OkRsbWFsbG9jPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpzeXM6OlN5c3RlbT4+OjppbnNlcnRfbGFyZ2VfY2h1bmsgaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OmZvbGQ6OmgyYTk3YjkwYmNjNDI0NGMyIVJjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6OmhlOGU1ODA1Y2UxZGZmNjY1IjZjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpzbGljZTo6aW5kZXg6OnNsaWNlX2luZGV4X2ZhaWwjMjx1MzIgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpEaXNwbGF5Pjo6Zm10JFs8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyJRlzYW1wbGVfZGF0YXNldF9hZ2dyZWdhdGVzJhZzYW1wbGVfZGF0YXNldF9pbmRleGVzJxJmaW5kX3Zpc2libGVfcmFuZ2UoEXNhbXBsZV9hZ2dyZWdhdGVzKQ9jYWxjdWxhdGVfcmFuZ2UqOHN0ZDo6dGhyZWFkOjpsb2NhbDo6TG9jYWxLZXk8VD46OndpdGg6OmhlOTVjZWY1NTk3NjZjZTAwK0Bjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmhlMDkzZWQ3OTU3Mjg1MmE2LDhzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoNzlkNTExMzk4ZjU0Y2Y4OS04c3RkOjp0aHJlYWQ6OmxvY2FsOjpMb2NhbEtleTxUPjo6d2l0aDo6aDk4YzlkZTAxMDhhMzhlZGEufzxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3gvPHdhdmVmb3JtX3NhbXBsaW5nX3dhc206OnNhbXBsZV9hZ2dyZWdhdGVzOjpoMzljYTc4ODA2NWVhZjVkNDBwPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcl9uZXN0ZWQ6OlNwZWNGcm9tSXRlck5lc3RlZDxULEk+Pjo6ZnJvbV9pdGVyOjpoMGU0M2ZjZmRkNGE3OWFhZTFRYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhlMjEyNzkzYmI0NzAxOGYyMjFzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfd2l0aF9ob29rMzxjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdHNvcnRfbWFpbjo6aDQ1ZDRhMWQxNmJmNTAwY2I0PmFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6ZmluaXNoX2dyb3c6Omg5YzE4MjU2ODMzNmY0ZjQ4NT5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjSW5uZXI8QT46OmZpbmlzaF9ncm93OjpoNGFlNGZmNmI4ODM1YjQzOTY8PGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpSYXdWZWNJbm5lcj46OmZpbmlzaF9ncm93N3w8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnJhd192ZWM6OlJhd1ZlY0lubmVyPF8+Pjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OmFsbG9jOjpHbG9iYWw+OA9kaXNwb3NlX2RhdGFzZXQ5QWFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmhjMWFmNGJmN2VkNTQ0ZmYzOhdyZWdpc3Rlcl9zYW1wbGVfZGF0YXNldDsQcmVnaXN0ZXJfZGF0YXNldDx6PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ9PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjp7Y2xvc3VyZSMwfT4/d2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6ZGlzcG9zZV9hbGxfZGF0YXNldHM6OmgyNjcyMWYwZTFmNDY2Yjc0PxlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jQDhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMjM5YThkZWQ5ZDQ4OWIwMUE4YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDdmODZlZjE3MDY2NWUwMmZCOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6Omg4ZDcwOTIyOTI4ZWJhYTUzQzw8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpidWlsZGVyczo6RGVidWdTdHJ1Y3Q+OjpmaW5pc2hEWTxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OkFsbG9jYXRvcj46OmFsbG9jRT53YXZlZm9ybV9zYW1wbGluZ193YXNtOjpkYXRhc2V0X2luZGV4X2J5dGVzOjpoMTIxODQzZmRiMDg2ODQyNkYoX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19yZGxfZGVhbGxvY0daPGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RySDZ3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpwdXNoX3VuaXF1ZTo6aDc0NTI5MTExNmFiMzA0MjNJNWNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmlja2luZzo6cGFuaWNfYm91bmRzX2NoZWNrSi1fX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3JkbF9hbGxvY196ZXJvZWRLN3N0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19jb3VudDo6aW5jcmVhc2VMOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhjODgyMzc4NDk0ZDRhYmJlTXw8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OlN0YXRpY1N0clBheWxvYWQgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94Tixjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pY2tpbmc6OnBhbmljX2ZtdE8RX193YmluZGdlbl9tYWxsb2NQczxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXRRRDxjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkZvcm1hdHRlcj46OnBhZF9pbnRlZ3JhbDo6d3JpdGVfcHJlZml4UiFzYW1wbGVfYWdncmVnYXRlcyBtdWx0aXZhbHVlIHNoaW1TImZpbmRfdmlzaWJsZV9yYW5nZSBtdWx0aXZhbHVlIHNoaW1UHnNhbXBsZV9pbmRleGVzIG11bHRpdmFsdWUgc2hpbVUmc2FtcGxlX2RhdGFzZXRfaW5kZXhlcyBtdWx0aXZhbHVlIHNoaW1WJ3JlZ2lzdGVyX3NhbXBsZV9kYXRhc2V0IG11bHRpdmFsdWUgc2hpbVcpc2FtcGxlX2RhdGFzZXRfYWdncmVnYXRlcyBtdWx0aXZhbHVlIHNoaW1YGl9fd2JpbmRnZW5fZGVzdHJveV9jbG9zdXJlWR9jYWxjdWxhdGVfcmFuZ2UgbXVsdGl2YWx1ZSBzaGltWl48c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjp0aHJlYWQ6OmxvY2FsOjpBY2Nlc3NFcnJvciBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRlYnVnPjo6Zm10Wz9jb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c3FydF9hcHByb3hcIHJlZ2lzdGVyX2RhdGFzZXQgbXVsdGl2YWx1ZSBzaGltXThzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnRocmVhZDo6bG9jYWw6OnBhbmljX2FjY2Vzc19lcnJvcl40Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9ib3Jyb3dlZF88Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9tdXRhYmx5X2JvcnJvd2VkYCxfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpydXN0X2JlZ2luX3Vud2luZGE2PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6Rm9ybWF0dGVyPjo6ZGVidWdfc3RydWN0YiZzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbWMuYWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OmJveGVkOjpib3hfbmV3X3VuaW5pdGRyY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cHRyOjpkcm9wX2luX3BsYWNlOjo8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OkZvcm1hdFN0cmluZ1BheWxvYWQ+ZTNzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbTo6e2Nsb3N1cmUjMH1me2NvcmVbYzU5MzBjODVhMTJkZTgyMl06OnB0cjo6ZHJvcF9pbl9wbGFjZTo6PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06Om9wdGlvbjo6T3B0aW9uPGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjp2ZWM6OlZlYzx1OD4+PmdVY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cHRyOjpkcm9wX2luX3BsYWNlOjo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nPmgmX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19yZGxfYWxsb2NpBGZtYXhqBGZtaW5rLmFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpoYW5kbGVfZXJyb3JsKGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmlja2luZzo6cGFuaWNtJ1JlZihTdHJpbmcpIC0+IEV4dGVybnJlZiBleHRlcm5yZWYgc2hpbW4PX193YmluZGdlbl9mcmVlb1Y8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmFueTo6QW55Pjo6dHlwZV9pZHAzPCZzdHIgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6YW55OjpBbnk+Ojp0eXBlX2lkcTM8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpGb3JtYXR0ZXI+Ojp3cml0ZV9zdHJyKV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9yZWFsbG9jcxRfX3diaW5kZ2VuX2V4bl9zdG9yZXR3PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXR1cDxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXR2KV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9kZWFsbG9jdyVfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpydXN0X3BhbmljeFo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXR5M2FsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpjYXBhY2l0eV9vdmVyZmxvd3otY29yZVtjNTkzMGM4NWExMmRlODIyXTo6b3B0aW9uOjp1bndyYXBfZmFpbGVke0djb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pY2tpbmc6OnBhbmljX2NvbnN0OjpwYW5pY19jb25zdF9yZW1fYnlfemVyb3xOY29yZVtjNTkzMGM4NWExMmRlODIyXTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjpwYW5pY19vbl9vcmRfdmlvbGF0aW9ufSdfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3J1c3RfYWxsb2N+Ll9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9hbGxvY196ZXJvZWR/NV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9hbGxvY19lcnJvcl9oYW5kbGVygAF6PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojphc19zdHKBATJhbGxvY1szY2E1MDFlZGZmM2YwYzdjXTo6YWxsb2M6OmhhbmRsZV9hbGxvY19lcnJvcoIBWzxjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpjZWxsOjpCb3Jyb3dNdXRFcnJvciBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXSDAVg8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6Qm9ycm93RXJyb3IgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpEaXNwbGF5Pjo6Zm10hAF7c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpzeXM6OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6OjxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbTo6e2Nsb3N1cmUjMH0sICE+hQGEAXN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6c3lzOjpiYWNrdHJhY2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjo8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OntjbG9zdXJlIzB9LCAhPoYBNnN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6YWxsb2M6OmRlZmF1bHRfYWxsb2NfZXJyb3JfaG9va4cBdTxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6OlBheWxvYWQ8JnN0cj4gYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OmFzX3N0cogBLV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9zdGFydF9wYW5pY4kBOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoNzhhOGY4NDc3NzM3N2ZmMIoBPl9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9ub19hbGxvY19zaGltX2lzX3Vuc3RhYmxlX3YyiwEnX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19ydXN0X2Fib3J0BRgBARVfX3diaW5kZ2VuX2V4dGVybnJlZnMHEgEAD19fc3RhY2tfcG9pbnRlcgkRAgAHLnJvZGF0YQEFLmRhdGEAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuOTUuMCAoNTk4MDc2MTZlIDIwMjYtMDQtMTQpBndhbHJ1cwYwLjI2LjEMd2FzbS1iaW5kZ2VuEzAuMi4xMTggKDc1M2JiN2ZmNCkAlAEPdGFyZ2V0X2ZlYXR1cmVzCCsLYnVsay1tZW1vcnkrD2J1bGstbWVtb3J5LW9wdCsWY2FsbC1pbmRpcmVjdC1vdmVybG9uZysKbXVsdGl2YWx1ZSsPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50Kw9yZWZlcmVuY2UtdHlwZXMrCHNpZ24tZXh0", "" + self.location.href));
|
|
2303
|
+
const g = {
|
|
2304
|
+
__proto__: null,
|
|
2305
|
+
"./waveform_sampling_wasm_bg.js": {
|
|
2306
|
+
__proto__: null,
|
|
2307
|
+
__wbindgen_cast_0000000000000001: function(A, g) {
|
|
2308
|
+
return I = A, function(A, g) {
|
|
2309
|
+
return r += g, r >= 2146435072 && (s = new TextDecoder("utf-8", {
|
|
2310
|
+
ignoreBOM: !0,
|
|
2311
|
+
fatal: !0
|
|
2312
|
+
}), s.decode(), r = g), s.decode((null !== e && 0 !== e.byteLength || (e = new Uint8Array(o.memory.buffer)), e).subarray(A, A + g));
|
|
2313
|
+
}(I >>>= 0, g);
|
|
2314
|
+
var I;
|
|
2315
|
+
},
|
|
2316
|
+
__wbindgen_init_externref_table: function() {
|
|
2317
|
+
const A = o.__wbindgen_externrefs, g = A.grow(4);
|
|
2318
|
+
A.set(0, void 0), A.set(g + 0, void 0), A.set(g + 1, null), A.set(g + 2, !0), A.set(g + 3, !1);
|
|
2319
|
+
}
|
|
2320
|
+
}
|
|
2321
|
+
};
|
|
2322
|
+
("string" == typeof A || "function" == typeof Request && A instanceof Request || "function" == typeof URL && A instanceof URL) && (A = fetch(A));
|
|
2323
|
+
const { instance: I, module: Q } = await async function(A, g) {
|
|
2324
|
+
if ("function" == typeof Response && A instanceof Response) {
|
|
2325
|
+
if ("function" == typeof WebAssembly.instantiateStreaming) try {
|
|
2326
|
+
return await WebAssembly.instantiateStreaming(A, g);
|
|
2327
|
+
} catch (I) {
|
|
2328
|
+
if (!A.ok || !function(A) {
|
|
2329
|
+
switch (A) {
|
|
2330
|
+
case "basic":
|
|
2331
|
+
case "cors":
|
|
2332
|
+
case "default": return !0;
|
|
2333
|
+
}
|
|
2334
|
+
return !1;
|
|
2335
|
+
}(A.type) || "application/wasm" === A.headers.get("Content-Type")) throw I;
|
|
2336
|
+
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", I);
|
|
2337
|
+
}
|
|
2338
|
+
const Q = await A.arrayBuffer();
|
|
2339
|
+
return await WebAssembly.instantiate(Q, g);
|
|
2340
|
+
}
|
|
2341
|
+
{
|
|
2342
|
+
const I = await WebAssembly.instantiate(A, g);
|
|
2343
|
+
return I instanceof WebAssembly.Instance ? {
|
|
2344
|
+
instance: I,
|
|
2345
|
+
module: A
|
|
2346
|
+
} : I;
|
|
2347
|
+
}
|
|
2348
|
+
}(await A, g);
|
|
2349
|
+
return function(A) {
|
|
2350
|
+
return o = A.exports, t = null, B = null, e = null, o.__wbindgen_start(), o;
|
|
2351
|
+
}(I);
|
|
2352
|
+
}(void 0)).then(() => {}), c).then(() => {
|
|
2353
|
+
QQ.setWasmBackend(function() {
|
|
2354
|
+
const Q = (A) => {
|
|
2355
|
+
const g = new Float64Array(A.length / 2), I = new Float64Array(A.length / 2);
|
|
2356
|
+
for (let Q = 0; Q < g.length; Q += 1) g[Q] = A[2 * Q], I[Q] = A[2 * Q + 1];
|
|
2357
|
+
return {
|
|
2358
|
+
kind: "aggregates",
|
|
2359
|
+
x: g,
|
|
2360
|
+
y: I
|
|
2361
|
+
};
|
|
2362
|
+
};
|
|
2363
|
+
return {
|
|
2364
|
+
kind: "wasm",
|
|
2365
|
+
sample({ x: A, y: t, strategy: C, targetPointCount: B }) {
|
|
2366
|
+
const i = {
|
|
2367
|
+
x: A,
|
|
2368
|
+
y: t,
|
|
2369
|
+
strategy: C,
|
|
2370
|
+
targetPointCount: B
|
|
2371
|
+
};
|
|
2372
|
+
l(i);
|
|
2373
|
+
const e = (s = i.targetPointCount, 0 === (r = i.x.length) ? 0 : Number.isFinite(s) ? Math.min(r, Math.max(1, Math.floor(s))) : r);
|
|
2374
|
+
var s, r;
|
|
2375
|
+
if ("average" !== i.strategy && "sum" !== i.strategy) return {
|
|
2376
|
+
kind: "source-indexes",
|
|
2377
|
+
sourceIndexes: g(i.x, i.y, h[i.strategy], e)
|
|
2378
|
+
};
|
|
2379
|
+
const c = function(A, g, Q, t) {
|
|
2380
|
+
const C = n(A, o.__wbindgen_malloc), B = a, i = n(g, o.__wbindgen_malloc), e = a, s = o.sample_aggregates(C, B, i, e, Q, t);
|
|
2381
|
+
if (s[3]) throw E(s[2]);
|
|
2382
|
+
var r = I(s[0], s[1]).slice();
|
|
2383
|
+
return o.__wbindgen_free(s[0], 8 * s[1], 8), r;
|
|
2384
|
+
}(i.x, i.y, h[i.strategy], e);
|
|
2385
|
+
return Q(c);
|
|
2386
|
+
},
|
|
2387
|
+
registerDataset: (A, g, I) => (l({
|
|
2388
|
+
x: A,
|
|
2389
|
+
y: g,
|
|
2390
|
+
strategy: "peak",
|
|
2391
|
+
targetPointCount: A.length
|
|
2392
|
+
}), function(A, g, I) {
|
|
2393
|
+
const Q = n(A, o.__wbindgen_malloc), t = a, C = n(g, o.__wbindgen_malloc), B = a, i = o.register_dataset(Q, t, C, B, I);
|
|
2394
|
+
if (i[2]) throw E(i[1]);
|
|
2395
|
+
return i[0] >>> 0;
|
|
2396
|
+
}(A, g, Math.max(0, Math.min(4294967295, Math.floor(I ?? 8388608))))),
|
|
2397
|
+
registerSamples: (A, g, I, Q, t) => function(A, g, I, Q, t) {
|
|
2398
|
+
const C = n(A, o.__wbindgen_malloc), B = a, e = function(A, g) {
|
|
2399
|
+
const I = g(4 * A.length, 4) >>> 0;
|
|
2400
|
+
return i().set(A, I / 4), a = A.length, I;
|
|
2401
|
+
}(g, o.__wbindgen_malloc), s = a, r = o.register_sample_dataset(C, B, e, s, I, Q, t);
|
|
2402
|
+
if (r[2]) throw E(r[1]);
|
|
2403
|
+
return r[0] >>> 0;
|
|
2404
|
+
}(A, g ?? /* @__PURE__ */ new Uint32Array(), I, Q, Math.max(0, Math.min(4294967295, Math.floor(t ?? 8388608)))),
|
|
2405
|
+
disposeDataset(A) {
|
|
2406
|
+
(function(A) {
|
|
2407
|
+
o.dispose_dataset(A);
|
|
2408
|
+
})(A);
|
|
2409
|
+
},
|
|
2410
|
+
disposeAllDatasets() {
|
|
2411
|
+
o.dispose_all_datasets();
|
|
2412
|
+
},
|
|
2413
|
+
datasetIndexBytes: (A) => function(A) {
|
|
2414
|
+
return o.dataset_index_bytes(A) >>> 0;
|
|
2415
|
+
}(A),
|
|
2416
|
+
sampleDataset(g, t, C, B, i) {
|
|
2417
|
+
const e = Math.max(0, Math.floor(i));
|
|
2418
|
+
return "average" === B || "sum" === B ? Q(function(A, g, Q, t, C) {
|
|
2419
|
+
const B = o.sample_dataset_aggregates(A, g, Q, t, C);
|
|
2420
|
+
if (B[3]) throw E(B[2]);
|
|
2421
|
+
var i = I(B[0], B[1]).slice();
|
|
2422
|
+
return o.__wbindgen_free(B[0], 8 * B[1], 8), i;
|
|
2423
|
+
}(g, t, C, h[B], e)) : {
|
|
2424
|
+
kind: "source-indexes",
|
|
2425
|
+
sourceIndexes: A(g, t, C, h[B], e)
|
|
2426
|
+
};
|
|
2427
|
+
}
|
|
2428
|
+
};
|
|
2429
|
+
}());
|
|
2430
|
+
}).catch((A) => {
|
|
2431
|
+
CQ = A instanceof Error ? A.message : String(A);
|
|
2432
|
+
}), await tQ);
|
|
2433
|
+
}(), BQ.postMessage("sample-viewport-response" === (C = QQ.handle(Q.data)).type && CQ ? {
|
|
2434
|
+
...C,
|
|
2435
|
+
workerError: CQ
|
|
2436
|
+
} : C);
|
|
2437
|
+
} catch (D) {
|
|
2438
|
+
BQ.postMessage({
|
|
2439
|
+
type: "request-error",
|
|
2440
|
+
requestId: Q.data.requestId,
|
|
2441
|
+
message: D instanceof Error ? D.message : String(D)
|
|
2442
|
+
});
|
|
2443
|
+
}
|
|
2444
|
+
var C, u;
|
|
2445
|
+
};
|
|
2446
|
+
})();
|