raain-app 1.0.6 → 1.0.8
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/esm2020/tools/CompareManager.mjs +9 -4
- package/esm2020/tools/RefreshManager.mjs +8 -5
- package/fesm2015/raain-app.mjs +15 -7
- package/fesm2015/raain-app.mjs.map +1 -1
- package/fesm2020/raain-app.mjs +15 -7
- package/fesm2020/raain-app.mjs.map +1 -1
- package/package.json +1 -1
- package/tools/CompareManager.d.ts +1 -0
- package/tools/RefreshManager.d.ts +3 -1
|
@@ -18,6 +18,7 @@ export class CompareManager {
|
|
|
18
18
|
}
|
|
19
19
|
static async BuildCompare(frameSet, targetsOrdered, rainComputationQualities, withCompareDuplicate) {
|
|
20
20
|
let compareSpeedMatrix, compareTrustedIndicator;
|
|
21
|
+
let compareNames = [];
|
|
21
22
|
let compares = [];
|
|
22
23
|
const currentTarget = targetsOrdered.filter(t => t.date === '' + frameSet.date.getTime())[0];
|
|
23
24
|
const currentPos = targetsOrdered.indexOf(currentTarget);
|
|
@@ -25,7 +26,7 @@ export class CompareManager {
|
|
|
25
26
|
const nextTarget = currentPos >= 0 && currentPos < targetsOrdered.length - 1 ? targetsOrdered[currentPos + 1] : null;
|
|
26
27
|
const currentQuality = rainComputationQualities[currentTarget?.date];
|
|
27
28
|
if (!currentQuality) {
|
|
28
|
-
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
29
|
+
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares };
|
|
29
30
|
}
|
|
30
31
|
const previousQuality = previousTarget &&
|
|
31
32
|
CompareManager.CompareDate(previousTarget.date, currentTarget.date, -5) ?
|
|
@@ -37,6 +38,9 @@ export class CompareManager {
|
|
|
37
38
|
compareSpeedMatrix = qualitySpeedMatrixContainer.renderMergedMatrix({ normalize: true });
|
|
38
39
|
compareTrustedIndicator = qualitySpeedMatrixContainer.getTrustedIndicators()[0];
|
|
39
40
|
const comparesToMap = SpeedMatrixContainer.BuildCompares(currentQuality, previousQuality, nextQuality, !withCompareDuplicate);
|
|
41
|
+
compareNames = qualitySpeedMatrixContainer.getMatrices()
|
|
42
|
+
.map(m => m.name)
|
|
43
|
+
.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
|
|
40
44
|
compares = comparesToMap.map(c => {
|
|
41
45
|
return {
|
|
42
46
|
name: c.name,
|
|
@@ -46,7 +50,7 @@ export class CompareManager {
|
|
|
46
50
|
remarks: c.remarks
|
|
47
51
|
};
|
|
48
52
|
});
|
|
49
|
-
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
53
|
+
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares };
|
|
50
54
|
}
|
|
51
55
|
cleanAll() {
|
|
52
56
|
this.gaugesInCompare = [];
|
|
@@ -64,7 +68,7 @@ export class CompareManager {
|
|
|
64
68
|
return { date: '' + t.date.getTime(), rainComputationId: t.rainComputationId, rainComputationQualityId: t.rainComputationQualityId };
|
|
65
69
|
});
|
|
66
70
|
await this.fetchRainComputationQualities(targetsOrdered);
|
|
67
|
-
const { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares } = await CompareManager.BuildCompare(frameSet, targetsOrdered, this.rainComputationQualities, withCompareDuplicate);
|
|
71
|
+
const { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares } = await CompareManager.BuildCompare(frameSet, targetsOrdered, this.rainComputationQualities, withCompareDuplicate);
|
|
68
72
|
if (!currentQuality) {
|
|
69
73
|
this.cleanCompareQuality('no current quality ' + Object.keys(this.rainComputationQualities));
|
|
70
74
|
}
|
|
@@ -75,6 +79,7 @@ export class CompareManager {
|
|
|
75
79
|
this.compareVersion = currentQuality.getVersion();
|
|
76
80
|
this.compareSpeedMatrix = compareSpeedMatrix;
|
|
77
81
|
this.compareTrustedIndicator = compareTrustedIndicator;
|
|
82
|
+
this.compareNames = compareNames;
|
|
78
83
|
this.compares = compares;
|
|
79
84
|
}
|
|
80
85
|
this.onChanges();
|
|
@@ -230,4 +235,4 @@ export class CompareManager {
|
|
|
230
235
|
this.selectGaugeInCompare();
|
|
231
236
|
}
|
|
232
237
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9Db21wYXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBZ0Usb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQVlqQyxNQUFNLE9BQU8sY0FBYztJQXlCekIsWUFDWSxRQUFrQixFQUNsQixjQUE4QixFQUNqQyxZQUF3QixHQUFHLEVBQUU7SUFDcEMsQ0FBQztRQUhTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQ2Y7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxPQUFlO1FBRXhFLE1BQU0sV0FBVyxHQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxLQUFLLENBQUMs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QUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXBMYXRMbmd9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7UG9zaXRpb25WYWx1ZSwgUXVhbGl0eVBvaW50LCBSYWluQ29tcHV0YXRpb25RdWFsaXR5LCBSYWluTm9kZSwgU3BlZWRNYXRyaXhDb250YWluZXJ9IGZyb20gJ3JhYWluLW1vZGVsJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuaW1wb3J0IHtQcm9maWxlU2VydmljZX0gZnJvbSAnLi4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7RnJhbWVTZXR9IGZyb20gJy4vRnJhbWVTZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wYXJlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wYXJlUG9pbnRzOiBYWVR5cGVbXTtcbiAgY29tcGFyZVBvaW50c01heDogWFlUeXBlO1xuICBjb21wYXJlUG9pbnRzSGlzdG9yeTogUXVhbGl0eVBvaW50W107XG4gIHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBhcmVNYW5hZ2VyIHtcblxuICAvLyBwdWJsaWMgY29tcHV0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBnYXVnZXNJbkNvbXBhcmU6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgc2VsZWN0ZWRHYXVnZXM6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgc2VsZWN0ZWRQaXhlbHM6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgcGl4ZWxzU29sdXRpb25zOiBNYXBMYXRMbmdbXVtdO1xuXG4gIHB1YmxpYyBjb21wYXJlTmFtZXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgY29tcGFyZXM6IElDb21wYXJlW107XG4gIHB1YmxpYyBjb21wYXJlU3BlZWRNYXRyaXg6IFBvc2l0aW9uVmFsdWVbXTtcbiAgcHVibGljIGNvbXBhcmVWZXJzaW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjb21wYXJlVHJ1c3RlZEluZGljYXRvcjogbnVtYmVyO1xuICBwdWJsaWMgY3VycmVudFF1YWxpdHlEb25lRGF0ZTogRGF0ZTtcbiAgcHVibGljIGN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeTogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudFF1YWxpdHlUaW1lU3BlbnRJbk1zOiBudW1iZXI7XG4gIHB1YmxpYyBnbG9iYWxDb21wYXJlUG9pbnRzOiBYWVR5cGVbXTtcbiAgcHVibGljIGdsb2JhbENvbXBhcmVQb2ludHNNYXg6IFhZVHlwZTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRHYXVnZTogUXVhbGl0eVBvaW50O1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRHYXVnZUluUG9pbnRzOiBRdWFsaXR5UG9pbnQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlSW5Qb2ludHNEZXRhaWw6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJhaW5Db21wdXRhdGlvblF1YWxpdGllczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByYWluTm9kZTogUmFpbk5vZGUsXG4gICAgcHJvdGVjdGVkIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcbiAgICBwdWJsaWMgb25DaGFuZ2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5jbGVhbkFsbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBDb21wYXJlRGF0ZShkYXRlMTogc3RyaW5nLCBkYXRlMjogc3RyaW5nLCBtaW51dGVzOiBudW1iZXIpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IGRhdGUxQXNEYXRlOiBEYXRlID0gbmV3IERhdGUocGFyc2VJbnQoZGF0ZTEsIDEwKSk7XG4gICAgY29uc3QgZGF0ZTJEaWZmID0gbmV3IERhdGUocGFyc2VJbnQoZGF0ZTIsIDEwKSk7XG4gICAgZGF0ZTJEaWZmLnNldE1pbnV0ZXMoZGF0ZTJEaWZmLmdldE1pbnV0ZXMoKSArIG1pbnV0ZXMpO1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLnJvdW5kKChkYXRlMUFzRGF0ZS5nZXRUaW1lKCkgLSBkYXRlMkRpZmYuZ2V0VGltZSgpKSAvICg2MCAqIDEwMDApKTtcbiAgICByZXR1cm4gZGlmZiA9PT0gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgYXN5bmMgQnVpbGRDb21wYXJlKGZyYW1lU2V0OiB7IGRhdGU6IERhdGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0c09yZGVyZWQ6IHsgZGF0ZTogc3RyaW5nOyByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nOyByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdGllczogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhbikge1xuXG4gICAgbGV0IGNvbXBhcmVTcGVlZE1hdHJpeCwgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3I7XG4gICAgbGV0IGNvbXBhcmVzOiBJQ29tcGFyZVtdID0gW107XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IHRhcmdldHNPcmRlcmVkLmZpbHRlcih0ID0+IHQuZGF0ZSA9PT0gJycgKyBmcmFtZVNldC5kYXRlLmdldFRpbWUoKSlbMF07XG4gICAgY29uc3QgY3VycmVudFBvcyA9IHRhcmdldHNPcmRlcmVkLmluZGV4T2YoY3VycmVudFRhcmdldCk7XG4gICAgY29uc3QgcHJldmlvdXNUYXJnZXQgPSBjdXJyZW50UG9zID49IDAgPyB0YXJnZXRzT3JkZXJlZFtjdXJyZW50UG9zIC0gMV0gOiBudWxsO1xuICAgIGNvbnN0IG5leHRUYXJnZXQgPSBjdXJyZW50UG9zID49IDAgJiYgY3VycmVudFBvcyA8IHRhcmdldHNPcmRlcmVkLmxlbmd0aCAtIDEgPyB0YXJnZXRzT3JkZXJlZFtjdXJyZW50UG9zICsgMV0gOiBudWxsO1xuXG5cbiAgICBjb25zdCBjdXJyZW50UXVhbGl0eTogUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSA9IHJhaW5Db21wdXRhdGlvblF1YWxpdGllc1tjdXJyZW50VGFyZ2V0Py5kYXRlXTtcbiAgICBpZiAoIWN1cnJlbnRRdWFsaXR5KSB7XG4gICAgICByZXR1cm4ge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc307XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNRdWFsaXR5OiBSYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gcHJldmlvdXNUYXJnZXQgJiZcbiAgICBDb21wYXJlTWFuYWdlci5Db21wYXJlRGF0ZShwcmV2aW91c1RhcmdldC5kYXRlLCBjdXJyZW50VGFyZ2V0LmRhdGUsIC01KSA/XG4gICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbcHJldmlvdXNUYXJnZXQuZGF0ZV0gOiBudWxsO1xuICAgIGNvbnN0IG5leHRRdWFsaXR5OiBSYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gbmV4dFRhcmdldFxuICAgICYmIENvbXBhcmVNYW5hZ2VyLkNvbXBhcmVEYXRlKG5leHRUYXJnZXQuZGF0ZSwgY3VycmVudFRhcmdldC5kYXRlLCArNSkgP1xuICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW25leHRUYXJnZXQuZGF0ZV0gOiBudWxsO1xuXG4gICAgY29uc3QgcXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyID0gY3VycmVudFF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyO1xuICAgIGNvbXBhcmVTcGVlZE1hdHJpeCA9IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5yZW5kZXJNZXJnZWRNYXRyaXgoe25vcm1hbGl6ZTogdHJ1ZX0pO1xuICAgIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yID0gcXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyLmdldFRydXN0ZWRJbmRpY2F0b3JzKClbMF07XG5cbiAgICBjb25zdCBjb21wYXJlc1RvTWFwID0gU3BlZWRNYXRyaXhDb250YWluZXIuQnVpbGRDb21wYXJlcyhjdXJyZW50UXVhbGl0eSwgcHJldmlvdXNRdWFsaXR5LCBuZXh0UXVhbGl0eSwgIXdpdGhDb21wYXJlRHVwbGljYXRlKTtcbiAgICBjb21wYXJlcyA9IGNvbXBhcmVzVG9NYXAubWFwKGMgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgICBjb21wYXJlUG9pbnRzOiBjLnF1YWxpdHlQb2ludHMubWFwKHAgPT4gbmV3IFhZVHlwZShwLmdldEdhdWdlVmFsdWUoKSwgcC5nZXRSYWluVmFsdWUoKSwgMiwgcC5nYXVnZUxhYmVsLCBwLmdhdWdlSWQpKSxcbiAgICAgICAgY29tcGFyZVBvaW50c01heDogbmV3IFhZVHlwZShjLm1heFZhbHVlICsgMjAsIGMubWF4VmFsdWUgKyAyMCksXG4gICAgICAgIGNvbXBhcmVQb2ludHNIaXN0b3J5OiBjLnF1YWxpdHlQb2ludHNMZWdhY3ksXG4gICAgICAgIHJlbWFya3M6IGMucmVtYXJrc1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4ge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc307XG4gIH1cblxuICBwdWJsaWMgY2xlYW5BbGwoKSB7XG4gICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG5cbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICB0aGlzLmNsZWFuQ29tcGFyZVF1YWxpdHkoJ25vIGNvbXBhcmUnKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGRhdGU6IERhdGU7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBjb25zdCB0YXJnZXRzT3JkZXJlZCA9IHRhcmdldHNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSlcbiAgICAgIC5tYXAodCA9PiB7XG4gICAgICAgIHJldHVybiB7ZGF0ZTogJycgKyB0LmRhdGUuZ2V0VGltZSgpLCByYWluQ29tcHV0YXRpb25JZDogdC5yYWluQ29tcHV0YXRpb25JZCwgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiB0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZH07XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQpO1xuXG4gICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgYXdhaXQgQ29tcGFyZU1hbmFnZXIuQnVpbGRDb21wYXJlKGZyYW1lU2V0LCB0YXJnZXRzT3JkZXJlZCwgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMsIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcblxuICAgIGlmICghY3VycmVudFF1YWxpdHkpIHtcbiAgICAgIHRoaXMuY2xlYW5Db21wYXJlUXVhbGl0eSgnbm8gY3VycmVudCBxdWFsaXR5ICcgKyBPYmplY3Qua2V5cyh0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5RG9uZURhdGUgPSBjdXJyZW50UXVhbGl0eS5pc0RvbmVEYXRlO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgPSBjdXJyZW50UXVhbGl0eS50aW1lU3BlbnRJbk1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgPSBjdXJyZW50UXVhbGl0eS5sYXVuY2hlZEJ5O1xuICAgICAgdGhpcy5jb21wYXJlVmVyc2lvbiA9IGN1cnJlbnRRdWFsaXR5LmdldFZlcnNpb24oKTtcbiAgICAgIHRoaXMuY29tcGFyZVNwZWVkTWF0cml4ID0gY29tcGFyZVNwZWVkTWF0cml4O1xuICAgICAgdGhpcy5jb21wYXJlVHJ1c3RlZEluZGljYXRvciA9IGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yO1xuICAgICAgdGhpcy5jb21wYXJlcyA9IGNvbXBhcmVzO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoR2xvYmFsQ29tcGFyZVF1YWxpdHkodGFyZ2V0czogeyBkYXRlOiBEYXRlOyByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nOyByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhbikge1xuXG4gICAgY29uc3QgdGFyZ2V0c09yZGVyZWQgPSB0YXJnZXRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpXG4gICAgICAubWFwKHQgPT4ge1xuICAgICAgICByZXR1cm4ge2RhdGU6ICcnICsgdC5kYXRlLmdldFRpbWUoKSwgcmFpbkNvbXB1dGF0aW9uSWQ6IHQucmFpbkNvbXB1dGF0aW9uSWQsIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogdC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWR9O1xuICAgICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmZldGNoUmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKHRhcmdldHNPcmRlcmVkKTtcblxuICAgIGxldCBnbG9iYWxDb21wYXJlUG9pbnRzOiBYWVR5cGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGFyZ2V0cykge1xuICAgICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgICBhd2FpdCBDb21wYXJlTWFuYWdlci5CdWlsZENvbXBhcmUoZnJhbWVTZXQsIHRhcmdldHNPcmRlcmVkLCB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcywgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgICAgZm9yIChjb25zdCBjb21wYXJlIG9mIGNvbXBhcmVzID8gY29tcGFyZXMgOiBbXSkge1xuICAgICAgICBnbG9iYWxDb21wYXJlUG9pbnRzID0gZ2xvYmFsQ29tcGFyZVBvaW50cy5jb25jYXQoY29tcGFyZS5jb21wYXJlUG9pbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWF4WCA9IDAsIG1heFkgPSAwO1xuICAgIGNvbnN0IGdsb2JhbENvbXBhcmVQb2ludHNHcm91cGVkID0gW107XG4gICAgY29uc3QgcG9pbnRzR3JvdXBlZEJ5SWQgPSBnbG9iYWxDb21wYXJlUG9pbnRzLnJlZHVjZSgocmVzLCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFyZXNbdmFsdWUuaWRdKSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0gPSB2YWx1ZTtcbiAgICAgICAgZ2xvYmFsQ29tcGFyZVBvaW50c0dyb3VwZWQucHVzaChyZXNbdmFsdWUuaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0ueCArPSB2YWx1ZS54O1xuICAgICAgICByZXNbdmFsdWUuaWRdLnkgKz0gdmFsdWUueTtcbiAgICAgIH1cbiAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCByZXNbdmFsdWUuaWRdLngpO1xuICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHJlc1t2YWx1ZS5pZF0ueSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMgPSBnbG9iYWxDb21wYXJlUG9pbnRzR3JvdXBlZDtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHNNYXggPSBuZXcgWFlUeXBlKG1heFgsIG1heFkpO1xuICB9XG5cbiAgYXN5bmMgc2V0R2F1Z2VzKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZXRHYXVnZXMnKTtcblxuICAgIGNvbnN0IHF1YWxpdHlQb2ludHM6IFF1YWxpdHlQb2ludFtdID0gW107XG4gICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMuY29tcGFyZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVhbGl0eVBvaW50IG9mIGNvbXBhcmUuY29tcGFyZVBvaW50c0hpc3RvcnkpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gcXVhbGl0eVBvaW50cy5maWx0ZXIocCA9PiBwPy5nYXVnZUlkID09PSBxdWFsaXR5UG9pbnQuZ2F1Z2VJZCk7XG4gICAgICAgIGlmIChhbHJlYWR5QWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcXVhbGl0eVBvaW50cy5wdXNoKHF1YWxpdHlQb2ludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdhdWdlc0luQ29tcGFyZSA9IHF1YWxpdHlQb2ludHMubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBNYXBMYXRMbmcocC5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCwgcC5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgMCxcbiAgICAgICAgcC5nYXVnZUlkLCBwLmdhdWdlTGFiZWwgKyAnPicgKyBwLmdldEdhdWdlVmFsdWUoKSxcbiAgICAgICAgcC5nZXRHYXVnZVZhbHVlKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gIH1cblxuICBhc3luYyBzZWxlY3RHYXVnZShnYXVnZUlkOiBzdHJpbmcsIGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NlbGVjdEdhdWdlJywgZ2F1Z2VJZCwgY29tcGFyZUluZGV4KTtcblxuICAgIGlmIChnYXVnZUlkKSB7XG4gICAgICBjb25zdCB4eXMgPSB0aGlzLmdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleCkuZmlsdGVyKHAgPT4gcC5nYXVnZUlkID09PSBnYXVnZUlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IHh5cy5sZW5ndGggPT09IDEgPyB4eXNbMF0gOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEdhdWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gdGhpcy5nZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXgpLmZpbHRlcihwID0+IHAuZ2F1Z2VJZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlLmdhdWdlSWQpO1xuICAgIGxldCBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW10gPSBbXTtcblxuICAgIGlmIChzZWxlY3RlZEdhdWdlSW5Qb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCByZW1hcmtzID0gSlNPTi5wYXJzZShzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0ucmVtYXJrKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtIC0gYi5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtKTtcbiAgICAgIGNvbnNvbGUubG9nKHJlbWFya3MpO1xuICAgICAgcGl4ZWxzU29sdXRpb25zID0gcmVtYXJrc1xuICAgICAgICAubWFwKHJlbWFyayA9PiByZW1hcmsuc29sdXRpb25Gb3JHYXVnZS5waXhlbHNcbiAgICAgICAgICAubWFwKHAgPT4gbmV3IE1hcExhdExuZyhwLnkgKyAwLjAwNSwgcC54ICsgMC4wMSwgMCwgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLCAnJyArICFyZW1hcmsubm90UG9zc2libGUsIDEpKSk7XG5cbiAgICAgIGNvbnN0IHRpbWVEZWx0YUluTWludXRlcyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXS5nZXRUaW1lRGVsdGFJbk1pbnV0ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsID0gJycgKyBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2F1Z2VMYWJlbCArICcgPiAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0R2F1Z2VWYWx1ZSgpICogMTAwKSAvIDEwMCArICcgLyAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0UmFpblZhbHVlKCkgKiAxMDApIC8gMTAwXG4gICAgICAgICsgJyBkVD0nICsgdGltZURlbHRhSW5NaW51dGVzO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXG4gICAgICBuZXcgTWFwTGF0TG5nKHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUubGF0LCB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUlkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUxhYmVsICsgJz4nICsgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSksXG4gICAgXTtcblxuICAgIHRoaXMuc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKTtcblxuICAgIGNvbnN0IHBpeGVsczogTWFwTGF0TG5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhaW5DYXJ0ZXNpYW5WYWx1ZSBvZiB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5yYWluQ2FydGVzaWFuVmFsdWVzKSB7XG4gICAgICBwaXhlbHMucHVzaChuZXcgTWFwTGF0TG5nKHJhaW5DYXJ0ZXNpYW5WYWx1ZS5sYXQgKyAwLjAwNSwgcmFpbkNhcnRlc2lhblZhbHVlLmxuZyArIDAuMDEpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IHBpeGVscztcblxuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gcGl4ZWxzU29sdXRpb25zO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGNvbXBhcmVJbmRleCA8IDAgfHwgdGhpcy5jb21wYXJlTmFtZXMubGVuZ3RoIDwgY29tcGFyZUluZGV4KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZXNbY29tcGFyZUluZGV4XS5jb21wYXJlUG9pbnRzSGlzdG9yeTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbkNvbXBhcmVRdWFsaXR5KGRldGFpbHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gZGV0YWlscztcbiAgICB0aGlzLmNvbXBhcmVOYW1lcyA9IFtdO1xuICAgIHRoaXMuY29tcGFyZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBhcmVTcGVlZE1hdHJpeCA9IFtdO1xuICAgIHRoaXMuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMgPSB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaFJhaW5Db21wdXRhdGlvblF1YWxpdGllcyh0YXJnZXRzT3JkZXJlZDoge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nXG4gIH1bXSkge1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMpKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRhcmdldHNPcmRlcmVkLmZpbHRlcih0ID0+IHQuZGF0ZSA9PT0ga2V5KTtcbiAgICAgIGlmIChmb3VuZC5sZW5ndGggPCAwKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHNPcmRlcmVkKSB7XG4gICAgICBpZiAoIXRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW3RhcmdldC5kYXRlXSAmJiB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbdGFyZ2V0LmRhdGVdID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZVxuICAgICAgICAgICAgLmdldFJhaW5Db21wYXJlQnlJZCh0aGlzLnJhaW5Ob2RlLmdldElkKCksIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCwgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RHYXVnZUluQ29tcGFyZSgpIHtcbiAgICBmb3IgKGNvbnN0IGNvbXBhcmUgb2YgdGhpcy5jb21wYXJlcykge1xuICAgICAgY29uc3QgY29tcGFyZVBvaW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGFyZS5jb21wYXJlUG9pbnRzKSk7XG4gICAgICBjb21wYXJlUG9pbnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIGlmIChwLmlkID09PSB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cz8uZ2F1Z2VJZCkge1xuICAgICAgICAgIHAuciA9IDEwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHAuciA9IDM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29tcGFyZS5jb21wYXJlUG9pbnRzID0gY29tcGFyZVBvaW50cztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3RlZEdhdWdlcygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVzZXRTZWxlY3RlZEdhdWdlcyByZXNldCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdEdhdWdlSW5Db21wYXJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9Db21wYXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBZ0Usb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQVlqQyxNQUFNLE9BQU8sY0FBYztJQXlCekIsWUFDWSxRQUFrQixFQUNsQixjQUE4QixFQUNqQyxZQUF3QixHQUFHLEVBQUU7SUFDcEMsQ0FBQztRQUhTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQ2Y7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxPQUFlO1FBRXhFLE1BQU0sV0FBVyxHQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBd0IsRUFDeEIsY0FBK0YsRUFDL0Ysd0JBQTZCLEVBQzdCLG9CQUE2QjtRQUUvRCxJQUFJLGtCQUFrQixFQUFFLHVCQUF1QixDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxJQUFJLFFBQVEsR0FBZSxFQUFFLENBQUM7UUFDOUIsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sY0FBYyxHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvRSxNQUFNLFVBQVUsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBR3JILE1BQU0sY0FBYyxHQUEyQix3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUMsQ0FBQztTQUM5RjtRQUVELE1BQU0sZUFBZSxHQUEyQixjQUFjO1lBQzlELGNBQWMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBMkIsVUFBVTtlQUNuRCxjQUFjLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEUsd0JBQXdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbkQsTUFBTSwyQkFBMkIsR0FBRyxjQUFjLENBQUMsMkJBQTJCLENBQUM7UUFDL0Usa0JBQWtCLEdBQUcsMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN2Rix1QkFBdUIsR0FBRywyQkFBMkIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUgsWUFBWSxHQUFHLDJCQUEyQixDQUFDLFdBQVcsRUFBRTthQUNyRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFFBQVEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9CLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwSCxnQkFBZ0IsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDOUQsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDM0MsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO2FBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBQyxDQUFDO0lBQy9GLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxRQUFrQixFQUNsQixPQUFzRixFQUN0RixvQkFBNkI7UUFFdkQsTUFBTSxjQUFjLEdBQUcsT0FBTzthQUMzQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxFQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixFQUFDLENBQUM7UUFDckksQ0FBQyxDQUFDLENBQUM7UUFFTCxNQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV6RCxNQUFNLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUMsR0FDekYsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFbkgsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1NBQzlGO2FBQU07WUFDTCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUN4RCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUNoRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7WUFDN0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO1lBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsMkJBQTJCLENBQUMsT0FBc0YsRUFDdEYsb0JBQTZCO1FBRTdELE1BQU0sY0FBYyxHQUFHLE9BQU87YUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25ELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sRUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBQyxDQUFDO1FBQ3JJLENBQUMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxJQUFJLENBQUMsNkJBQTZCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsSUFBSSxtQkFBbUIsR0FBYSxFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDOUIsTUFBTSxFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUMsR0FDM0UsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDbkgsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3pFO1NBQ0Y7UUFFRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUN2QixNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDbEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM1QjtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLG1CQUFtQixHQUFHLDBCQUEwQixDQUFDO1FBQ3RELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsNEJBQTRCO1FBRTVCLE1BQU0sYUFBYSxHQUFtQixFQUFFLENBQUM7UUFDekMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25DLEtBQUssTUFBTSxZQUFZLElBQUksT0FBTyxDQUFDLG9CQUFvQixFQUFFO2dCQUN2RCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BGLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7U0FDRjtRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQzFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUNqRCxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQWUsRUFBRSxZQUFvQjtRQUNyRCxxREFBcUQ7UUFFckQsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN2RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQ25DO1FBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ILElBQUksZUFBZSxHQUFrQixFQUFFLENBQUM7UUFFeEMsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUN4RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDbkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixlQUFlLEdBQUcsT0FBTztpQkFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU07aUJBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpILE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLO2tCQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLO2tCQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7a0JBQy9ELE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztZQUVoQyxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FFdkQ7YUFBTTtZQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUM3SCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUNsRyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1NBQ3hELENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixNQUFNLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxrQkFBa0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLEVBQUU7WUFDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNGO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVTLHVCQUF1QixDQUFDLFlBQW9CO1FBQ3BELElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUU7WUFDL0QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztJQUMxRCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsT0FBZ0I7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVTLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxjQUkzQztRQUVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN6RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxjQUFjLEVBQUU7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFO2dCQUNsRixJQUFJO29CQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYzt5QkFDbkUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7aUJBQ3pHO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2hCO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN4RSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sRUFBRTtvQkFDaEQsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7aUJBQ1Y7cUJBQU07b0JBQ0wsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ1Q7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcExhdExuZ30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtQb3NpdGlvblZhbHVlLCBRdWFsaXR5UG9pbnQsIFJhaW5Db21wdXRhdGlvblF1YWxpdHksIFJhaW5Ob2RlLCBTcGVlZE1hdHJpeENvbnRhaW5lcn0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtGcmFtZVNldH0gZnJvbSAnLi9GcmFtZVNldCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBhcmUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbXBhcmVQb2ludHM6IFhZVHlwZVtdO1xuICBjb21wYXJlUG9pbnRzTWF4OiBYWVR5cGU7XG4gIGNvbXBhcmVQb2ludHNIaXN0b3J5OiBRdWFsaXR5UG9pbnRbXTtcbiAgcmVtYXJrczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tcGFyZU1hbmFnZXIge1xuXG4gIC8vIHB1YmxpYyBjb21wdXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHVibGljIGdhdWdlc0luQ29tcGFyZTogTWFwTGF0TG5nW107XG4gIHB1YmxpYyBzZWxlY3RlZEdhdWdlczogTWFwTGF0TG5nW107XG4gIHB1YmxpYyBzZWxlY3RlZFBpeGVsczogTWFwTGF0TG5nW107XG4gIHB1YmxpYyBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW107XG5cbiAgcHVibGljIGNvbXBhcmVOYW1lczogc3RyaW5nW107XG4gIHB1YmxpYyBjb21wYXJlczogSUNvbXBhcmVbXTtcbiAgcHVibGljIGNvbXBhcmVTcGVlZE1hdHJpeDogUG9zaXRpb25WYWx1ZVtdO1xuICBwdWJsaWMgY29tcGFyZVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yOiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50UXVhbGl0eURvbmVEYXRlOiBEYXRlO1xuICBwdWJsaWMgY3VycmVudFF1YWxpdHlMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXM6IG51bWJlcjtcbiAgcHVibGljIGdsb2JhbENvbXBhcmVQb2ludHM6IFhZVHlwZVtdO1xuICBwdWJsaWMgZ2xvYmFsQ29tcGFyZVBvaW50c01heDogWFlUeXBlO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlOiBRdWFsaXR5UG9pbnQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlSW5Qb2ludHM6IFF1YWxpdHlQb2ludDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJhaW5Ob2RlOiBSYWluTm9kZSxcbiAgICBwcm90ZWN0ZWQgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBvbkNoYW5nZXM6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgfVxuICApIHtcbiAgICB0aGlzLmNsZWFuQWxsKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIENvbXBhcmVEYXRlKGRhdGUxOiBzdHJpbmcsIGRhdGUyOiBzdHJpbmcsIG1pbnV0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgZGF0ZTFBc0RhdGU6IERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChkYXRlMSwgMTApKTtcbiAgICBjb25zdCBkYXRlMkRpZmYgPSBuZXcgRGF0ZShwYXJzZUludChkYXRlMiwgMTApKTtcbiAgICBkYXRlMkRpZmYuc2V0TWludXRlcyhkYXRlMkRpZmYuZ2V0TWludXRlcygpICsgbWludXRlcyk7XG4gICAgY29uc3QgZGlmZiA9IE1hdGgucm91bmQoKGRhdGUxQXNEYXRlLmdldFRpbWUoKSAtIGRhdGUyRGlmZi5nZXRUaW1lKCkpIC8gKDYwICogMTAwMCkpO1xuICAgIHJldHVybiBkaWZmID09PSAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBhc3luYyBCdWlsZENvbXBhcmUoZnJhbWVTZXQ6IHsgZGF0ZTogRGF0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzT3JkZXJlZDogeyBkYXRlOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBsZXQgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvcjtcbiAgICBsZXQgY29tcGFyZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBjb21wYXJlczogSUNvbXBhcmVbXSA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXRzT3JkZXJlZC5maWx0ZXIodCA9PiB0LmRhdGUgPT09ICcnICsgZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkpWzBdO1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0YXJnZXRzT3JkZXJlZC5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IHByZXZpb3VzVGFyZ2V0ID0gY3VycmVudFBvcyA+PSAwID8gdGFyZ2V0c09yZGVyZWRbY3VycmVudFBvcyAtIDFdIDogbnVsbDtcbiAgICBjb25zdCBuZXh0VGFyZ2V0ID0gY3VycmVudFBvcyA+PSAwICYmIGN1cnJlbnRQb3MgPCB0YXJnZXRzT3JkZXJlZC5sZW5ndGggLSAxID8gdGFyZ2V0c09yZGVyZWRbY3VycmVudFBvcyArIDFdIDogbnVsbDtcblxuXG4gICAgY29uc3QgY3VycmVudFF1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHkgPSByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbY3VycmVudFRhcmdldD8uZGF0ZV07XG4gICAgaWYgKCFjdXJyZW50UXVhbGl0eSkge1xuICAgICAgcmV0dXJuIHtjdXJyZW50UXVhbGl0eSwgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvciwgY29tcGFyZU5hbWVzLCBjb21wYXJlc307XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNRdWFsaXR5OiBSYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gcHJldmlvdXNUYXJnZXQgJiZcbiAgICBDb21wYXJlTWFuYWdlci5Db21wYXJlRGF0ZShwcmV2aW91c1RhcmdldC5kYXRlLCBjdXJyZW50VGFyZ2V0LmRhdGUsIC01KSA/XG4gICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbcHJldmlvdXNUYXJnZXQuZGF0ZV0gOiBudWxsO1xuICAgIGNvbnN0IG5leHRRdWFsaXR5OiBSYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gbmV4dFRhcmdldFxuICAgICYmIENvbXBhcmVNYW5hZ2VyLkNvbXBhcmVEYXRlKG5leHRUYXJnZXQuZGF0ZSwgY3VycmVudFRhcmdldC5kYXRlLCArNSkgP1xuICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW25leHRUYXJnZXQuZGF0ZV0gOiBudWxsO1xuXG4gICAgY29uc3QgcXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyID0gY3VycmVudFF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyO1xuICAgIGNvbXBhcmVTcGVlZE1hdHJpeCA9IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5yZW5kZXJNZXJnZWRNYXRyaXgoe25vcm1hbGl6ZTogdHJ1ZX0pO1xuICAgIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yID0gcXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyLmdldFRydXN0ZWRJbmRpY2F0b3JzKClbMF07XG5cbiAgICBjb25zdCBjb21wYXJlc1RvTWFwID0gU3BlZWRNYXRyaXhDb250YWluZXIuQnVpbGRDb21wYXJlcyhjdXJyZW50UXVhbGl0eSwgcHJldmlvdXNRdWFsaXR5LCBuZXh0UXVhbGl0eSwgIXdpdGhDb21wYXJlRHVwbGljYXRlKTtcblxuICAgIGNvbXBhcmVOYW1lcyA9IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5nZXRNYXRyaWNlcygpXG4gICAgICAubWFwKG0gPT4gbS5uYW1lKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEsIDEwKSAtIHBhcnNlSW50KGIsIDEwKSk7XG4gICAgY29tcGFyZXMgPSBjb21wYXJlc1RvTWFwLm1hcChjID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgY29tcGFyZVBvaW50czogYy5xdWFsaXR5UG9pbnRzLm1hcChwID0+IG5ldyBYWVR5cGUocC5nZXRHYXVnZVZhbHVlKCksIHAuZ2V0UmFpblZhbHVlKCksIDIsIHAuZ2F1Z2VMYWJlbCwgcC5nYXVnZUlkKSksXG4gICAgICAgIGNvbXBhcmVQb2ludHNNYXg6IG5ldyBYWVR5cGUoYy5tYXhWYWx1ZSArIDIwLCBjLm1heFZhbHVlICsgMjApLFxuICAgICAgICBjb21wYXJlUG9pbnRzSGlzdG9yeTogYy5xdWFsaXR5UG9pbnRzTGVnYWN5LFxuICAgICAgICByZW1hcmtzOiBjLnJlbWFya3NcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHtjdXJyZW50UXVhbGl0eSwgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvciwgY29tcGFyZU5hbWVzLCBjb21wYXJlc307XG4gIH1cblxuICBwdWJsaWMgY2xlYW5BbGwoKSB7XG4gICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG5cbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICB0aGlzLmNsZWFuQ29tcGFyZVF1YWxpdHkoJ25vIGNvbXBhcmUnKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGRhdGU6IERhdGU7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBjb25zdCB0YXJnZXRzT3JkZXJlZCA9IHRhcmdldHNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSlcbiAgICAgIC5tYXAodCA9PiB7XG4gICAgICAgIHJldHVybiB7ZGF0ZTogJycgKyB0LmRhdGUuZ2V0VGltZSgpLCByYWluQ29tcHV0YXRpb25JZDogdC5yYWluQ29tcHV0YXRpb25JZCwgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiB0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZH07XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQpO1xuXG4gICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlTmFtZXMsIGNvbXBhcmVzfSA9XG4gICAgICBhd2FpdCBDb21wYXJlTWFuYWdlci5CdWlsZENvbXBhcmUoZnJhbWVTZXQsIHRhcmdldHNPcmRlcmVkLCB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcywgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuXG4gICAgaWYgKCFjdXJyZW50UXVhbGl0eSkge1xuICAgICAgdGhpcy5jbGVhbkNvbXBhcmVRdWFsaXR5KCdubyBjdXJyZW50IHF1YWxpdHkgJyArIE9iamVjdC5rZXlzKHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFF1YWxpdHlEb25lRGF0ZSA9IGN1cnJlbnRRdWFsaXR5LmlzRG9uZURhdGU7XG4gICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NcyA9IGN1cnJlbnRRdWFsaXR5LnRpbWVTcGVudEluTXM7XG4gICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeSA9IGN1cnJlbnRRdWFsaXR5LmxhdW5jaGVkQnk7XG4gICAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gY3VycmVudFF1YWxpdHkuZ2V0VmVyc2lvbigpO1xuICAgICAgdGhpcy5jb21wYXJlU3BlZWRNYXRyaXggPSBjb21wYXJlU3BlZWRNYXRyaXg7XG4gICAgICB0aGlzLmNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yID0gY29tcGFyZVRydXN0ZWRJbmRpY2F0b3I7XG4gICAgICB0aGlzLmNvbXBhcmVOYW1lcyA9IGNvbXBhcmVOYW1lcztcbiAgICAgIHRoaXMuY29tcGFyZXMgPSBjb21wYXJlcztcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaEdsb2JhbENvbXBhcmVRdWFsaXR5KHRhcmdldHM6IHsgZGF0ZTogRGF0ZTsgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZzsgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmcgfVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW4pIHtcblxuICAgIGNvbnN0IHRhcmdldHNPcmRlcmVkID0gdGFyZ2V0c1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZGF0ZS5nZXRUaW1lKCkgLSBiLmRhdGUuZ2V0VGltZSgpKVxuICAgICAgLm1hcCh0ID0+IHtcbiAgICAgICAgcmV0dXJuIHtkYXRlOiAnJyArIHQuZGF0ZS5nZXRUaW1lKCksIHJhaW5Db21wdXRhdGlvbklkOiB0LnJhaW5Db21wdXRhdGlvbklkLCByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkfTtcbiAgICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5mZXRjaFJhaW5Db21wdXRhdGlvblF1YWxpdGllcyh0YXJnZXRzT3JkZXJlZCk7XG5cbiAgICBsZXQgZ2xvYmFsQ29tcGFyZVBvaW50czogWFlUeXBlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZyYW1lU2V0IG9mIHRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHtjdXJyZW50UXVhbGl0eSwgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvciwgY29tcGFyZXN9ID1cbiAgICAgICAgYXdhaXQgQ29tcGFyZU1hbmFnZXIuQnVpbGRDb21wYXJlKGZyYW1lU2V0LCB0YXJnZXRzT3JkZXJlZCwgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMsIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcbiAgICAgIGZvciAoY29uc3QgY29tcGFyZSBvZiBjb21wYXJlcyA/IGNvbXBhcmVzIDogW10pIHtcbiAgICAgICAgZ2xvYmFsQ29tcGFyZVBvaW50cyA9IGdsb2JhbENvbXBhcmVQb2ludHMuY29uY2F0KGNvbXBhcmUuY29tcGFyZVBvaW50cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG1heFggPSAwLCBtYXhZID0gMDtcbiAgICBjb25zdCBnbG9iYWxDb21wYXJlUG9pbnRzR3JvdXBlZCA9IFtdO1xuICAgIGNvbnN0IHBvaW50c0dyb3VwZWRCeUlkID0gZ2xvYmFsQ29tcGFyZVBvaW50cy5yZWR1Y2UoKHJlcywgdmFsdWUpID0+IHtcbiAgICAgIGlmICghcmVzW3ZhbHVlLmlkXSkge1xuICAgICAgICByZXNbdmFsdWUuaWRdID0gdmFsdWU7XG4gICAgICAgIGdsb2JhbENvbXBhcmVQb2ludHNHcm91cGVkLnB1c2gocmVzW3ZhbHVlLmlkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNbdmFsdWUuaWRdLnggKz0gdmFsdWUueDtcbiAgICAgICAgcmVzW3ZhbHVlLmlkXS55ICs9IHZhbHVlLnk7XG4gICAgICB9XG4gICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgcmVzW3ZhbHVlLmlkXS54KTtcbiAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCByZXNbdmFsdWUuaWRdLnkpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB7fSk7XG4gICAgdGhpcy5nbG9iYWxDb21wYXJlUG9pbnRzID0gZ2xvYmFsQ29tcGFyZVBvaW50c0dyb3VwZWQ7XG4gICAgdGhpcy5nbG9iYWxDb21wYXJlUG9pbnRzTWF4ID0gbmV3IFhZVHlwZShtYXhYLCBtYXhZKTtcbiAgfVxuXG4gIGFzeW5jIHNldEdhdWdlcygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnc2V0R2F1Z2VzJyk7XG5cbiAgICBjb25zdCBxdWFsaXR5UG9pbnRzOiBRdWFsaXR5UG9pbnRbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29tcGFyZSBvZiB0aGlzLmNvbXBhcmVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHF1YWxpdHlQb2ludCBvZiBjb21wYXJlLmNvbXBhcmVQb2ludHNIaXN0b3J5KSB7XG4gICAgICAgIGNvbnN0IGFscmVhZHlBZGRlZCA9IHF1YWxpdHlQb2ludHMuZmlsdGVyKHAgPT4gcD8uZ2F1Z2VJZCA9PT0gcXVhbGl0eVBvaW50LmdhdWdlSWQpO1xuICAgICAgICBpZiAoYWxyZWFkeUFkZGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHF1YWxpdHlQb2ludHMucHVzaChxdWFsaXR5UG9pbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBxdWFsaXR5UG9pbnRzLm1hcChwID0+IHtcbiAgICAgIHJldHVybiBuZXcgTWFwTGF0TG5nKHAuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS5sYXQsIHAuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS5sbmcsIDAsXG4gICAgICAgIHAuZ2F1Z2VJZCwgcC5nYXVnZUxhYmVsICsgJz4nICsgcC5nZXRHYXVnZVZhbHVlKCksXG4gICAgICAgIHAuZ2V0R2F1Z2VWYWx1ZSgpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVzZXRTZWxlY3RlZEdhdWdlcygpO1xuICB9XG5cbiAgYXN5bmMgc2VsZWN0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nLCBjb21wYXJlSW5kZXg6IG51bWJlcikge1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZWxlY3RHYXVnZScsIGdhdWdlSWQsIGNvbXBhcmVJbmRleCk7XG5cbiAgICBpZiAoZ2F1Z2VJZCkge1xuICAgICAgY29uc3QgeHlzID0gdGhpcy5nZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXgpLmZpbHRlcihwID0+IHAuZ2F1Z2VJZCA9PT0gZ2F1Z2VJZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSB4eXMubGVuZ3RoID09PSAxID8geHlzWzBdIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRHYXVnZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzZXRTZWxlY3RlZEdhdWdlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IHRoaXMuZ2V0Q3VycmVudFF1YWxpdHlQb2ludHMoY29tcGFyZUluZGV4KS5maWx0ZXIocCA9PiBwLmdhdWdlSWQgPT09IHRoaXMuc2VsZWN0ZWRHYXVnZS5nYXVnZUlkKTtcbiAgICBsZXQgcGl4ZWxzU29sdXRpb25zOiBNYXBMYXRMbmdbXVtdID0gW107XG5cbiAgICBpZiAoc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgcmVtYXJrcyA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLnJlbWFyaylcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuY3JpdGVyaWFBdHRlbXB0ZWRUb0JlTWluaW11bSAtIGIuY3JpdGVyaWFBdHRlbXB0ZWRUb0JlTWluaW11bSk7XG4gICAgICBjb25zb2xlLmxvZyhyZW1hcmtzKTtcbiAgICAgIHBpeGVsc1NvbHV0aW9ucyA9IHJlbWFya3NcbiAgICAgICAgLm1hcChyZW1hcmsgPT4gcmVtYXJrLnNvbHV0aW9uRm9yR2F1Z2UucGl4ZWxzXG4gICAgICAgICAgLm1hcChwID0+IG5ldyBNYXBMYXRMbmcocC55ICsgMC4wMDUsIHAueCArIDAuMDEsIDAsICcnICsgIXJlbWFyay5ub3RQb3NzaWJsZSwgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLCAxKSkpO1xuXG4gICAgICBjb25zdCB0aW1lRGVsdGFJbk1pbnV0ZXMgPSBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0VGltZURlbHRhSW5NaW51dGVzKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbCA9ICcnICsgc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdhdWdlTGFiZWwgKyAnID4gJ1xuICAgICAgICArIE1hdGgucm91bmQoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdldEdhdWdlVmFsdWUoKSAqIDEwMCkgLyAxMDAgKyAnIC8gJ1xuICAgICAgICArIE1hdGgucm91bmQoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdldFJhaW5WYWx1ZSgpICogMTAwKSAvIDEwMFxuICAgICAgICArICcgZFQ9JyArIHRpbWVEZWx0YUluTWludXRlcztcblxuICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF07XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW1xuICAgICAgbmV3IE1hcExhdExuZyh0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCwgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS5sbmcsIHVuZGVmaW5lZCxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VJZCxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VMYWJlbCArICc+JyArIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUudmFsdWUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUudmFsdWUpLFxuICAgIF07XG5cbiAgICB0aGlzLnNlbGVjdEdhdWdlSW5Db21wYXJlKCk7XG5cbiAgICBjb25zdCBwaXhlbHM6IE1hcExhdExuZ1tdID0gW107XG4gICAgZm9yIChjb25zdCByYWluQ2FydGVzaWFuVmFsdWUgb2YgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMucmFpbkNhcnRlc2lhblZhbHVlcykge1xuICAgICAgcGl4ZWxzLnB1c2gobmV3IE1hcExhdExuZyhyYWluQ2FydGVzaWFuVmFsdWUubGF0ICsgMC4wMDUsIHJhaW5DYXJ0ZXNpYW5WYWx1ZS5sbmcgKyAwLjAxKSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQaXhlbHMgPSBwaXhlbHM7XG5cbiAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IHBpeGVsc1NvbHV0aW9ucztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXg6IG51bWJlcikge1xuICAgIGlmIChjb21wYXJlSW5kZXggPCAwIHx8IHRoaXMuY29tcGFyZU5hbWVzLmxlbmd0aCA8IGNvbXBhcmVJbmRleCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbXBhcmVzW2NvbXBhcmVJbmRleF0uY29tcGFyZVBvaW50c0hpc3Rvcnk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5Db21wYXJlUXVhbGl0eShkZXRhaWxzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21wYXJlVmVyc2lvbiA9IGRldGFpbHM7XG4gICAgdGhpcy5jb21wYXJlTmFtZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBhcmVzID0gW107XG4gICAgdGhpcy5jb21wYXJlU3BlZWRNYXRyaXggPSBbXTtcbiAgICB0aGlzLmNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzID0ge307XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQ6IHtcbiAgICBkYXRlOiBzdHJpbmc7XG4gICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZztcbiAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZ1xuICB9W10pIHtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKSkge1xuICAgICAgY29uc3QgZm91bmQgPSB0YXJnZXRzT3JkZXJlZC5maWx0ZXIodCA9PiB0LmRhdGUgPT09IGtleSk7XG4gICAgICBpZiAoZm91bmQubGVuZ3RoIDwgMCkge1xuICAgICAgICBkZWxldGUgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzT3JkZXJlZCkge1xuICAgICAgaWYgKCF0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1t0YXJnZXQuZGF0ZV0gJiYgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW3RhcmdldC5kYXRlXSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRSYWluQ29tcGFyZUJ5SWQodGhpcy5yYWluTm9kZS5nZXRJZCgpLCB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsIHRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKSB7XG4gICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMuY29tcGFyZXMpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmVQb2ludHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBhcmUuY29tcGFyZVBvaW50cykpO1xuICAgICAgY29tcGFyZVBvaW50cy5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBpZiAocC5pZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHM/LmdhdWdlSWQpIHtcbiAgICAgICAgICBwLnIgPSAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwLnIgPSAzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbXBhcmUuY29tcGFyZVBvaW50cyA9IGNvbXBhcmVQb2ludHM7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0U2VsZWN0ZWRHYXVnZXMoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3Jlc2V0U2VsZWN0ZWRHYXVnZXMgcmVzZXQnKTtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG4gICAgdGhpcy5zZWxlY3RHYXVnZUluQ29tcGFyZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -65,7 +65,7 @@ export class RefreshManager {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
// align Compare with targets
|
|
68
|
-
this.refreshCompareQuality(current, targets
|
|
68
|
+
this.refreshCompareQuality(current, targets).then((ignored) => {
|
|
69
69
|
});
|
|
70
70
|
return current;
|
|
71
71
|
}
|
|
@@ -111,6 +111,9 @@ export class RefreshManager {
|
|
|
111
111
|
async selectGauge(gaugeId, compareIndex) {
|
|
112
112
|
return this.compareManager.selectGauge(gaugeId, compareIndex);
|
|
113
113
|
}
|
|
114
|
+
setRemoveDuplicate(b) {
|
|
115
|
+
this.removeDuplicate = b;
|
|
116
|
+
}
|
|
114
117
|
async refreshCounts() {
|
|
115
118
|
const counts = await this.profileService.getCounts(this.rainNode.id, this.begin, this.end, true);
|
|
116
119
|
this.countsPeriod = {
|
|
@@ -166,7 +169,7 @@ export class RefreshManager {
|
|
|
166
169
|
target.rainComputationQualityId = this.getRainComputationQualityTarget(frameSet);
|
|
167
170
|
targets.push(target);
|
|
168
171
|
}
|
|
169
|
-
await this.compareManager.refreshGlobalCompareQuality(targets,
|
|
172
|
+
await this.compareManager.refreshGlobalCompareQuality(targets, !this.removeDuplicate);
|
|
170
173
|
}
|
|
171
174
|
async refreshMapTimeframeContainers(target) {
|
|
172
175
|
if (!target || !target.rainComputationId) {
|
|
@@ -192,9 +195,9 @@ export class RefreshManager {
|
|
|
192
195
|
}
|
|
193
196
|
return newCreatedTimeframeContainers;
|
|
194
197
|
}
|
|
195
|
-
async refreshCompareQuality(frameSet, targets
|
|
196
|
-
await this.compareManager.refreshCompareQuality(frameSet, targets,
|
|
198
|
+
async refreshCompareQuality(frameSet, targets) {
|
|
199
|
+
await this.compareManager.refreshCompareQuality(frameSet, targets, !this.removeDuplicate);
|
|
197
200
|
await this.compareManager.setGauges();
|
|
198
201
|
}
|
|
199
202
|
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9SZWZyZXNoTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFLakUsTUFBTSxPQUFPLGNBQWM7SUFlekIsWUFDWSxRQUFrQixFQUNsQixZQUEwQixFQUMxQixjQUE4QixFQUM5QixjQUE4QixFQUM5QixtQkFBaUYsRUFDakYsYUFBd0QsRUFDeEQsV0FBd0U7UUFOeEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBOEQ7UUFDakYsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3hELGdCQUFXLEdBQVgsV0FBVyxDQUE2RDtRQUVsRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVTtRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMv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RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RnJhbWVTZXR9IGZyb20gJy4vRnJhbWVTZXQnO1xuaW1wb3J0IHtTdWJqZWN0LCB0YWtlVW50aWwsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1JhaW5Ob2RlfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge1RpbWVmcmFtZUNvbnRhaW5lciwgVGltZWZyYW1lQ29udGFpbmVyc30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtSYWRhclNlcnZpY2V9IGZyb20gJy4uL3JhZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9maWxlU2VydmljZX0gZnJvbSAnLi4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4vQ29tcGFyZU1hbmFnZXInO1xuXG5leHBvcnQgY2xhc3MgUmVmcmVzaE1hbmFnZXIge1xuXG4gIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBEYXRlOiBEYXRlO1xuICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGU6IERhdGU7XG4gIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBUaW1lU3BlbnRJbk1zOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIGNsb3NlUmVmcmVzaFRpbWVyOiBTdWJqZWN0PGFueT47XG4gIHByb3RlY3RlZCBjb3VudHNQZXJpb2Q6IGFueTtcbiAgcHJvdGVjdGVkIHRpbWVmcmFtZXNGcm9tUmFkYXJzOiBGcmFtZVNldFtdO1xuICBwcm90ZWN0ZWQgdGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDogRnJhbWVTZXRbXTtcbiAgcHJvdGVjdGVkIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gIHByb3RlY3RlZCBiZWdpbjogRGF0ZTtcbiAgcHJvdGVjdGVkIGVuZDogRGF0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmFpbk5vZGU6IFJhaW5Ob2RlLFxuICAgIHByb3RlY3RlZCByYWRhclNlcnZpY2U6IFJhZGFyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXIsXG4gICAgcHJvdGVjdGVkIG9uUmVmcmVzaEluUHJvZ3Jlc3M6IChjb3VudFBlcmlvZHM6IGFueSwgdGltZWZyYW1lRGF0ZXM6IERhdGVbXSkgPT4gUHJvbWlzZTx2b2lkPixcbiAgICBwcm90ZWN0ZWQgb25SZWZyZXNoRG9uZTogKHRpbWVmcmFtZURhdGVzOiBEYXRlW10pID0+IFByb21pc2U8dm9pZD4sXG4gICAgcHJvdGVjdGVkIG9uRmV0Y2hEb25lOiAodGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycykgPT4gUHJvbWlzZTx2b2lkPixcbiAgKSB7XG4gICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICB0aGlzLmNsZWFuQWxsKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGF5KG1zOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gIH1cblxuICBjbGVhbkFsbCgpIHtcblxuICAgIHRoaXMuY291bnRzUGVyaW9kID0ge307XG4gICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycyA9IFtdO1xuICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCA9IFtdO1xuICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSBbXTtcbiAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyPy5uZXh0KG51bGwpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2goZGF0ZVNob3duOiBEYXRlLCB3aXRoR2F1Z2VzTWVhc3VyZXM6IGJvb2xlYW4sIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKTogUHJvbWlzZTxGcmFtZVNldD4ge1xuICAgIC8vIHNldCB0aGUgdGFyZ2V0XG4gICAgY29uc3QgY3VycmVudHMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQuZmlsdGVyKHQgPT4gdC5kYXRlLmdldFRpbWUoKSA9PT0gZGF0ZVNob3duLmdldFRpbWUoKSk7XG4gICAgaWYgKGN1cnJlbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY29uc29sZS5sb2coJ25vIGNvcnJlY3QgZGF0ZVNob3duJywgZGF0ZVNob3duLCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJ1aWxkIFtjdXJyZW50LCBwcmV2aW91cywgbmV4dF0gdGFyZ2V0c1xuICAgIGNvbnN0IGN1cnJlbnQ6IEZyYW1lU2V0ID0gY3VycmVudHNbMF07XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQuaW5kZXhPZihjdXJyZW50KTtcbiAgICBsZXQgcHJldmlvdXM6IEZyYW1lU2V0ID0gbnVsbCwgbmV4dDogRnJhbWVTZXQgPSBudWxsO1xuICAgIGNvbnN0IHBvc2l0aW9uTmFtZXM6IHN0cmluZ1tdID0gWycnICsgY3VycmVudC5kYXRlLmdldFRpbWUoKV07XG4gICAgY29uc3QgZnJhbWVTZXRzID0ge307XG4gICAgZnJhbWVTZXRzWycnICsgY3VycmVudC5kYXRlLmdldFRpbWUoKV0gPSBjdXJyZW50O1xuICAgIGlmIChwb3NpdGlvbiA+IDApIHtcbiAgICAgIHByZXZpb3VzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkW3Bvc2l0aW9uIC0gMV07XG4gICAgICBwb3NpdGlvbk5hbWVzLnB1c2goJycgKyBwcmV2aW91cy5kYXRlLmdldFRpbWUoKSk7XG4gICAgICBmcmFtZVNldHNbJycgKyBwcmV2aW91cy5kYXRlLmdldFRpbWUoKV0gPSBwcmV2aW91cztcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uIDwgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmxlbmd0aCkge1xuICAgICAgbmV4dCA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFtwb3NpdGlvbiArIDFdO1xuICAgICAgaWYgKG5leHQ/LmRhdGUpIHtcbiAgICAgICAgcG9zaXRpb25OYW1lcy5wdXNoKCcnICsgbmV4dC5kYXRlLmdldFRpbWUoKSk7XG4gICAgICAgIGZyYW1lU2V0c1snJyArIG5leHQuZGF0ZS5nZXRUaW1lKCldID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbGlnbiBNYXAgd2l0aCB0YXJnZXRzXG4gICAgY29uc3QgdGFyZ2V0czoge1xuICAgICAgZGF0ZTogRGF0ZSxcbiAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyxcbiAgICB9W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBvc2l0aW9uTmFtZSBvZiBwb3NpdGlvbk5hbWVzKSB7XG4gICAgICBpZiAoZnJhbWVTZXRzW3Bvc2l0aW9uTmFtZV0pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZnJhbWVTZXRzW3Bvc2l0aW9uTmFtZV07XG4gICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWQgPSB0aGlzLmdldFJhaW5Db21wdXRhdGlvblF1YWxpdHlUYXJnZXQodGFyZ2V0KTtcbiAgICAgICAgdGFyZ2V0LndpdGhHYXVnZSA9IHdpdGhHYXVnZXNNZWFzdXJlcztcbiAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG5cbiAgICAgICAgY29uc3QgdGltZWZyYW1lQ29udGFpbmVycyA9IGF3YWl0IHRoaXMucmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnModGFyZ2V0KTtcblxuICAgICAgICBpZiAocG9zaXRpb25OYW1lID09PSAoJycgKyBjdXJyZW50LmRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICAgIHRoaXMub25GZXRjaERvbmUodGltZWZyYW1lQ29udGFpbmVycykudGhlbihpZ25vcmVkID0+IHtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFsaWduIENvbXBhcmUgd2l0aCB0YXJnZXRzXG4gICAgdGhpcy5yZWZyZXNoQ29tcGFyZVF1YWxpdHkoY3VycmVudCwgdGFyZ2V0cywgd2l0aENvbXBhcmVEdXBsaWNhdGUpLnRoZW4oKGlnbm9yZWQpID0+IHtcbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgYXN5bmMgc2V0UGVyaW9kKGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUpIHtcbiAgICB0aGlzLmJlZ2luID0gYmVnaW47XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoQ291bnRzKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKGxhdW5jaFF1YWxpdHlBZnRlcjogYm9vbGVhbikge1xuXG4gICAgaWYgKCF0aGlzLmJlZ2luIHx8ICF0aGlzLmVuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduZWVkIGEgcGVyaW9kJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlTWFuYWdlci5jbGVhbkFsbCgpO1xuICAgIGxldCByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIGxldCByZWZyZXNoRG9uZSA9IGZhbHNlO1xuXG4gICAgdGltZXIoMTAwMCwgMTUwMDApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAocmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzKGF3YWl0IHRoaXMucmVmcmVzaENvdW50cygpLCB0aGlzLnRpbWVmcmFtZURhdGVzKS50aGVuKGlnbm9yZWQgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlZnJlc2hEb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoUGVyaW9kSW5zaWRlUG9sbGluZygpO1xuICAgICAgICAgIGlmICghcmVmcmVzaERvbmUpIHtcbiAgICAgICAgICAgIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsb3NlUmVmcmVzaFRpbWVyKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBhc3luYyAocmVmcmVzaEZpbmlzaGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3JlZnJlc2hGaW5pc2hlZCcsIHJlZnJlc2hGaW5pc2hlZCwgbGF1bmNoUXVhbGl0eUFmdGVyKTtcbiAgICAgICAgICBpZiAocmVmcmVzaEZpbmlzaGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uUmVmcmVzaERvbmUodGhpcy50aW1lZnJhbWVEYXRlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBpbiByZWZyZXNoJywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICB9XG5cbiAgYXN5bmMgc2VsZWN0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nLCBjb21wYXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGdhdWdlSWQsIGNvbXBhcmVJbmRleCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvdW50cygpIHtcbiAgICBjb25zdCBjb3VudHMgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldENvdW50cyh0aGlzLnJhaW5Ob2RlLmlkLCB0aGlzLmJlZ2luLCB0aGlzLmVuZCwgdHJ1ZSk7XG4gICAgdGhpcy5jb3VudHNQZXJpb2QgPSB7XG4gICAgICByYWRhck1lYXN1cmVzOiBjb3VudHMucmFkYXJNZWFzdXJlcy5yZWR1Y2UoKHBhcnRpYWxTdW0sIGEpID0+IHBhcnRpYWxTdW0gKyBhLngsIDApLFxuICAgICAgZ2F1Z2VNZWFzdXJlczogY291bnRzLmdhdWdlTWVhc3VyZXMucmVkdWNlKChwYXJ0aWFsU3VtLCBhKSA9PiBwYXJ0aWFsU3VtICsgYS54LCAwKSxcbiAgICAgIGNvbXB1dGF0aW9uc0J5VGVhbTogY291bnRzLmNvbXB1dGF0aW9uc0J5VGVhbS5yZWR1Y2UoKHBhcnRpYWxTdW0sIGEpID0+IHBhcnRpYWxTdW0gKyBhLngsIDApLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY291bnRzUGVyaW9kO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFJhaW5Db21wdXRhdGlvblF1YWxpdHlUYXJnZXQoZnJhbWVzZXQ6IEZyYW1lU2V0KTogc3RyaW5nIHtcbiAgICBpZiAoZnJhbWVzZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzLmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZnJhbWVzZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzWzBdLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hQZXJpb2RJbnNpZGVQb2xsaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgLy8gYXdhaXQgUmVmcmVzaE1hbmFnZXIuRGVsYXkoMTAwMCk7XG4gICAgY29uc3QgZG9uZSA9IHRoaXMucmVmcmVzaENoZWNrSWZEb25lKCk7XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoVGltZWZyYW1lc0Zyb21SYWRhcnMoZG9uZSk7XG5cbiAgICB0aGlzLnJlZnJlc2hHbG9iYWxDb21wYXJlUmVwb3J0KGRvbmUpLnRoZW4oaWdub3JlZCA9PiB7XG4gICAgfSlcblxuICAgIHJldHVybiBkb25lO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZnJlc2hDaGVja0lmRG9uZSgpOiBib29sZWFuIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVmcmVzaFBlcmlvZEluc2lkZVBvbGxpbmcnLCB0aGlzLmNvdW50c1BlcmlvZC5jb21wdXRhdGlvbnNCeVRlYW0sIHRoaXMuY291bnRzUGVyaW9kLnJhZGFyTWVhc3VyZXMpXG4gICAgcmV0dXJuIHRoaXMuY291bnRzUGVyaW9kLmNvbXB1dGF0aW9uc0J5VGVhbSA9PT0gdGhpcy5jb3VudHNQZXJpb2QucmFkYXJNZWFzdXJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoVGltZWZyYW1lc0Zyb21SYWRhcnMoZG9uZTogYm9vbGVhbikge1xuXG4gICAgaWYgKCFkb25lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgYmVnaW5FeHRlbmRlZCA9IG5ldyBEYXRlKHRoaXMuYmVnaW4pO1xuICAgIGNvbnN0IGVuZEV4dGVuZGVkID0gbmV3IERhdGUodGhpcy5lbmQpO1xuICAgIGJlZ2luRXh0ZW5kZWQuc2V0TWludXRlcyhiZWdpbkV4dGVuZGVkLmdldE1pbnV0ZXMoKSAtIDcpO1xuICAgIGVuZEV4dGVuZGVkLnNldE1pbnV0ZXMoZW5kRXh0ZW5kZWQuZ2V0TWludXRlcygpICsgNyk7XG4gICAgdGhpcy5yYWluTm9kZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpblRpbWVmcmFtZSh0aGlzLnJhaW5Ob2RlLmdldElkKCksIGJlZ2luRXh0ZW5kZWQsIGVuZEV4dGVuZGVkKTtcblxuICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCA9IGF3YWl0IHRoaXMucmFkYXJTZXJ2aWNlLmdldFRpbWVsaW5lKHRoaXMucmFpbk5vZGUpO1xuICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWRcbiAgICAgIC5maWx0ZXIoKGZyYW1lU2V0KSA9PiB0aGlzLmJlZ2luLmdldFRpbWUoKSA8PSBmcmFtZVNldC5kYXRlLmdldFRpbWUoKSAmJiBmcmFtZVNldC5kYXRlLmdldFRpbWUoKSA8PSB0aGlzLmVuZC5nZXRUaW1lKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ3RpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQ6JywgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKTtcblxuICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzLm1hcChmcmFtZVNldCA9PiBmcmFtZVNldC5kYXRlKTtcbiAgICByZXR1cm4gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydChkb25lOiBib29sZWFuKSB7XG4gICAgaWYgKCFkb25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyYW1lU2V0KSk7XG4gICAgICB0YXJnZXQuZGF0ZSA9IG5ldyBEYXRlKHRhcmdldC5kYXRlKTtcbiAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWQgPSB0aGlzLmdldFJhaW5Db21wdXRhdGlvblF1YWxpdHlUYXJnZXQoZnJhbWVTZXQpO1xuICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIucmVmcmVzaEdsb2JhbENvbXBhcmVRdWFsaXR5KHRhcmdldHMsIGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoTWFwVGltZWZyYW1lQ29udGFpbmVycyh0YXJnZXQ6IHtcbiAgICBkYXRlOiBEYXRlLFxuICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgd2l0aEdhdWdlOiBib29sZWFuXG4gIH0pIHtcbiAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1BiIHdpdGggcmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnMgaW5zaWdodHMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG4gICAgY29uc3QgY29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVyW10gPSBbXTtcbiAgICBjb25zdCBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKGNvbnRhaW5lcnMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYWluTm9kZUNhcnRlc2lhbk1hcCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2VcbiAgICAgICAgLmdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQocmFpbk5vZGUuZ2V0SWQoKSwgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkKTtcbiAgICAgIGlmIChyYWluTm9kZUNhcnRlc2lhbk1hcCkge1xuICAgICAgICBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycy5hZGRGcm9tUmFpbkNvbXB1dGF0aW9uTWFwKHJhaW5Ob2RlQ2FydGVzaWFuTWFwLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEYXRlID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAuZGF0ZTtcbiAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmlzRG9uZURhdGU7XG4gICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmxhdW5jaGVkQnk7XG4gICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwVGltZVNwZW50SW5NcyA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLnRpbWVTcGVudEluTXM7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIGNvbXB1dGF0aW9ucyBmb3IgaWQ6JywgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLCBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvbXBhcmVRdWFsaXR5KGZyYW1lU2V0OiBGcmFtZVNldCwgdGFyZ2V0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW4pIHtcbiAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldCwgdGFyZ2V0cywgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2V0R2F1Z2VzKCk7XG4gIH1cblxufVxuIl19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9SZWZyZXNoTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFLakUsTUFBTSxPQUFPLGNBQWM7SUFnQnpCLFlBQ1ksUUFBa0IsRUFDbEIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsbUJBQWlGLEVBQ2pGLGFBQXdELEVBQ3hELFdBQXdFO1FBTnhFLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQThEO1FBQ2pGLGtCQUFhLEdBQWIsYUFBYSxDQUEyQztRQUN4RCxnQkFBVyxHQUFYLFdBQVcsQ0FBNkQ7UUFFbEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVU7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsUUFBUTtRQUVOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFD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QWUsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZyYW1lU2V0fSBmcm9tICcuL0ZyYW1lU2V0JztcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtSYWluTm9kZX0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtUaW1lZnJhbWVDb250YWluZXIsIFRpbWVmcmFtZUNvbnRhaW5lcnN9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyfSBmcm9tICcuL0NvbXBhcmVNYW5hZ2VyJztcblxuZXhwb3J0IGNsYXNzIFJlZnJlc2hNYW5hZ2VyIHtcblxuICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwRGF0ZTogRGF0ZTtcbiAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlOiBEYXRlO1xuICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeTogc3RyaW5nO1xuICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwVGltZVNwZW50SW5NczogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBjbG9zZVJlZnJlc2hUaW1lcjogU3ViamVjdDxhbnk+O1xuICBwcm90ZWN0ZWQgY291bnRzUGVyaW9kOiBhbnk7XG4gIHByb3RlY3RlZCB0aW1lZnJhbWVzRnJvbVJhZGFyczogRnJhbWVTZXRbXTtcbiAgcHJvdGVjdGVkIHRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQ6IEZyYW1lU2V0W107XG4gIHByb3RlY3RlZCB0aW1lZnJhbWVEYXRlczogRGF0ZVtdO1xuICBwcm90ZWN0ZWQgYmVnaW46IERhdGU7XG4gIHByb3RlY3RlZCBlbmQ6IERhdGU7XG4gIHByb3RlY3RlZCByZW1vdmVEdXBsaWNhdGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJhaW5Ob2RlOiBSYWluTm9kZSxcbiAgICBwcm90ZWN0ZWQgcmFkYXJTZXJ2aWNlOiBSYWRhclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyLFxuICAgIHByb3RlY3RlZCBvblJlZnJlc2hJblByb2dyZXNzOiAoY291bnRQZXJpb2RzOiBhbnksIHRpbWVmcmFtZURhdGVzOiBEYXRlW10pID0+IFByb21pc2U8dm9pZD4sXG4gICAgcHJvdGVjdGVkIG9uUmVmcmVzaERvbmU6ICh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgIHByb3RlY3RlZCBvbkZldGNoRG9uZTogKHRpbWVmcmFtZUNvbnRhaW5lcnM6IFRpbWVmcmFtZUNvbnRhaW5lcnMpID0+IFByb21pc2U8dm9pZD4sXG4gICkge1xuICAgIHRoaXMuY2xvc2VSZWZyZXNoVGltZXIgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgdGhpcy5jbGVhbkFsbCgpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxheShtczogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cbiAgY2xlYW5BbGwoKSB7XG5cbiAgICB0aGlzLmNvdW50c1BlcmlvZCA9IHt9O1xuICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSBbXTtcbiAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQgPSBbXTtcbiAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gW107XG4gICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lcj8ubmV4dChudWxsKTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoKGRhdGVTaG93bjogRGF0ZSwgd2l0aEdhdWdlc01lYXN1cmVzOiBib29sZWFuLCB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhbik6IFByb21pc2U8RnJhbWVTZXQ+IHtcbiAgICAvLyBzZXQgdGhlIHRhcmdldFxuICAgIGNvbnN0IGN1cnJlbnRzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmZpbHRlcih0ID0+IHQuZGF0ZS5nZXRUaW1lKCkgPT09IGRhdGVTaG93bi5nZXRUaW1lKCkpO1xuICAgIGlmIChjdXJyZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdubyBjb3JyZWN0IGRhdGVTaG93bicsIGRhdGVTaG93biwgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBidWlsZCBbY3VycmVudCwgcHJldmlvdXMsIG5leHRdIHRhcmdldHNcbiAgICBjb25zdCBjdXJyZW50OiBGcmFtZVNldCA9IGN1cnJlbnRzWzBdO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmluZGV4T2YoY3VycmVudCk7XG4gICAgbGV0IHByZXZpb3VzOiBGcmFtZVNldCA9IG51bGwsIG5leHQ6IEZyYW1lU2V0ID0gbnVsbDtcbiAgICBjb25zdCBwb3NpdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFsnJyArIGN1cnJlbnQuZGF0ZS5nZXRUaW1lKCldO1xuICAgIGNvbnN0IGZyYW1lU2V0cyA9IHt9O1xuICAgIGZyYW1lU2V0c1snJyArIGN1cnJlbnQuZGF0ZS5nZXRUaW1lKCldID0gY3VycmVudDtcbiAgICBpZiAocG9zaXRpb24gPiAwKSB7XG4gICAgICBwcmV2aW91cyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFtwb3NpdGlvbiAtIDFdO1xuICAgICAgcG9zaXRpb25OYW1lcy5wdXNoKCcnICsgcHJldmlvdXMuZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgZnJhbWVTZXRzWycnICsgcHJldmlvdXMuZGF0ZS5nZXRUaW1lKCldID0gcHJldmlvdXM7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbiA8IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZC5sZW5ndGgpIHtcbiAgICAgIG5leHQgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWRbcG9zaXRpb24gKyAxXTtcbiAgICAgIGlmIChuZXh0Py5kYXRlKSB7XG4gICAgICAgIHBvc2l0aW9uTmFtZXMucHVzaCgnJyArIG5leHQuZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICBmcmFtZVNldHNbJycgKyBuZXh0LmRhdGUuZ2V0VGltZSgpXSA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWxpZ24gTWFwIHdpdGggdGFyZ2V0c1xuICAgIGNvbnN0IHRhcmdldHM6IHtcbiAgICAgIGRhdGU6IERhdGUsXG4gICAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nLFxuICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmcsXG4gICAgfVtdID0gW107XG4gICAgZm9yIChjb25zdCBwb3NpdGlvbk5hbWUgb2YgcG9zaXRpb25OYW1lcykge1xuICAgICAgaWYgKGZyYW1lU2V0c1twb3NpdGlvbk5hbWVdKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGZyYW1lU2V0c1twb3NpdGlvbk5hbWVdO1xuICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkID0gdGhpcy5nZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5VGFyZ2V0KHRhcmdldCk7XG4gICAgICAgIHRhcmdldC53aXRoR2F1Z2UgPSB3aXRoR2F1Z2VzTWVhc3VyZXM7XG4gICAgICAgIHRhcmdldHMucHVzaCh0YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVmcmFtZUNvbnRhaW5lcnMgPSBhd2FpdCB0aGlzLnJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uTmFtZSA9PT0gKCcnICsgY3VycmVudC5kYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgICAgICB0aGlzLm9uRmV0Y2hEb25lKHRpbWVmcmFtZUNvbnRhaW5lcnMpLnRoZW4oaWdub3JlZCA9PiB7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbGlnbiBDb21wYXJlIHdpdGggdGFyZ2V0c1xuICAgIHRoaXMucmVmcmVzaENvbXBhcmVRdWFsaXR5KGN1cnJlbnQsIHRhcmdldHMpLnRoZW4oKGlnbm9yZWQpID0+IHtcbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgYXN5bmMgc2V0UGVyaW9kKGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUpIHtcbiAgICB0aGlzLmJlZ2luID0gYmVnaW47XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoQ291bnRzKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKGxhdW5jaFF1YWxpdHlBZnRlcjogYm9vbGVhbikge1xuXG4gICAgaWYgKCF0aGlzLmJlZ2luIHx8ICF0aGlzLmVuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduZWVkIGEgcGVyaW9kJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlTWFuYWdlci5jbGVhbkFsbCgpO1xuICAgIGxldCByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIGxldCByZWZyZXNoRG9uZSA9IGZhbHNlO1xuXG4gICAgdGltZXIoMTAwMCwgMTUwMDApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAocmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzKGF3YWl0IHRoaXMucmVmcmVzaENvdW50cygpLCB0aGlzLnRpbWVmcmFtZURhdGVzKS50aGVuKGlnbm9yZWQgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlZnJlc2hEb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoUGVyaW9kSW5zaWRlUG9sbGluZygpO1xuICAgICAgICAgIGlmICghcmVmcmVzaERvbmUpIHtcbiAgICAgICAgICAgIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsb3NlUmVmcmVzaFRpbWVyKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBhc3luYyAocmVmcmVzaEZpbmlzaGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3JlZnJlc2hGaW5pc2hlZCcsIHJlZnJlc2hGaW5pc2hlZCwgbGF1bmNoUXVhbGl0eUFmdGVyKTtcbiAgICAgICAgICBpZiAocmVmcmVzaEZpbmlzaGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uUmVmcmVzaERvbmUodGhpcy50aW1lZnJhbWVEYXRlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBpbiByZWZyZXNoJywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICB9XG5cbiAgYXN5bmMgc2VsZWN0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nLCBjb21wYXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGdhdWdlSWQsIGNvbXBhcmVJbmRleCk7XG4gIH1cblxuICBzZXRSZW1vdmVEdXBsaWNhdGUoYjogYm9vbGVhbikge1xuICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlID0gYjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoQ291bnRzKCkge1xuICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzKHRoaXMucmFpbk5vZGUuaWQsIHRoaXMuYmVnaW4sIHRoaXMuZW5kLCB0cnVlKTtcbiAgICB0aGlzLmNvdW50c1BlcmlvZCA9IHtcbiAgICAgIHJhZGFyTWVhc3VyZXM6IGNvdW50cy5yYWRhck1lYXN1cmVzLnJlZHVjZSgocGFydGlhbFN1bSwgYSkgPT4gcGFydGlhbFN1bSArIGEueCwgMCksXG4gICAgICBnYXVnZU1lYXN1cmVzOiBjb3VudHMuZ2F1Z2VNZWFzdXJlcy5yZWR1Y2UoKHBhcnRpYWxTdW0sIGEpID0+IHBhcnRpYWxTdW0gKyBhLngsIDApLFxuICAgICAgY29tcHV0YXRpb25zQnlUZWFtOiBjb3VudHMuY29tcHV0YXRpb25zQnlUZWFtLnJlZHVjZSgocGFydGlhbFN1bSwgYSkgPT4gcGFydGlhbFN1bSArIGEueCwgMCksXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5jb3VudHNQZXJpb2Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZXNldDogRnJhbWVTZXQpOiBzdHJpbmcge1xuICAgIGlmIChmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbMF0uaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFBlcmlvZEluc2lkZVBvbGxpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICAvLyBhd2FpdCBSZWZyZXNoTWFuYWdlci5EZWxheSgxMDAwKTtcbiAgICBjb25zdCBkb25lID0gdGhpcy5yZWZyZXNoQ2hlY2tJZkRvbmUoKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycyhkb25lKTtcblxuICAgIHRoaXMucmVmcmVzaEdsb2JhbENvbXBhcmVSZXBvcnQoZG9uZSkudGhlbihpZ25vcmVkID0+IHtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGRvbmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaENoZWNrSWZEb25lKCk6IGJvb2xlYW4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZWZyZXNoUGVyaW9kSW5zaWRlUG9sbGluZycsIHRoaXMuY291bnRzUGVyaW9kLmNvbXB1dGF0aW9uc0J5VGVhbSwgdGhpcy5jb3VudHNQZXJpb2QucmFkYXJNZWFzdXJlcylcbiAgICByZXR1cm4gdGhpcy5jb3VudHNQZXJpb2QuY29tcHV0YXRpb25zQnlUZWFtID09PSB0aGlzLmNvdW50c1BlcmlvZC5yYWRhck1lYXN1cmVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycyhkb25lOiBib29sZWFuKSB7XG5cbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBiZWdpbkV4dGVuZGVkID0gbmV3IERhdGUodGhpcy5iZWdpbik7XG4gICAgY29uc3QgZW5kRXh0ZW5kZWQgPSBuZXcgRGF0ZSh0aGlzLmVuZCk7XG4gICAgYmVnaW5FeHRlbmRlZC5zZXRNaW51dGVzKGJlZ2luRXh0ZW5kZWQuZ2V0TWludXRlcygpIC0gNyk7XG4gICAgZW5kRXh0ZW5kZWQuc2V0TWludXRlcyhlbmRFeHRlbmRlZC5nZXRNaW51dGVzKCkgKyA3KTtcbiAgICB0aGlzLnJhaW5Ob2RlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluVGltZWZyYW1lKHRoaXMucmFpbk5vZGUuZ2V0SWQoKSwgYmVnaW5FeHRlbmRlZCwgZW5kRXh0ZW5kZWQpO1xuXG4gICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkID0gYXdhaXQgdGhpcy5yYWRhclNlcnZpY2UuZ2V0VGltZWxpbmUodGhpcy5yYWluTm9kZSk7XG4gICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFxuICAgICAgLmZpbHRlcigoZnJhbWVTZXQpID0+IHRoaXMuYmVnaW4uZ2V0VGltZSgpIDw9IGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpICYmIGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpIDw9IHRoaXMuZW5kLmdldFRpbWUoKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSk7XG5cbiAgICAvLyBjb25zb2xlLmxvZygndGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDonLCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpO1xuXG4gICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMubWFwKGZyYW1lU2V0ID0+IGZyYW1lU2V0LmRhdGUpO1xuICAgIHJldHVybiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hHbG9iYWxDb21wYXJlUmVwb3J0KGRvbmU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRzID0gW107XG4gICAgZm9yIChjb25zdCBmcmFtZVNldCBvZiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZnJhbWVTZXQpKTtcbiAgICAgIHRhcmdldC5kYXRlID0gbmV3IERhdGUodGFyZ2V0LmRhdGUpO1xuICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCA9IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZVNldCk7XG4gICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5yZWZyZXNoR2xvYmFsQ29tcGFyZVF1YWxpdHkodGFyZ2V0cywgIXRoaXMucmVtb3ZlRHVwbGljYXRlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoTWFwVGltZWZyYW1lQ29udGFpbmVycyh0YXJnZXQ6IHtcbiAgICBkYXRlOiBEYXRlLFxuICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgd2l0aEdhdWdlOiBib29sZWFuXG4gIH0pIHtcbiAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1BiIHdpdGggcmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnMgaW5zaWdodHMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG4gICAgY29uc3QgY29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVyW10gPSBbXTtcbiAgICBjb25zdCBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKGNvbnRhaW5lcnMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYWluTm9kZUNhcnRlc2lhbk1hcCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2VcbiAgICAgICAgLmdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQocmFpbk5vZGUuZ2V0SWQoKSwgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkKTtcbiAgICAgIGlmIChyYWluTm9kZUNhcnRlc2lhbk1hcCkge1xuICAgICAgICBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycy5hZGRGcm9tUmFpbkNvbXB1dGF0aW9uTWFwKHJhaW5Ob2RlQ2FydGVzaWFuTWFwLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEYXRlID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAuZGF0ZTtcbiAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmlzRG9uZURhdGU7XG4gICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmxhdW5jaGVkQnk7XG4gICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwVGltZVNwZW50SW5NcyA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLnRpbWVTcGVudEluTXM7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIGNvbXB1dGF0aW9ucyBmb3IgaWQ6JywgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLCBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvbXBhcmVRdWFsaXR5KGZyYW1lU2V0OiBGcmFtZVNldCwgdGFyZ2V0czoge1xuICAgIGRhdGU6IERhdGUsXG4gICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZyxcbiAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyxcbiAgfVtdKSB7XG4gICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5yZWZyZXNoQ29tcGFyZVF1YWxpdHkoZnJhbWVTZXQsIHRhcmdldHMsICF0aGlzLnJlbW92ZUR1cGxpY2F0ZSk7XG4gICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZXRHYXVnZXMoKTtcbiAgfVxufVxuIl19
|
package/fesm2015/raain-app.mjs
CHANGED
|
@@ -756,6 +756,7 @@ class CompareManager {
|
|
|
756
756
|
static BuildCompare(frameSet, targetsOrdered, rainComputationQualities, withCompareDuplicate) {
|
|
757
757
|
return __awaiter(this, void 0, void 0, function* () {
|
|
758
758
|
let compareSpeedMatrix, compareTrustedIndicator;
|
|
759
|
+
let compareNames = [];
|
|
759
760
|
let compares = [];
|
|
760
761
|
const currentTarget = targetsOrdered.filter(t => t.date === '' + frameSet.date.getTime())[0];
|
|
761
762
|
const currentPos = targetsOrdered.indexOf(currentTarget);
|
|
@@ -763,7 +764,7 @@ class CompareManager {
|
|
|
763
764
|
const nextTarget = currentPos >= 0 && currentPos < targetsOrdered.length - 1 ? targetsOrdered[currentPos + 1] : null;
|
|
764
765
|
const currentQuality = rainComputationQualities[currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.date];
|
|
765
766
|
if (!currentQuality) {
|
|
766
|
-
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
767
|
+
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares };
|
|
767
768
|
}
|
|
768
769
|
const previousQuality = previousTarget &&
|
|
769
770
|
CompareManager.CompareDate(previousTarget.date, currentTarget.date, -5) ?
|
|
@@ -775,6 +776,9 @@ class CompareManager {
|
|
|
775
776
|
compareSpeedMatrix = qualitySpeedMatrixContainer.renderMergedMatrix({ normalize: true });
|
|
776
777
|
compareTrustedIndicator = qualitySpeedMatrixContainer.getTrustedIndicators()[0];
|
|
777
778
|
const comparesToMap = SpeedMatrixContainer.BuildCompares(currentQuality, previousQuality, nextQuality, !withCompareDuplicate);
|
|
779
|
+
compareNames = qualitySpeedMatrixContainer.getMatrices()
|
|
780
|
+
.map(m => m.name)
|
|
781
|
+
.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
|
|
778
782
|
compares = comparesToMap.map(c => {
|
|
779
783
|
return {
|
|
780
784
|
name: c.name,
|
|
@@ -784,7 +788,7 @@ class CompareManager {
|
|
|
784
788
|
remarks: c.remarks
|
|
785
789
|
};
|
|
786
790
|
});
|
|
787
|
-
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
791
|
+
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares };
|
|
788
792
|
});
|
|
789
793
|
}
|
|
790
794
|
cleanAll() {
|
|
@@ -804,7 +808,7 @@ class CompareManager {
|
|
|
804
808
|
return { date: '' + t.date.getTime(), rainComputationId: t.rainComputationId, rainComputationQualityId: t.rainComputationQualityId };
|
|
805
809
|
});
|
|
806
810
|
yield this.fetchRainComputationQualities(targetsOrdered);
|
|
807
|
-
const { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares } = yield CompareManager.BuildCompare(frameSet, targetsOrdered, this.rainComputationQualities, withCompareDuplicate);
|
|
811
|
+
const { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compareNames, compares } = yield CompareManager.BuildCompare(frameSet, targetsOrdered, this.rainComputationQualities, withCompareDuplicate);
|
|
808
812
|
if (!currentQuality) {
|
|
809
813
|
this.cleanCompareQuality('no current quality ' + Object.keys(this.rainComputationQualities));
|
|
810
814
|
}
|
|
@@ -815,6 +819,7 @@ class CompareManager {
|
|
|
815
819
|
this.compareVersion = currentQuality.getVersion();
|
|
816
820
|
this.compareSpeedMatrix = compareSpeedMatrix;
|
|
817
821
|
this.compareTrustedIndicator = compareTrustedIndicator;
|
|
822
|
+
this.compareNames = compareNames;
|
|
818
823
|
this.compares = compares;
|
|
819
824
|
}
|
|
820
825
|
this.onChanges();
|
|
@@ -1075,7 +1080,7 @@ class RefreshManager {
|
|
|
1075
1080
|
}
|
|
1076
1081
|
}
|
|
1077
1082
|
// align Compare with targets
|
|
1078
|
-
this.refreshCompareQuality(current, targets
|
|
1083
|
+
this.refreshCompareQuality(current, targets).then((ignored) => {
|
|
1079
1084
|
});
|
|
1080
1085
|
return current;
|
|
1081
1086
|
});
|
|
@@ -1128,6 +1133,9 @@ class RefreshManager {
|
|
|
1128
1133
|
return this.compareManager.selectGauge(gaugeId, compareIndex);
|
|
1129
1134
|
});
|
|
1130
1135
|
}
|
|
1136
|
+
setRemoveDuplicate(b) {
|
|
1137
|
+
this.removeDuplicate = b;
|
|
1138
|
+
}
|
|
1131
1139
|
refreshCounts() {
|
|
1132
1140
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1133
1141
|
const counts = yield this.profileService.getCounts(this.rainNode.id, this.begin, this.end, true);
|
|
@@ -1190,7 +1198,7 @@ class RefreshManager {
|
|
|
1190
1198
|
target.rainComputationQualityId = this.getRainComputationQualityTarget(frameSet);
|
|
1191
1199
|
targets.push(target);
|
|
1192
1200
|
}
|
|
1193
|
-
yield this.compareManager.refreshGlobalCompareQuality(targets,
|
|
1201
|
+
yield this.compareManager.refreshGlobalCompareQuality(targets, !this.removeDuplicate);
|
|
1194
1202
|
});
|
|
1195
1203
|
}
|
|
1196
1204
|
refreshMapTimeframeContainers(target) {
|
|
@@ -1219,9 +1227,9 @@ class RefreshManager {
|
|
|
1219
1227
|
return newCreatedTimeframeContainers;
|
|
1220
1228
|
});
|
|
1221
1229
|
}
|
|
1222
|
-
refreshCompareQuality(frameSet, targets
|
|
1230
|
+
refreshCompareQuality(frameSet, targets) {
|
|
1223
1231
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1224
|
-
yield this.compareManager.refreshCompareQuality(frameSet, targets,
|
|
1232
|
+
yield this.compareManager.refreshCompareQuality(frameSet, targets, !this.removeDuplicate);
|
|
1225
1233
|
yield this.compareManager.setGauges();
|
|
1226
1234
|
});
|
|
1227
1235
|
}
|