raain-model 2.6.10 → 3.0.1
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 +94 -7
- package/README.md +14 -13
- package/RELEASE_PROCESS.md +91 -4
- package/cartesian/CartesianMeasureValue.d.ts +46 -0
- package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +41 -73
- package/cartesian/CartesianMeasureValue.js.map +1 -0
- package/cartesian/CartesianTools.d.ts +32 -0
- package/{src/cartesian/CartesianTools.ts → cartesian/CartesianTools.js} +69 -130
- package/cartesian/CartesianTools.js.map +1 -0
- package/cartesian/CartesianValue.d.ts +14 -0
- package/cartesian/CartesianValue.js +17 -0
- package/cartesian/CartesianValue.js.map +1 -0
- package/cartesian/EarthMap.d.ts +5 -0
- package/cartesian/EarthMap.js +3 -0
- package/cartesian/EarthMap.js.map +1 -0
- package/cartesian/ICartesianMeasureValue.d.ts +23 -0
- package/cartesian/ICartesianMeasureValue.js +3 -0
- package/cartesian/ICartesianMeasureValue.js.map +1 -0
- package/cartesian/LatLng.d.ts +16 -0
- package/cartesian/LatLng.js +34 -0
- package/cartesian/LatLng.js.map +1 -0
- package/cartesian/RadarCartesianMeasureValue.d.ts +27 -0
- package/cartesian/RadarCartesianMeasureValue.js +24 -0
- package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
- package/cartesian/RainCartesianMeasureValue.d.ts +25 -0
- package/cartesian/RainCartesianMeasureValue.js +25 -0
- package/cartesian/RainCartesianMeasureValue.js.map +1 -0
- package/cartesian/index.js +25 -0
- package/cartesian/index.js.map +1 -0
- package/gauge/GaugeMeasure.d.ts +30 -0
- package/gauge/GaugeMeasure.js +30 -0
- package/gauge/GaugeMeasure.js.map +1 -0
- package/gauge/GaugeNode.d.ts +95 -0
- package/{src/gauge/GaugeNode.ts → gauge/GaugeNode.js} +28 -54
- package/gauge/GaugeNode.js.map +1 -0
- package/gauge/GaugeNodeMap.d.ts +35 -0
- package/gauge/GaugeNodeMap.js +42 -0
- package/gauge/GaugeNodeMap.js.map +1 -0
- package/gauge/index.js +20 -0
- package/gauge/index.js.map +1 -0
- package/index.js +24 -0
- package/index.js.map +1 -0
- package/organization/EventNode.d.ts +30 -0
- package/organization/EventNode.js +30 -0
- package/organization/EventNode.js.map +1 -0
- package/organization/IVersion.js +3 -0
- package/organization/IVersion.js.map +1 -0
- package/organization/Link.d.ts +16 -0
- package/{src/organization/Link.ts → organization/Link.js} +15 -15
- package/organization/Link.js.map +1 -0
- package/organization/Measure.d.ts +30 -0
- package/organization/Measure.js +51 -0
- package/organization/Measure.js.map +1 -0
- package/organization/PeopleNode.d.ts +23 -0
- package/{src/organization/PeopleNode.ts → organization/PeopleNode.js} +10 -20
- package/organization/PeopleNode.js.map +1 -0
- package/organization/RaainNode.d.ts +95 -0
- package/{src/organization/RaainNode.ts → organization/RaainNode.js} +38 -63
- package/organization/RaainNode.js.map +1 -0
- package/organization/TeamNode.d.ts +51 -0
- package/organization/TeamNode.js +52 -0
- package/organization/TeamNode.js.map +1 -0
- package/organization/index.js +24 -0
- package/organization/index.js.map +1 -0
- package/package.json +4 -2
- package/polar/AbstractPolarMeasureValue.d.ts +31 -0
- package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +34 -62
- package/polar/AbstractPolarMeasureValue.js.map +1 -0
- package/polar/IPolarMeasureValue.d.ts +19 -0
- package/polar/IPolarMeasureValue.js +3 -0
- package/polar/IPolarMeasureValue.js.map +1 -0
- package/polar/MeasureValuePolarContainer.d.ts +24 -0
- package/{src/polar/MeasureValuePolarContainer.ts → polar/MeasureValuePolarContainer.js} +13 -29
- package/polar/MeasureValuePolarContainer.js.map +1 -0
- package/polar/PolarFilter.d.ts +16 -0
- package/polar/PolarFilter.js +45 -0
- package/polar/PolarFilter.js.map +1 -0
- package/polar/PolarMeasureValue.d.ts +51 -0
- package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +62 -125
- package/polar/PolarMeasureValue.js.map +1 -0
- package/polar/PolarMeasureValueMap.d.ts +45 -0
- package/{src/polar/PolarMeasureValueMap.ts → polar/PolarMeasureValueMap.js} +88 -165
- package/polar/PolarMeasureValueMap.js.map +1 -0
- package/polar/PolarValue.d.ts +10 -0
- package/polar/PolarValue.js +12 -0
- package/polar/PolarValue.js.map +1 -0
- package/polar/RadarPolarMeasureValue.d.ts +33 -0
- package/{src/polar/RadarPolarMeasureValue.ts → polar/RadarPolarMeasureValue.js} +31 -39
- package/polar/RadarPolarMeasureValue.js.map +1 -0
- package/polar/RainPolarMeasureValue.d.ts +24 -0
- package/polar/RainPolarMeasureValue.js +46 -0
- package/polar/RainPolarMeasureValue.js.map +1 -0
- package/polar/index.js +25 -0
- package/polar/index.js.map +1 -0
- package/quality/QualityPoint.d.ts +37 -0
- package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +33 -56
- package/quality/QualityPoint.js.map +1 -0
- package/quality/SpeedMatrix.d.ts +83 -0
- package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -117
- package/quality/SpeedMatrix.js.map +1 -0
- package/quality/SpeedMatrixContainer.d.ts +102 -0
- package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +103 -210
- package/quality/SpeedMatrixContainer.js.map +1 -0
- package/quality/history/CartesianGaugeHistory.d.ts +15 -0
- package/quality/history/CartesianGaugeHistory.js +14 -0
- package/quality/history/CartesianGaugeHistory.js.map +1 -0
- package/quality/history/CartesianRainHistory.d.ts +9 -0
- package/quality/history/CartesianRainHistory.js +11 -0
- package/quality/history/CartesianRainHistory.js.map +1 -0
- package/quality/history/PositionHistory.d.ts +20 -0
- package/quality/history/PositionHistory.js +17 -0
- package/quality/history/PositionHistory.js.map +1 -0
- package/{src/quality/index.ts → quality/index.d.ts} +0 -3
- package/quality/index.js +26 -0
- package/quality/index.js.map +1 -0
- package/quality/position/Position.d.ts +22 -0
- package/quality/position/Position.js +50 -0
- package/quality/position/Position.js.map +1 -0
- package/quality/position/PositionValue.d.ts +9 -0
- package/quality/position/PositionValue.js +12 -0
- package/quality/position/PositionValue.js.map +1 -0
- package/quality/tools/QualityTools.d.ts +9 -0
- package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +17 -18
- package/quality/tools/QualityTools.js.map +1 -0
- package/radar/RadarMeasure.d.ts +38 -0
- package/radar/RadarMeasure.js +33 -0
- package/radar/RadarMeasure.js.map +1 -0
- package/radar/RadarNode.d.ts +41 -0
- package/radar/RadarNode.js +58 -0
- package/radar/RadarNode.js.map +1 -0
- package/radar/RadarNodeMap.d.ts +51 -0
- package/radar/RadarNodeMap.js +50 -0
- package/radar/RadarNodeMap.js.map +1 -0
- package/radar/index.js +20 -0
- package/radar/index.js.map +1 -0
- package/rain/MergeStrategy.d.ts +13 -0
- package/rain/MergeStrategy.js +11 -0
- package/rain/MergeStrategy.js.map +1 -0
- package/rain/RainComputation.d.ts +59 -0
- package/rain/RainComputation.js +68 -0
- package/rain/RainComputation.js.map +1 -0
- package/rain/RainComputationAbstract.d.ts +89 -0
- package/rain/RainComputationAbstract.js +207 -0
- package/rain/RainComputationAbstract.js.map +1 -0
- package/rain/RainComputationMap.d.ts +113 -0
- package/{src/rain/RainComputationMap.ts → rain/RainComputationMap.js} +26 -60
- package/rain/RainComputationMap.js.map +1 -0
- package/rain/RainComputationQuality.d.ts +58 -0
- package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +52 -89
- package/rain/RainComputationQuality.js.map +1 -0
- package/rain/RainMeasure.d.ts +17 -0
- package/rain/RainMeasure.js +18 -0
- package/rain/RainMeasure.js.map +1 -0
- package/rain/RainNode.d.ts +60 -0
- package/rain/RainNode.js +198 -0
- package/rain/RainNode.js.map +1 -0
- package/{src/rain/index.ts → rain/index.d.ts} +1 -0
- package/rain/index.js +24 -0
- package/rain/index.js.map +1 -0
- package/.cursorignore +0 -10
- package/.github/workflows/ci.yml +0 -29
- package/LICENSE +0 -21
- package/RELEASE.md +0 -19
- package/specs/REQUIREMENTS.md +0 -42
- package/specs/TECHNICAL.md +0 -57
- package/specs/cartesian/Cartesian.spec.ts +0 -82
- package/specs/cartesian/CartesianTools.spec.ts +0 -121
- package/specs/gauge/Gauge.spec.ts +0 -39
- package/specs/organization/Organization.spec.ts +0 -38
- package/specs/polar/Polar.spec.ts +0 -267
- package/specs/quality/Position.spec.ts +0 -18
- package/specs/quality/QualityPointEdgeCases.spec.ts +0 -215
- package/specs/quality/QualityTools.spec.ts +0 -67
- package/specs/quality/SpeedMatrix.spec.ts +0 -214
- package/specs/radar/Radar.spec.ts +0 -129
- package/specs/rain/Rain.spec.ts +0 -334
- package/specs/tsconfig.json +0 -12
- package/src/cartesian/CartesianValue.ts +0 -26
- package/src/cartesian/EarthMap.ts +0 -5
- package/src/cartesian/ICartesianMeasureValue.ts +0 -22
- package/src/cartesian/LatLng.ts +0 -43
- package/src/cartesian/RadarCartesianMeasureValue.ts +0 -32
- package/src/cartesian/RainCartesianMeasureValue.ts +0 -32
- package/src/gauge/GaugeMeasure.ts +0 -42
- package/src/gauge/GaugeNodeMap.ts +0 -55
- package/src/organization/EventNode.ts +0 -43
- package/src/organization/Measure.ts +0 -61
- package/src/organization/TeamNode.ts +0 -91
- package/src/polar/IPolarMeasureValue.ts +0 -21
- package/src/polar/PolarFilter.ts +0 -46
- package/src/polar/PolarValue.ts +0 -16
- package/src/polar/RainPolarMeasureValue.ts +0 -57
- package/src/quality/history/CartesianGaugeHistory.ts +0 -23
- package/src/quality/history/CartesianRainHistory.ts +0 -15
- package/src/quality/history/PositionHistory.ts +0 -31
- package/src/quality/position/Position.ts +0 -59
- package/src/quality/position/PositionValue.ts +0 -15
- package/src/radar/RadarMeasure.ts +0 -41
- package/src/radar/RadarNode.ts +0 -78
- package/src/radar/RadarNodeMap.ts +0 -61
- package/src/rain/MergeStrategy.ts +0 -15
- package/src/rain/RainComputation.ts +0 -96
- package/src/rain/RainComputationAbstract.ts +0 -262
- package/src/rain/RainMeasure.ts +0 -25
- package/src/rain/RainNode.ts +0 -235
- package/tsconfig.json +0 -17
- package/tslint.json +0 -79
- package/typedoc.json +0 -31
- /package/{src/cartesian/index.ts → cartesian/index.d.ts} +0 -0
- /package/{src/gauge/index.ts → gauge/index.d.ts} +0 -0
- /package/{src/index.ts → index.d.ts} +0 -0
- /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
- /package/{src/organization/index.ts → organization/index.d.ts} +0 -0
- /package/{src/polar/index.ts → polar/index.d.ts} +0 -0
- /package/{src/radar/index.ts → radar/index.d.ts} +0 -0
|
@@ -1,96 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface IComparePerDate {
|
|
14
|
-
date: Date,
|
|
15
|
-
rainComputationQuality: RainComputationQuality,
|
|
16
|
-
compareTimeline: ICompare[],
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface ICompare {
|
|
20
|
-
name: string,
|
|
21
|
-
date: Date,
|
|
22
|
-
qualityPointsLegacy: QualityPoint[],
|
|
23
|
-
qualityPoints: QualityPoint[],
|
|
24
|
-
maxValue: number,
|
|
25
|
-
remarks: string,
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export class SpeedMatrixContainer {
|
|
29
|
-
|
|
30
|
-
protected qualityPoints: any;
|
|
31
|
-
protected trustedIndicators: number[];
|
|
32
|
-
protected flattenMatrices: PositionValue[][];
|
|
33
|
-
protected matrices: SpeedMatrix[];
|
|
34
|
-
|
|
35
|
-
constructor(json: {
|
|
36
|
-
matrices: SpeedMatrix[]
|
|
37
|
-
}) {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpeedMatrixContainer = void 0;
|
|
4
|
+
const SpeedMatrix_1 = require("./SpeedMatrix");
|
|
5
|
+
const PositionValue_1 = require("./position/PositionValue");
|
|
6
|
+
const PositionHistory_1 = require("./history/PositionHistory");
|
|
7
|
+
const QualityPoint_1 = require("./QualityPoint");
|
|
8
|
+
const CartesianValue_1 = require("../cartesian/CartesianValue");
|
|
9
|
+
class SpeedMatrixContainer {
|
|
10
|
+
constructor(json) {
|
|
38
11
|
this.qualityPoints = {};
|
|
39
12
|
this.trustedIndicators = [];
|
|
40
13
|
this.flattenMatrices = [];
|
|
41
14
|
this.matrices = json.matrices;
|
|
42
15
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (json?.qualityPoints) {
|
|
16
|
+
static CreateFromJson(json) {
|
|
17
|
+
const created = new SpeedMatrixContainer({ matrices: [] });
|
|
18
|
+
if (json === null || json === void 0 ? void 0 : json.qualityPoints) {
|
|
47
19
|
created.qualityPoints = json.qualityPoints;
|
|
48
20
|
}
|
|
49
|
-
if (json
|
|
50
|
-
created.matrices = json.matrices.map((m
|
|
21
|
+
if (json === null || json === void 0 ? void 0 : json.matrices) {
|
|
22
|
+
created.matrices = json.matrices.map((m) => SpeedMatrix_1.SpeedMatrix.CreateFromJson(m));
|
|
51
23
|
}
|
|
52
|
-
if (json
|
|
24
|
+
if (json === null || json === void 0 ? void 0 : json.trustedIndicators) {
|
|
53
25
|
created.trustedIndicators = json.trustedIndicators;
|
|
54
26
|
}
|
|
55
|
-
if (json
|
|
27
|
+
if (json === null || json === void 0 ? void 0 : json.flattenMatrices) {
|
|
56
28
|
created.flattenMatrices = json.flattenMatrices;
|
|
57
29
|
}
|
|
58
30
|
return created;
|
|
59
31
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
removeDuplicates = true): ICompares {
|
|
32
|
+
static BuildCompares(qualities, removeDuplicates = true) {
|
|
33
|
+
var _a;
|
|
63
34
|
const qualitiesSorted = qualities
|
|
64
35
|
.sort((a, b) => a.date.getTime() - b.date.getTime());
|
|
65
|
-
const comparesPerDate
|
|
66
|
-
const compareCumulative
|
|
36
|
+
const comparesPerDate = [];
|
|
37
|
+
const compareCumulative = {
|
|
67
38
|
name: 'cumulative_' + qualities.reduce((p, rcq) => p + '_' + rcq.date.toISOString(), ''),
|
|
68
|
-
date: qualities[0]
|
|
39
|
+
date: (_a = qualities[0]) === null || _a === void 0 ? void 0 : _a.date,
|
|
69
40
|
qualityPointsLegacy: [],
|
|
70
41
|
qualityPoints: [],
|
|
71
42
|
maxValue: 0,
|
|
72
43
|
remarks: '',
|
|
73
44
|
};
|
|
74
45
|
const minDeltaPerDate_GaugeId = {};
|
|
75
|
-
|
|
76
46
|
let dateMin = new Date();
|
|
77
47
|
let dateMax = new Date();
|
|
78
48
|
if (qualitiesSorted.length > 0) {
|
|
79
49
|
dateMin = qualitiesSorted[0].date;
|
|
80
50
|
dateMax = qualitiesSorted[qualitiesSorted.length - 1].date;
|
|
81
51
|
}
|
|
82
|
-
|
|
83
52
|
// build timelines and store
|
|
84
53
|
for (const rainComputationQuality of qualitiesSorted) {
|
|
85
54
|
const compareTimeline = SpeedMatrixContainer.BuildCompareTimeline(rainComputationQuality, dateMin, dateMax);
|
|
86
|
-
|
|
87
55
|
comparesPerDate.push({
|
|
88
56
|
date: rainComputationQuality.date,
|
|
89
57
|
rainComputationQuality,
|
|
90
58
|
compareTimeline
|
|
91
59
|
});
|
|
92
|
-
|
|
93
|
-
const qualityPoints: QualityPoint[] = compareTimeline.reduce((p, a) => p.concat(a.qualityPoints), []);
|
|
60
|
+
const qualityPoints = compareTimeline.reduce((p, a) => p.concat(a.qualityPoints), []);
|
|
94
61
|
for (const qualityPoint of qualityPoints) {
|
|
95
62
|
const key = qualityPoint.gaugeDate.toISOString() + '_' + qualityPoint.gaugeId;
|
|
96
63
|
if (typeof minDeltaPerDate_GaugeId[key] === 'undefined') {
|
|
@@ -99,7 +66,6 @@ export class SpeedMatrixContainer {
|
|
|
99
66
|
minDeltaPerDate_GaugeId[key] = Math.min(minDeltaPerDate_GaugeId[key], qualityPoint.getDelta());
|
|
100
67
|
}
|
|
101
68
|
}
|
|
102
|
-
|
|
103
69
|
// loop and search for unique points
|
|
104
70
|
const qualityPointToUsePerDate_GaugeId = {};
|
|
105
71
|
comparesPerDate.forEach(compare => {
|
|
@@ -110,7 +76,8 @@ export class SpeedMatrixContainer {
|
|
|
110
76
|
if (!qualityPointToUsePerDate_GaugeId[key] && typeof minDeltaPerDate_GaugeId[key] !== 'undefined'
|
|
111
77
|
&& minDeltaPerDate_GaugeId[key] === qualityPoint.getDelta()) {
|
|
112
78
|
qualityPointToUsePerDate_GaugeId[key] = qualityPoint;
|
|
113
|
-
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
114
81
|
if (removeDuplicates) {
|
|
115
82
|
timeline.qualityPoints.splice(i, 1);
|
|
116
83
|
}
|
|
@@ -118,56 +85,47 @@ export class SpeedMatrixContainer {
|
|
|
118
85
|
}
|
|
119
86
|
});
|
|
120
87
|
});
|
|
121
|
-
|
|
122
88
|
// compute cumulative based on unique points
|
|
123
89
|
const qualityPointPerGaugeId = {};
|
|
124
90
|
const qps = Object.values(qualityPointToUsePerDate_GaugeId);
|
|
125
91
|
for (const qp of qps) {
|
|
126
|
-
const qualityPoint = qp
|
|
92
|
+
const qualityPoint = qp;
|
|
127
93
|
if (!qualityPointPerGaugeId[qualityPoint.gaugeId]) {
|
|
128
|
-
qualityPointPerGaugeId[qualityPoint.gaugeId] = QualityPoint.CreateFromJSON(qualityPoint);
|
|
129
|
-
}
|
|
94
|
+
qualityPointPerGaugeId[qualityPoint.gaugeId] = QualityPoint_1.QualityPoint.CreateFromJSON(qualityPoint);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
130
97
|
qualityPointPerGaugeId[qualityPoint.gaugeId].accumulateValues(qualityPoint);
|
|
131
98
|
}
|
|
132
99
|
}
|
|
133
|
-
|
|
134
100
|
compareCumulative.qualityPoints = Object.values(qualityPointPerGaugeId);
|
|
135
101
|
compareCumulative.qualityPointsLegacy = Object.values(qualityPointPerGaugeId);
|
|
136
102
|
const maxRain = Math.max(...compareCumulative.qualityPoints.map(p => p.getRainValue()));
|
|
137
103
|
const maxGauge = Math.max(...compareCumulative.qualityPoints.map(p => p.getGaugeValue()));
|
|
138
104
|
compareCumulative.maxValue = Math.max(maxRain, maxGauge);
|
|
139
|
-
|
|
140
|
-
return {comparesPerDate, compareCumulative};
|
|
105
|
+
return { comparesPerDate, compareCumulative };
|
|
141
106
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const compares
|
|
107
|
+
static BuildCompareTimeline(currentQuality, dateMin, dateMax) {
|
|
108
|
+
var _a;
|
|
109
|
+
const compares = [];
|
|
145
110
|
const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;
|
|
146
111
|
if (!qualitySpeedMatrixContainer) {
|
|
147
112
|
return compares;
|
|
148
113
|
}
|
|
149
|
-
|
|
150
114
|
const compareNames = qualitySpeedMatrixContainer.getMatrices()
|
|
151
115
|
.map(m => m.name)
|
|
152
116
|
.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
|
|
153
|
-
|
|
154
117
|
for (const [index, name] of compareNames.entries()) {
|
|
155
|
-
|
|
156
118
|
const qualityPointsLegacy = qualitySpeedMatrixContainer.getQualityPoints(name);
|
|
157
119
|
const maxValue = Math.max(qualitySpeedMatrixContainer.getMaxGauge(), qualitySpeedMatrixContainer.getMaxRain());
|
|
158
|
-
const remarks = qualitySpeedMatrixContainer.getMatrix(index)
|
|
159
|
-
|
|
120
|
+
const remarks = (_a = qualitySpeedMatrixContainer.getMatrix(index)) === null || _a === void 0 ? void 0 : _a.remarks;
|
|
160
121
|
const delta = parseInt(name, 10);
|
|
161
122
|
const compareDate = new Date(currentQuality.date.getTime() - delta * 60 * 1000);
|
|
162
|
-
|
|
163
123
|
if (dateMin.getTime() <= compareDate.getTime() && compareDate.getTime() <= dateMax.getTime()) {
|
|
164
|
-
|
|
165
124
|
let renamed = compareDate.toLocaleString();
|
|
166
125
|
renamed += delta > 0 ? ' since ' : ' in ';
|
|
167
126
|
renamed += Math.abs(delta) + ' minutes';
|
|
168
|
-
const qualityPoints = qualityPointsLegacy.filter((p
|
|
169
|
-
|
|
170
|
-
const compare: ICompare = {
|
|
127
|
+
const qualityPoints = qualityPointsLegacy.filter((p) => p); // no real filter
|
|
128
|
+
const compare = {
|
|
171
129
|
name: renamed,
|
|
172
130
|
date: compareDate,
|
|
173
131
|
qualityPointsLegacy,
|
|
@@ -175,15 +133,12 @@ export class SpeedMatrixContainer {
|
|
|
175
133
|
maxValue,
|
|
176
134
|
remarks,
|
|
177
135
|
};
|
|
178
|
-
|
|
179
136
|
compares.push(compare);
|
|
180
137
|
}
|
|
181
138
|
}
|
|
182
|
-
|
|
183
139
|
return compares;
|
|
184
140
|
}
|
|
185
|
-
|
|
186
|
-
protected static mergeStillComputed(v1: any, v2: any): any {
|
|
141
|
+
static mergeStillComputed(v1, v2) {
|
|
187
142
|
if (!v1 && !v2) {
|
|
188
143
|
return undefined;
|
|
189
144
|
}
|
|
@@ -195,8 +150,7 @@ export class SpeedMatrixContainer {
|
|
|
195
150
|
}
|
|
196
151
|
return null;
|
|
197
152
|
}
|
|
198
|
-
|
|
199
|
-
protected static mergeDateMin(d1: Date, d2: Date): Date {
|
|
153
|
+
static mergeDateMin(d1, d2) {
|
|
200
154
|
const stillComputed = this.mergeStillComputed(d1, d2);
|
|
201
155
|
if (stillComputed === null) {
|
|
202
156
|
return new Date(Math.min(new Date(d1).getTime(), new Date(d2).getTime()));
|
|
@@ -206,8 +160,7 @@ export class SpeedMatrixContainer {
|
|
|
206
160
|
}
|
|
207
161
|
return stillComputed;
|
|
208
162
|
}
|
|
209
|
-
|
|
210
|
-
protected static mergeDateMax(d1: Date, d2: Date): Date {
|
|
163
|
+
static mergeDateMax(d1, d2) {
|
|
211
164
|
const stillComputed = this.mergeStillComputed(d1, d2);
|
|
212
165
|
if (stillComputed === null) {
|
|
213
166
|
return new Date(Math.max(new Date(d1).getTime(), new Date(d2).getTime()));
|
|
@@ -217,41 +170,35 @@ export class SpeedMatrixContainer {
|
|
|
217
170
|
}
|
|
218
171
|
return stillComputed;
|
|
219
172
|
}
|
|
220
|
-
|
|
221
|
-
protected static mergeAvg(v1: number, v2: number): number {
|
|
173
|
+
static mergeAvg(v1, v2) {
|
|
222
174
|
if (v1 === 0 && v2 === 0) {
|
|
223
175
|
return 0;
|
|
224
176
|
}
|
|
225
|
-
|
|
226
177
|
const stillComputed = this.mergeStillComputed(v1, v2);
|
|
227
178
|
if (stillComputed === null) {
|
|
228
179
|
return (v1 + v2) / 2;
|
|
229
180
|
}
|
|
230
181
|
return stillComputed;
|
|
231
182
|
}
|
|
232
|
-
|
|
233
|
-
protected static mergeMin(v1: number, v2: number): number {
|
|
183
|
+
static mergeMin(v1, v2) {
|
|
234
184
|
const stillComputed = this.mergeStillComputed(v1, v2);
|
|
235
185
|
if (stillComputed === null) {
|
|
236
186
|
return Math.min(v1, v2);
|
|
237
187
|
}
|
|
238
188
|
return stillComputed;
|
|
239
189
|
}
|
|
240
|
-
|
|
241
|
-
protected static mergeConcat(a1: Array<any>, a2: Array<any>): Array<any> {
|
|
190
|
+
static mergeConcat(a1, a2) {
|
|
242
191
|
const stillComputed = this.mergeStillComputed(a1, a2);
|
|
243
192
|
if (stillComputed === null) {
|
|
244
193
|
return a1.concat(a2);
|
|
245
194
|
}
|
|
246
195
|
return stillComputed;
|
|
247
196
|
}
|
|
248
|
-
|
|
249
|
-
protected static mergeReduce(a1: Array<QualityPoint>, a2: Array<QualityPoint>): Array<QualityPoint> {
|
|
197
|
+
static mergeReduce(a1, a2) {
|
|
250
198
|
const stillComputed = this.mergeStillComputed(a1, a2);
|
|
251
199
|
if (stillComputed === null) {
|
|
252
|
-
|
|
253
200
|
const ids = new Map();
|
|
254
|
-
const concatted
|
|
201
|
+
const concatted = a1.concat(a2);
|
|
255
202
|
for (const qualityPoint of concatted) {
|
|
256
203
|
const oldValue = {
|
|
257
204
|
gaugeValue: 0,
|
|
@@ -274,14 +221,13 @@ export class SpeedMatrixContainer {
|
|
|
274
221
|
remark: qualityPoint.remark,
|
|
275
222
|
});
|
|
276
223
|
}
|
|
277
|
-
|
|
278
224
|
return [...ids].map(([id, value]) => {
|
|
279
|
-
return new QualityPoint({
|
|
225
|
+
return new QualityPoint_1.QualityPoint({
|
|
280
226
|
gaugeId: id,
|
|
281
227
|
gaugeLabel: value.gaugeLabel,
|
|
282
228
|
gaugeDate: value.gaugeDate,
|
|
283
229
|
rainDate: value.rainDate,
|
|
284
|
-
gaugeCartesianValue: new CartesianValue({value: value.gaugeValue, lat: value.gaugeLat, lng: value.gaugeLng}),
|
|
230
|
+
gaugeCartesianValue: new CartesianValue_1.CartesianValue({ value: value.gaugeValue, lat: value.gaugeLat, lng: value.gaugeLng }),
|
|
285
231
|
rainCartesianValues: value.rainCartesianValues,
|
|
286
232
|
speed: null,
|
|
287
233
|
remark: value.remark,
|
|
@@ -290,76 +236,62 @@ export class SpeedMatrixContainer {
|
|
|
290
236
|
}
|
|
291
237
|
return stillComputed;
|
|
292
238
|
}
|
|
293
|
-
|
|
294
239
|
getMatrix(index = 0) {
|
|
295
240
|
if (this.matrices.length <= index) {
|
|
296
241
|
return null;
|
|
297
242
|
}
|
|
298
243
|
return this.matrices[index];
|
|
299
244
|
}
|
|
300
|
-
|
|
301
|
-
getMatrixByName(name: string) {
|
|
245
|
+
getMatrixByName(name) {
|
|
302
246
|
const found = this.matrices.filter(m => m.name === name);
|
|
303
247
|
if (found.length === 1) {
|
|
304
248
|
return found[0];
|
|
305
249
|
}
|
|
306
250
|
return null;
|
|
307
251
|
}
|
|
308
|
-
|
|
309
|
-
getMatrices(): SpeedMatrix[] {
|
|
252
|
+
getMatrices() {
|
|
310
253
|
return this.matrices;
|
|
311
254
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
255
|
+
getQualityPoints(matrixName) {
|
|
256
|
+
var _a;
|
|
315
257
|
if (this.matrices.length === 0) {
|
|
316
258
|
return [];
|
|
317
259
|
}
|
|
318
|
-
|
|
319
260
|
this.storeFlattenMatrices();
|
|
320
|
-
|
|
321
261
|
let matrixNames = [matrixName];
|
|
322
262
|
if (!matrixName) {
|
|
323
263
|
matrixNames = this.matrices.map(m => m.name);
|
|
324
|
-
}
|
|
325
|
-
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
if (((_a = this.qualityPoints[matrixName]) === null || _a === void 0 ? void 0 : _a.length) > 0 && this.flattenMatrices.length > 0) {
|
|
326
267
|
return this.qualityPoints[matrixName];
|
|
327
268
|
}
|
|
328
269
|
}
|
|
329
|
-
|
|
330
|
-
let qualityPoints: QualityPoint[] = [];
|
|
270
|
+
let qualityPoints = [];
|
|
331
271
|
for (const name of matrixNames) {
|
|
332
272
|
const matricesWithSameName = this.matrices.filter(m => m.name === name);
|
|
333
273
|
if (matricesWithSameName.length === 1) {
|
|
334
|
-
const points = matricesWithSameName[0].getQualityPoints().map(p => new QualityPoint(p));
|
|
274
|
+
const points = matricesWithSameName[0].getQualityPoints().map(p => new QualityPoint_1.QualityPoint(p));
|
|
335
275
|
qualityPoints = qualityPoints.concat(points);
|
|
336
|
-
|
|
337
276
|
// store
|
|
338
277
|
this.qualityPoints[name] = points;
|
|
339
278
|
}
|
|
340
279
|
}
|
|
341
|
-
|
|
342
280
|
return qualityPoints;
|
|
343
281
|
}
|
|
344
|
-
|
|
345
|
-
getQualityPointsByHistoricalPosition(position: number = 0): QualityPoint[] {
|
|
346
|
-
|
|
282
|
+
getQualityPointsByHistoricalPosition(position = 0) {
|
|
347
283
|
if (this.matrices.length <= 1) {
|
|
348
284
|
return [];
|
|
349
285
|
}
|
|
350
|
-
|
|
351
286
|
const matrixFound = this.matrices
|
|
352
287
|
.sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))
|
|
353
288
|
.filter((m, index) => index === position);
|
|
354
|
-
|
|
355
289
|
if (matrixFound.length === 1) {
|
|
356
290
|
return this.getQualityPoints(matrixFound[0].name);
|
|
357
291
|
}
|
|
358
|
-
|
|
359
292
|
return [];
|
|
360
293
|
}
|
|
361
|
-
|
|
362
|
-
getMaxGauge(matrixName?: string): number {
|
|
294
|
+
getMaxGauge(matrixName) {
|
|
363
295
|
const qualityPoints = this.getQualityPoints(matrixName);
|
|
364
296
|
let max = -1;
|
|
365
297
|
for (const p of qualityPoints) {
|
|
@@ -367,8 +299,7 @@ export class SpeedMatrixContainer {
|
|
|
367
299
|
}
|
|
368
300
|
return max;
|
|
369
301
|
}
|
|
370
|
-
|
|
371
|
-
getMaxRain(matrixName?: string): number {
|
|
302
|
+
getMaxRain(matrixName) {
|
|
372
303
|
const qualityPoints = this.getQualityPoints(matrixName);
|
|
373
304
|
let max = -1;
|
|
374
305
|
for (const p of qualityPoints) {
|
|
@@ -376,88 +307,75 @@ export class SpeedMatrixContainer {
|
|
|
376
307
|
}
|
|
377
308
|
return max;
|
|
378
309
|
}
|
|
379
|
-
|
|
380
310
|
/**
|
|
381
311
|
* Get summed quality indicator (0 ideally)
|
|
382
312
|
* @link SpeedMatrix.ComputeQualityIndicator
|
|
383
313
|
*/
|
|
384
|
-
getQuality(matrixName
|
|
314
|
+
getQuality(matrixName) {
|
|
385
315
|
const qualityPoints = this.getQualityPoints(matrixName);
|
|
386
|
-
return SpeedMatrix.ComputeQualityIndicator(qualityPoints);
|
|
316
|
+
return SpeedMatrix_1.SpeedMatrix.ComputeQualityIndicator(qualityPoints);
|
|
387
317
|
}
|
|
388
|
-
|
|
389
|
-
getTrustedIndicators(): number[] {
|
|
318
|
+
getTrustedIndicators() {
|
|
390
319
|
if (this.trustedIndicators.length > 0) {
|
|
391
320
|
return this.trustedIndicators;
|
|
392
321
|
}
|
|
393
|
-
|
|
394
322
|
this.trustedIndicators = [];
|
|
395
323
|
for (const matrix of this.matrices) {
|
|
396
324
|
this.trustedIndicators.push(matrix.getTrustedTechnicalIndicator());
|
|
397
325
|
}
|
|
398
|
-
|
|
399
326
|
return this.trustedIndicators;
|
|
400
327
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
let mergedSpeed: { angleInDegrees: number, pixelsPerPeriod: number };
|
|
404
|
-
|
|
328
|
+
getSpeed() {
|
|
329
|
+
let mergedSpeed;
|
|
405
330
|
for (const matrix of this.matrices) {
|
|
406
331
|
if (!mergedSpeed) {
|
|
407
332
|
mergedSpeed = matrix.getSpeed();
|
|
408
|
-
}
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
409
335
|
mergedSpeed = {
|
|
410
336
|
angleInDegrees: SpeedMatrixContainer.mergeAvg(mergedSpeed.angleInDegrees, matrix.getSpeed().angleInDegrees),
|
|
411
337
|
pixelsPerPeriod: SpeedMatrixContainer.mergeAvg(mergedSpeed.pixelsPerPeriod, matrix.getSpeed().pixelsPerPeriod),
|
|
412
|
-
}
|
|
338
|
+
};
|
|
413
339
|
}
|
|
414
340
|
}
|
|
415
|
-
|
|
416
341
|
if (!mergedSpeed) {
|
|
417
|
-
mergedSpeed = {angleInDegrees: 0, pixelsPerPeriod: 0};
|
|
342
|
+
mergedSpeed = { angleInDegrees: 0, pixelsPerPeriod: 0 };
|
|
418
343
|
}
|
|
419
|
-
|
|
420
344
|
return mergedSpeed;
|
|
421
345
|
}
|
|
422
|
-
|
|
423
|
-
isConsistent(): boolean {
|
|
346
|
+
isConsistent() {
|
|
424
347
|
const indics = this.getTrustedIndicators();
|
|
425
348
|
let indicAverage = 0;
|
|
426
349
|
for (const indic of indics) {
|
|
427
350
|
indicAverage += indic;
|
|
428
351
|
}
|
|
429
352
|
indicAverage = indicAverage / (indics.length ? indics.length : 1);
|
|
430
|
-
return indicAverage > (SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2);
|
|
353
|
+
return indicAverage > (SpeedMatrix_1.SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2);
|
|
431
354
|
}
|
|
432
|
-
|
|
433
|
-
getFlattenMatrixCount(): number {
|
|
355
|
+
getFlattenMatrixCount() {
|
|
434
356
|
return this.flattenMatrices.length;
|
|
435
357
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
options: { normalize?: boolean } = {normalize: true}): PositionValue[] {
|
|
439
|
-
|
|
440
|
-
let rendered: PositionValue[];
|
|
358
|
+
renderFlattenMatrix(index = 0, options = { normalize: true }) {
|
|
359
|
+
let rendered;
|
|
441
360
|
if (this.flattenMatrices && this.flattenMatrices[index]) {
|
|
442
361
|
rendered = this.flattenMatrices[index];
|
|
443
|
-
}
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
444
364
|
this.getQualityPoints();
|
|
445
365
|
rendered = this.flattenMatrices[index];
|
|
446
366
|
}
|
|
447
|
-
|
|
448
367
|
if (options.normalize) {
|
|
449
|
-
rendered = SpeedMatrix.Normalize(rendered);
|
|
368
|
+
rendered = SpeedMatrix_1.SpeedMatrix.Normalize(rendered);
|
|
450
369
|
}
|
|
451
|
-
|
|
452
370
|
return rendered;
|
|
453
371
|
}
|
|
454
|
-
|
|
455
|
-
|
|
372
|
+
renderMergedMatrix(options = { normalize: true }) {
|
|
373
|
+
var _a;
|
|
456
374
|
const count = this.flattenMatrices.length;
|
|
457
|
-
const size = Math.sqrt(this.flattenMatrices[0]
|
|
375
|
+
const size = Math.sqrt((_a = this.flattenMatrices[0]) === null || _a === void 0 ? void 0 : _a.length);
|
|
458
376
|
const range = (size - 1) / 2;
|
|
459
377
|
let maxValue = 0;
|
|
460
|
-
let matrix
|
|
378
|
+
let matrix = [];
|
|
461
379
|
for (let x = -range; x <= range; x++) {
|
|
462
380
|
for (let y = -range; y <= range; y++) {
|
|
463
381
|
let value = 0;
|
|
@@ -467,22 +385,15 @@ export class SpeedMatrixContainer {
|
|
|
467
385
|
maxValue = Math.max(maxValue, value);
|
|
468
386
|
}
|
|
469
387
|
value = value / count;
|
|
470
|
-
matrix.push(new PositionValue({x, y, value}));
|
|
388
|
+
matrix.push(new PositionValue_1.PositionValue({ x, y, value }));
|
|
471
389
|
}
|
|
472
390
|
}
|
|
473
|
-
|
|
474
391
|
if (options.normalize) {
|
|
475
|
-
matrix = SpeedMatrix.Normalize(matrix);
|
|
392
|
+
matrix = SpeedMatrix_1.SpeedMatrix.Normalize(matrix);
|
|
476
393
|
}
|
|
477
|
-
|
|
478
394
|
return matrix;
|
|
479
395
|
}
|
|
480
|
-
|
|
481
|
-
toJSON(options?: {
|
|
482
|
-
removeFlatten?: boolean,
|
|
483
|
-
removeMatrices?: boolean,
|
|
484
|
-
removeIndicators?: boolean,
|
|
485
|
-
}) {
|
|
396
|
+
toJSON(options) {
|
|
486
397
|
const json = {
|
|
487
398
|
qualityPoints: this.getQualityPoints(),
|
|
488
399
|
trustedIndicators: this.getTrustedIndicators(),
|
|
@@ -492,38 +403,26 @@ export class SpeedMatrixContainer {
|
|
|
492
403
|
.filter(m => !!m)
|
|
493
404
|
.map(m => m.toJSON()),
|
|
494
405
|
};
|
|
495
|
-
|
|
496
|
-
if (options?.removeMatrices) {
|
|
406
|
+
if (options === null || options === void 0 ? void 0 : options.removeMatrices) {
|
|
497
407
|
delete json.matrices;
|
|
498
408
|
}
|
|
499
|
-
|
|
500
|
-
if (options?.removeFlatten) {
|
|
409
|
+
if (options === null || options === void 0 ? void 0 : options.removeFlatten) {
|
|
501
410
|
delete json.flattenMatrices;
|
|
502
411
|
}
|
|
503
|
-
|
|
504
|
-
if (options?.removeIndicators) {
|
|
412
|
+
if (options === null || options === void 0 ? void 0 : options.removeIndicators) {
|
|
505
413
|
delete json.trustedIndicators;
|
|
506
414
|
}
|
|
507
|
-
|
|
508
415
|
return json;
|
|
509
416
|
}
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
this.
|
|
514
|
-
speedMatrixContainerToMergeIn.getTrustedIndicators());
|
|
515
|
-
this.matrices = SpeedMatrixContainer.mergeConcat(this.matrices,
|
|
516
|
-
speedMatrixContainerToMergeIn.matrices);
|
|
517
|
-
this.flattenMatrices = SpeedMatrixContainer.mergeConcat(this.flattenMatrices,
|
|
518
|
-
speedMatrixContainerToMergeIn.flattenMatrices);
|
|
519
|
-
|
|
417
|
+
merge(speedMatrixContainerToMergeIn) {
|
|
418
|
+
this.trustedIndicators = SpeedMatrixContainer.mergeConcat(this.getTrustedIndicators(), speedMatrixContainerToMergeIn.getTrustedIndicators());
|
|
419
|
+
this.matrices = SpeedMatrixContainer.mergeConcat(this.matrices, speedMatrixContainerToMergeIn.matrices);
|
|
420
|
+
this.flattenMatrices = SpeedMatrixContainer.mergeConcat(this.flattenMatrices, speedMatrixContainerToMergeIn.flattenMatrices);
|
|
520
421
|
return this;
|
|
521
422
|
}
|
|
522
|
-
|
|
523
|
-
logMergedMatrix(options: { normalize: boolean, logger: any } = {normalize: true, logger: null}) {
|
|
524
|
-
|
|
423
|
+
logMergedMatrix(options = { normalize: true, logger: null }) {
|
|
525
424
|
const mergedMatrix = this.renderMergedMatrix(options);
|
|
526
|
-
const positionHistories = mergedMatrix.map(pv => new PositionHistory({
|
|
425
|
+
const positionHistories = mergedMatrix.map(pv => new PositionHistory_1.PositionHistory({
|
|
527
426
|
id: '-',
|
|
528
427
|
label: '-',
|
|
529
428
|
date: null,
|
|
@@ -533,37 +432,31 @@ export class SpeedMatrixContainer {
|
|
|
533
432
|
valueFromGauge: -1,
|
|
534
433
|
valueFromRain: -1
|
|
535
434
|
}));
|
|
536
|
-
|
|
537
|
-
const valueDisplay = (pv: PositionValue): string => {
|
|
435
|
+
const valueDisplay = (pv) => {
|
|
538
436
|
if (!pv) {
|
|
539
437
|
return '';
|
|
540
438
|
}
|
|
541
439
|
return '' + Math.round(pv.value * 1000) / 1000;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
},
|
|
550
|
-
options?.logger);
|
|
440
|
+
};
|
|
441
|
+
SpeedMatrix_1.SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, {
|
|
442
|
+
xMin: -SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
443
|
+
xMax: SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
444
|
+
yMin: -SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
445
|
+
yMax: SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
446
|
+
}, options === null || options === void 0 ? void 0 : options.logger);
|
|
551
447
|
}
|
|
552
|
-
|
|
553
|
-
protected storeFlattenMatrices() {
|
|
554
|
-
|
|
448
|
+
storeFlattenMatrices() {
|
|
555
449
|
if (this.flattenMatrices.length === this.matrices.length) {
|
|
556
450
|
return this.flattenMatrices;
|
|
557
451
|
}
|
|
558
|
-
|
|
559
452
|
const flattenMatrices = [];
|
|
560
453
|
for (const matrix of this.matrices) {
|
|
561
454
|
if (matrix.isConsistent()) {
|
|
562
|
-
flattenMatrices.push(matrix.renderFlatten({normalize: true}));
|
|
455
|
+
flattenMatrices.push(matrix.renderFlatten({ normalize: true }));
|
|
563
456
|
}
|
|
564
457
|
}
|
|
565
|
-
|
|
566
458
|
this.flattenMatrices = flattenMatrices;
|
|
567
459
|
}
|
|
568
|
-
|
|
569
460
|
}
|
|
461
|
+
exports.SpeedMatrixContainer = SpeedMatrixContainer;
|
|
462
|
+
//# sourceMappingURL=SpeedMatrixContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpeedMatrixContainer.js","sourceRoot":"","sources":["../../src/quality/SpeedMatrixContainer.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAC1C,4DAAuD;AACvD,+DAA0D;AAC1D,iDAA4C;AAC5C,gEAA2D;AAuB3D,MAAa,oBAAoB;IAO7B,YAAY,IAEX;QACG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAS;QAC3B,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;QACzD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAC;YACtB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,yBAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,iBAAiB,EAAE,CAAC;YAC1B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,EAAE,CAAC;YACxB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACnD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmC,EACnC,gBAAgB,GAAG,IAAI;;QACxC,MAAM,eAAe,GAAG,SAAS;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,eAAe,GAAsB,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAa;YAChC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC;YACxF,IAAI,EAAE,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAE,IAAI;YACxB,mBAAmB,EAAE,EAAE;YACvB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,EAAE;SACd,CAAC;QACF,MAAM,uBAAuB,GAAG,EAAE,CAAC;QAEnC,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClC,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,CAAC;QAED,4BAA4B;QAC5B,KAAK,MAAM,sBAAsB,IAAI,eAAe,EAAE,CAAC;YACnD,MAAM,eAAe,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE5G,eAAe,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,sBAAsB,CAAC,IAAI;gBACjC,sBAAsB;gBACtB,eAAe;aAClB,CAAC,CAAC;YAEH,MAAM,aAAa,GAAmB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;YACtG,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC;gBAC9E,IAAI,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC;oBACtD,uBAAuB,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC3D,CAAC;gBACD,uBAAuB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnG,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,gCAAgC,GAAG,EAAE,CAAC;QAC5C,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACvC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC;oBAC9E,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,WAAW;2BAC1F,uBAAuB,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;wBAC9D,gCAAgC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;oBACzD,CAAC;yBAAM,CAAC;wBACJ,IAAI,gBAAgB,EAAE,CAAC;4BACnB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACxC,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,MAAM,sBAAsB,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC5D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,EAAkB,CAAC;YACxC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,2BAAY,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACJ,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;QAED,iBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxE,iBAAiB,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC1F,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEzD,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,cAAsC,EAAE,OAAa,EAAE,OAAa;;QAC5F,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,2BAA2B,GAAG,cAAc,CAAC,2BAA2B,CAAC;QAC/E,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,EAAE;aACzD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAEjD,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,WAAW,EAAE,EAAE,2BAA2B,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/G,MAAM,OAAO,GAAG,MAAA,2BAA2B,CAAC,SAAS,CAAC,KAAK,CAAC,0CAAE,OAAO,CAAC;YAEtE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEhF,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAE3F,IAAI,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC3C,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1C,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;gBACxC,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBAElF,MAAM,OAAO,GAAa;oBACtB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;oBACjB,mBAAmB;oBACnB,aAAa;oBACb,QAAQ;oBACR,OAAO;iBACV,CAAC;gBAEF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,MAAM,CAAC,kBAAkB,CAAC,EAAO,EAAE,EAAO;QAChD,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,YAAY,CAAC,EAAQ,EAAE,EAAQ;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,YAAY,CAAC,EAAQ,EAAE,EAAQ;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,EAAU;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,EAAU;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,WAAW,CAAC,EAAc,EAAE,EAAc;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,WAAW,CAAC,EAAuB,EAAE,EAAuB;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAEzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,SAAS,GAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG;oBACb,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC;iBACf,CAAC;gBACF,uCAAuC;gBACvC,gDAAgD;gBAChD,IAAI;gBACJ,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE;oBAC1B,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,UAAU,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,UAAU;oBAC9D,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAC,GAAG;oBAC9C,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAC,GAAG;oBAC9C,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,SAAS;oBAC3D,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE;oBAClC,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE;oBAClC,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;oBACrD,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC9B,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;gBAChC,OAAO,IAAI,2BAAY,CAAC;oBACpB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,mBAAmB,EAAE,IAAI,+BAAc,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC;oBAC5G,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;oBAC9C,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,KAAK,CAAC,MAAM;iBACvB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,KAAK,GAAG,CAAC;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,eAAe,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,UAAmB;;QAEhC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAA,MAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,0CAAE,MAAM,IAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChF,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,IAAI,aAAa,GAAmB,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACxE,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,2BAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxF,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE7C,QAAQ;gBACR,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACtC,CAAC;QACL,CAAC;QAED,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,oCAAoC,CAAC,WAAmB,CAAC;QAErD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;QAE9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED,WAAW,CAAC,UAAmB;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,UAAU,CAAC,UAAmB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,UAAmB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACxD,OAAO,yBAAW,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,QAAQ;QACJ,IAAI,WAAgE,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG;oBACV,cAAc,EAAE,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC;oBAC3G,eAAe,EAAE,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;iBACjH,CAAA;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,WAAW,GAAG,EAAC,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAC,CAAC;QAC1D,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,YAAY;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,YAAY,IAAI,KAAK,CAAC;QAC1B,CAAC;QACD,YAAY,GAAG,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,YAAY,GAAG,CAAC,yBAAW,CAAC,yBAAyB,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,KAAK,GAAG,CAAC,EACT,UAAmC,EAAC,SAAS,EAAE,IAAI,EAAC;QAEpE,IAAI,QAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,GAAG,yBAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,kBAAkB,CAAC,UAAmC,EAAC,SAAS,EAAE,IAAI,EAAC;;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAoB,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;oBACnB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;gBACD,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,6BAAa,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,GAAG,yBAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,OAIN;QACG,MAAM,IAAI,GAAG;YACT,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACtC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YAC9C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC5B,CAAC;QAEF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,6BAAmD;QAErD,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,EACjF,6BAA6B,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAC1D,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EACxE,6BAA6B,CAAC,eAAe,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,UAA+C,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC;QAE1F,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,iCAAe,CAAC;YACjE,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,IAAI;YACV,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,cAAc,EAAE,CAAC,CAAC;YAClB,aAAa,EAAE,CAAC,CAAC;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,YAAY,GAAG,CAAC,EAAiB,EAAU,EAAE;YAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO,EAAE,CAAC;YACd,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnD,CAAC,CAAA;QAED,yBAAW,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,EAAE;YACvD,IAAI,EAAE,CAAC,yBAAW,CAAC,oBAAoB;YACvC,IAAI,EAAE,yBAAW,CAAC,oBAAoB;YACtC,IAAI,EAAE,CAAC,yBAAW,CAAC,oBAAoB;YACvC,IAAI,EAAE,yBAAW,CAAC,oBAAoB;SACzC,EACD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IAES,oBAAoB;QAE1B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;gBACxB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;CAEJ;AA7hBD,oDA6hBC"}
|