@datagrok-libraries/statistics 1.2.5 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/confidence-intervals.js +5 -5
- package/src/correlation-coefficient.d.ts.map +1 -1
- package/src/correlation-coefficient.js +5 -9
- package/src/fit/fit-data.d.ts +1 -1
- package/src/fit/fit-data.d.ts.map +1 -1
- package/src/fit/fit-data.js +5 -5
- package/src/multiple-tests.d.ts.map +1 -1
- package/src/multiple-tests.js +10 -21
- package/src/tests.d.ts +1 -1
- package/src/tests.d.ts.map +1 -1
- package/src/tests.js +27 -30
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -8,9 +8,9 @@ import * as jStat from 'jstat';
|
|
|
8
8
|
*/
|
|
9
9
|
export function getConfidence(x, confidenceLevel = 0.05, parametric = true) {
|
|
10
10
|
if (x.length <= 1)
|
|
11
|
-
throw
|
|
11
|
+
throw new Error('StatisticsError: Vector is too short');
|
|
12
12
|
if (confidenceLevel >= 1 || confidenceLevel <= 0)
|
|
13
|
-
throw
|
|
13
|
+
throw new Error('StatisticsError: Incorrect confidence level');
|
|
14
14
|
if (parametric) {
|
|
15
15
|
const average = jStat.mean(x);
|
|
16
16
|
//true flag is obligatory for sample variance
|
|
@@ -20,7 +20,7 @@ export function getConfidence(x, confidenceLevel = 0.05, parametric = true) {
|
|
|
20
20
|
const res = {
|
|
21
21
|
central: average,
|
|
22
22
|
top: average + interval,
|
|
23
|
-
bottom: average - interval
|
|
23
|
+
bottom: average - interval,
|
|
24
24
|
};
|
|
25
25
|
return res;
|
|
26
26
|
}
|
|
@@ -28,9 +28,9 @@ export function getConfidence(x, confidenceLevel = 0.05, parametric = true) {
|
|
|
28
28
|
const res = {
|
|
29
29
|
central: jStat.median(x),
|
|
30
30
|
top: jStat.percentile(x, 1 - confidenceLevel / 2),
|
|
31
|
-
bottom: jStat.percentile(x, confidenceLevel / 2)
|
|
31
|
+
bottom: jStat.percentile(x, confidenceLevel / 2),
|
|
32
32
|
};
|
|
33
33
|
return res;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlkZW5jZS1pbnRlcnZhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25maWRlbmNlLWludGVydmFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFRL0I7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVcsRUFBRSxrQkFBMEIsSUFBSSxFQUFFLGFBQXNCLElBQUk7SUFFbkcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFFMUQsSUFBSSxlQUFlLElBQUcsQ0FBQyxJQUFJLGVBQWUsSUFBRyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUVqRSxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsNkNBQTZDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLG9EQUFvRDtRQUNwRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZUFBZSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRyxNQUFNLEdBQUcsR0FBYztZQUNyQixPQUFPLEVBQUUsT0FBTztZQUNoQixHQUFHLEVBQUUsT0FBTyxHQUFHLFFBQVE7WUFDdkIsTUFBTSxFQUFFLE9BQU8sR0FBRyxRQUFRO1NBQzNCLENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQztLQUNaO1NBQU07UUFDTCxNQUFNLEdBQUcsR0FBYztZQUNyQixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLEdBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxlQUFlLEdBQUMsQ0FBQyxDQUFDO1NBQy9DLENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQztLQUNaO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcblxuZXhwb3J0IHR5cGUgQ29uZmlkZW5jZSA9IHtcbiAgY2VudHJhbDogbnVtYmVyLFxuICB0b3A6IG51bWJlcixcbiAgYm90dG9tOiBudW1iZXJcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcltdfSB4IG9ic2VydmF0aW9ucyB2ZWN0b3IuXG4gKiBAcGFyYW0ge251bWJlcn0gY29uZmlkZW5jZUxldmVsIDAuMDUgbWVhbnMgdGhhdCA5NSUgb2Ygb2JzZXJ2YXRpb25zIGVudGVyIHRoZSBpbnRlcnZhbC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcGFyYW1ldHJpYyBzeW1tZXRyaWMgcGFyYW1ldHJpYyBpbnRlcnZhbCBpZiB0cnVlLCBzYW1wbGUgcXVpbnRpbGVzIGlmIGZhbHNlLlxuICogQHJldHVybiB7Q29uZmlkZW5jZX0gT2JqZWN0IGNvbnRhaW5pbmcgY2VudHJhbCB0ZW5kZW5jeSBlc3RpbWF0ZSBhbmQgdG9wIGFuZCBib3R0b20gb2YgaHQgaW50ZXJ2YWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWRlbmNlKHg6IG51bWJlcltdLCBjb25maWRlbmNlTGV2ZWw6IG51bWJlciA9IDAuMDUsIHBhcmFtZXRyaWM6IGJvb2xlYW4gPSB0cnVlKTpcbiAgQ29uZmlkZW5jZSB7XG4gIGlmICh4Lmxlbmd0aCA8PSAxKVxuICAgIHRocm93IG5ldyBFcnJvcignU3RhdGlzdGljc0Vycm9yOiBWZWN0b3IgaXMgdG9vIHNob3J0Jyk7XG5cbiAgaWYgKGNvbmZpZGVuY2VMZXZlbCA+PTEgfHwgY29uZmlkZW5jZUxldmVsIDw9MClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRpc3RpY3NFcnJvcjogSW5jb3JyZWN0IGNvbmZpZGVuY2UgbGV2ZWwnKTtcblxuICBpZiAocGFyYW1ldHJpYykge1xuICAgIGNvbnN0IGF2ZXJhZ2UgPSBqU3RhdC5tZWFuKHgpO1xuICAgIC8vdHJ1ZSBmbGFnIGlzIG9ibGlnYXRvcnkgZm9yIHNhbXBsZSB2YXJpYW5jZVxuICAgIGNvbnN0IHNpZ21hID0galN0YXQuc3RkZXYoeCwgdHJ1ZSk7XG4gICAgLy9kZWdyZWVzIG9mIGZyZWVkb20gYXMgbi0xIGZvciBzdHVkZW50IGRpc3RyaWJ1dGlvblxuICAgIGNvbnN0IGludGVydmFsID0galN0YXQuc3R1ZGVudHQuaW52KDEgLSBjb25maWRlbmNlTGV2ZWwvMiwgeC5sZW5ndGggLSAxKSpzaWdtYS9NYXRoLnNxcnQoeC5sZW5ndGgpO1xuXG4gICAgY29uc3QgcmVzOkNvbmZpZGVuY2UgPSB7XG4gICAgICBjZW50cmFsOiBhdmVyYWdlLFxuICAgICAgdG9wOiBhdmVyYWdlICsgaW50ZXJ2YWwsXG4gICAgICBib3R0b206IGF2ZXJhZ2UgLSBpbnRlcnZhbCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZXM6Q29uZmlkZW5jZSA9IHtcbiAgICAgIGNlbnRyYWw6IGpTdGF0Lm1lZGlhbih4KSxcbiAgICAgIHRvcDogalN0YXQucGVyY2VudGlsZSh4LCAxIC0gY29uZmlkZW5jZUxldmVsLzIpLFxuICAgICAgYm90dG9tOiBqU3RhdC5wZXJjZW50aWxlKHgsIGNvbmZpZGVuY2VMZXZlbC8yKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlation-coefficient.d.ts","sourceRoot":"","sources":["correlation-coefficient.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,iDAAiD,CAAC;AAuDxE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"correlation-coefficient.d.ts","sourceRoot":"","sources":["correlation-coefficient.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,iDAAiD,CAAC;AAuDxE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CA+B7D"}
|
|
@@ -73,20 +73,16 @@ export function kendallsTau(x, y) {
|
|
|
73
73
|
// neither array has a tie
|
|
74
74
|
n1 = n1 + 1;
|
|
75
75
|
n2 = n2 + 1;
|
|
76
|
-
if (aa > 0)
|
|
76
|
+
if (aa > 0)
|
|
77
77
|
iss = iss + 1;
|
|
78
|
-
|
|
79
|
-
else {
|
|
78
|
+
else
|
|
80
79
|
iss = iss - 1;
|
|
81
|
-
}
|
|
82
80
|
}
|
|
83
81
|
else {
|
|
84
|
-
if (a1)
|
|
82
|
+
if (a1)
|
|
85
83
|
n1 = n1 + 1;
|
|
86
|
-
|
|
87
|
-
if (a2) {
|
|
84
|
+
if (a2)
|
|
88
85
|
n2 = n2 + 1;
|
|
89
|
-
}
|
|
90
86
|
}
|
|
91
87
|
}
|
|
92
88
|
}
|
|
@@ -96,4 +92,4 @@ export function kendallsTau(x, y) {
|
|
|
96
92
|
const prob = erfc(Math.abs(z) / 1.4142136);
|
|
97
93
|
return { test: tau, z: z, prob: prob };
|
|
98
94
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24tY29lZmZpY2llbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb3JyZWxhdGlvbi1jb2VmZmljaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Ozs7O0dBTUc7QUFDSCxTQUFTLEdBQUcsQ0FBQyxDQUFTO0lBQ3BCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUI7UUFDNUUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQjtRQUNoRSxrQkFBa0IsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsaUJBQWlCO1FBQzNELGlCQUFpQixFQUFFLGVBQWUsRUFBRSxDQUFDLGVBQWU7UUFDcEQsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDLGNBQWM7UUFDL0MsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVk7UUFDNUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVc7UUFDdkMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFDakMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUTtRQUM5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNYLElBQUksQ0FBQyxHQUFXLENBQUMsQ0FBQztJQUFDLElBQUksRUFBRSxHQUFXLENBQUMsQ0FBQztJQUFDLElBQUksR0FBRyxHQUFXLENBQUMsQ0FBQztJQUFDLElBQUksR0FBRyxHQUFXLENBQUMsQ0FBQztJQUVoRixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDVCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFD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QUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQge09wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQge09wdGlvbnN9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBmdW5jdGlvbiBlcmYoeCkuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggQW4gYXJndW1lbnQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSByZXN1bHQuXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vanN0YXQvanN0YXQvYmxvYi82NWNlMDk2YTk5Zjc1M2Q2YTIyNDgyZTVlNzRhY2NiZmMxYzMzNzY3L2Rpc3QvanN0YXQuanMjTDE1NjJcbiAqL1xuZnVuY3Rpb24gZXJmKHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGNvZiA9IFstMS4zMDI2NTM3MTk3ODE3MDk0LCA2LjQxOTY5NzkyMzU2NDkwMjZlLTEsIDEuOTQ3NjQ3MzIwNDE4NTgzNmUtMixcbiAgICAtOS41NjE1MTQ3ODY4MDg2MzFlLTMsIC05LjQ2NTk1MzQ0NDgyMDM2ZS00LCAzLjY2ODM5NDk3ODUyNzYxZS00LFxuICAgIDQuMjUyMzMyNDgwNjkwN2UtNSwgLTIuMDI3ODU3ODExMjUzNGUtNSwgLTEuNjI0MjkwMDA0NjQ3ZS02LFxuICAgIDEuMzAzNjU1ODM1NTgwZS02LCAxLjU2MjY0NDE3MjJlLTgsIC04LjUyMzgwOTU5MTVlLTgsXG4gICAgNi41MjkwNTQ0MzllLTksIDUuMDU5MzQzNDk1ZS05LCAtOS45MTM2NDE1NmUtMTAsXG4gICAgLTIuMjczNjUxMjJlLTEwLCA5LjY0Njc5MTFlLTExLCAyLjM5NDAzOGUtMTIsXG4gICAgLTYuODg2MDI3ZS0xMiwgOC45NDQ4N2UtMTMsIDMuMTMwOTJlLTEzLFxuICAgIC0xLjEyNzA4ZS0xMywgMy44MWUtMTYsIDcuMTA2ZS0xNSxcbiAgICAtMS41MjNlLTE1LCAtOS40ZS0xNywgMS4yMWUtMTYsXG4gICAgLTIuOGUtMTddO1xuICBsZXQgaiA9IGNvZi5sZW5ndGggLSAxO1xuICBsZXQgaXNuZWcgPSBmYWxzZTtcbiAgbGV0IGQgPSAwO1xuICBsZXQgZGQgPSAwO1xuICBsZXQgdDogbnVtYmVyID0gMDsgbGV0IHR5OiBudW1iZXIgPSAwOyBsZXQgdG1wOiBudW1iZXIgPSAwOyBsZXQgcmVzOiBudW1iZXIgPSAwO1xuXG4gIGlmICh4IDwgMCkge1xuICAgIHggPSAteDtcbiAgICBpc25lZyA9IHRydWU7XG4gIH1cblxuICB0ID0gMiAvICgyICsgeCk7XG4gIHR5ID0gNCAqIHQgLSAyO1xuXG4gIGZvciAoOyBqID4gMDsgai0tKSB7XG4gICAgdG1wID0gZDtcbiAgICBkID0gdHkgKiBkIC0gZGQgKyBjb2Zbal07XG4gICAgZGQgPSB0bXA7XG4gIH1cblxuICByZXMgPSB0ICogTWF0aC5leHAoLXggKiB4ICsgMC41ICogKGNvZlswXSArIHR5ICogZCkgLSBkZCk7XG4gIHJldHVybiBpc25lZyA/IHJlcyAtIDEgOiAxIC0gcmVzO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNvbXBsbWVudGFyeSBlcnJvciBmdW5jdGlvbiBlcmZjKHgpXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggQW4gYXJndW1lbnQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSByZXN1bHQuXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vanN0YXQvanN0YXQvYmxvYi82NWNlMDk2YTk5Zjc1M2Q2YTIyNDgyZTVlNzRhY2NiZmMxYzMzNzY3L2Rpc3QvanN0YXQuanMjTDE1OTlcbiAqL1xuZnVuY3Rpb24gZXJmYyh4OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gMSAtIGVyZih4KTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIEtlbmRhbGwncyB0YXUsIGEgY29ycmVsYXRpb24gbWVhc3VyZSBmb3Igb3JkaW5hbCBkYXRhLCBhbmQgYW4gYXNzb2NpYXRlZCBwLXZhbHVlLlxuICogUmV0dXJuczogS2VuZGFsbCdzIHRhdSwgdHdvLXRhaWxlZCBwLXZhbHVlLlxuICogRGVyaXZlZCBmcm9tIG9sZGVyIFNjaVB5OiBodHRwOi8vd2ViLm1pdC5lZHUvNi44NjMvc3ByaW5nMjAxMS9wYWNrYWdlcy9zY2lweV9zcmMvc2NpcHkvc3RhdHMvc3RhdHMucHlcbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcltdfSB4IFRoZSBmaXJzdCBhcnJheS5cbiAqIEBwYXJhbSB7bnVtYmVyW119IHkgVGhlIHNlY29uZCBhcnJheS5cbiAqIEByZXR1cm4ge09wdGlvbnN9IFRoZSByZXN1bHQuXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vcGRmZXJuaG91dC9uYXJyYWZpcm1hL2Jsb2IvXG4gKiBjOWMxMjJkNTc3YTRiODg2OGNlNjAzYmFkYWJiYjdkMTBmNDU3NDBjL3dlYmFwcC9zb3VyY2Uvc3RhdGlzdGljcy9rZW5kYWxsc1RhdS50cyNMOFxuICovXG5leHBvcnQgZnVuY3Rpb24ga2VuZGFsbHNUYXUoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogT3B0aW9ucyB7XG4gIGxldCBuMSA9IDA7XG4gIGxldCBuMiA9IDA7XG4gIGxldCBpc3MgPSAwO1xuICBmb3IgKGxldCBqID0gMDsgaiA8IHgubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgZm9yIChsZXQgayA9IGogKyAxOyBrIDwgeS5sZW5ndGg7IGsrKykge1xuICAgICAgY29uc3QgYTEgPSB4W2pdIC0geFtrXTtcbiAgICAgIGNvbnN0IGEyID0geVtqXSAtIHlba107XG4gICAgICBjb25zdCBhYSA9IGExICogYTI7XG4gICAgICBpZiAoYWEpIHtcbiAgICAgICAgLy8gbmVpdGhlciBhcnJheSBoYXMgYSB0aWVcbiAgICAgICAgbjEgPSBuMSArIDE7XG4gICAgICAgIG4yID0gbjIgKyAxO1xuICAgICAgICBpZiAoYWEgPiAwKVxuICAgICAgICAgIGlzcyA9IGlzcyArIDE7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpc3MgPSBpc3MgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGExKVxuICAgICAgICAgIG4xID0gbjEgKyAxO1xuXG4gICAgICAgIGlmIChhMilcbiAgICAgICAgICBuMiA9IG4yICsgMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgdGF1ID0gaXNzIC8gTWF0aC5zcXJ0KG4xICogbjIpO1xuICBjb25zdCBzdmFyID0gKDQuMCAqIHgubGVuZ3RoICsgMTAuMCkgLyAoOS4wICogeC5sZW5ndGggKiAoeC5sZW5ndGggLSAxKSk7XG4gIGNvbnN0IHogPSB0YXUgLyBNYXRoLnNxcnQoc3Zhcik7XG4gIGNvbnN0IHByb2IgPSBlcmZjKE1hdGguYWJzKHopIC8gMS40MTQyMTM2KTtcbiAgcmV0dXJuIHt0ZXN0OiB0YXUsIHo6IHosIHByb2I6IHByb2J9O1xufVxuIl19
|
package/src/fit/fit-data.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare type LogOptions = {
|
|
|
7
7
|
/** Creates default {@link IFitChartData} object */
|
|
8
8
|
export declare function createDefaultChartData(): IFitChartData;
|
|
9
9
|
/** Returns existing, or creates new column default chart options. */
|
|
10
|
-
export declare function getColumnChartOptions(
|
|
10
|
+
export declare function getColumnChartOptions(column: DG.Column): IFitChartData;
|
|
11
11
|
/** Returns points arrays from {@link IFitPoint} array */
|
|
12
12
|
export declare function getPointsArrays(points: IFitPoint[]): {
|
|
13
13
|
xs: number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-data.d.ts","sourceRoot":"","sources":["fit-data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAKL,WAAW,EAEX,aAAa,EACb,sBAAsB,EACtB,QAAQ,EAER,SAAS,EACT,aAAa,EACb,UAAU,EAMX,MAAM,aAAa,CAAC;AAErB,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B,CAAC;AAcF,mDAAmD;AACnD,wBAAgB,sBAAsB,IAAI,aAAa,CAKtD;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"fit-data.d.ts","sourceRoot":"","sources":["fit-data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAKL,WAAW,EAEX,aAAa,EACb,sBAAsB,EACtB,QAAQ,EAER,SAAS,EACT,aAAa,EACb,UAAU,EAMX,MAAM,aAAa,CAAC;AAErB,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B,CAAC;AAcF,mDAAmD;AACnD,wBAAgB,sBAAsB,IAAI,aAAa,CAKtD;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,aAAa,CAEtE;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG;IAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,CAQjF;AA4DD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,EAAE,CAAC,IAAI,CAahE;AAED,kCAAkC;AAClC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAEpE;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAExF;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAMrG;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAClF,cAAc,EAAE,OAAO,GAAG,sBAAsB,CAOjD;AAED,gCAAgC;AAChC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa,CAM3F"}
|
package/src/fit/fit-data.js
CHANGED
|
@@ -19,10 +19,10 @@ export function createDefaultChartData() {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
/** Returns existing, or creates new column default chart options. */
|
|
22
|
-
export function getColumnChartOptions(
|
|
22
|
+
export function getColumnChartOptions(column) {
|
|
23
23
|
var _a;
|
|
24
24
|
var _b;
|
|
25
|
-
return (_a = (_b =
|
|
25
|
+
return JSON.parse((_a = (_b = column.tags)[TAG_FIT]) !== null && _a !== void 0 ? _a : (_b[TAG_FIT] = JSON.stringify(createDefaultChartData())));
|
|
26
26
|
}
|
|
27
27
|
/** Returns points arrays from {@link IFitPoint} array */
|
|
28
28
|
export function getPointsArrays(points) {
|
|
@@ -77,11 +77,11 @@ function changeBounds(bounds, chartOptions) {
|
|
|
77
77
|
}
|
|
78
78
|
if (chartOptions.maxX !== undefined && chartOptions.maxX > 0)
|
|
79
79
|
width += chartOptions.maxX - (x + width);
|
|
80
|
-
if (chartOptions.minY !== undefined) {
|
|
80
|
+
if (chartOptions.minY !== undefined && chartOptions.minY > 0) {
|
|
81
81
|
height += y - chartOptions.minY;
|
|
82
82
|
y = chartOptions.minY;
|
|
83
83
|
}
|
|
84
|
-
if (chartOptions.maxY !== undefined)
|
|
84
|
+
if (chartOptions.maxY !== undefined && chartOptions.maxY > 0)
|
|
85
85
|
height += chartOptions.maxY - (y + height);
|
|
86
86
|
return new DG.Rect(x, y, width, height);
|
|
87
87
|
}
|
|
@@ -134,4 +134,4 @@ export function getSeriesStatistics(series, fitFunc) {
|
|
|
134
134
|
series.parameters = fitSeries(series, fitFunc).parameters;
|
|
135
135
|
return getStatistics(data, series.parameters, fitFunc.y, true);
|
|
136
136
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLE9BQU8sRUFDUCwyQkFBMkIsRUFDM0IsYUFBYSxFQUViLGNBQWMsRUFJZCxzQkFBc0IsRUFJdEIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixPQUFPLEdBR1IsTUFBTSxhQUFhLENBQUM7QUFRckIsaUZBQWlGO0FBQ2pGLFNBQVMsb0JBQW9CLENBQUMsVUFBeUI7SUFDckQsTUFBTSxDQUFDLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLEtBQUssTUFBTSxDQUFDLElBQUksVUFBVSxFQUFFO1FBQzFCLElBQUksQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztLQUM5QjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELHFIQUFxSDtBQUNySCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPO1FBQ0wsWUFBWSxFQUFFLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDO1FBQzFELGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUscUJBQXFCLENBQUMsVUFBeUI7OztJQUM3RCxtQkFBTyxVQUFVLENBQUMsSUFBSSxFQUFDLE9BQU8sd0NBQVAsT0FBTyxJQUFNLHNCQUFzQixFQUFFLEVBQUM7QUFDL0QsQ0FBQztBQUVELHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQW1CO0lBQ2pELE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztJQUN4QixNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDckI7SUFDRCxPQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSxTQUFTLGVBQWUsQ0FBQyxJQUFnQztJQUN2RCxNQUFNLFlBQVksR0FBK0IsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUNoRSxNQUFNLGFBQWEsR0FBK0IsRUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7SUFDbkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELFNBQVM7U0FDVjtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkgsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0I7SUFFRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsaURBQWlEO0FBQ2pELFNBQVMsc0JBQXNCLENBQUMsVUFBMEI7SUFDeEQsSUFBSSxVQUFVLEVBQUU7UUFDZCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEtBQUssU0FBUztZQUM5QixVQUFVLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksVUFBVSxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDaEMsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xEO0tBQ0Y7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsTUFBZSxFQUFFLFlBQThCO0lBQ25FLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqQixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFM0IsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtRQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7S0FDdkI7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMxRCxLQUFLLElBQUksWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNoQyxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztLQUN2QjtJQUNELElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxTQUFTO1FBQ2pDLE1BQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBRTdDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUF3Qjs7SUFDckQsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNqQyxJQUFJLENBQUMsQ0FBQSxNQUFBLFNBQVMsQ0FBQyxNQUFNLDBDQUFFLE1BQU0sQ0FBQSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDNUQsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDSCxNQUFNLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUMsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3RCxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyRDtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDN0M7QUFDSCxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFrQjtJQUNyRCxPQUFPLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxXQUFZLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsa0dBQWtHO0FBQ2xHLE1BQU0sVUFBVSxRQUFRLENBQUMsTUFBa0IsRUFBRSxPQUFvQjtJQUMvRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFXLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBa0IsRUFBRSxPQUFvQixFQUFFLFVBQXVCO0lBQ3pGLE1BQU0sSUFBSSxHQUFHLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0lBQ25HLElBQUksTUFBTSxDQUFDLGVBQWUsS0FBSSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsSUFBSSxDQUFBO1FBQzVDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakcsQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsTUFBa0IsRUFBRSxPQUFvQixFQUNsRixjQUF1QjtJQUN2QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ2xHLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUNwQixNQUFNLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzVELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQWtCLEVBQUUsT0FBb0I7SUFDMUUsTUFBTSxJQUFJLEdBQUcsRUFBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3BCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDNUQsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7XG4gIEZpdEVycm9yTW9kZWwsXG4gIGZpdERhdGEsXG4gIGdldEN1cnZlQ29uZmlkZW5jZUludGVydmFscyxcbiAgZ2V0U3RhdGlzdGljcyxcbiAgRml0RnVuY3Rpb24sXG4gIGdldEZpdHRlZEN1cnZlLFxuICBGaXRTdGF0aXN0aWNzLFxuICBGaXRDb25maWRlbmNlSW50ZXJ2YWxzLFxuICBGaXRDdXJ2ZSxcbiAgZ2V0T3JDcmVhdGVGaXRGdW5jdGlvbixcbiAgSUZpdFBvaW50LFxuICBJRml0Q2hhcnREYXRhLFxuICBJRml0U2VyaWVzLFxuICBmaXRTZXJpZXNQcm9wZXJ0aWVzLFxuICBmaXRDaGFydERhdGFQcm9wZXJ0aWVzLFxuICBUQUdfRklULFxuICBGaXRQYXJhbUJvdW5kcyxcbiAgSUZpdENoYXJ0T3B0aW9ucyxcbn0gZnJvbSAnLi9maXQtY3VydmUnO1xuXG5leHBvcnQgdHlwZSBMb2dPcHRpb25zID0ge1xuICBsb2dYOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBsb2dZOiBib29sZWFuIHwgdW5kZWZpbmVkXG59O1xuXG5cbi8qKiBDcmVhdGVzIG5ldyBvYmplY3Qgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMgc3BlY2lmaWVkIGluIHtAbGluayBwcm9wZXJ0aWVzfSAqL1xuZnVuY3Rpb24gY3JlYXRlRnJvbVByb3BlcnRpZXMocHJvcGVydGllczogREcuUHJvcGVydHlbXSk6IGFueSB7XG4gIGNvbnN0IG86IGFueSA9IHt9O1xuICBmb3IgKGNvbnN0IHAgb2YgcHJvcGVydGllcykge1xuICAgIGlmIChwLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbClcbiAgICAgIG9bcC5uYW1lXSA9IHAuZGVmYXVsdFZhbHVlO1xuICB9XG4gIHJldHVybiBvO1xufVxuXG4vLyBUT0RPOiBzZXQgY29sdW1uIHdpdGggZml0IHJlYWRvbmx5IHZhbHVlIChpbiBkZXRlY3RvcnMpIC0gdHJ5IHRvIG9ubHkgc2hvdyBjaGFydCAtIHJlbW92ZSBlZGl0YWJsZSBvciBwcmV2ZW50IGl0Pz9cbi8qKiBDcmVhdGVzIGRlZmF1bHQge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRDaGFydERhdGEoKTogSUZpdENoYXJ0RGF0YSB7XG4gIHJldHVybiB7XG4gICAgY2hhcnRPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRDaGFydERhdGFQcm9wZXJ0aWVzKSxcbiAgICBzZXJpZXNPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRTZXJpZXNQcm9wZXJ0aWVzKSxcbiAgfTtcbn1cblxuLyoqIFJldHVybnMgZXhpc3RpbmcsIG9yIGNyZWF0ZXMgbmV3IGNvbHVtbiBkZWZhdWx0IGNoYXJ0IG9wdGlvbnMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uQ2hhcnRPcHRpb25zKGdyaWRDb2x1bW46IERHLkdyaWRDb2x1bW4pOiBJRml0Q2hhcnREYXRhIHtcbiAgcmV0dXJuIGdyaWRDb2x1bW4udGVtcFtUQUdfRklUXSA/Pz0gY3JlYXRlRGVmYXVsdENoYXJ0RGF0YSgpO1xufVxuXG4vKiogUmV0dXJucyBwb2ludHMgYXJyYXlzIGZyb20ge0BsaW5rIElGaXRQb2ludH0gYXJyYXkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2ludHNBcnJheXMocG9pbnRzOiBJRml0UG9pbnRbXSk6IHt4czogbnVtYmVyW10sIHlzOiBudW1iZXJbXX0ge1xuICBjb25zdCB4czogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgeXM6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgeHNbaV0gPSBwb2ludHNbaV0ueDtcbiAgICB5c1tpXSA9IHBvaW50c1tpXS55O1xuICB9XG4gIHJldHVybiB7eHM6IHhzLCB5czogeXN9O1xufVxuXG4vKiogUmV0dXJucyBtZWRpYW4gcG9pbnRzIGZyb20gd2l0aGluIG11bHRpcGxlIHBvaW50cyB3aXRoIHRoZSBzYW1lIHguICovXG5mdW5jdGlvbiBnZXRNZWRpYW5Qb2ludHMoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSB7XG4gIGNvbnN0IG1lZGlhblBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0gPSB7eDogW10sIHk6IFtdfTtcbiAgY29uc3QgY3VycmVudFBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0gPSB7eDogW2RhdGEueFswXV0sIHk6IFtkYXRhLnlbMF1dfTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBkYXRhLngubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZGF0YS54W2ldID09PSBjdXJyZW50UG9pbnRzLnhbMF0pIHtcbiAgICAgIGN1cnJlbnRQb2ludHMueFtjdXJyZW50UG9pbnRzLngubGVuZ3RoXSA9IGRhdGEueFtpXTtcbiAgICAgIGN1cnJlbnRQb2ludHMueVtjdXJyZW50UG9pbnRzLnkubGVuZ3RoXSA9IGRhdGEueVtpXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBtaWQgPSBNYXRoLmZsb29yKGN1cnJlbnRQb2ludHMueS5sZW5ndGggLyAyKTtcbiAgICBjb25zdCBzb3J0ZWRQb2ludHMgPSBjdXJyZW50UG9pbnRzLnkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIGNvbnN0IG1lZGlhbiA9IHNvcnRlZFBvaW50cy5sZW5ndGggJSAyID09PSAwID8gKHNvcnRlZFBvaW50c1ttaWQgLSAxXSArIHNvcnRlZFBvaW50c1ttaWRdKSAvIDIgOiBzb3J0ZWRQb2ludHNbbWlkXTtcblxuICAgIG1lZGlhblBvaW50cy54W21lZGlhblBvaW50cy54Lmxlbmd0aF0gPSBjdXJyZW50UG9pbnRzLnhbMF07XG4gICAgbWVkaWFuUG9pbnRzLnlbbWVkaWFuUG9pbnRzLnkubGVuZ3RoXSA9IG1lZGlhbjtcbiAgICBjdXJyZW50UG9pbnRzLnggPSBbZGF0YS54W2ldXTtcbiAgICBjdXJyZW50UG9pbnRzLnkgPSBbZGF0YS55W2ldXTtcbiAgfVxuXG4gIHJldHVybiBtZWRpYW5Qb2ludHM7XG59XG5cbi8qKiBSZXR1cm5zIGxvZ2FyaXRobWljIElDNTAgcGFyYW1ldGVyIGJvdW5kcy4gKi9cbmZ1bmN0aW9uIGxvZ0lDNTBQYXJhbWV0ZXJCb3VuZHMoaWM1MEJvdW5kczogRml0UGFyYW1Cb3VuZHMpOiBGaXRQYXJhbUJvdW5kcyB7XG4gIGlmIChpYzUwQm91bmRzKSB7XG4gICAgaWYgKGljNTBCb3VuZHMubWF4ICE9PSB1bmRlZmluZWQpXG4gICAgICBpYzUwQm91bmRzLm1heCA9IE1hdGgubG9nMTAoaWM1MEJvdW5kcy5tYXgpO1xuICAgIGlmIChpYzUwQm91bmRzLm1pbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpYzUwQm91bmRzLm1pbiA9IGljNTBCb3VuZHMubWluID09PSAwID9cbiAgICAgICAgLU51bWJlci5NQVhfVkFMVUUgOiBNYXRoLmxvZzEwKGljNTBCb3VuZHMubWluKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGljNTBCb3VuZHM7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUJvdW5kcyhib3VuZHM6IERHLlJlY3QsIGNoYXJ0T3B0aW9uczogSUZpdENoYXJ0T3B0aW9ucyk6IERHLlJlY3Qge1xuICBsZXQgeCA9IGJvdW5kcy54O1xuICBsZXQgeSA9IGJvdW5kcy55O1xuICBsZXQgd2lkdGggPSBib3VuZHMud2lkdGg7XG4gIGxldCBoZWlnaHQgPSBib3VuZHMuaGVpZ2h0O1xuXG4gIGlmIChjaGFydE9wdGlvbnMubWluWCAhPT0gdW5kZWZpbmVkICYmIGNoYXJ0T3B0aW9ucy5taW5YID4gMCkge1xuICAgIHdpZHRoICs9IHggLSBjaGFydE9wdGlvbnMubWluWDtcbiAgICB4ID0gY2hhcnRPcHRpb25zLm1pblg7XG4gIH1cbiAgaWYgKGNoYXJ0T3B0aW9ucy5tYXhYICE9PSB1bmRlZmluZWQgJiYgY2hhcnRPcHRpb25zLm1heFggPiAwKVxuICAgIHdpZHRoICs9IGNoYXJ0T3B0aW9ucy5tYXhYIC0gKHggKyB3aWR0aCk7XG4gIGlmIChjaGFydE9wdGlvbnMubWluWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaGVpZ2h0ICs9IHkgLSBjaGFydE9wdGlvbnMubWluWTtcbiAgICB5ID0gY2hhcnRPcHRpb25zLm1pblk7XG4gIH1cbiAgaWYgKGNoYXJ0T3B0aW9ucy5tYXhZICE9PSB1bmRlZmluZWQpXG4gICAgaGVpZ2h0ICs9IGNoYXJ0T3B0aW9ucy5tYXhZIC0gKHkgKyBoZWlnaHQpO1xuXG4gIHJldHVybiBuZXcgREcuUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGJvdW5kcyBvZiBhbiB7QGxpbmsgSUZpdENoYXJ0RGF0YX0gb2JqZWN0ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhcnRCb3VuZHMoY2hhcnREYXRhOiBJRml0Q2hhcnREYXRhKTogREcuUmVjdCB7XG4gIGNvbnN0IG8gPSBjaGFydERhdGEuY2hhcnRPcHRpb25zO1xuICBpZiAoIWNoYXJ0RGF0YS5zZXJpZXM/Lmxlbmd0aCB8fCBjaGFydERhdGEuc2VyaWVzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbmV3IERHLlJlY3QoMCwgMCwgMSwgMSk7XG4gIGVsc2Uge1xuICAgIGNvbnN0IHt4cywgeXN9ID0gZ2V0UG9pbnRzQXJyYXlzKGNoYXJ0RGF0YS5zZXJpZXNbMF0ucG9pbnRzKTtcbiAgICBsZXQgYm91bmRzID0gREcuUmVjdC5mcm9tWFlBcnJheXMoeHMsIHlzKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYXJ0RGF0YS5zZXJpZXMhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB7eHMsIHlzfSA9IGdldFBvaW50c0FycmF5cyhjaGFydERhdGEuc2VyaWVzW2ldLnBvaW50cyk7XG4gICAgICBib3VuZHMgPSBib3VuZHMudW5pb24oREcuUmVjdC5mcm9tWFlBcnJheXMoeHMsIHlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvID8gY2hhbmdlQm91bmRzKGJvdW5kcywgbyEpOiBib3VuZHM7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIGZpdCBmdW5jdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0ZpdEZ1bmN0aW9uKHNlcmllczogSUZpdFNlcmllcyk6IEZpdEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzLmZpdEZ1bmN0aW9uISk7XG59XG5cbi8qKiBSZXR1cm5zIGEgY3VydmUgZnVuY3Rpb24sIGVpdGhlciB1c2luZyB0aGUgcHJlLWNvbXB1dGVkIHBhcmFtZXRlcnMgb3IgYnkgZml0dGluZyBvbi10aGUtZmx5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VydmUoc2VyaWVzOiBJRml0U2VyaWVzLCBmaXRGdW5jOiBGaXRGdW5jdGlvbik6ICh4OiBudW1iZXIpID0+IG51bWJlciB7XG4gIHJldHVybiBnZXRGaXR0ZWRDdXJ2ZShmaXRGdW5jLnksIHNlcmllcy5wYXJhbWV0ZXJzISk7XG59XG5cbi8qKiBGaXRzIHRoZSBzZXJpZXMgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIHNlcmllcyBmaXR0aW5nIHNldHRpbmdzICovXG5leHBvcnQgZnVuY3Rpb24gZml0U2VyaWVzKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24sIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0Q3VydmUge1xuICBjb25zdCBkYXRhID0ge3g6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKS5tYXAoKHApID0+IGxvZ09wdGlvbnM/LmxvZ1ggPyBNYXRoLmxvZzEwKHAueCkgOiBwLngpLFxuICAgIHk6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKS5tYXAoKHApID0+IGxvZ09wdGlvbnM/LmxvZ1kgPyBNYXRoLmxvZzEwKHAueSkgOiBwLnkpfTtcbiAgaWYgKHNlcmllcy5wYXJhbWV0ZXJCb3VuZHMgJiYgbG9nT3B0aW9ucz8ubG9nWClcbiAgICBzZXJpZXMucGFyYW1ldGVyQm91bmRzWzJdID0gbG9nSUM1MFBhcmFtZXRlckJvdW5kcyhzZXJpZXMucGFyYW1ldGVyQm91bmRzWzJdKTtcbiAgcmV0dXJuIGZpdERhdGEoZ2V0TWVkaWFuUG9pbnRzKGRhdGEpLCBmaXRGdW5jLCBGaXRFcnJvck1vZGVsLkNvbnN0YW50LCBzZXJpZXMucGFyYW1ldGVyQm91bmRzKTtcbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZnVuY3Rpb25zICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzQ29uZmlkZW5jZUludGVydmFsKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24sXG4gIHVzZXJQYXJhbXNGbGFnOiBib29sZWFuKTogRml0Q29uZmlkZW5jZUludGVydmFscyB7XG4gIGNvbnN0IGRhdGEgPSB1c2VyUGFyYW1zRmxhZyA/IHt4OiBzZXJpZXMucG9pbnRzLm1hcCgocCkgPT4gcC54KSwgeTogc2VyaWVzLnBvaW50cy5tYXAoKHApID0+IHAueSl9IDpcbiAgICB7eDogc2VyaWVzLnBvaW50cy5maWx0ZXIoKHApID0+ICFwLm91dGxpZXIpLm1hcCgocCkgPT4gcC54KSxcbiAgICAgIHk6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKS5tYXAoKHApID0+IHAueSl9O1xuICBpZiAoIXNlcmllcy5wYXJhbWV0ZXJzKVxuICAgIHNlcmllcy5wYXJhbWV0ZXJzID0gZml0U2VyaWVzKHNlcmllcywgZml0RnVuYykucGFyYW1ldGVycztcbiAgcmV0dXJuIGdldEN1cnZlQ29uZmlkZW5jZUludGVydmFscyhkYXRhLCBzZXJpZXMucGFyYW1ldGVycywgZml0RnVuYy55LCAwLjA1LCBGaXRFcnJvck1vZGVsLkNvbnN0YW50KTtcbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJpZXNTdGF0aXN0aWNzKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24pOiBGaXRTdGF0aXN0aWNzIHtcbiAgY29uc3QgZGF0YSA9IHt4OiBzZXJpZXMucG9pbnRzLmZpbHRlcigocCkgPT4gIXAub3V0bGllcikubWFwKChwKSA9PiBwLngpLFxuICAgIHk6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKS5tYXAoKHApID0+IHAueSl9O1xuICBpZiAoIXNlcmllcy5wYXJhbWV0ZXJzKVxuICAgIHNlcmllcy5wYXJhbWV0ZXJzID0gZml0U2VyaWVzKHNlcmllcywgZml0RnVuYykucGFyYW1ldGVycztcbiAgcmV0dXJuIGdldFN0YXRpc3RpY3MoZGF0YSwgc2VyaWVzLnBhcmFtZXRlcnMsIGZpdEZ1bmMueSwgdHJ1ZSk7XG59XG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLE9BQU8sRUFDUCwyQkFBMkIsRUFDM0IsYUFBYSxFQUViLGNBQWMsRUFJZCxzQkFBc0IsRUFJdEIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixPQUFPLEdBR1IsTUFBTSxhQUFhLENBQUM7QUFRckIsaUZBQWlGO0FBQ2pGLFNBQVMsb0JBQW9CLENBQUMsVUFBeUI7SUFDckQsTUFBTSxDQUFDLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLEtBQUssTUFBTSxDQUFDLElBQUksVUFBVSxFQUFFO1FBQzFCLElBQUksQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztLQUM5QjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELHFIQUFxSDtBQUNySCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPO1FBQ0wsWUFBWSxFQUFFLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDO1FBQzFELGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBaUI7OztJQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLGFBQUMsTUFBTSxDQUFDLElBQUksRUFBQyxPQUFPLHdDQUFQLE9BQU8sSUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCx5REFBeUQ7QUFDekQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxN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QUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzVELE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1xuICBGaXRFcnJvck1vZGVsLFxuICBmaXREYXRhLFxuICBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMsXG4gIGdldFN0YXRpc3RpY3MsXG4gIEZpdEZ1bmN0aW9uLFxuICBnZXRGaXR0ZWRDdXJ2ZSxcbiAgRml0U3RhdGlzdGljcyxcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyxcbiAgRml0Q3VydmUsXG4gIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24sXG4gIElGaXRQb2ludCxcbiAgSUZpdENoYXJ0RGF0YSxcbiAgSUZpdFNlcmllcyxcbiAgZml0U2VyaWVzUHJvcGVydGllcyxcbiAgZml0Q2hhcnREYXRhUHJvcGVydGllcyxcbiAgVEFHX0ZJVCxcbiAgRml0UGFyYW1Cb3VuZHMsXG4gIElGaXRDaGFydE9wdGlvbnMsXG59IGZyb20gJy4vZml0LWN1cnZlJztcblxuZXhwb3J0IHR5cGUgTG9nT3B0aW9ucyA9IHtcbiAgbG9nWDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgbG9nWTogYm9vbGVhbiB8IHVuZGVmaW5lZFxufTtcblxuXG4vKiogQ3JlYXRlcyBuZXcgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgdmFsdWVzIHNwZWNpZmllZCBpbiB7QGxpbmsgcHJvcGVydGllc30gKi9cbmZ1bmN0aW9uIGNyZWF0ZUZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXM6IERHLlByb3BlcnR5W10pOiBhbnkge1xuICBjb25zdCBvOiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBwIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAocC5kZWZhdWx0VmFsdWUgIT09IG51bGwpXG4gICAgICBvW3AubmFtZV0gPSBwLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICByZXR1cm4gbztcbn1cblxuLy8gVE9ETzogc2V0IGNvbHVtbiB3aXRoIGZpdCByZWFkb25seSB2YWx1ZSAoaW4gZGV0ZWN0b3JzKSAtIHRyeSB0byBvbmx5IHNob3cgY2hhcnQgLSByZW1vdmUgZWRpdGFibGUgb3IgcHJldmVudCBpdD8/XG4vKiogQ3JlYXRlcyBkZWZhdWx0IHtAbGluayBJRml0Q2hhcnREYXRhfSBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0Q2hhcnREYXRhKCk6IElGaXRDaGFydERhdGEge1xuICByZXR1cm4ge1xuICAgIGNoYXJ0T3B0aW9uczogY3JlYXRlRnJvbVByb3BlcnRpZXMoZml0Q2hhcnREYXRhUHJvcGVydGllcyksXG4gICAgc2VyaWVzT3B0aW9uczogY3JlYXRlRnJvbVByb3BlcnRpZXMoZml0U2VyaWVzUHJvcGVydGllcyksXG4gIH07XG59XG5cbi8qKiBSZXR1cm5zIGV4aXN0aW5nLCBvciBjcmVhdGVzIG5ldyBjb2x1bW4gZGVmYXVsdCBjaGFydCBvcHRpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtbkNoYXJ0T3B0aW9ucyhjb2x1bW46IERHLkNvbHVtbik6IElGaXRDaGFydERhdGEge1xuICByZXR1cm4gSlNPTi5wYXJzZShjb2x1bW4udGFnc1tUQUdfRklUXSA/Pz0gSlNPTi5zdHJpbmdpZnkoY3JlYXRlRGVmYXVsdENoYXJ0RGF0YSgpKSk7XG59XG5cbi8qKiBSZXR1cm5zIHBvaW50cyBhcnJheXMgZnJvbSB7QGxpbmsgSUZpdFBvaW50fSBhcnJheSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBvaW50c0FycmF5cyhwb2ludHM6IElGaXRQb2ludFtdKToge3hzOiBudW1iZXJbXSwgeXM6IG51bWJlcltdfSB7XG4gIGNvbnN0IHhzOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCB5czogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB4c1tpXSA9IHBvaW50c1tpXS54O1xuICAgIHlzW2ldID0gcG9pbnRzW2ldLnk7XG4gIH1cbiAgcmV0dXJuIHt4czogeHMsIHlzOiB5c307XG59XG5cbi8qKiBSZXR1cm5zIG1lZGlhbiBwb2ludHMgZnJvbSB3aXRoaW4gbXVsdGlwbGUgcG9pbnRzIHdpdGggdGhlIHNhbWUgeC4gKi9cbmZ1bmN0aW9uIGdldE1lZGlhblBvaW50cyhkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119IHtcbiAgY29uc3QgbWVkaWFuUG9pbnRzOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSA9IHt4OiBbXSwgeTogW119O1xuICBjb25zdCBjdXJyZW50UG9pbnRzOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSA9IHt4OiBbZGF0YS54WzBdXSwgeTogW2RhdGEueVswXV19O1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkYXRhLnhbaV0gPT09IGN1cnJlbnRQb2ludHMueFswXSkge1xuICAgICAgY3VycmVudFBvaW50cy54W2N1cnJlbnRQb2ludHMueC5sZW5ndGhdID0gZGF0YS54W2ldO1xuICAgICAgY3VycmVudFBvaW50cy55W2N1cnJlbnRQb2ludHMueS5sZW5ndGhdID0gZGF0YS55W2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG1pZCA9IE1hdGguZmxvb3IoY3VycmVudFBvaW50cy55Lmxlbmd0aCAvIDIpO1xuICAgIGNvbnN0IHNvcnRlZFBvaW50cyA9IGN1cnJlbnRQb2ludHMueS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgY29uc3QgbWVkaWFuID0gc29ydGVkUG9pbnRzLmxlbmd0aCAlIDIgPT09IDAgPyAoc29ydGVkUG9pbnRzW21pZCAtIDFdICsgc29ydGVkUG9pbnRzW21pZF0pIC8gMiA6IHNvcnRlZFBvaW50c1ttaWRdO1xuXG4gICAgbWVkaWFuUG9pbnRzLnhbbWVkaWFuUG9pbnRzLngubGVuZ3RoXSA9IGN1cnJlbnRQb2ludHMueFswXTtcbiAgICBtZWRpYW5Qb2ludHMueVttZWRpYW5Qb2ludHMueS5sZW5ndGhdID0gbWVkaWFuO1xuICAgIGN1cnJlbnRQb2ludHMueCA9IFtkYXRhLnhbaV1dO1xuICAgIGN1cnJlbnRQb2ludHMueSA9IFtkYXRhLnlbaV1dO1xuICB9XG5cbiAgcmV0dXJuIG1lZGlhblBvaW50cztcbn1cblxuLyoqIFJldHVybnMgbG9nYXJpdGhtaWMgSUM1MCBwYXJhbWV0ZXIgYm91bmRzLiAqL1xuZnVuY3Rpb24gbG9nSUM1MFBhcmFtZXRlckJvdW5kcyhpYzUwQm91bmRzOiBGaXRQYXJhbUJvdW5kcyk6IEZpdFBhcmFtQm91bmRzIHtcbiAgaWYgKGljNTBCb3VuZHMpIHtcbiAgICBpZiAoaWM1MEJvdW5kcy5tYXggIT09IHVuZGVmaW5lZClcbiAgICAgIGljNTBCb3VuZHMubWF4ID0gTWF0aC5sb2cxMChpYzUwQm91bmRzLm1heCk7XG4gICAgaWYgKGljNTBCb3VuZHMubWluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGljNTBCb3VuZHMubWluID0gaWM1MEJvdW5kcy5taW4gPT09IDAgP1xuICAgICAgICAtTnVtYmVyLk1BWF9WQUxVRSA6IE1hdGgubG9nMTAoaWM1MEJvdW5kcy5taW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaWM1MEJvdW5kcztcbn1cblxuZnVuY3Rpb24gY2hhbmdlQm91bmRzKGJvdW5kczogREcuUmVjdCwgY2hhcnRPcHRpb25zOiBJRml0Q2hhcnRPcHRpb25zKTogREcuUmVjdCB7XG4gIGxldCB4ID0gYm91bmRzLng7XG4gIGxldCB5ID0gYm91bmRzLnk7XG4gIGxldCB3aWR0aCA9IGJvdW5kcy53aWR0aDtcbiAgbGV0IGhlaWdodCA9IGJvdW5kcy5oZWlnaHQ7XG5cbiAgaWYgKGNoYXJ0T3B0aW9ucy5taW5YICE9PSB1bmRlZmluZWQgJiYgY2hhcnRPcHRpb25zLm1pblggPiAwKSB7XG4gICAgd2lkdGggKz0geCAtIGNoYXJ0T3B0aW9ucy5taW5YO1xuICAgIHggPSBjaGFydE9wdGlvbnMubWluWDtcbiAgfVxuICBpZiAoY2hhcnRPcHRpb25zLm1heFggIT09IHVuZGVmaW5lZCAmJiBjaGFydE9wdGlvbnMubWF4WCA+IDApXG4gICAgd2lkdGggKz0gY2hhcnRPcHRpb25zLm1heFggLSAoeCArIHdpZHRoKTtcbiAgaWYgKGNoYXJ0T3B0aW9ucy5taW5ZICE9PSB1bmRlZmluZWQgJiYgY2hhcnRPcHRpb25zLm1pblkgPiAwKSB7XG4gICAgaGVpZ2h0ICs9IHkgLSBjaGFydE9wdGlvbnMubWluWTtcbiAgICB5ID0gY2hhcnRPcHRpb25zLm1pblk7XG4gIH1cbiAgaWYgKGNoYXJ0T3B0aW9ucy5tYXhZICE9PSB1bmRlZmluZWQgJiYgY2hhcnRPcHRpb25zLm1heFkgPiAwKVxuICAgIGhlaWdodCArPSBjaGFydE9wdGlvbnMubWF4WSAtICh5ICsgaGVpZ2h0KTtcblxuICByZXR1cm4gbmV3IERHLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBib3VuZHMgb2YgYW4ge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0Qm91bmRzKGNoYXJ0RGF0YTogSUZpdENoYXJ0RGF0YSk6IERHLlJlY3Qge1xuICBjb25zdCBvID0gY2hhcnREYXRhLmNoYXJ0T3B0aW9ucztcbiAgaWYgKCFjaGFydERhdGEuc2VyaWVzPy5sZW5ndGggfHwgY2hhcnREYXRhLnNlcmllcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG5ldyBERy5SZWN0KDAsIDAsIDEsIDEpO1xuICBlbHNlIHtcbiAgICBjb25zdCB7eHMsIHlzfSA9IGdldFBvaW50c0FycmF5cyhjaGFydERhdGEuc2VyaWVzWzBdLnBvaW50cyk7XG4gICAgbGV0IGJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHhzLCB5cyk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGFydERhdGEuc2VyaWVzIS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qge3hzLCB5c30gPSBnZXRQb2ludHNBcnJheXMoY2hhcnREYXRhLnNlcmllc1tpXS5wb2ludHMpO1xuICAgICAgYm91bmRzID0gYm91bmRzLnVuaW9uKERHLlJlY3QuZnJvbVhZQXJyYXlzKHhzLCB5cykpO1xuICAgIH1cbiAgICByZXR1cm4gbyA/IGNoYW5nZUJvdW5kcyhib3VuZHMsIG8hKTogYm91bmRzO1xuICB9XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBmaXQgZnVuY3Rpb24gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJpZXNGaXRGdW5jdGlvbihzZXJpZXM6IElGaXRTZXJpZXMpOiBGaXRGdW5jdGlvbiB7XG4gIHJldHVybiBnZXRPckNyZWF0ZUZpdEZ1bmN0aW9uKHNlcmllcy5maXRGdW5jdGlvbiEpO1xufVxuXG4vKiogUmV0dXJucyBhIGN1cnZlIGZ1bmN0aW9uLCBlaXRoZXIgdXNpbmcgdGhlIHByZS1jb21wdXRlZCBwYXJhbWV0ZXJzIG9yIGJ5IGZpdHRpbmcgb24tdGhlLWZseSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnZlKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24pOiAoeDogbnVtYmVyKSA9PiBudW1iZXIge1xuICByZXR1cm4gZ2V0Rml0dGVkQ3VydmUoZml0RnVuYy55LCBzZXJpZXMucGFyYW1ldGVycyEpO1xufVxuXG4vKiogRml0cyB0aGUgc2VyaWVzIGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBzZXJpZXMgZml0dGluZyBzZXR0aW5ncyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpdFNlcmllcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCBsb2dPcHRpb25zPzogTG9nT3B0aW9ucyk6IEZpdEN1cnZlIHtcbiAgY29uc3QgZGF0YSA9IHt4OiBzZXJpZXMucG9pbnRzLmZpbHRlcigocCkgPT4gIXAub3V0bGllcikubWFwKChwKSA9PiBsb2dPcHRpb25zPy5sb2dYID8gTWF0aC5sb2cxMChwLngpIDogcC54KSxcbiAgICB5OiBzZXJpZXMucG9pbnRzLmZpbHRlcigocCkgPT4gIXAub3V0bGllcikubWFwKChwKSA9PiBsb2dPcHRpb25zPy5sb2dZID8gTWF0aC5sb2cxMChwLnkpIDogcC55KX07XG4gIGlmIChzZXJpZXMucGFyYW1ldGVyQm91bmRzICYmIGxvZ09wdGlvbnM/LmxvZ1gpXG4gICAgc2VyaWVzLnBhcmFtZXRlckJvdW5kc1syXSA9IGxvZ0lDNTBQYXJhbWV0ZXJCb3VuZHMoc2VyaWVzLnBhcmFtZXRlckJvdW5kc1syXSk7XG4gIHJldHVybiBmaXREYXRhKGdldE1lZGlhblBvaW50cyhkYXRhKSwgZml0RnVuYywgRml0RXJyb3JNb2RlbC5Db25zdGFudCwgc2VyaWVzLnBhcmFtZXRlckJvdW5kcyk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0NvbmZpZGVuY2VJbnRlcnZhbChzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLFxuICB1c2VyUGFyYW1zRmxhZzogYm9vbGVhbik6IEZpdENvbmZpZGVuY2VJbnRlcnZhbHMge1xuICBjb25zdCBkYXRhID0gdXNlclBhcmFtc0ZsYWcgPyB7eDogc2VyaWVzLnBvaW50cy5tYXAoKHApID0+IHAueCksIHk6IHNlcmllcy5wb2ludHMubWFwKChwKSA9PiBwLnkpfSA6XG4gICAge3g6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKS5tYXAoKHApID0+IHAueCksXG4gICAgICB5OiBzZXJpZXMucG9pbnRzLmZpbHRlcigocCkgPT4gIXAub3V0bGllcikubWFwKChwKSA9PiBwLnkpfTtcbiAgaWYgKCFzZXJpZXMucGFyYW1ldGVycylcbiAgICBzZXJpZXMucGFyYW1ldGVycyA9IGZpdFNlcmllcyhzZXJpZXMsIGZpdEZ1bmMpLnBhcmFtZXRlcnM7XG4gIHJldHVybiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YSwgc2VyaWVzLnBhcmFtZXRlcnMsIGZpdEZ1bmMueSwgMC4wNSwgRml0RXJyb3JNb2RlbC5Db25zdGFudCk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBzdGF0aXN0aWNzICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzU3RhdGlzdGljcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uKTogRml0U3RhdGlzdGljcyB7XG4gIGNvbnN0IGRhdGEgPSB7eDogc2VyaWVzLnBvaW50cy5maWx0ZXIoKHApID0+ICFwLm91dGxpZXIpLm1hcCgocCkgPT4gcC54KSxcbiAgICB5OiBzZXJpZXMucG9pbnRzLmZpbHRlcigocCkgPT4gIXAub3V0bGllcikubWFwKChwKSA9PiBwLnkpfTtcbiAgaWYgKCFzZXJpZXMucGFyYW1ldGVycylcbiAgICBzZXJpZXMucGFyYW1ldGVycyA9IGZpdFNlcmllcyhzZXJpZXMsIGZpdEZ1bmMpLnBhcmFtZXRlcnM7XG4gIHJldHVybiBnZXRTdGF0aXN0aWNzKGRhdGEsIHNlcmllcy5wYXJhbWV0ZXJzLCBmaXRGdW5jLnksIHRydWUpO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiple-tests.d.ts","sourceRoot":"","sources":["multiple-tests.ts"],"names":[],"mappings":"AAoIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,KAAK,GAAE,MAAa,EACpB,MAAM,GAAE,MAAW,EACnB,QAAQ,GAAE,OAAe,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"multiple-tests.d.ts","sourceRoot":"","sources":["multiple-tests.ts"],"names":[],"mappings":"AAoIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,KAAK,GAAE,MAAa,EACpB,MAAM,GAAE,MAAW,EACnB,QAAQ,GAAE,OAAe,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAmD3D"}
|
package/src/multiple-tests.js
CHANGED
|
@@ -38,9 +38,8 @@ function _take(order, values) {
|
|
|
38
38
|
*/
|
|
39
39
|
function _give(values, order) {
|
|
40
40
|
const v = Float32Array.from(values);
|
|
41
|
-
for (let i = 0; i < order.length; ++i)
|
|
41
|
+
for (let i = 0; i < order.length; ++i)
|
|
42
42
|
v[order[i]] = values[i];
|
|
43
|
-
}
|
|
44
43
|
return v;
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
@@ -52,9 +51,8 @@ function _give(values, order) {
|
|
|
52
51
|
*/
|
|
53
52
|
function _giveb(values, order) {
|
|
54
53
|
const v = Array.from(values);
|
|
55
|
-
for (let i = 0; i < order.length; ++i)
|
|
54
|
+
for (let i = 0; i < order.length; ++i)
|
|
56
55
|
v[order[i]] = values[i];
|
|
57
|
-
}
|
|
58
56
|
return v;
|
|
59
57
|
}
|
|
60
58
|
/**
|
|
@@ -75,9 +73,8 @@ function _ecdf(x) {
|
|
|
75
73
|
*/
|
|
76
74
|
function _cm(n) {
|
|
77
75
|
let sum = 0;
|
|
78
|
-
for (let i = 0; i < n; ++i)
|
|
76
|
+
for (let i = 0; i < n; ++i)
|
|
79
77
|
sum += 1 / (i + 1);
|
|
80
|
-
}
|
|
81
78
|
return sum;
|
|
82
79
|
}
|
|
83
80
|
/**
|
|
@@ -111,9 +108,8 @@ function _vfactor(values, scale, op = '*') {
|
|
|
111
108
|
function _minimumAccumulate(values) {
|
|
112
109
|
const nItems = values.length;
|
|
113
110
|
const r = Float32Array.from(values);
|
|
114
|
-
for (let i = 0; i < nItems; ++i)
|
|
111
|
+
for (let i = 0; i < nItems; ++i)
|
|
115
112
|
r[i] = values.slice(0, i + 1).reduce((a, b, _, __) => (_operations['min'](a, b)));
|
|
116
|
-
}
|
|
117
113
|
return r;
|
|
118
114
|
}
|
|
119
115
|
/**
|
|
@@ -163,34 +159,27 @@ export function fdrcorrection(pvals, alpha = 0.05, method = 'n', isSorted = fals
|
|
|
163
159
|
pvalsSorted = pvals; // alias
|
|
164
160
|
}
|
|
165
161
|
let ecdffactor = _ecdf(pvalsSorted);
|
|
166
|
-
if (['
|
|
167
|
-
;
|
|
168
|
-
}
|
|
169
|
-
else if (['n', 'negcorr'].includes(method)) {
|
|
162
|
+
if (['n', 'negcorr'].includes(method)) {
|
|
170
163
|
cm = _cm(nItems);
|
|
171
164
|
ecdffactor = _factor(ecdffactor, cm, '/');
|
|
172
165
|
}
|
|
173
|
-
else
|
|
166
|
+
else if (!['i', 'indep', 'p', 'poscorr'].includes(method))
|
|
174
167
|
throw new Error('only indep and negcorr implemented');
|
|
175
|
-
}
|
|
176
168
|
const reject = new Array(nItems).fill(false);
|
|
177
169
|
let rejectmax = -1;
|
|
178
170
|
for (let i = 0; i < nItems; ++i) {
|
|
179
|
-
if (pvalsSorted[i] <= ecdffactor[i] * alpha)
|
|
171
|
+
if (pvalsSorted[i] <= ecdffactor[i] * alpha)
|
|
180
172
|
rejectmax = i;
|
|
181
|
-
}
|
|
182
173
|
}
|
|
183
174
|
if (rejectmax >= 0) {
|
|
184
|
-
for (let i = 0; i < rejectmax; ++i)
|
|
175
|
+
for (let i = 0; i < rejectmax; ++i)
|
|
185
176
|
reject[i] = true;
|
|
186
|
-
}
|
|
187
177
|
}
|
|
188
178
|
let pvalsCorrected = _vfactor(pvalsSorted, ecdffactor, '/');
|
|
189
179
|
pvalsCorrected = _minimumAccumulate(pvalsCorrected.reverse()).reverse();
|
|
190
180
|
for (let i = 0; i < nItems; ++i) {
|
|
191
|
-
if (pvalsCorrected[i] > 1)
|
|
181
|
+
if (pvalsCorrected[i] > 1)
|
|
192
182
|
pvalsCorrected[i] = 1;
|
|
193
|
-
}
|
|
194
183
|
}
|
|
195
184
|
if (!isSorted) {
|
|
196
185
|
const pvalsCorrected_ = _give(pvalsCorrected, pvalsSortind);
|
|
@@ -199,4 +188,4 @@ export function fdrcorrection(pvals, alpha = 0.05, method = 'n', isSorted = fals
|
|
|
199
188
|
}
|
|
200
189
|
return [reject, pvalsCorrected];
|
|
201
190
|
}
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtdWx0aXBsZS10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFckUseURBQXlEO0FBQ3pELE1BQU0sV0FBVyxHQUErQjtJQUM5QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsR0FBRyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsS0FBSyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pELENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsUUFBUSxDQUFDLE1BQW9CO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxLQUFLLENBQUMsS0FBaUIsRUFBRSxNQUFvQjtJQUNwRCxxREFBcUQ7SUFDckQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLEtBQUssQ0FBQyxNQUFvQixFQUFFLEtBQWlCO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsTUFBTSxDQUFDLE1BQXNCLEVBQUUsS0FBaUI7SUFDdkQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pCO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLEtBQUssQ0FBQyxDQUFlO0lBQzVCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsR0FBRyxDQUFDLENBQVM7SUFDcEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMxQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsT0FBTyxDQUFDLE1BQW9CLEVBQUUsS0FBYSxFQUFFLEVBQUUsR0FBRyxHQUFHO0lBQzVELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxNQUFvQixFQUFFLEtBQW1CLEVBQUUsRUFBRSxHQUFHLEdBQUc7SUFDbkUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE1BQW9CO0lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDN0IsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pGO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBbUIsRUFDbkIsUUFBZ0IsSUFBSSxFQUNwQixTQUFnQixHQUFHLEVBQ25CLFdBQW9CLEtBQUs7SUFHekIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixJQUFJLFdBQXlCLENBQUM7SUFDOUIsSUFBSSxZQUF3QixDQUFDO0lBQzdCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVYLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLFdBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzFDO1NBQU07UUFDTCxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsUUFBUTtLQUM5QjtJQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ25ELENBQUM7S0FDRjtTQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzVDLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkQ7SUFFRCxNQUFNLE1BQU0sR0FBYyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMvQixJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxFQUFFO1lBQ3pDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDZjtLQUNGO0lBRUQsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNsQjtLQUNGO0lBRUQsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRXhFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDL0IsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7S0FDRjtJQUVELElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztLQUNuQztJQUNELE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYXJyYXktdXRpbHMnO1xuXG4vKiogQHR5cGUgeyp9IEEgZGljdGlvbmFyeSBvZiBiYXNpYyBiaW5hcnkgb3BlcmF0aW9ucy4gKi9cbmNvbnN0IF9vcGVyYXRpb25zOiB7W25hbWU6IHN0cmluZ106IEZ1bmN0aW9ufSA9IHtcbiAgJysnOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhICsgYiksXG4gICctJzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSAtIGIpLFxuICAnKic6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgKiBiKSxcbiAgJy8nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIC8gYiksXG4gICdtaW4nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIDwgYiA/IGEgOiBiKSxcbiAgJ21heCc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgPiBiID8gYSA6IGIpLFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRpY2VzIHRoYXQgd291bGQgc29ydCBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIEFycmF5IHRvIHNvcnQuXG4gKiBAcmV0dXJuIHtJbnQzMkFycmF5fSBBcnJheSBvZiBpbmRpY2VzIHRoYXQgc29ydCB2YWx1ZXMgYWxvbmcgdGhlIGZpcnN0IGF4aXMuXG4gKi9cbmZ1bmN0aW9uIF9hcmdzb3J0KHZhbHVlczogRmxvYXQzMkFycmF5KTogSW50MzJBcnJheSB7XG4gIGNvbnN0IGFycmF5ID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICByZXR1cm4gSW50MzJBcnJheS5mcm9tKEFycmF5VXRpbHMuYXJnU29ydChhcnJheSkpO1xufVxuXG4vKipcbiAqIFRha2UgZWxlbWVudHMgZnJvbSBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0ludDMyQXJyYXl9IG9yZGVyIFRoZSBpbmRpY2VzIG9mIHRoZSB2YWx1ZXMgdG8gZXh0cmFjdC5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gVGhlIHJldHVybmVkIGFycmF5IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gX3Rha2Uob3JkZXI6IEludDMyQXJyYXksIHZhbHVlczogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgLy8gVE9ETzogSW1wbGVtZW50IGEgZ2VuZXJhbCBmdW5jdGlvbiBmb3IgVHlwZWRBcnJheS5cbiAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcykubWFwKChfLCBpKSA9PiB2YWx1ZXNbb3JkZXJbaV1dKTtcbn1cblxuLyoqXG4gKiBBc3NpZ24gZWxlbWVudHMgb2YgYW4gYXJyYXkgZm9sbG93aW5nIHRoZSBvcmRlciBnaXZlbiAoZmxvYXRpbmctcG9pbnQgdmVyc2lvbikuXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgc291cmNlIGFycmF5LlxuICogQHBhcmFtIHtJbnQzMkFycmF5fSBvcmRlciBUaGUgb3JkZXIgZ2l2ZW4uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9naXZlKHZhbHVlczogRmxvYXQzMkFycmF5LCBvcmRlcjogSW50MzJBcnJheSk6IEZsb2F0MzJBcnJheSB7XG4gIGNvbnN0IHYgPSBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyArK2kpIHtcbiAgICB2W29yZGVyW2ldXSA9IHZhbHVlc1tpXTtcbiAgfVxuICByZXR1cm4gdjtcbn1cblxuLyoqXG4gKiBBc3NpZ24gZWxlbWVudHMgb2YgYW4gYXJyYXkgZm9sbG93aW5nIHRoZSBvcmRlciBnaXZlbiAoYm9vbGVhbiB2ZXJzaW9uKS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGJvb2xlYW4+fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEBwYXJhbSB7SW50MzJBcnJheX0gb3JkZXIgVGhlIG9yZGVyIGdpdmVuLlxuICogQHJldHVybiB7QXJyYXk8Ym9vbGVhbj59IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9naXZlYih2YWx1ZXM6IEFycmF5PGJvb2xlYW4+LCBvcmRlcjogSW50MzJBcnJheSk6IEFycmF5PGJvb2xlYW4+IHtcbiAgY29uc3QgdiA9IEFycmF5LmZyb20odmFsdWVzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSB7XG4gICAgdltvcmRlcltpXV0gPSB2YWx1ZXNbaV07XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbi8qKlxuICogTm8gZnJpbGxzIGVtcGlyaWNhbCBjZGYgdXNlZCBpbiBmZHJjb3JyZWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB4IFRoZSBzb3VyY2UgYXJyYXkgdG8gdGFrZSBhIGRpbWVuc2lvbiBmcm9tLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBFbXBpcmljYWwgY2RmLlxuICovXG5mdW5jdGlvbiBfZWNkZih4OiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xuICBjb25zdCBub2JzID0geC5sZW5ndGg7XG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh4KS5tYXAoKF8sIGkpID0+IChpKzEpL25vYnMpO1xufVxuXG4vKipcbiAqIGNtID0gbnAuc3VtKDEuL25wLmFyYW5nZSgxLCBsZW4ocHZhbHNfc29ydGVkKSsxKSlcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIGdpdmVuLlxuICogQHJldHVybiB7bnVtYmVyfSBjbSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gX2NtKG46IG51bWJlcik6IG51bWJlciB7XG4gIGxldCBzdW0gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgIHN1bSArPSAxIC8gKGkrMSk7XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuLyoqXG4gKiBCYXNpYyBvcGVyYXRpb24gdW5kZXIgYSB2ZWN0b3IgYW5kIGEgc2NhbGFyLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIHNvdXJjZSB2ZWN0b3IuXG4gKiBAcGFyYW0ge251bWJlcn0gc2NhbGUgVGhlIHNjYWxhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3A9JyonXSBUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IE5ldyB2ZWN0b3IgYXMgYSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gX2ZhY3Rvcih2YWx1ZXM6IEZsb2F0MzJBcnJheSwgc2NhbGU6IG51bWJlciwgb3AgPSAnKicpOiBGbG9hdDMyQXJyYXkge1xuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKS5tYXAoKHYsIF8pID0+IF9vcGVyYXRpb25zW29wXSh2LCBzY2FsZSkpO1xufVxuXG4vKipcbiAqIEJhc2ljIG9wZXJhdGlvbiB1bmRlciB0d28gdmVjdG9ycy5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gc2NhbGUgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wPScqJ10gVGhlIG9wZXJhdGlvbiB0byBwZXJmb3JtLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBOZXcgdmVjdG9yIGFzIGEgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIF92ZmFjdG9yKHZhbHVlczogRmxvYXQzMkFycmF5LCBzY2FsZTogRmxvYXQzMkFycmF5LCBvcCA9ICcqJyk6IEZsb2F0MzJBcnJheSB7XG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpLm1hcCgodiwgaSkgPT4gX29wZXJhdGlvbnNbb3BdKHYsIHNjYWxlW2ldKSk7XG59XG5cbi8qKlxuICogQWNjdW11bGF0ZSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZSBtaW4gb3BlcmF0b3IgdG8gYWxsIGVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIGFycmF5IHRvIGFjdCBvbi5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gVGhlIGFjY3VtdWxhdGVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gX21pbmltdW1BY2N1bXVsYXRlKHZhbHVlczogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgY29uc3Qgbkl0ZW1zID0gdmFsdWVzLmxlbmd0aDtcbiAgY29uc3QgciA9IEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcyk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgIHJbaV0gPSB2YWx1ZXMuc2xpY2UoMCwgaSsxKS5yZWR1Y2UoKGEsIGIsIF8sIF9fKSA9PiAoX29wZXJhdGlvbnNbJ21pbiddKGEsIGIpKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogcHZhbHVlIGNvcnJlY3Rpb24gZm9yIGZhbHNlIGRpc2NvdmVyeSByYXRlXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHB2YWxzIFNldCBvZiBwLXZhbHVlcyBvZiB0aGUgaW5kaXZpZHVhbCB0ZXN0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYWxwaGE9MC4wNV0gRmFtaWx5LXdpc2UgZXJyb3IgcmF0ZS4gRGVmYXVsdHMgdG8gMC4wNS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWV0aG9kPSduJ10geydpJywgJ2luZGVwJywgJ3AnLCAncG9zY29ycicsICduJywgJ25lZ2NvcnInfSwgb3B0aW9uYWxcbiAqIFdoaWNoIG1ldGhvZCB0byB1c2UgZm9yIEZEUiBjb3JyZWN0aW9uLlxuICogYGB7J2knLCAnaW5kZXAnLCAncCcsICdwb3Njb3JyJ31gYCBhbGwgcmVmZXIgdG8gYGBmZHJfYmhgYFxuICogKEJlbmphbWluaS9Ib2NoYmVyZyBmb3IgaW5kZXBlbmRlbnQgb3IgcG9zaXRpdmVseVxuICogY29ycmVsYXRlZCB0ZXN0cykuIGBgeyduJywgJ25lZ2NvcnInfWBgIGJvdGggcmVmZXIgdG8gYGBmZHJfYnlgYFxuICogKEJlbmphbWluaS9ZZWt1dGllbGkgZm9yIGdlbmVyYWwgb3IgbmVnYXRpdmVseSBjb3JyZWxhdGVkIHRlc3RzKS5cbiAqIERlZmF1bHRzIHRvICduJy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU29ydGVkPWZhbHNlXSBJZiBGYWxzZSAoZGVmYXVsdCksIHRoZSBwX3ZhbHVlcyB3aWxsIGJlIHNvcnRlZCwgYnV0IHRoZSBjb3JyZWN0ZWRcbiAqIHB2YWx1ZXMgYXJlIGluIHRoZSBvcmlnaW5hbCBvcmRlci4gSWYgVHJ1ZSwgdGhlbiBpdCBhc3N1bWVkIHRoYXQgdGhlXG4gKiBwdmFsdWVzIGFyZSBhbHJlYWR5IHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gKiBAcmV0dXJuIHtbQXJyYXk8Ym9vbGVhbj4sIEZsb2F0MzJBcnJheV19IHJlamVjdGVkIDogbmRhcnJheSwgYm9vbFxuICogVHJ1ZSBpZiBhIGh5cG90aGVzaXMgaXMgcmVqZWN0ZWQsIEZhbHNlIGlmIG5vdFxuICogcHZhbHVlLWNvcnJlY3RlZCA6IG5kYXJyYXlcbiAqIHB2YWx1ZXMgYWRqdXN0ZWQgZm9yIG11bHRpcGxlIGh5cG90aGVzaXMgdGVzdGluZyB0byBsaW1pdCBGRFJcbiAqIEBzZWVcbiAqIElmIHRoZXJlIGlzIHByaW9yIGluZm9ybWF0aW9uIG9uIHRoZSBmcmFjdGlvbiBvZiB0cnVlIGh5cG90aGVzaXMsIHRoZW4gYWxwaGFcbiAqIHNob3VsZCBiZSBzZXQgdG8gYGBhbHBoYSAqIG0vbV8wYGAgd2hlcmUgbSBpcyB0aGUgbnVtYmVyIG9mIHRlc3RzLFxuICogZ2l2ZW4gYnkgdGhlIHAtdmFsdWVzLCBhbmQgbV8wIGlzIGFuIGVzdGltYXRlIG9mIHRoZSB0cnVlIGh5cG90aGVzaXMuXG4gKiAoc2VlIEJlbmphbWluaSwgS3JpZWdlciBhbmQgWWVrdXRlbGkpXG4gKlxuICogVGhlIHR3by1zdGVwIG1ldGhvZCBvZiBCZW5qYW1pbmksIEtyaWVnZXIgYW5kIFlla3V0aWVsIHRoYXQgZXN0aW1hdGVzIHRoZSBudW1iZXJcbiAqIG9mIGZhbHNlIGh5cG90aGVzZXMgd2lsbCBiZSBhdmFpbGFibGUgKHNvb24pLlxuICpcbiAqIEJvdGggbWV0aG9kcyBleHBvc2VkIHZpYSB0aGlzIGZ1bmN0aW9uIChCZW5qYW1pbmkvSG9jaGJlcmcsIEJlbmphbWluaS9ZZWt1dGllbGkpXG4gKiBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlIGZ1bmN0aW9uIGBgbXVsdGlwbGV0ZXN0c2BgLCBhcyBgYG1ldGhvZD1cImZkcl9iaFwiYGAgYW5kXG4gKiBgYG1ldGhvZD1cImZkcl9ieVwiYGAsIHJlc3BlY3RpdmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZkcmNvcnJlY3Rpb24oXG4gIHB2YWxzOiBGbG9hdDMyQXJyYXksXG4gIGFscGhhOiBudW1iZXIgPSAwLjA1LFxuICBtZXRob2Q6IHN0cmluZyA9J24nLFxuICBpc1NvcnRlZDogYm9vbGVhbiA9IGZhbHNlKTogW0FycmF5PGJvb2xlYW4+LCBGbG9hdDMyQXJyYXldXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbntcbiAgY29uc3Qgbkl0ZW1zID0gcHZhbHMubGVuZ3RoO1xuICBsZXQgcHZhbHNTb3J0ZWQ6IEZsb2F0MzJBcnJheTtcbiAgbGV0IHB2YWxzU29ydGluZDogSW50MzJBcnJheTtcbiAgbGV0IGNtID0gMDtcblxuICBpZiAoIWlzU29ydGVkKSB7XG4gICAgcHZhbHNTb3J0aW5kID0gX2FyZ3NvcnQocHZhbHMpO1xuICAgIHB2YWxzU29ydGVkID0gX3Rha2UocHZhbHNTb3J0aW5kLCBwdmFscyk7XG4gIH0gZWxzZSB7XG4gICAgcHZhbHNTb3J0aW5kID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKGkpKTtcbiAgICBwdmFsc1NvcnRlZCA9IHB2YWxzOyAvLyBhbGlhc1xuICB9XG5cbiAgbGV0IGVjZGZmYWN0b3IgPSBfZWNkZihwdmFsc1NvcnRlZCk7XG5cbiAgaWYgKFsnaScsICdpbmRlcCcsICdwJywgJ3Bvc2NvcnInXS5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgO1xuICB9IGVsc2UgaWYgKFsnbicsICduZWdjb3JyJ10uaW5jbHVkZXMobWV0aG9kKSkge1xuICAgIGNtID0gX2NtKG5JdGVtcyk7XG4gICAgZWNkZmZhY3RvciA9IF9mYWN0b3IoZWNkZmZhY3RvciwgY20sICcvJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvbmx5IGluZGVwIGFuZCBuZWdjb3JyIGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBjb25zdCByZWplY3Q6IGJvb2xlYW5bXSA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoZmFsc2UpO1xuICBsZXQgcmVqZWN0bWF4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgIGlmIChwdmFsc1NvcnRlZFtpXSA8PSBlY2RmZmFjdG9yW2ldKmFscGhhKSB7XG4gICAgICByZWplY3RtYXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZWplY3RtYXggPj0gMCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVqZWN0bWF4OyArK2kpIHtcbiAgICAgIHJlamVjdFtpXSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbGV0IHB2YWxzQ29ycmVjdGVkID0gX3ZmYWN0b3IocHZhbHNTb3J0ZWQsIGVjZGZmYWN0b3IsICcvJyk7XG4gIHB2YWxzQ29ycmVjdGVkID0gX21pbmltdW1BY2N1bXVsYXRlKHB2YWxzQ29ycmVjdGVkLnJldmVyc2UoKSkucmV2ZXJzZSgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICBpZiAocHZhbHNDb3JyZWN0ZWRbaV0gPiAxKSB7XG4gICAgICBwdmFsc0NvcnJlY3RlZFtpXSA9IDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc1NvcnRlZCkge1xuICAgIGNvbnN0IHB2YWxzQ29ycmVjdGVkXyA9IF9naXZlKHB2YWxzQ29ycmVjdGVkLCBwdmFsc1NvcnRpbmQpO1xuICAgIGNvbnN0IHJlamVjdF8gPSBfZ2l2ZWIocmVqZWN0LCBwdmFsc1NvcnRpbmQpO1xuICAgIHJldHVybiBbcmVqZWN0XywgcHZhbHNDb3JyZWN0ZWRfXTtcbiAgfVxuICByZXR1cm4gW3JlamVjdCwgcHZhbHNDb3JyZWN0ZWRdO1xufVxuIl19
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtdWx0aXBsZS10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFckUseURBQXlEO0FBQ3pELE1BQU0sV0FBVyxHQUErQjtJQUM5QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsR0FBRyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsS0FBSyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pELENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsUUFBUSxDQUFDLE1BQW9CO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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LEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRXhFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDL0IsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN2QixjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3pCO0lBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcnJheVV0aWxzfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9hcnJheS11dGlscyc7XG5cbi8qKiBAdHlwZSB7Kn0gQSBkaWN0aW9uYXJ5IG9mIGJhc2ljIGJpbmFyeSBvcGVyYXRpb25zLiAqL1xuY29uc3QgX29wZXJhdGlvbnM6IHtbbmFtZTogc3RyaW5nXTogRnVuY3Rpb259ID0ge1xuICAnKyc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgKyBiKSxcbiAgJy0nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIC0gYiksXG4gICcqJzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSAqIGIpLFxuICAnLyc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgLyBiKSxcbiAgJ21pbic6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgPCBiID8gYSA6IGIpLFxuICAnbWF4JzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSA+IGIgPyBhIDogYiksXG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGluZGljZXMgdGhhdCB3b3VsZCBzb3J0IGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgQXJyYXkgdG8gc29ydC5cbiAqIEByZXR1cm4ge0ludDMyQXJyYXl9IEFycmF5IG9mIGluZGljZXMgdGhhdCBzb3J0IHZhbHVlcyBhbG9uZyB0aGUgZmlyc3QgYXhpcy5cbiAqL1xuZnVuY3Rpb24gX2FyZ3NvcnQodmFsdWVzOiBGbG9hdDMyQXJyYXkpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgYXJyYXkgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gIHJldHVybiBJbnQzMkFycmF5LmZyb20oQXJyYXlVdGlscy5hcmdTb3J0KGFycmF5KSk7XG59XG5cbi8qKlxuICogVGFrZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7SW50MzJBcnJheX0gb3JkZXIgVGhlIGluZGljZXMgb2YgdGhlIHZhbHVlcyB0byBleHRyYWN0LlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgc291cmNlIGFycmF5LlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBUaGUgcmV0dXJuZWQgYXJyYXkgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBfdGFrZShvcmRlcjogSW50MzJBcnJheSwgdmFsdWVzOiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xuICAvLyBUT0RPOiBJbXBsZW1lbnQgYSBnZW5lcmFsIGZ1bmN0aW9uIGZvciBUeXBlZEFycmF5LlxuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKS5tYXAoKF8sIGkpID0+IHZhbHVlc1tvcmRlcltpXV0pO1xufVxuXG4vKipcbiAqIEFzc2lnbiBlbGVtZW50cyBvZiBhbiBhcnJheSBmb2xsb3dpbmcgdGhlIG9yZGVyIGdpdmVuIChmbG9hdGluZy1wb2ludCB2ZXJzaW9uKS5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBzb3VyY2UgYXJyYXkuXG4gKiBAcGFyYW0ge0ludDMyQXJyYXl9IG9yZGVyIFRoZSBvcmRlciBnaXZlbi5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gVGhlIHJldHVybmVkIGFycmF5IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gX2dpdmUodmFsdWVzOiBGbG9hdDMyQXJyYXksIG9yZGVyOiBJbnQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgY29uc3QgdiA9IEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcyk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlci5sZW5ndGg7ICsraSlcbiAgICB2W29yZGVyW2ldXSA9IHZhbHVlc1tpXTtcblxuICByZXR1cm4gdjtcbn1cblxuLyoqXG4gKiBBc3NpZ24gZWxlbWVudHMgb2YgYW4gYXJyYXkgZm9sbG93aW5nIHRoZSBvcmRlciBnaXZlbiAoYm9vbGVhbiB2ZXJzaW9uKS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGJvb2xlYW4+fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEBwYXJhbSB7SW50MzJBcnJheX0gb3JkZXIgVGhlIG9yZGVyIGdpdmVuLlxuICogQHJldHVybiB7QXJyYXk8Ym9vbGVhbj59IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9naXZlYih2YWx1ZXM6IEFycmF5PGJvb2xlYW4+LCBvcmRlcjogSW50MzJBcnJheSk6IEFycmF5PGJvb2xlYW4+IHtcbiAgY29uc3QgdiA9IEFycmF5LmZyb20odmFsdWVzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKVxuICAgIHZbb3JkZXJbaV1dID0gdmFsdWVzW2ldO1xuXG4gIHJldHVybiB2O1xufVxuXG4vKipcbiAqIE5vIGZyaWxscyBlbXBpcmljYWwgY2RmIHVzZWQgaW4gZmRyY29ycmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0geCBUaGUgc291cmNlIGFycmF5IHRvIHRha2UgYSBkaW1lbnNpb24gZnJvbS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gRW1waXJpY2FsIGNkZi5cbiAqL1xuZnVuY3Rpb24gX2VjZGYoeDogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgY29uc3Qgbm9icyA9IHgubGVuZ3RoO1xuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeCkubWFwKChfLCBpKSA9PiAoaSsxKS9ub2JzKTtcbn1cblxuLyoqXG4gKiBjbSA9IG5wLnN1bSgxLi9ucC5hcmFuZ2UoMSwgbGVuKHB2YWxzX3NvcnRlZCkrMSkpXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBnaXZlbi5cbiAqIEByZXR1cm4ge251bWJlcn0gY20gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIF9jbShuOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgc3VtICs9IDEgLyAoaSsxKTtcblxuICByZXR1cm4gc3VtO1xufVxuXG4vKipcbiAqIEJhc2ljIG9wZXJhdGlvbiB1bmRlciBhIHZlY3RvciBhbmQgYSBzY2FsYXIuXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgc291cmNlIHZlY3Rvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSBUaGUgc2NhbGFyLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcD0nKiddIFRoZSBvcGVyYXRpb24gdG8gcGVyZm9ybS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gTmV3IHZlY3RvciBhcyBhIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLlxuICovXG5mdW5jdGlvbiBfZmFjdG9yKHZhbHVlczogRmxvYXQzMkFycmF5LCBzY2FsZTogbnVtYmVyLCBvcCA9ICcqJyk6IEZsb2F0MzJBcnJheSB7XG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpLm1hcCgodiwgXykgPT4gX29wZXJhdGlvbnNbb3BdKHYsIHNjYWxlKSk7XG59XG5cbi8qKlxuICogQmFzaWMgb3BlcmF0aW9uIHVuZGVyIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSBzY2FsZSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3A9JyonXSBUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IE5ldyB2ZWN0b3IgYXMgYSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gX3ZmYWN0b3IodmFsdWVzOiBGbG9hdDMyQXJyYXksIHNjYWxlOiBGbG9hdDMyQXJyYXksIG9wID0gJyonKTogRmxvYXQzMkFycmF5IHtcbiAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcykubWFwKCh2LCBpKSA9PiBfb3BlcmF0aW9uc1tvcF0odiwgc2NhbGVbaV0pKTtcbn1cblxuLyoqXG4gKiBBY2N1bXVsYXRlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIG1pbiBvcGVyYXRvciB0byBhbGwgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgYXJyYXkgdG8gYWN0IG9uLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBUaGUgYWNjdW11bGF0ZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBfbWluaW11bUFjY3VtdWxhdGUodmFsdWVzOiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xuICBjb25zdCBuSXRlbXMgPSB2YWx1ZXMubGVuZ3RoO1xuICBjb25zdCByID0gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgIHJbaV0gPSB2YWx1ZXMuc2xpY2UoMCwgaSsxKS5yZWR1Y2UoKGEsIGIsIF8sIF9fKSA9PiAoX29wZXJhdGlvbnNbJ21pbiddKGEsIGIpKSk7XG5cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogcHZhbHVlIGNvcnJlY3Rpb24gZm9yIGZhbHNlIGRpc2NvdmVyeSByYXRlXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHB2YWxzIFNldCBvZiBwLXZhbHVlcyBvZiB0aGUgaW5kaXZpZHVhbCB0ZXN0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYWxwaGE9MC4wNV0gRmFtaWx5LXdpc2UgZXJyb3IgcmF0ZS4gRGVmYXVsdHMgdG8gMC4wNS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWV0aG9kPSduJ10geydpJywgJ2luZGVwJywgJ3AnLCAncG9zY29ycicsICduJywgJ25lZ2NvcnInfSwgb3B0aW9uYWxcbiAqIFdoaWNoIG1ldGhvZCB0byB1c2UgZm9yIEZEUiBjb3JyZWN0aW9uLlxuICogYGB7J2knLCAnaW5kZXAnLCAncCcsICdwb3Njb3JyJ31gYCBhbGwgcmVmZXIgdG8gYGBmZHJfYmhgYFxuICogKEJlbmphbWluaS9Ib2NoYmVyZyBmb3IgaW5kZXBlbmRlbnQgb3IgcG9zaXRpdmVseVxuICogY29ycmVsYXRlZCB0ZXN0cykuIGBgeyduJywgJ25lZ2NvcnInfWBgIGJvdGggcmVmZXIgdG8gYGBmZHJfYnlgYFxuICogKEJlbmphbWluaS9ZZWt1dGllbGkgZm9yIGdlbmVyYWwgb3IgbmVnYXRpdmVseSBjb3JyZWxhdGVkIHRlc3RzKS5cbiAqIERlZmF1bHRzIHRvICduJy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU29ydGVkPWZhbHNlXSBJZiBGYWxzZSAoZGVmYXVsdCksIHRoZSBwX3ZhbHVlcyB3aWxsIGJlIHNvcnRlZCwgYnV0IHRoZSBjb3JyZWN0ZWRcbiAqIHB2YWx1ZXMgYXJlIGluIHRoZSBvcmlnaW5hbCBvcmRlci4gSWYgVHJ1ZSwgdGhlbiBpdCBhc3N1bWVkIHRoYXQgdGhlXG4gKiBwdmFsdWVzIGFyZSBhbHJlYWR5IHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gKiBAcmV0dXJuIHtbQXJyYXk8Ym9vbGVhbj4sIEZsb2F0MzJBcnJheV19IHJlamVjdGVkIDogbmRhcnJheSwgYm9vbFxuICogVHJ1ZSBpZiBhIGh5cG90aGVzaXMgaXMgcmVqZWN0ZWQsIEZhbHNlIGlmIG5vdFxuICogcHZhbHVlLWNvcnJlY3RlZCA6IG5kYXJyYXlcbiAqIHB2YWx1ZXMgYWRqdXN0ZWQgZm9yIG11bHRpcGxlIGh5cG90aGVzaXMgdGVzdGluZyB0byBsaW1pdCBGRFJcbiAqIEBzZWVcbiAqIElmIHRoZXJlIGlzIHByaW9yIGluZm9ybWF0aW9uIG9uIHRoZSBmcmFjdGlvbiBvZiB0cnVlIGh5cG90aGVzaXMsIHRoZW4gYWxwaGFcbiAqIHNob3VsZCBiZSBzZXQgdG8gYGBhbHBoYSAqIG0vbV8wYGAgd2hlcmUgbSBpcyB0aGUgbnVtYmVyIG9mIHRlc3RzLFxuICogZ2l2ZW4gYnkgdGhlIHAtdmFsdWVzLCBhbmQgbV8wIGlzIGFuIGVzdGltYXRlIG9mIHRoZSB0cnVlIGh5cG90aGVzaXMuXG4gKiAoc2VlIEJlbmphbWluaSwgS3JpZWdlciBhbmQgWWVrdXRlbGkpXG4gKlxuICogVGhlIHR3by1zdGVwIG1ldGhvZCBvZiBCZW5qYW1pbmksIEtyaWVnZXIgYW5kIFlla3V0aWVsIHRoYXQgZXN0aW1hdGVzIHRoZSBudW1iZXJcbiAqIG9mIGZhbHNlIGh5cG90aGVzZXMgd2lsbCBiZSBhdmFpbGFibGUgKHNvb24pLlxuICpcbiAqIEJvdGggbWV0aG9kcyBleHBvc2VkIHZpYSB0aGlzIGZ1bmN0aW9uIChCZW5qYW1pbmkvSG9jaGJlcmcsIEJlbmphbWluaS9ZZWt1dGllbGkpXG4gKiBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlIGZ1bmN0aW9uIGBgbXVsdGlwbGV0ZXN0c2BgLCBhcyBgYG1ldGhvZD1cImZkcl9iaFwiYGAgYW5kXG4gKiBgYG1ldGhvZD1cImZkcl9ieVwiYGAsIHJlc3BlY3RpdmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZkcmNvcnJlY3Rpb24oXG4gIHB2YWxzOiBGbG9hdDMyQXJyYXksXG4gIGFscGhhOiBudW1iZXIgPSAwLjA1LFxuICBtZXRob2Q6IHN0cmluZyA9J24nLFxuICBpc1NvcnRlZDogYm9vbGVhbiA9IGZhbHNlKTogW0FycmF5PGJvb2xlYW4+LCBGbG9hdDMyQXJyYXldXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbntcbiAgY29uc3Qgbkl0ZW1zID0gcHZhbHMubGVuZ3RoO1xuICBsZXQgcHZhbHNTb3J0ZWQ6IEZsb2F0MzJBcnJheTtcbiAgbGV0IHB2YWxzU29ydGluZDogSW50MzJBcnJheTtcbiAgbGV0IGNtID0gMDtcblxuICBpZiAoIWlzU29ydGVkKSB7XG4gICAgcHZhbHNTb3J0aW5kID0gX2FyZ3NvcnQocHZhbHMpO1xuICAgIHB2YWxzU29ydGVkID0gX3Rha2UocHZhbHNTb3J0aW5kLCBwdmFscyk7XG4gIH0gZWxzZSB7XG4gICAgcHZhbHNTb3J0aW5kID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKGkpKTtcbiAgICBwdmFsc1NvcnRlZCA9IHB2YWxzOyAvLyBhbGlhc1xuICB9XG5cbiAgbGV0IGVjZGZmYWN0b3IgPSBfZWNkZihwdmFsc1NvcnRlZCk7XG5cbiAgaWYgKFsnbicsICduZWdjb3JyJ10uaW5jbHVkZXMobWV0aG9kKSkge1xuICAgIGNtID0gX2NtKG5JdGVtcyk7XG4gICAgZWNkZmZhY3RvciA9IF9mYWN0b3IoZWNkZmZhY3RvciwgY20sICcvJyk7XG4gIH0gZWxzZSBpZiAoIVsnaScsICdpbmRlcCcsICdwJywgJ3Bvc2NvcnInXS5pbmNsdWRlcyhtZXRob2QpKVxuICAgIHRocm93IG5ldyBFcnJvcignb25seSBpbmRlcCBhbmQgbmVnY29yciBpbXBsZW1lbnRlZCcpO1xuXG4gIGNvbnN0IHJlamVjdDogYm9vbGVhbltdID0gbmV3IEFycmF5KG5JdGVtcykuZmlsbChmYWxzZSk7XG4gIGxldCByZWplY3RtYXggPSAtMTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgaWYgKHB2YWxzU29ydGVkW2ldIDw9IGVjZGZmYWN0b3JbaV0qYWxwaGEpXG4gICAgICByZWplY3RtYXggPSBpO1xuICB9XG5cbiAgaWYgKHJlamVjdG1heCA+PSAwKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWplY3RtYXg7ICsraSlcbiAgICAgIHJlamVjdFtpXSA9IHRydWU7XG4gIH1cblxuICBsZXQgcHZhbHNDb3JyZWN0ZWQgPSBfdmZhY3RvcihwdmFsc1NvcnRlZCwgZWNkZmZhY3RvciwgJy8nKTtcbiAgcHZhbHNDb3JyZWN0ZWQgPSBfbWluaW11bUFjY3VtdWxhdGUocHZhbHNDb3JyZWN0ZWQucmV2ZXJzZSgpKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgIGlmIChwdmFsc0NvcnJlY3RlZFtpXSA+IDEpXG4gICAgICBwdmFsc0NvcnJlY3RlZFtpXSA9IDE7XG4gIH1cblxuICBpZiAoIWlzU29ydGVkKSB7XG4gICAgY29uc3QgcHZhbHNDb3JyZWN0ZWRfID0gX2dpdmUocHZhbHNDb3JyZWN0ZWQsIHB2YWxzU29ydGluZCk7XG4gICAgY29uc3QgcmVqZWN0XyA9IF9naXZlYihyZWplY3QsIHB2YWxzU29ydGluZCk7XG4gICAgcmV0dXJuIFtyZWplY3RfLCBwdmFsc0NvcnJlY3RlZF9dO1xuICB9XG4gIHJldHVybiBbcmVqZWN0LCBwdmFsc0NvcnJlY3RlZF07XG59XG4iXX0=
|
package/src/tests.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare type testStats = {
|
|
|
6
6
|
'p-value less': number;
|
|
7
7
|
};
|
|
8
8
|
declare type Population = number[] | Float32Array | Int32Array;
|
|
9
|
-
export declare function tTest(
|
|
9
|
+
export declare function tTest(sample1: Population, sample2: Population, devKnown?: boolean, devEqual?: boolean): testStats;
|
|
10
10
|
export declare function uTest(x: number[], y: number[], continuity?: boolean): testStats;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=tests.d.ts.map
|
package/src/tests.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["tests.ts"],"names":[],"mappings":"AAGA,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,aAAK,UAAU,GAAG,MAAM,EAAE,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvD,wBAAgB,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["tests.ts"],"names":[],"mappings":"AAGA,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,aAAK,UAAU,GAAG,MAAM,EAAE,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvD,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,UAAM,EAAE,QAAQ,UAAM,GAAG,SAAS,CA6CzG;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,UAAK,GAAG,SAAS,CA+B1E"}
|
package/src/tests.js
CHANGED
|
@@ -1,48 +1,46 @@
|
|
|
1
1
|
//@ts-ignore: no types
|
|
2
2
|
import * as jStat from 'jstat';
|
|
3
|
-
export function tTest(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
let wv;
|
|
13
|
-
let Z;
|
|
14
|
-
let K;
|
|
3
|
+
export function tTest(sample1, sample2, devKnown = false, devEqual = false) {
|
|
4
|
+
if (sample1.length <= 1 || sample2.length <= 1)
|
|
5
|
+
throw new Error(`StatisticsError: Wrong sample size; expected at least 2, got ${Math.min(sample1.length, sample2.length)})`);
|
|
6
|
+
const mean1 = jStat.mean(sample1);
|
|
7
|
+
const mean2 = jStat.mean(sample2);
|
|
8
|
+
const variance1 = jStat.variance(sample1);
|
|
9
|
+
const variance2 = jStat.variance(sample2);
|
|
10
|
+
const length1 = sample1.length;
|
|
11
|
+
const length2 = sample2.length;
|
|
15
12
|
let pMore;
|
|
16
13
|
let pLess;
|
|
17
14
|
let pTot;
|
|
18
15
|
if (!devKnown) {
|
|
19
16
|
if (!devEqual) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const sampleVariance1 = variance1 / length1;
|
|
18
|
+
const sampleVariance2 = variance2 / length2;
|
|
19
|
+
const criticalValue = (mean1 - mean2) / Math.sqrt(sampleVariance1 + sampleVariance2);
|
|
20
|
+
const dof = Math.pow((sampleVariance1 + sampleVariance2), 2) /
|
|
21
|
+
(Math.pow(sampleVariance1, 2) / (length1 - 1) + Math.pow(sampleVariance2, 2) / (length2 - 1));
|
|
22
|
+
pLess = jStat.studentt.cdf(criticalValue, dof);
|
|
25
23
|
pMore = 1 - pLess;
|
|
26
24
|
pTot = 2 * (pLess < pMore ? pLess : pMore);
|
|
27
25
|
}
|
|
28
26
|
else {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
pMore = 1 - jStat.studentt.cdf(
|
|
33
|
-
pLess = jStat.studentt.cdf(
|
|
27
|
+
const dof = length1 + length2 - 2;
|
|
28
|
+
const totalVariance = (variance1 * (length1 - 1) + variance2 * (length2 - 1)) / dof;
|
|
29
|
+
const criticalValue = Math.sqrt(length1 * length2 / (length1 + length2)) * (mean1 - mean2) / totalVariance;
|
|
30
|
+
pMore = 1 - jStat.studentt.cdf(criticalValue, dof);
|
|
31
|
+
pLess = jStat.studentt.cdf(criticalValue, dof);
|
|
34
32
|
pTot = 2 * (pLess < pMore ? pLess : pMore);
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
pLess = jStat.normal.pdf(
|
|
36
|
+
const sampleVariance1 = variance1 / length1;
|
|
37
|
+
const sampleVariance2 = variance2 / length2;
|
|
38
|
+
const criticalValue = (mean1 - mean2) / Math.sqrt(sampleVariance1 + sampleVariance2);
|
|
39
|
+
pLess = jStat.normal.pdf(criticalValue, 0, 1);
|
|
42
40
|
pMore = 1 - pLess;
|
|
43
41
|
pTot = 2 * (pLess < pMore ? pLess : pMore);
|
|
44
42
|
}
|
|
45
|
-
return { 'p-value': pTot, 'Mean difference':
|
|
43
|
+
return { 'p-value': pTot, 'Mean difference': mean1 - mean2, 'p-value more': pMore, 'p-value less': pLess };
|
|
46
44
|
}
|
|
47
45
|
export function uTest(x, y, continuity = true) {
|
|
48
46
|
const xy = x.concat(y);
|
|
@@ -60,9 +58,8 @@ export function uTest(x, y, continuity = true) {
|
|
|
60
58
|
const tieTerm = _tieTerm(ranks);
|
|
61
59
|
const s = Math.sqrt(n1 * n2 / 12 * ((n + 1) - tieTerm / (n * (n - 1))));
|
|
62
60
|
let numerator = U - mu;
|
|
63
|
-
if (continuity)
|
|
61
|
+
if (continuity)
|
|
64
62
|
numerator -= 0.5;
|
|
65
|
-
}
|
|
66
63
|
const z = numerator / s;
|
|
67
64
|
const p = 2 * (1 - jStat.normal.cdf(z, 0, 1));
|
|
68
65
|
return { 'p-value': p, 'Median difference': med1 - med2, 'p-value more': p, 'p-value less': p };
|
|
@@ -74,4 +71,4 @@ function _tieTerm(ranks) {
|
|
|
74
71
|
});
|
|
75
72
|
return jStat.sum(Object.values(ties));
|
|
76
73
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFZL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxJQUFnQixFQUFFLElBQWdCLEVBQUUsUUFBUSxHQUFDLEtBQUssRUFBRSxRQUFRLEdBQUMsS0FBSztJQUN0RixNQUFNLEVBQUUsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sRUFBRSxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxFQUFFLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLEVBQUUsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV2QixJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxFQUFFLENBQUM7SUFDUCxJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksSUFBSSxDQUFDO0lBRVQsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNkLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0UsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVwRCxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO0tBQ0Y7U0FBTTtRQUNMLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2QsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUM7SUFDRCxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBQyxDQUFDO0FBQ3JHLENBQUM7QUFFRCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQVcsRUFBRSxDQUFXLEVBQUUsVUFBVSxHQUFDLElBQUk7SUFDN0QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0IsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUV2QixJQUFJLFVBQVUsRUFBRTtRQUNkLFNBQVMsSUFBSSxHQUFHLENBQUM7S0FDbEI7SUFFRCxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBZTtJQUMvQixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBRXpDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9AdHMtaWdub3JlOiBubyB0eXBlc1xuaW1wb3J0ICogYXMgalN0YXQgZnJvbSAnanN0YXQnO1xuXG50eXBlIHRlc3RTdGF0cyA9IHtcbiAgJ3AtdmFsdWUnOiBudW1iZXIsXG4gICdNZWFuIGRpZmZlcmVuY2UnPzogbnVtYmVyLFxuICAnTWVkaWFuIGRpZmZlcmVuY2UnPzogbnVtYmVyLFxuICAncC12YWx1ZSBtb3JlJzogbnVtYmVyLFxuICAncC12YWx1ZSBsZXNzJzogbnVtYmVyLFxufTtcblxudHlwZSBQb3B1bGF0aW9uID0gbnVtYmVyW10gfCBGbG9hdDMyQXJyYXkgfCBJbnQzMkFycmF5O1xuXG5leHBvcnQgZnVuY3Rpb24gdFRlc3QoYXJyMTogUG9wdWxhdGlvbiwgYXJyMjogUG9wdWxhdGlvbiwgZGV2S25vd249ZmFsc2UsIGRldkVxdWFsPWZhbHNlKTogdGVzdFN0YXRzIHtcbiAgY29uc3QgbTE6IG51bWJlciA9IGpTdGF0Lm1lYW4oYXJyMSk7XG4gIGNvbnN0IG0yOiBudW1iZXIgPSBqU3RhdC5tZWFuKGFycjIpO1xuICBjb25zdCB2MTogbnVtYmVyID0galN0YXQudmFyaWFuY2UoYXJyMSk7XG4gIGNvbnN0IHYyOiBudW1iZXIgPSBqU3RhdC52YXJpYW5jZShhcnIyKTtcbiAgY29uc3QgbjEgPSBhcnIxLmxlbmd0aDtcbiAgY29uc3QgbjIgPSBhcnIyLmxlbmd0aDtcblxuICBsZXQgd3YxO1xuICBsZXQgd3YyO1xuICBsZXQgd3Y7XG4gIGxldCBaO1xuICBsZXQgSztcbiAgbGV0IHBNb3JlO1xuICBsZXQgcExlc3M7XG4gIGxldCBwVG90O1xuXG4gIGlmICghZGV2S25vd24pIHtcbiAgICBpZiAoIWRldkVxdWFsKSB7XG4gICAgICB3djEgPSB2MSAvIG4xO1xuICAgICAgd3YyID0gdjIgLyBuMjtcbiAgICAgIFogPSAobTEgLSBtMikgLyBNYXRoLnNxcnQod3YxICsgd3YyKTtcbiAgICAgIEsgPSBNYXRoLnBvdygod3YxICsgd3YyKSwgMikgLyAod3YxICogd3YxIC8gKG4xIC0gMSkgKyB3djIgKiB3djIgLyAobjIgLSAxKSk7XG5cbiAgICAgIHBMZXNzID0galN0YXQuc3R1ZGVudHQuY2RmKFosIEspO1xuICAgICAgcE1vcmUgPSAxIC0gcExlc3M7XG4gICAgICBwVG90ID0gMiAqIChwTGVzcyA8IHBNb3JlID8gcExlc3MgOiBwTW9yZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEsgPSBuMSArIG4yIC0gMjtcbiAgICAgIHd2ID0gKHYxICogKG4xIC0gMSkgKyB2MiAqIChuMiAtIDEpKSAvIEs7XG4gICAgICBaID0gTWF0aC5zcXJ0KG4xICogbjIgLyAobjEgKyBuMikpICogKG0xIC0gbTIpIC8gd3Y7XG5cbiAgICAgIHBNb3JlID0gMSAtIGpTdGF0LnN0dWRlbnR0LmNkZihaLCBLKTtcbiAgICAgIHBMZXNzID0galN0YXQuc3R1ZGVudHQuY2RmKFosIEspO1xuICAgICAgcFRvdCA9IDIgKiAocExlc3MgPCBwTW9yZSA/IHBMZXNzIDogcE1vcmUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3djEgPSB2MSAvIG4xO1xuICAgIHd2MiA9IHYyIC8gbjI7XG4gICAgWiA9IChtMSAtIG0yKSAvIE1hdGguc3FydCh3djEgKyB3djIpO1xuXG4gICAgcExlc3MgPSBqU3RhdC5ub3JtYWwucGRmKFosIDAsIDEpO1xuICAgIHBNb3JlID0gMSAtIHBMZXNzO1xuICAgIHBUb3QgPSAyICogKHBMZXNzIDwgcE1vcmUgPyBwTGVzcyA6IHBNb3JlKTtcbiAgfVxuICByZXR1cm4geydwLXZhbHVlJzogcFRvdCwgJ01lYW4gZGlmZmVyZW5jZSc6IG0xIC0gbTIsICdwLXZhbHVlIG1vcmUnOiBwTW9yZSwgJ3AtdmFsdWUgbGVzcyc6IHBMZXNzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVUZXN0KHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSwgY29udGludWl0eT10cnVlKTogdGVzdFN0YXRzIHtcbiAgY29uc3QgeHkgPSB4LmNvbmNhdCh5KTtcbiAgY29uc3QgbjEgPSB4Lmxlbmd0aDtcbiAgY29uc3QgbjIgPSB5Lmxlbmd0aDtcbiAgY29uc3QgbWVkMSA9IGpTdGF0Lm1lZGlhbih4KTtcbiAgY29uc3QgbWVkMiA9IGpTdGF0Lm1lZGlhbih5KTtcblxuICBjb25zdCByYW5rcyA9IGpTdGF0LnJhbmsoeHkpO1xuXG4gIGNvbnN0IFIxID0galN0YXQuc3VtKHJhbmtzLnNsaWNlKDAsIG4xKSk7XG4gIGNvbnN0IFUxID0gUjEgLSBuMSAqIChuMSArIDEpIC8gMjtcbiAgY29uc3QgVTIgPSBuMSAqIG4yIC0gVTE7XG4gIGNvbnN0IFUgPSBVMSA+IFUyID8gVTEgOiBVMjtcblxuICBjb25zdCBtdSA9IG4xICogbjIgLyAyO1xuICBjb25zdCBuID0gbjEgKyBuMjtcblxuICBjb25zdCB0aWVUZXJtID0gX3RpZVRlcm0ocmFua3MpO1xuICBjb25zdCBzID0gTWF0aC5zcXJ0KG4xICogbjIgLyAxMiAqICgobiArIDEpIC0gdGllVGVybSAvIChuKiAobiAtIDEpKSkpO1xuXG4gIGxldCBudW1lcmF0b3IgPSBVIC0gbXU7XG5cbiAgaWYgKGNvbnRpbnVpdHkpIHtcbiAgICBudW1lcmF0b3IgLT0gMC41O1xuICB9XG5cbiAgY29uc3QgeiA9IG51bWVyYXRvciAvIHM7XG5cbiAgY29uc3QgcCA9IDIgKiAoMSAtIGpTdGF0Lm5vcm1hbC5jZGYoeiwgMCwgMSkpO1xuXG4gIHJldHVybiB7J3AtdmFsdWUnOiBwLCAnTWVkaWFuIGRpZmZlcmVuY2UnOiBtZWQxIC0gbWVkMiwgJ3AtdmFsdWUgbW9yZSc6IHAsICdwLXZhbHVlIGxlc3MnOiBwfTtcbn1cblxuZnVuY3Rpb24gX3RpZVRlcm0ocmFua3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgY29uc3QgdGllczoge1trZXk6IG51bWJlcl06IG51bWJlcn0gPSB7fTtcblxuICByYW5rcy5mb3JFYWNoKChudW0pID0+IHtcbiAgICB0aWVzW251bV0gPSAodGllc1tudW1dIHx8IDApICsgMTtcbiAgfSk7XG5cbiAgcmV0dXJuIGpTdGF0LnN1bShPYmplY3QudmFsdWVzKHRpZXMpKTtcbn1cbiJdfQ==
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFZL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFtQixFQUFFLE9BQW1CLEVBQUUsUUFBUSxHQUFDLEtBQUssRUFBRSxRQUFRLEdBQUMsS0FBSztJQUM1RixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvSCxNQUFNLEtBQUssR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDL0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUUvQixJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSSxJQUFJLENBQUM7SUFFVCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sZUFBZSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDNUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUM1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O0lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0IsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUV2QixJQUFJLFVBQVU7UUFDWixTQUFTLElBQUksR0FBRyxDQUFDO0lBR25CLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5QyxPQUFPLEVBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQ2hHLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxLQUFlO0lBQy9CLE1BQU0sSUFBSSxHQUE0QixFQUFFLENBQUM7SUFFekMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL0B0cy1pZ25vcmU6IG5vIHR5cGVzXG5pbXBvcnQgKiBhcyBqU3RhdCBmcm9tICdqc3RhdCc7XG5cbnR5cGUgdGVzdFN0YXRzID0ge1xuICAncC12YWx1ZSc6IG51bWJlcixcbiAgJ01lYW4gZGlmZmVyZW5jZSc/OiBudW1iZXIsXG4gICdNZWRpYW4gZGlmZmVyZW5jZSc/OiBudW1iZXIsXG4gICdwLXZhbHVlIG1vcmUnOiBudW1iZXIsXG4gICdwLXZhbHVlIGxlc3MnOiBudW1iZXIsXG59O1xuXG50eXBlIFBvcHVsYXRpb24gPSBudW1iZXJbXSB8IEZsb2F0MzJBcnJheSB8IEludDMyQXJyYXk7XG5cbmV4cG9ydCBmdW5jdGlvbiB0VGVzdChzYW1wbGUxOiBQb3B1bGF0aW9uLCBzYW1wbGUyOiBQb3B1bGF0aW9uLCBkZXZLbm93bj1mYWxzZSwgZGV2RXF1YWw9ZmFsc2UpOiB0ZXN0U3RhdHMge1xuICBpZiAoc2FtcGxlMS5sZW5ndGggPD0gMSB8fCBzYW1wbGUyLmxlbmd0aCA8PSAxKVxuICAgIHRocm93IG5ldyBFcnJvcihgU3RhdGlzdGljc0Vycm9yOiBXcm9uZyBzYW1wbGUgc2l6ZTsgZXhwZWN0ZWQgYXQgbGVhc3QgMiwgZ290ICR7TWF0aC5taW4oc2FtcGxlMS5sZW5ndGgsIHNhbXBsZTIubGVuZ3RoKX0pYCk7XG5cbiAgY29uc3QgbWVhbjE6IG51bWJlciA9IGpTdGF0Lm1lYW4oc2FtcGxlMSk7XG4gIGNvbnN0IG1lYW4yOiBudW1iZXIgPSBqU3RhdC5tZWFuKHNhbXBsZTIpO1xuICBjb25zdCB2YXJpYW5jZTE6IG51bWJlciA9IGpTdGF0LnZhcmlhbmNlKHNhbXBsZTEpO1xuICBjb25zdCB2YXJpYW5jZTI6IG51bWJlciA9IGpTdGF0LnZhcmlhbmNlKHNhbXBsZTIpO1xuICBjb25zdCBsZW5ndGgxID0gc2FtcGxlMS5sZW5ndGg7XG4gIGNvbnN0IGxlbmd0aDIgPSBzYW1wbGUyLmxlbmd0aDtcblxuICBsZXQgcE1vcmU7XG4gIGxldCBwTGVzcztcbiAgbGV0IHBUb3Q7XG5cbiAgaWYgKCFkZXZLbm93bikge1xuICAgIGlmICghZGV2RXF1YWwpIHtcbiAgICAgIGNvbnN0IHNhbXBsZVZhcmlhbmNlMSA9IHZhcmlhbmNlMSAvIGxlbmd0aDE7XG4gICAgICBjb25zdCBzYW1wbGVWYXJpYW5jZTIgPSB2YXJpYW5jZTIgLyBsZW5ndGgyO1xuICAgICAgY29uc3QgY3JpdGljYWxWYWx1ZSA9IChtZWFuMSAtIG1lYW4yKSAvIE1hdGguc3FydChzYW1wbGVWYXJpYW5jZTEgKyBzYW1wbGVWYXJpYW5jZTIpO1xuICAgICAgY29uc3QgZG9mID0gTWF0aC5wb3coKHNhbXBsZVZhcmlhbmNlMSArIHNhbXBsZVZhcmlhbmNlMiksIDIpIC9cbiAgICAgICAgKE1hdGgucG93KHNhbXBsZVZhcmlhbmNlMSwgMikgLyAobGVuZ3RoMSAtIDEpICsgTWF0aC5wb3coc2FtcGxlVmFyaWFuY2UyLCAyKSAvIChsZW5ndGgyIC0gMSkpO1xuXG4gICAgICBwTGVzcyA9IGpTdGF0LnN0dWRlbnR0LmNkZihjcml0aWNhbFZhbHVlLCBkb2YpO1xuICAgICAgcE1vcmUgPSAxIC0gcExlc3M7XG4gICAgICBwVG90ID0gMiAqIChwTGVzcyA8IHBNb3JlID8gcExlc3MgOiBwTW9yZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRvZiA9IGxlbmd0aDEgKyBsZW5ndGgyIC0gMjtcbiAgICAgIGNvbnN0IHRvdGFsVmFyaWFuY2UgPSAodmFyaWFuY2UxICogKGxlbmd0aDEgLSAxKSArIHZhcmlhbmNlMiAqIChsZW5ndGgyIC0gMSkpIC8gZG9mO1xuICAgICAgY29uc3QgY3JpdGljYWxWYWx1ZSA9IE1hdGguc3FydChsZW5ndGgxICogbGVuZ3RoMiAvIChsZW5ndGgxICsgbGVuZ3RoMikpICogKG1lYW4xIC0gbWVhbjIpIC8gdG90YWxWYXJpYW5jZTtcblxuICAgICAgcE1vcmUgPSAxIC0galN0YXQuc3R1ZGVudHQuY2RmKGNyaXRpY2FsVmFsdWUsIGRvZik7XG4gICAgICBwTGVzcyA9IGpTdGF0LnN0dWRlbnR0LmNkZihjcml0aWNhbFZhbHVlLCBkb2YpO1xuICAgICAgcFRvdCA9IDIgKiAocExlc3MgPCBwTW9yZSA/IHBMZXNzIDogcE1vcmUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzYW1wbGVWYXJpYW5jZTEgPSB2YXJpYW5jZTEgLyBsZW5ndGgxO1xuICAgIGNvbnN0IHNhbXBsZVZhcmlhbmNlMiA9IHZhcmlhbmNlMiAvIGxlbmd0aDI7XG4gICAgY29uc3QgY3JpdGljYWxWYWx1ZSA9IChtZWFuMSAtIG1lYW4yKSAvIE1hdGguc3FydChzYW1wbGVWYXJpYW5jZTEgKyBzYW1wbGVWYXJpYW5jZTIpO1xuXG4gICAgcExlc3MgPSBqU3RhdC5ub3JtYWwucGRmKGNyaXRpY2FsVmFsdWUsIDAsIDEpO1xuICAgIHBNb3JlID0gMSAtIHBMZXNzO1xuICAgIHBUb3QgPSAyICogKHBMZXNzIDwgcE1vcmUgPyBwTGVzcyA6IHBNb3JlKTtcbiAgfVxuICByZXR1cm4geydwLXZhbHVlJzogcFRvdCwgJ01lYW4gZGlmZmVyZW5jZSc6IG1lYW4xIC0gbWVhbjIsICdwLXZhbHVlIG1vcmUnOiBwTW9yZSwgJ3AtdmFsdWUgbGVzcyc6IHBMZXNzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVUZXN0KHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSwgY29udGludWl0eT10cnVlKTogdGVzdFN0YXRzIHtcbiAgY29uc3QgeHkgPSB4LmNvbmNhdCh5KTtcbiAgY29uc3QgbjEgPSB4Lmxlbmd0aDtcbiAgY29uc3QgbjIgPSB5Lmxlbmd0aDtcbiAgY29uc3QgbWVkMSA9IGpTdGF0Lm1lZGlhbih4KTtcbiAgY29uc3QgbWVkMiA9IGpTdGF0Lm1lZGlhbih5KTtcblxuICBjb25zdCByYW5rcyA9IGpTdGF0LnJhbmsoeHkpO1xuXG4gIGNvbnN0IFIxID0galN0YXQuc3VtKHJhbmtzLnNsaWNlKDAsIG4xKSk7XG4gIGNvbnN0IFUxID0gUjEgLSBuMSAqIChuMSArIDEpIC8gMjtcbiAgY29uc3QgVTIgPSBuMSAqIG4yIC0gVTE7XG4gIGNvbnN0IFUgPSBVMSA+IFUyID8gVTEgOiBVMjtcblxuICBjb25zdCBtdSA9IG4xICogbjIgLyAyO1xuICBjb25zdCBuID0gbjEgKyBuMjtcblxuICBjb25zdCB0aWVUZXJtID0gX3RpZVRlcm0ocmFua3MpO1xuICBjb25zdCBzID0gTWF0aC5zcXJ0KG4xICogbjIgLyAxMiAqICgobiArIDEpIC0gdGllVGVybSAvIChuKiAobiAtIDEpKSkpO1xuXG4gIGxldCBudW1lcmF0b3IgPSBVIC0gbXU7XG5cbiAgaWYgKGNvbnRpbnVpdHkpXG4gICAgbnVtZXJhdG9yIC09IDAuNTtcblxuXG4gIGNvbnN0IHogPSBudW1lcmF0b3IgLyBzO1xuXG4gIGNvbnN0IHAgPSAyICogKDEgLSBqU3RhdC5ub3JtYWwuY2RmKHosIDAsIDEpKTtcblxuICByZXR1cm4geydwLXZhbHVlJzogcCwgJ01lZGlhbiBkaWZmZXJlbmNlJzogbWVkMSAtIG1lZDIsICdwLXZhbHVlIG1vcmUnOiBwLCAncC12YWx1ZSBsZXNzJzogcH07XG59XG5cbmZ1bmN0aW9uIF90aWVUZXJtKHJhbmtzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIGNvbnN0IHRpZXM6IHtba2V5OiBudW1iZXJdOiBudW1iZXJ9ID0ge307XG5cbiAgcmFua3MuZm9yRWFjaCgobnVtKSA9PiB7XG4gICAgdGllc1tudW1dID0gKHRpZXNbbnVtXSB8fCAwKSArIDE7XG4gIH0pO1xuXG4gIHJldHVybiBqU3RhdC5zdW0oT2JqZWN0LnZhbHVlcyh0aWVzKSk7XG59XG4iXX0=
|