@bizdoc/core 1.10.0-next.5 → 1.10.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/cube/matrix/table.component.mjs +32 -26
- package/esm2020/lib/views/cube/view.component.mjs +3 -3
- package/fesm2015/bizdoc-core.mjs +33 -27
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +33 -27
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/cube/matrix/table.component.d.ts +2 -1
- package/package.json +1 -1
@@ -48,7 +48,7 @@ export class CubeMatrixComponent {
|
|
48
48
|
//fn: val.fn,
|
49
49
|
title: val.title,
|
50
50
|
xAxis: translate(val.xAxis),
|
51
|
-
|
51
|
+
series: translate(val.series)
|
52
52
|
};
|
53
53
|
}
|
54
54
|
get interactive() {
|
@@ -78,31 +78,37 @@ export class CubeMatrixComponent {
|
|
78
78
|
if (changes['filters'])
|
79
79
|
this.refresh();
|
80
80
|
}
|
81
|
+
/** */
|
81
82
|
_addsum() {
|
82
|
-
let { xAxis,
|
83
|
+
let { xAxis, series } = this._sum;
|
83
84
|
if (xAxis) {
|
84
|
-
|
85
|
-
this.columns.
|
86
|
-
columns.
|
87
|
-
|
88
|
-
columns.push({
|
85
|
+
let i = 0;
|
86
|
+
while (i < this.columns.length - 1) {
|
87
|
+
if (this.columns[i].key === xAxis.toString()) {
|
88
|
+
this.columns.splice(i + 1, 0, {
|
89
89
|
key: '_sum',
|
90
90
|
value: this._sum.title
|
91
91
|
});
|
92
|
-
|
93
|
-
|
92
|
+
break;
|
93
|
+
}
|
94
|
+
i++;
|
95
|
+
}
|
94
96
|
}
|
95
|
-
if (
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
97
|
+
if (series) {
|
98
|
+
let i = 0;
|
99
|
+
const row = {
|
100
|
+
key: '_sum',
|
101
|
+
value: this._sum.title
|
102
|
+
};
|
103
|
+
while (i < this.rows.length - 1) {
|
104
|
+
if (this.rows[i].key === series.toString()) {
|
105
|
+
this.rows.splice(i + 1, 0, row);
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
i++;
|
109
|
+
}
|
110
|
+
if (i === this.rows.length - 1)
|
111
|
+
this.rows.push(row);
|
106
112
|
}
|
107
113
|
}
|
108
114
|
refresh() {
|
@@ -114,7 +120,7 @@ export class CubeMatrixComponent {
|
|
114
120
|
scope: this.scope
|
115
121
|
}).pipe(modelize(), first(), tap(d => {
|
116
122
|
this._totals(d);
|
117
|
-
this.
|
123
|
+
this._sum &&
|
118
124
|
this._calculatesum(d);
|
119
125
|
})).subscribe(d => this.data = d, (e) => {
|
120
126
|
this._sb.error(e.status === 401 ? 'Unauthorized' : null);
|
@@ -161,7 +167,7 @@ export class CubeMatrixComponent {
|
|
161
167
|
this.totals['_total'] = grand;
|
162
168
|
}
|
163
169
|
_calculatesum(data) {
|
164
|
-
let { xAxis,
|
170
|
+
let { xAxis, series } = this._sum;
|
165
171
|
if (xAxis) {
|
166
172
|
let total = 0;
|
167
173
|
this.rows.forEach(r => {
|
@@ -182,7 +188,7 @@ export class CubeMatrixComponent {
|
|
182
188
|
});
|
183
189
|
this.totals['_sum'] = total;
|
184
190
|
}
|
185
|
-
if (
|
191
|
+
if (series) {
|
186
192
|
let total = 0;
|
187
193
|
this.columns.forEach(c => {
|
188
194
|
let sum = 0, i = 0;
|
@@ -192,7 +198,7 @@ export class CubeMatrixComponent {
|
|
192
198
|
let val = row[c.key];
|
193
199
|
if (val !== undefined)
|
194
200
|
sum += val;
|
195
|
-
if (key ===
|
201
|
+
if (key === series)
|
196
202
|
break;
|
197
203
|
}
|
198
204
|
i++;
|
@@ -221,7 +227,7 @@ export class CubeMatrixComponent {
|
|
221
227
|
for (let i = 0; i < this.rows.length; i++) {
|
222
228
|
let key = this.rows[i].key;
|
223
229
|
serie.push(key);
|
224
|
-
if (key === this._sum.
|
230
|
+
if (key === this._sum.series)
|
225
231
|
break;
|
226
232
|
}
|
227
233
|
}
|
@@ -300,4 +306,4 @@ export class CubeInfoCellArgs {
|
|
300
306
|
get value() { return this._value; }
|
301
307
|
get summary() { return this._summary; }
|
302
308
|
}
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxRQUFRLEVBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUtuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLDJCQUEyQjtBQU8zQixNQUFNLE9BQU8sbUJBQW1CO0lBMEQ5QixZQUNVLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFFBQXdCLEVBQ3hCLEdBQXNCO1FBSHRCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTdEdkIsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBcUN0QyxpQkFBWSxHQUFZLElBQUksQ0FBQztR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QU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDRyxPQUFPO3NCQUF2QixLQUFLO3VCQUFDLFFBQVE7Z0JBTUosT0FBTztzQkFEakIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRU8sR0FBRztzQkFBZixLQUFLO2dCQW9CRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUtLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBSXNCLFNBQVM7c0JBQXBDLE1BQU07dUJBQUMsU0FBUztnQkFDRSxhQUFhO3NCQUEvQixNQUFNOztBQTBPVCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLElBQUksS0FBSyxLQUFhLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFM0MsSUFBSSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztDQU1qRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGZpcnN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIG1vZGVsaXplLCBTY29wZVR5cGUgfSBmcm9tICcuLi9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgbWF0cml4QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9hbmltYXRpb25zJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDA7XHJcblxyXG4vKiogY3ViZSBtYXRyaXggY29tcG9uZW50Ki9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1tYXRyaXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbWF0cml4QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcmVhZG9ubHkgUFJFQ0lTSU9OID0gdGhpcy5fc2VydmljZS5kaWdpdHNJbmZvO1xyXG4gIENVUlJFTkNZOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFRhYmxlRWxlbWVudD47XHJcbiAgQElucHV0KCdjdWJlJykgX2N1YmU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCd4QXhpcycpIF94QXhpcyE6IHN0cmluZztcclxuICBASW5wdXQoJ3NlcmllcycpIF9zZXJpZXMhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgaW5kaWNlcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGluZGljZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX2luZGljZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBwcml2YXRlIF9zdW06IFN1bU9wdGlvbnM7XHJcbiAgQElucHV0KCkgc2V0IHN1bSh2YWw6IFN1bU9wdGlvbnMpIHtcclxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShheGlzOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgc3dpdGNoIChheGlzKSB7XHJcbiAgICAgICAgY2FzZSAnJG1vbnRoJzpcclxuICAgICAgICAgIHJldHVybiAnTScgKyAoJzAnICsgbmV3IERhdGUoKS5nZXRNb250aCgpLnRvU3RyaW5nKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjYXNlICckeWVhcic6XHJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY2FzZSAnJHF1YXJ0ZXInOlxyXG4gICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLyAzKS50b1N0cmluZygpO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gYXhpcyA/IGF4aXMudG9TdHJpbmcoKSA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3N1bSA9IHtcclxuICAgICAgLy9mbjogdmFsLmZuLFxyXG4gICAgICB0aXRsZTogdmFsLnRpdGxlLFxyXG4gICAgICB4QXhpczogdHJhbnNsYXRlKHZhbC54QXhpcyksXHJcbiAgICAgIHNlcmllOiB0cmFuc2xhdGUodmFsLnNlcmllKVxyXG4gICAgfTtcclxuICB9XHJcbiAgQElucHV0KCkgZmlsdGVyczogQXhlc01hcDtcclxuICBwcml2YXRlIF9pbnRlcmFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgZ2V0IGludGVyYWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aXZlO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW50ZXJhY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludGVyYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgQE91dHB1dCgnZXhwbG9yZScpIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhlc01hcD4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICByb3dzOiBLZXlWYWx1ZVtdO1xyXG4gIGNvbHVtbnM6IEtleVZhbHVlW107XHJcbiAgaW5kZXhlczogQ3ViZUluZGV4W107XHJcbiAgZGF0YTogeyBbcm93OiBzdHJpbmddOiB7IFtjb2x1bW46IHN0cmluZ106IG51bWJlcjsgfTsgfTtcclxuICB0b3RhbHM6IHsgW2NvbHVtbjogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY3ViZTogQ3ViZTtcclxuICB4QXhpczogQ3ViZUF4aXM7XHJcbiAgc2VyaWVzOiBDdWJlQXhpcztcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snX2N1YmUnXSkge1xyXG4gICAgICB0aGlzLmN1YmUgPSB0aGlzLmN1YmUgPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5fY3ViZSkgOlxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2luZGljZXMpXHJcbiAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IHRoaXMuX2luZGljZXMuaW5kZXhPZihpLm5hbWUpID4gLTEpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuY3ViZS5pbmRpY2VzO1xyXG4gICAgICB0aGlzLl9pbmRpY2VzID0gdGhpcy5pbmRleGVzLm1hcChpID0+IGkubmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snX3hBeGlzJ10gfHwgY2hhbmdlc1snX3NlcmllcyddKSB7XHJcbiAgICAgIHRoaXMueEF4aXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl94QXhpcykgfHwgdGhpcy5jdWJlLmF4ZXNbMF07XHJcbiAgICAgIHRoaXMuc2VyaWVzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5fc2VyaWVzKSB8fCB0aGlzLmN1YmUuYXhlc1sxXTtcclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IGZvcmtKb2luKHRoaXMuX2RzLmFsbCh0aGlzLnNlcmllcy5kYXRhVHlwZSkucGlwZSh0YXAociA9PlxyXG4gICAgICAgIHRoaXMucm93cyA9IHJcclxuICAgICAgKSksXHJcbiAgICAgICAgdGhpcy5fZHMuYWxsKHRoaXMueEF4aXMuZGF0YVR5cGUpLnBpcGUodGFwKGMgPT5cclxuICAgICAgICAgIHRoaXMuY29sdW1ucyA9IGNcclxuICAgICAgICApKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3N1bSAmJlxyXG4gICAgICAgICAgICB0aGlzLl9hZGRzdW0oKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddKVxyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWRkc3VtKCkge1xyXG4gICAgbGV0IHsgeEF4aXMsIHNlcmllIH0gPSB0aGlzLl9zdW07XHJcbiAgICBpZiAoeEF4aXMpIHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBjb2x1bW5zLnB1c2goYyk7XHJcbiAgICAgICAgaWYgKHhBeGlzLnRvU3RyaW5nKCkgPT09IGMua2V5KVxyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiAnX3N1bScsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9zdW0udGl0bGVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcclxuICAgIH1cclxuICAgIGlmIChzZXJpZSkge1xyXG4gICAgICBjb25zdCByb3dzID0gW107XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIHJvd3MucHVzaChyKTtcclxuICAgICAgICBpZiAoc2VyaWUudG9TdHJpbmcoKSA9PT0gci5rZXkpXHJcbiAgICAgICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgICAgICBrZXk6ICdfc3VtJyxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3N1bS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJvd3MgPSByb3dzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PiB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy54QXhpcy5uYW1lLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMubmFtZSxcclxuICAgICAgaW5kaWNlczogdGhpcy5faW5kaWNlcyxcclxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSBhcyBhbnkpLnBpcGUoXHJcbiAgICAgIG1vZGVsaXplKCksIGZpcnN0KCksIHRhcChkID0+IHtcclxuICAgICAgICB0aGlzLl90b3RhbHMoZCk7XHJcbiAgICAgICAgdGhpcy5zdW0gJiZcclxuICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZXN1bShkKTtcclxuICAgICAgfSkpLnN1YnNjcmliZShkID0+XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZCxcclxuICAgICAgICAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dChwcm9ncmVzc1Rhc2spO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF90b3RhbHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTsgfSkge1xyXG4gICAgbGV0IGdyYW5kID0gMDtcclxuICAgIHRoaXMuaW5kZXhlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgaWYgKCFpbmRleCkgZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICAgIGZvciAoeCBpbiBpbmRleClcclxuICAgICAgICAgIHN1bSArPSBpbmRleFt4XTtcclxuICAgICAgICBpbmRleFsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIWRhdGFbci5rZXldKVxyXG4gICAgICAgIGRhdGFbci5rZXldID0ge307XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgbGV0IHN1bSA9IDAsIHg7XHJcbiAgICAgIGlmIChsaW5lKVxyXG4gICAgICAgIGZvciAoeCBpbiBsaW5lKVxyXG4gICAgICAgICAgc3VtICs9IGxpbmVbeF07XHJcbiAgICAgIGRhdGFbci5rZXldWydfdG90YWwnXSA9IHN1bTtcclxuICAgICAgZ3JhbmQgLT0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCBzdW0gPSAwLCBrZXk7XHJcbiAgICAgIGZvciAoa2V5IGluIGRhdGEpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW2tleV1bYy5rZXldO1xyXG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1bSArPSB0aGlzLl9pbmRpY2VzLmluZGV4T2Yoa2V5KSA+IC0xID8gdmFsIDogLXZhbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRvdGFsc1tjLmtleV0gPSBzdW07XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG90YWxzWydfdG90YWwnXSA9IGdyYW5kO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGEpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZS8qLCBmbiovIH0gPSB0aGlzLl9zdW07XHJcbiAgICBpZiAoeEF4aXMpIHtcclxuICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZGF0YVtyLmtleV07XHJcbiAgICAgICAgaWYgKCFyb3cpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgbGV0IHN1bSA9IDAsIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tpXS5rZXksIHZhbCA9IHJvd1trZXldO1xyXG4gICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0geEF4aXMpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhW3Iua2V5XVsnX3N1bSddID0gc3VtO1xyXG4gICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG90YWxzWydfc3VtJ10gPSB0b3RhbDtcclxuICAgIH1cclxuICAgIGlmIChzZXJpZSkge1xyXG4gICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBsZXQgc3VtID0gMCwgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5yb3dzW2ldLmtleSwgcm93ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gcm93W2Mua2V5XTtcclxuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHNlcmllKVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhWydfc3VtJ11bYy5rZXldID0gc3VtO1xyXG4gICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGFbJ19zdW0nXVsnX3RvdGFsJ10gPSB0b3RhbDtcclxuICAgIH1cclxuICB9XHJcbiAgZXhwbG9yZSh4OiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSB8IG51bWJlcltdLCBzZXJpZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSkge1xyXG4gICAgaWYgKCF0aGlzLmludGVyYWN0aXZlKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zdW0pIHtcclxuICAgICAgaWYgKHggPT09ICdfc3VtJykge1xyXG4gICAgICAgIHggPSBbXSBhcyBzdHJpbmdbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tpXS5rZXk7XHJcbiAgICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICAgIGlmIChrZXkgPT09IHRoaXMuX3N1bS54QXhpcylcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzZXJpZSA9PT0gJ19zdW0nKSB7XHJcbiAgICAgICAgc2VyaWUgPSBbXSBhcyBzdHJpbmdbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMucm93c1tpXS5rZXk7XHJcbiAgICAgICAgICBzZXJpZS5wdXNoKGtleSk7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSB0aGlzLl9zdW0uc2VyaWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5maWx0ZXJzIH0gYXMgQXhlc01hcDtcclxuICAgIGF4ZXNbdGhpcy54QXhpcy5uYW1lXSA9IHg7XHJcbiAgICBheGVzW3RoaXMuc2VyaWVzLm5hbWVdID0gc2VyaWU7XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KGF4ZXMpO1xyXG4gIH1cclxuICBtb3ZlKHgsIHkpIHtcclxuICAgIGxldCByb3dJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBiID0gMDsgYiA8IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5sZW5ndGg7IGIrKykge1xyXG4gICAgICBsZXQgdEJvZHkgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMuaXRlbShiKTtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCB0Qm9keS5yb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgbGV0IHJvdyA9IHRCb2R5LnJvd3MuaXRlbShyKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSB5KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteScpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3dJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0Rm9vdCA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEZvb3QsIHJvdyA9IHRGb290LnJvd3NbMF07XHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1YmVJbmZvQ2VsbEFyZ3Mge1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl92YWx1ZTsgfVxyXG4gIHByaXZhdGUgX3N1bW1hcnk6IGJvb2xlYW47XHJcbiAgZ2V0IHN1bW1hcnkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdW1tYXJ5OyB9XHJcbiAgY29sb3I6IHN0cmluZztcclxuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcclxuICBkYXRhOiB7IFtyb3c6IHN0cmluZ106IHsgW2NvbHVtbjogc3RyaW5nXTogbnVtYmVyOyB9OyB9O1xyXG4gIHJvdzogc3RyaW5nO1xyXG4gIGNvbHVtbjogc3RyaW5nO1xyXG59XHJcblxyXG50eXBlIFN1bU9wdGlvbnMgPSB7XHJcbiAgeEF4aXM/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgc2VyaWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgdGl0bGU6IGFueTtcclxuICAvL2ZuPzogKCkgPT4gbnVtYmVyO1xyXG59XHJcbnR5cGUgS2V5VmFsdWUgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IGFueTtcclxufTtcclxuXHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIm1vdmUoLTEsIC0xKVwiICpuZ0lmPVwiZGF0YVwiPlxyXG4gIDx0aGVhZD5cclxuICAgIDwhLS0gaGVhZGVycyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCAtMilcIiBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPlxyXG4gICAgICAgIHt7IGNvbHVtbi52YWx1ZSB9fVxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIGluZGljZXMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93IGN1YmUtaW5kZXhcIiAqbmdGb3I9XCJsZXQgaW5kZXggb2YgaW5kZXhlczsgbGV0IHkgPSBpbmRleFwiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKDAsIHkpXCI+e3tpbmRleC50aXRsZX19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSlcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGFbaW5kZXgubmFtZV0gJiYgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XTsgZWxzZSB6ZXJvXCI+e3sgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fTwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW2luZGV4Lm5hbWVdWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIHJvd3MgLS0+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgeSA9IGluZGV4XCIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTIsIHkgKyBpbmRpY2VzLmxlbmd0aClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFbcm93LmtleV0gJiYgZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSAhPT0gdW5kZWZpbmVkOyBlbHNlIHplcm9cIj5cclxuICAgICAgICAgIDxzcGFuIFtjbGFzcy5jbGlja2FibGVdPVwiaW50ZXJhY3RpdmVcIiAoY2xpY2spPVwiZXhwbG9yZShjb2x1bW4ua2V5LCByb3cua2V5KVwiPlxyXG4gICAgICAgICAgICB7e2RhdGFbcm93LmtleV1bY29sdW1uLmtleV0gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgtMSwgeSArIGluZGljZXMubGVuZ3RoKVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbcm93LmtleV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGZvb3Q+XHJcbiAgICA8IS0tIGF2YWlsYWJsZSAtLT5cclxuICAgIDx0cj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiXHJcbiAgICAgICAgICBbY2xhc3MubmVnYXRpdmUtZmlndXJlXT1cInRvdGFsc1tjb2x1bW4ua2V5XSA8IDBcIj5cclxuICAgICAgICB7e3RvdGFsc1tjb2x1bW4ua2V5XSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiPnt7dG90YWxzWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICN6ZXJvPlxyXG4gIDBcclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxRQUFRLEVBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUtuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLDJCQUEyQjtBQU8zQixNQUFNLE9BQU8sbUJBQW1CO0lBMEQ5QixZQUNVLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFFBQXdCLEVBQ3hCLEdBQXNCO1FBSHRCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTdEdkIsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBcUN0QyxpQkFBWSxHQUFZLElBQUksQ0FBQztR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R0FBbkIsbUJBQW1CLGdkQ3RCaEMsNDdGQWdFQSxnc0JENUNjLENBQUMsZUFBZSxDQUFDOzJGQUVsQixtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLENBQUMsZUFBZSxDQUFDOzJMQUtULFlBQVk7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTztnQkFDSCxLQUFLO3NCQUFuQixLQUFLO3VCQUFDLE1BQU07Z0JBQ0csTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNHLE9BQU87c0JBQXZCLEtBQUs7dUJBQUMsUUFBUTtnQkFNSixPQUFPO3NCQURqQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFFTyxHQUFHO3NCQUFmLEtBQUs7Z0JBb0JHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0ssV0FBVztzQkFEckIsS0FBSztnQkFJc0IsU0FBUztzQkFBcEMsTUFBTTt1QkFBQyxTQUFTO2dCQUNFLGFBQWE7c0JBQS9CLE1BQU07O0FBZ1BULE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsSUFBSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUzQyxJQUFJLE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBTWpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgbW9kZWxpemUsIFNjb3BlVHlwZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXRyaXhBbmltYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5cclxuY29uc3QgTE9BRElOR19ERUxBWSA9IDIwMDtcclxuXHJcbi8qKiBjdWJlIG1hdHJpeCBjb21wb25lbnQqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLW1hdHJpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFttYXRyaXhBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlTWF0cml4Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICByZWFkb25seSBQUkVDSVNJT04gPSB0aGlzLl9zZXJ2aWNlLmRpZ2l0c0luZm87XHJcbiAgQ1VSUkVOQ1k6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVGFibGVFbGVtZW50PjtcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWVzJykgX3NlcmllcyE6IHN0cmluZztcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBpbmRpY2VzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRpY2VzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW5kaWNlcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5faW5kaWNlcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKSBzY29wZTogU2NvcGVUeXBlO1xyXG4gIHByaXZhdGUgX3N1bTogU3VtT3B0aW9ucztcclxuICBASW5wdXQoKSBzZXQgc3VtKHZhbDogU3VtT3B0aW9ucykge1xyXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKGF4aXM6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgICBzd2l0Y2ggKGF4aXMpIHtcclxuICAgICAgICBjYXNlICckbW9udGgnOlxyXG4gICAgICAgICAgcmV0dXJuICdNJyArICgnMCcgKyBuZXcgRGF0ZSgpLmdldE1vbnRoKCkudG9TdHJpbmcoKSkuc2xpY2UoLTIpO1xyXG4gICAgICAgIGNhc2UgJyR5ZWFyJzpcclxuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcclxuICAgICAgICBjYXNlICckcXVhcnRlcic6XHJcbiAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAvIDMpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBheGlzID8gYXhpcy50b1N0cmluZygpIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fc3VtID0ge1xyXG4gICAgICAvL2ZuOiB2YWwuZm4sXHJcbiAgICAgIHRpdGxlOiB2YWwudGl0bGUsXHJcbiAgICAgIHhBeGlzOiB0cmFuc2xhdGUodmFsLnhBeGlzKSxcclxuICAgICAgc2VyaWVzOiB0cmFuc2xhdGUodmFsLnNlcmllcylcclxuICAgIH07XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEF4ZXNNYXA7XHJcbiAgcHJpdmF0ZSBfaW50ZXJhY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGl2ZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGludGVyYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbnRlcmFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKSByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4ZXNNYXA+KCk7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcm93czogS2V5VmFsdWVbXTtcclxuICBjb2x1bW5zOiBLZXlWYWx1ZVtdO1xyXG4gIGluZGV4ZXM6IEN1YmVJbmRleFtdO1xyXG4gIGRhdGE6IHsgW3Jvdzogc3RyaW5nXTogeyBbY29sdW1uOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcbiAgdG90YWxzOiB7IFtjb2x1bW46IHN0cmluZ106IG51bWJlciB9O1xyXG4gIGN1YmU6IEN1YmU7XHJcbiAgeEF4aXM6IEN1YmVBeGlzO1xyXG4gIHNlcmllczogQ3ViZUF4aXM7XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ19jdWJlJ10pIHtcclxuICAgICAgdGhpcy5jdWJlID0gdGhpcy5jdWJlID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuX2N1YmUpIDpcclxuICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICAgIHRoaXMuQ1VSUkVOQ1kgPSB0aGlzLmN1YmUuY3VycmVuY3lDb2RlIC8qfHwgdGhpcy5fc2VydmljZS5jdXJyZW5jeUNvZGUqLztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9pbmRpY2VzKVxyXG4gICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmN1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmN1YmUuaW5kaWNlcztcclxuICAgICAgdGhpcy5faW5kaWNlcyA9IHRoaXMuaW5kZXhlcy5tYXAoaSA9PiBpLm5hbWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ194QXhpcyddIHx8IGNoYW5nZXNbJ19zZXJpZXMnXSkge1xyXG4gICAgICB0aGlzLnhBeGlzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5feEF4aXMpIHx8IHRoaXMuY3ViZS5heGVzWzBdO1xyXG4gICAgICB0aGlzLnNlcmllcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3NlcmllcykgfHwgdGhpcy5jdWJlLmF4ZXNbMV07XHJcbiAgICAgIHRoaXMuX3ByZXBhcmUgPSBmb3JrSm9pbih0aGlzLl9kcy5hbGwodGhpcy5zZXJpZXMuZGF0YVR5cGUpLnBpcGUodGFwKHIgPT5cclxuICAgICAgICB0aGlzLnJvd3MgPSByXHJcbiAgICAgICkpLFxyXG4gICAgICAgIHRoaXMuX2RzLmFsbCh0aGlzLnhBeGlzLmRhdGFUeXBlKS5waXBlKHRhcChjID0+XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBjXHJcbiAgICAgICAgKSkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zdW0gJiZcclxuICAgICAgICAgICAgdGhpcy5fYWRkc3VtKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX2FkZHN1bSgpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZXMgfSA9IHRoaXMuX3N1bTtcclxuICAgIGlmICh4QXhpcykge1xyXG4gICAgICBsZXQgaSA9IDA7XHJcbiAgICAgIHdoaWxlIChpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2x1bW5zW2ldLmtleSA9PT0geEF4aXMudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnNwbGljZShpICsgMSwgMCwge1xyXG4gICAgICAgICAgICBrZXk6ICdfc3VtJyxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3N1bS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc2VyaWVzKSB7XHJcbiAgICAgIGxldCBpID0gMDtcclxuICAgICAgY29uc3Qgcm93ID0ge1xyXG4gICAgICAgIGtleTogJ19zdW0nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLl9zdW0udGl0bGVcclxuICAgICAgfSBhcyBLZXlWYWx1ZTtcclxuICAgICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvd3NbaV0ua2V5ID09PSBzZXJpZXMudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3dzLnNwbGljZShpICsgMSwgMCwgcm93KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGkgPT09IHRoaXMucm93cy5sZW5ndGggLSAxKVxyXG4gICAgICAgIHRoaXMucm93cy5wdXNoKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgY29uc3QgcHJvZ3Jlc3NUYXNrID0gc2V0VGltZW91dCgoKSA9PlxyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSB0cnVlKVxyXG4gICAgICAsIExPQURJTkdfREVMQVkpO1xyXG4gICAgdGhpcy5fcHJlcGFyZS50aGVuKCgpID0+IHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuY3ViZS5uYW1lLCB0aGlzLnhBeGlzLm5hbWUsIHtcclxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcy5uYW1lLFxyXG4gICAgICBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICB9IGFzIGFueSkucGlwZShcclxuICAgICAgbW9kZWxpemUoKSwgZmlyc3QoKSwgdGFwKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3RvdGFscyhkKTtcclxuICAgICAgICB0aGlzLl9zdW0gJiZcclxuICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZXN1bShkKTtcclxuICAgICAgfSkpLnN1YnNjcmliZShkID0+XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZCxcclxuICAgICAgICAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dChwcm9ncmVzc1Rhc2spO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF90b3RhbHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTsgfSkge1xyXG4gICAgbGV0IGdyYW5kID0gMDtcclxuICAgIHRoaXMuaW5kZXhlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgaWYgKCFpbmRleCkgZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICAgIGZvciAoeCBpbiBpbmRleClcclxuICAgICAgICAgIHN1bSArPSBpbmRleFt4XTtcclxuICAgICAgICBpbmRleFsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIWRhdGFbci5rZXldKVxyXG4gICAgICAgIGRhdGFbci5rZXldID0ge307XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgbGV0IHN1bSA9IDAsIHg7XHJcbiAgICAgIGlmIChsaW5lKVxyXG4gICAgICAgIGZvciAoeCBpbiBsaW5lKVxyXG4gICAgICAgICAgc3VtICs9IGxpbmVbeF07XHJcbiAgICAgIGRhdGFbci5rZXldWydfdG90YWwnXSA9IHN1bTtcclxuICAgICAgZ3JhbmQgLT0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCBzdW0gPSAwLCBrZXk7XHJcbiAgICAgIGZvciAoa2V5IGluIGRhdGEpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW2tleV1bYy5rZXldO1xyXG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1bSArPSB0aGlzLl9pbmRpY2VzLmluZGV4T2Yoa2V5KSA+IC0xID8gdmFsIDogLXZhbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRvdGFsc1tjLmtleV0gPSBzdW07XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG90YWxzWydfdG90YWwnXSA9IGdyYW5kO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGEpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZXMgfSA9IHRoaXMuX3N1bTtcclxuICAgIGlmICh4QXhpcykge1xyXG4gICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCByb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBsZXQgc3VtID0gMCwgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2ldLmtleSwgdmFsID0gcm93W2tleV07XHJcbiAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSB4QXhpcylcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGFbci5rZXldWydfc3VtJ10gPSBzdW07XHJcbiAgICAgICAgdG90YWwgKz0gc3VtO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50b3RhbHNbJ19zdW0nXSA9IHRvdGFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHNlcmllcykge1xyXG4gICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBsZXQgc3VtID0gMCwgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5yb3dzW2ldLmtleSwgcm93ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gcm93W2Mua2V5XTtcclxuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHNlcmllcylcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YVsnX3N1bSddW2Mua2V5XSA9IHN1bTtcclxuICAgICAgICB0b3RhbCArPSBzdW07XHJcbiAgICAgIH0pO1xyXG4gICAgICBkYXRhWydfc3VtJ11bJ190b3RhbCddID0gdG90YWw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGV4cGxvcmUoeDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSwgc2VyaWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIGlmICghdGhpcy5pbnRlcmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuc3VtKSB7XHJcbiAgICAgIGlmICh4ID09PSAnX3N1bScpIHtcclxuICAgICAgICB4ID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBrZXkgPSB0aGlzLmNvbHVtbnNbaV0ua2V5O1xyXG4gICAgICAgICAgeC5wdXNoKGtleSk7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSB0aGlzLl9zdW0ueEF4aXMpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoc2VyaWUgPT09ICdfc3VtJykge1xyXG4gICAgICAgIHNlcmllID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBrZXkgPSB0aGlzLnJvd3NbaV0ua2V5O1xyXG4gICAgICAgICAgc2VyaWUucHVzaChrZXkpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fc3VtLnNlcmllcylcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmZpbHRlcnMgfSBhcyBBeGVzTWFwO1xyXG4gICAgYXhlc1t0aGlzLnhBeGlzLm5hbWVdID0geDtcclxuICAgIGF4ZXNbdGhpcy5zZXJpZXMubmFtZV0gPSBzZXJpZTtcclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoYXhlcyk7XHJcbiAgfVxyXG4gIG1vdmUoeCwgeSkge1xyXG4gICAgbGV0IHJvd0luZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGIgPSAwOyBiIDwgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLmxlbmd0aDsgYisrKSB7XHJcbiAgICAgIGxldCB0Qm9keSA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5pdGVtKGIpO1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHRCb2R5LnJvd3MubGVuZ3RoOyByKyspIHtcclxuICAgICAgICBsZXQgcm93ID0gdEJvZHkucm93cy5pdGVtKHIpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IHkpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC15Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC15Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd0luZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRGb290ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Rm9vdCwgcm93ID0gdEZvb3Qucm93c1swXTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3ViZUluZm9DZWxsQXJncyB7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlcjtcclxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9XHJcbiAgcHJpdmF0ZSBfc3VtbWFyeTogYm9vbGVhbjtcclxuICBnZXQgc3VtbWFyeSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3N1bW1hcnk7IH1cclxuICBjb2xvcjogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xyXG4gIGRhdGE6IHsgW3Jvdzogc3RyaW5nXTogeyBbY29sdW1uOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcbiAgcm93OiBzdHJpbmc7XHJcbiAgY29sdW1uOiBzdHJpbmc7XHJcbn1cclxuXHJcbnR5cGUgU3VtT3B0aW9ucyA9IHtcclxuICB4QXhpcz86IHN0cmluZyB8IG51bWJlcjtcclxuICBzZXJpZXM/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgdGl0bGU6IGFueTtcclxuICAvL25hbWU/OiBzdHJpbmdcclxufVxyXG50eXBlIEtleVZhbHVlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn07XHJcblxyXG4iLCI8dGFibGUgI3RhYmxlIGNsYXNzPVwibWF0LXRhYmxlIGN1YmUtdGFibGVcIiAobW91c2VsZWF2ZSk9XCJtb3ZlKC0xLCAtMSlcIiAqbmdJZj1cImRhdGFcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8IS0tIGhlYWRlcnMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgLTIpXCIgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj5cclxuICAgICAgICB7eyBjb2x1bW4udmFsdWUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSBpbmRpY2VzIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvdyBjdWJlLWluZGV4XCIgKm5nRm9yPVwibGV0IGluZGV4IG9mIGluZGV4ZXM7IGxldCB5ID0gaW5kZXhcIj5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiPnt7aW5kZXgudGl0bGV9fTwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIHkpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhW2luZGV4Lm5hbWVdICYmIGRhdGFbaW5kZXgubmFtZV1bY29sdW1uLmtleV07IGVsc2UgemVyb1wiPnt7IGRhdGFbaW5kZXgubmFtZV1bY29sdW1uLmtleV0gfCBudW1iZXIgOiBQUkVDSVNJT04gfX08L3NwYW4+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoMCwgeSlcIiBbbmdTd2l0Y2hdPVwiIUNVUlJFTkNZXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgZGF0YVtpbmRleC5uYW1lXVsnX3RvdGFsJ10gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICB7eyBkYXRhW2luZGV4Lm5hbWVdWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSByb3dzIC0tPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IHkgPSBpbmRleFwiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKC0yLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+e3sgcm93LnZhbHVlIH19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSArIGluZGljZXMubGVuZ3RoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhW3Jvdy5rZXldICYmIGRhdGFbcm93LmtleV1bY29sdW1uLmtleV0gIT09IHVuZGVmaW5lZDsgZWxzZSB6ZXJvXCI+XHJcbiAgICAgICAgICA8c3BhbiBbY2xhc3MuY2xpY2thYmxlXT1cImludGVyYWN0aXZlXCIgKGNsaWNrKT1cImV4cGxvcmUoY29sdW1uLmtleSwgcm93LmtleSlcIj5cclxuICAgICAgICAgICAge3tkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldIHwgbnVtYmVyIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTEsIHkgKyBpbmRpY2VzLmxlbmd0aClcIiBbbmdTd2l0Y2hdPVwiIUNVUlJFTkNZXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgZGF0YVtyb3cua2V5XVsnX3RvdGFsJ10gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRmb290PlxyXG4gICAgPCEtLSBhdmFpbGFibGUgLS0+XHJcbiAgICA8dHI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCAtMilcIlxyXG4gICAgICAgICAgW2NsYXNzLm5lZ2F0aXZlLWZpZ3VyZV09XCJ0b3RhbHNbY29sdW1uLmtleV0gPCAwXCI+XHJcbiAgICAgICAge3t0b3RhbHNbY29sdW1uLmtleV0gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIj57e3RvdGFsc1snX3RvdGFsJ10gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fTwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGZvb3Q+XHJcbjwvdGFibGU+XHJcbjxuZy10ZW1wbGF0ZSAjemVybz5cclxuICAwXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
@@ -85,7 +85,7 @@ let CubeDocumentViewComponent = class CubeDocumentViewComponent extends CubeBase
|
|
85
85
|
}
|
86
86
|
};
|
87
87
|
CubeDocumentViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, deps: [{ token: i1.SessionService }, { token: i2.DocumentViewRef }, { token: i3.CubeService }, { token: i4.Popup }, { token: i5.RouterImpl }, { token: i6.GuideService }], target: i0.ɵɵFactoryTarget.Component });
|
88
|
-
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
88
|
+
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i11.CubeViewComponent, selector: "bizdoc-cube-view", inputs: ["filters", "cube", "view", "loading"], outputs: ["explore", "loadingChange"] }, { type: i12.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i15.TranslatePipe } });
|
89
89
|
CubeDocumentViewComponent = __decorate([
|
90
90
|
BizDoc({
|
91
91
|
selector: 'bizdoc-cube-view'
|
@@ -94,9 +94,9 @@ CubeDocumentViewComponent = __decorate([
|
|
94
94
|
export { CubeDocumentViewComponent };
|
95
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, decorators: [{
|
96
96
|
type: Component,
|
97
|
-
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
97
|
+
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"] }]
|
98
98
|
}], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.DocumentViewRef }, { type: i3.CubeService }, { type: i4.Popup }, { type: i5.RouterImpl }, { type: i6.GuideService }]; }, propDecorators: { viewPane: [{
|
99
99
|
type: ViewChild,
|
100
100
|
args: [CubeViewComponent]
|
101
101
|
}] } });
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL2N1YmUvdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL2N1YmUvdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU0vQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQVcvQix5QkFBeUIsU0FBekIseUJBQTBCLFNBQVEsUUFBaUI7SUFJekQsWUFBWSxPQUF1QixFQUNqQyxPQUFpQyxFQUNqQyxPQUFvQixFQUNaLE1BQWEsRUFDYixPQUFtQixFQUNuQixNQUFvQjtRQUM1QixLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFIL0IsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUU5QixDQUFDO0lBQ0QsVUFBVTtRQUNSLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FB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QUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsR0FBVztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztDQUNGLENBQUE7c0hBeEVPLHlCQUF5QjswR0FBekIseUJBQXlCLGdJQUNwQixpQkFBaUIsdUVDekI5Qiw0NERBa0NBO0FEVlEseUJBQXlCO0lBSmhDLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxrQkFBa0I7S0FDN0IsQ0FBQztHQUVNLHlCQUF5QixDQXdFaEM7U0F4RU8seUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBVGhDLFNBQVM7MkJBR0YsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3FPQU9PLFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVWaWV3IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuLi8uLi9jb3JlL3JvdXRlcic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlVmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBQYXR0ZXJuIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBeGlzQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2N1YmUvZGVjbGFyYXRpb25zJztcclxuaW1wb3J0IHsgQ3ViZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2N1YmUvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdSZWYgfSBmcm9tICcuLi9kb2N1bWVudC12aWV3LXJlZic7XHJcbmltcG9ydCB7IEN1YmVCYXNlIH0gZnJvbSAnLi9jdWJlLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAndmlldycgfVxyXG59KVxyXG5AQml6RG9jKHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXZpZXcnXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEN1YmVEb2N1bWVudFZpZXdDb21wb25lbnQgZXh0ZW5kcyBDdWJlQmFzZTxPcHRpb25zPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChDdWJlVmlld0NvbXBvbmVudCkgdmlld1BhbmU6IEN1YmVWaWV3Q29tcG9uZW50O1xyXG4gIHZpZXc6IEN1YmVWaWV3O1xyXG4gIGFueUF4ZXM6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICB2aWV3UmVmOiBEb2N1bWVudFZpZXdSZWY8T3B0aW9ucz4sXHJcbiAgICBzZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVySW1wbCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHZpZXdSZWYsIHNlcnZpY2UsIHNlc3Npb24sIHRydWUpO1xyXG4gIH1cclxuICBvblZpZXdCaW5kKCkge1xyXG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzLl92aWV3UmVmLm9wdGlvbnM7XHJcblxyXG4gICAgdGhpcy52aWV3ID0gdGhpcy5jdWJlLnZpZXdzLmZpbmQodiA9PiB2Lm5hbWUgPT09IHZpZXcpIHx8IHRoaXMuY3ViZS52aWV3c1swXTtcclxuXHJcbiAgICB0aGlzLl9zZXJ2aWNlLnBhdHRlcm5zKHRoaXMuY3ViZS5uYW1lKS5zdWJzY3JpYmUocCA9PiB0aGlzLnBhdHRlcm5zID0gcCk7XHJcblxyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuYXhlcyk7XHJcblxyXG4gICAgdGhpcy5hbnlBeGVzID0gdGhpcy5jdWJlLmF4ZXMuc29tZShhID0+IGtleXMuaW5kZXhPZihhLm5hbWUpIDwgMCAmJiAhYS5oaWRkZW4gJiYgYS5zZWxlY3Rpb25Nb2RlICE9PSAnTm9uZScpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZpZXdSZWYucmVzaXplLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZpZXdQYW5lICYmIHRoaXMudmlld1BhbmUucmVzaXplKCkpO1xyXG4gIH1cclxuICBmaWx0ZXJUb2dnbGUoZXZ0OiBFdmVudCkge1xyXG4gICAgY29uc3QgcG9wdXBSZWYgPSB0aGlzLl9wb3B1cC5vcGVuKEN1YmVGaWx0ZXJDb21wb25lbnQsIGV2dC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcclxuICAgIHBvcHVwUmVmLm9wZW5lZC5cclxuICAgICAgc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGUuY3ViZSA9IHRoaXMuY3ViZS5uYW1lO1xyXG4gICAgICAgIGUuYXhlcyA9IHRoaXMuYXhlcztcclxuICAgICAgICBlLmV4Y2x1ZGUgPSBbLi4udGhpcy52aWV3LnhBeGlzLCAuLi50aGlzLnZpZXcuc2VyaWVzXTtcclxuICAgICAgICBlLmluY2x1ZGUgPSB0aGlzLl92aWV3UmVmLm9wdGlvbnMuZmlsdGVycztcclxuICAgICAgICBlLmF4ZXNDaGFuZ2UucGlwZSh0YWtlVW50aWwocG9wdXBSZWYuY2xvc2VkKSkuc3Vic2NyaWJlKGF4ZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5heGVzID0gYXhlc1xyXG4gICAgICAgICAgdGhpcy5hbnlGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIGV4cGxvcmUoZXZ0OiBBeGlzQ2xpY2tFdmVudCkge1xyXG4gICAgY29uc3QgeyBheGVzLCBpbmRleCB9ID0gZXZ0O1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnY3ViZScsIHRoaXMuY3ViZS5uYW1lLCAnZXhwbG9yZSddLFxyXG4gICAgICB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IGF4ZXMsXHJcbiAgICAgICAgc3RhdGU6IHsgaW5kZXggfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcGF0dGVybkNoYW5nZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHtcclxuICAgICAgLi4ucGF0dGVybi5heGVzXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fc2VydmljZS5iYXNlKHRoaXMuY3ViZS5uYW1lLCBheGVzLCB0aGlzLm9yaWdpbmFsQXhlcyk7XHJcbiAgICB0aGlzLmFueUZpbHRlcnMgPSB0cnVlO1xyXG4gICAgdGhpcy5heGVzID0gYXhlcztcclxuICB9XHJcbiAgY2xlYXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmF4ZXMgPSB0aGlzLmFnZ3JlZ2F0ZSh0aGlzLm9yaWdpbmFsQXhlcyk7XHJcbiAgICB0aGlzLmFueUZpbHRlcnMgPSBmYWxzZTtcclxuICAgIHRoaXMucGF0dGVybiA9IG51bGw7XHJcbiAgfVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy52aWV3Lmd1aWRlKSB7XHJcbiAgICAgIHRoaXMuX2d1aWRlLnN0YXJ0KHRoaXMudmlldy5ndWlkZSk7XHJcbiAgICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuICB2aWV3OiBzdHJpbmc7XHJcbiAgYWdncmVnYXRlPzogc3RyaW5nW107XHJcbiAgZmlsdGVycz86IHN0cmluZ1tdO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNkYXRhOyBlbHNlIG5vbmVcIj5cclxuICA8ZGl2IGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJ2aWV3Lmd1aWRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWx0ZXJuYXRlXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY21lbnVcIj57e2N1YmUudGl0bGV9fSA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNjbWVudT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGEgb2YgYWx0ZXJuYXRlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUbyhhKVwiPlxyXG4gICAgICAgICAge3thLnRpdGxlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBtZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhdHRlcm5zJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhcGF0dGVybnM/Lmxlbmd0aFwiIGRhdGEtaGVscD1cInBhdHRlcm5cIj48bWF0LWljb24gW2NsYXNzLmZpbGxlZF09XCJwYXR0ZXJuXCI+ZmlsdGVyX2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI3BtZW51PlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwicGF0dGVybkNoYW5nZShwKVwiPlxyXG4gICAgICAgIHt7cC50aXRsZX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhckZpbHRlcigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhYW55RmlsdGVyc1wiPjxtYXQtaWNvbj5jbGVhcl9hbGw8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImZpbHRlclRvZ2dsZSgkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWFueUF4ZXNcIiBkYXRhLWhlbHA9XCJmaWx0ZXJcIj48bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXZpZXdcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cImFjY2VudFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGJpemRvYy1jdWJlLXZpZXcgW2F4ZXNdPVwiYXhlc1wiICN2cFxyXG4gICAgICAgICAgICAgICAgICAgIChleHBsb3JlKT1cImV4cGxvcmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1YmVdPVwiY3ViZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGxvYWRpbmcpPVwibG9hZGluZyA9ICRldmVudFwiPjwvYml6ZG9jLWN1YmUtdmlldz5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjbm9uZT5cclxuICA8Yml6ZG9jLW5vbmUgaWNvbj1cImVxdWFsaXplclwiIHN1YnRpdGxlPVwiTm90aGluZ0hlcmVcIj48L2JpemRvYy1ub25lPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL2N1YmUvdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL2N1YmUvdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU0vQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQVcvQix5QkFBeUIsU0FBekIseUJBQTBCLFNBQVEsUUFBaUI7SUFJekQsWUFBWSxPQUF1QixFQUNqQyxPQUFpQyxFQUNqQyxPQUFvQixFQUNaLE1BQWEsRUFDYixPQUFtQixFQUNuQixNQUFvQjtRQUM1QixLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFIL0IsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUU5QixDQUFDO0lBQ0QsVUFBVTtRQUNSLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FB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QUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsR0FBVztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztDQUNGLENBQUE7c0hBeEVPLHlCQUF5QjswR0FBekIseUJBQXlCLGdJQUNwQixpQkFBaUIsdUVDekI5QiwrNERBa0NBO0FEVlEseUJBQXlCO0lBSmhDLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxrQkFBa0I7S0FDN0IsQ0FBQztHQUVNLHlCQUF5QixDQXdFaEM7U0F4RU8seUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBVGhDLFNBQVM7MkJBR0YsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3FPQU9PLFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVWaWV3IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuLi8uLi9jb3JlL3JvdXRlcic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlVmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBQYXR0ZXJuIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBeGlzQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2N1YmUvZGVjbGFyYXRpb25zJztcclxuaW1wb3J0IHsgQ3ViZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2N1YmUvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdSZWYgfSBmcm9tICcuLi9kb2N1bWVudC12aWV3LXJlZic7XHJcbmltcG9ydCB7IEN1YmVCYXNlIH0gZnJvbSAnLi9jdWJlLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAndmlldycgfVxyXG59KVxyXG5AQml6RG9jKHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXZpZXcnXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEN1YmVEb2N1bWVudFZpZXdDb21wb25lbnQgZXh0ZW5kcyBDdWJlQmFzZTxPcHRpb25zPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChDdWJlVmlld0NvbXBvbmVudCkgdmlld1BhbmU6IEN1YmVWaWV3Q29tcG9uZW50O1xyXG4gIHZpZXc6IEN1YmVWaWV3O1xyXG4gIGFueUF4ZXM6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICB2aWV3UmVmOiBEb2N1bWVudFZpZXdSZWY8T3B0aW9ucz4sXHJcbiAgICBzZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVySW1wbCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHZpZXdSZWYsIHNlcnZpY2UsIHNlc3Npb24sIHRydWUpO1xyXG4gIH1cclxuICBvblZpZXdCaW5kKCkge1xyXG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzLl92aWV3UmVmLm9wdGlvbnM7XHJcblxyXG4gICAgdGhpcy52aWV3ID0gdGhpcy5jdWJlLnZpZXdzLmZpbmQodiA9PiB2Lm5hbWUgPT09IHZpZXcpIHx8IHRoaXMuY3ViZS52aWV3c1swXTtcclxuXHJcbiAgICB0aGlzLl9zZXJ2aWNlLnBhdHRlcm5zKHRoaXMuY3ViZS5uYW1lKS5zdWJzY3JpYmUocCA9PiB0aGlzLnBhdHRlcm5zID0gcCk7XHJcblxyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuYXhlcyk7XHJcblxyXG4gICAgdGhpcy5hbnlBeGVzID0gdGhpcy5jdWJlLmF4ZXMuc29tZShhID0+IGtleXMuaW5kZXhPZihhLm5hbWUpIDwgMCAmJiAhYS5oaWRkZW4gJiYgYS5zZWxlY3Rpb25Nb2RlICE9PSAnTm9uZScpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZpZXdSZWYucmVzaXplLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZpZXdQYW5lICYmIHRoaXMudmlld1BhbmUucmVzaXplKCkpO1xyXG4gIH1cclxuICBmaWx0ZXJUb2dnbGUoZXZ0OiBFdmVudCkge1xyXG4gICAgY29uc3QgcG9wdXBSZWYgPSB0aGlzLl9wb3B1cC5vcGVuKEN1YmVGaWx0ZXJDb21wb25lbnQsIGV2dC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcclxuICAgIHBvcHVwUmVmLm9wZW5lZC5cclxuICAgICAgc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGUuY3ViZSA9IHRoaXMuY3ViZS5uYW1lO1xyXG4gICAgICAgIGUuYXhlcyA9IHRoaXMuYXhlcztcclxuICAgICAgICBlLmV4Y2x1ZGUgPSBbLi4udGhpcy52aWV3LnhBeGlzLCAuLi50aGlzLnZpZXcuc2VyaWVzXTtcclxuICAgICAgICBlLmluY2x1ZGUgPSB0aGlzLl92aWV3UmVmLm9wdGlvbnMuZmlsdGVycztcclxuICAgICAgICBlLmF4ZXNDaGFuZ2UucGlwZSh0YWtlVW50aWwocG9wdXBSZWYuY2xvc2VkKSkuc3Vic2NyaWJlKGF4ZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5heGVzID0gYXhlc1xyXG4gICAgICAgICAgdGhpcy5hbnlGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIGV4cGxvcmUoZXZ0OiBBeGlzQ2xpY2tFdmVudCkge1xyXG4gICAgY29uc3QgeyBheGVzLCBpbmRleCB9ID0gZXZ0O1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnY3ViZScsIHRoaXMuY3ViZS5uYW1lLCAnZXhwbG9yZSddLFxyXG4gICAgICB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IGF4ZXMsXHJcbiAgICAgICAgc3RhdGU6IHsgaW5kZXggfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcGF0dGVybkNoYW5nZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHtcclxuICAgICAgLi4ucGF0dGVybi5heGVzXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fc2VydmljZS5iYXNlKHRoaXMuY3ViZS5uYW1lLCBheGVzLCB0aGlzLm9yaWdpbmFsQXhlcyk7XHJcbiAgICB0aGlzLmFueUZpbHRlcnMgPSB0cnVlO1xyXG4gICAgdGhpcy5heGVzID0gYXhlcztcclxuICB9XHJcbiAgY2xlYXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmF4ZXMgPSB0aGlzLmFnZ3JlZ2F0ZSh0aGlzLm9yaWdpbmFsQXhlcyk7XHJcbiAgICB0aGlzLmFueUZpbHRlcnMgPSBmYWxzZTtcclxuICAgIHRoaXMucGF0dGVybiA9IG51bGw7XHJcbiAgfVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy52aWV3Lmd1aWRlKSB7XHJcbiAgICAgIHRoaXMuX2d1aWRlLnN0YXJ0KHRoaXMudmlldy5ndWlkZSk7XHJcbiAgICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuICB2aWV3OiBzdHJpbmc7XHJcbiAgYWdncmVnYXRlPzogc3RyaW5nW107XHJcbiAgZmlsdGVycz86IHN0cmluZ1tdO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNkYXRhOyBlbHNlIG5vbmVcIj5cclxuICA8ZGl2IGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJ2aWV3Lmd1aWRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWx0ZXJuYXRlXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY21lbnVcIj57e2N1YmUudGl0bGV9fSA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNjbWVudT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGEgb2YgYWx0ZXJuYXRlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUbyhhKVwiPlxyXG4gICAgICAgICAge3thLnRpdGxlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBtZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhdHRlcm5zJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhcGF0dGVybnM/Lmxlbmd0aFwiIGRhdGEtaGVscD1cInBhdHRlcm5cIj48bWF0LWljb24gW2NsYXNzLmZpbGxlZF09XCJwYXR0ZXJuXCI+ZmlsdGVyX2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI3BtZW51PlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwicGF0dGVybkNoYW5nZShwKVwiPlxyXG4gICAgICAgIHt7cC50aXRsZX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhckZpbHRlcigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhYW55RmlsdGVyc1wiPjxtYXQtaWNvbj5jbGVhcl9hbGw8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImZpbHRlclRvZ2dsZSgkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWFueUF4ZXNcIiBkYXRhLWhlbHA9XCJmaWx0ZXJcIj48bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXZpZXdcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cImFjY2VudFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGJpemRvYy1jdWJlLXZpZXcgW2ZpbHRlcnNdPVwiYXhlc1wiICN2cFxyXG4gICAgICAgICAgICAgICAgICAgIChleHBsb3JlKT1cImV4cGxvcmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1YmVdPVwiY3ViZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGxvYWRpbmcpPVwibG9hZGluZyA9ICRldmVudFwiPjwvYml6ZG9jLWN1YmUtdmlldz5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjbm9uZT5cclxuICA8Yml6ZG9jLW5vbmUgaWNvbj1cImVxdWFsaXplclwiIHN1YnRpdGxlPVwiTm90aGluZ0hlcmVcIj48L2JpemRvYy1ub25lPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
package/fesm2015/bizdoc-core.mjs
CHANGED
@@ -14151,7 +14151,7 @@ class CubeMatrixComponent {
|
|
14151
14151
|
//fn: val.fn,
|
14152
14152
|
title: val.title,
|
14153
14153
|
xAxis: translate(val.xAxis),
|
14154
|
-
|
14154
|
+
series: translate(val.series)
|
14155
14155
|
};
|
14156
14156
|
}
|
14157
14157
|
get interactive() {
|
@@ -14181,31 +14181,37 @@ class CubeMatrixComponent {
|
|
14181
14181
|
if (changes['filters'])
|
14182
14182
|
this.refresh();
|
14183
14183
|
}
|
14184
|
+
/** */
|
14184
14185
|
_addsum() {
|
14185
|
-
let { xAxis,
|
14186
|
+
let { xAxis, series } = this._sum;
|
14186
14187
|
if (xAxis) {
|
14187
|
-
|
14188
|
-
this.columns.
|
14189
|
-
columns.
|
14190
|
-
|
14191
|
-
columns.push({
|
14188
|
+
let i = 0;
|
14189
|
+
while (i < this.columns.length - 1) {
|
14190
|
+
if (this.columns[i].key === xAxis.toString()) {
|
14191
|
+
this.columns.splice(i + 1, 0, {
|
14192
14192
|
key: '_sum',
|
14193
14193
|
value: this._sum.title
|
14194
14194
|
});
|
14195
|
-
|
14196
|
-
|
14195
|
+
break;
|
14196
|
+
}
|
14197
|
+
i++;
|
14198
|
+
}
|
14197
14199
|
}
|
14198
|
-
if (
|
14199
|
-
|
14200
|
-
|
14201
|
-
|
14202
|
-
|
14203
|
-
|
14204
|
-
|
14205
|
-
|
14206
|
-
|
14207
|
-
|
14208
|
-
|
14200
|
+
if (series) {
|
14201
|
+
let i = 0;
|
14202
|
+
const row = {
|
14203
|
+
key: '_sum',
|
14204
|
+
value: this._sum.title
|
14205
|
+
};
|
14206
|
+
while (i < this.rows.length - 1) {
|
14207
|
+
if (this.rows[i].key === series.toString()) {
|
14208
|
+
this.rows.splice(i + 1, 0, row);
|
14209
|
+
break;
|
14210
|
+
}
|
14211
|
+
i++;
|
14212
|
+
}
|
14213
|
+
if (i === this.rows.length - 1)
|
14214
|
+
this.rows.push(row);
|
14209
14215
|
}
|
14210
14216
|
}
|
14211
14217
|
refresh() {
|
@@ -14217,7 +14223,7 @@ class CubeMatrixComponent {
|
|
14217
14223
|
scope: this.scope
|
14218
14224
|
}).pipe(modelize(), first$1(), tap(d => {
|
14219
14225
|
this._totals(d);
|
14220
|
-
this.
|
14226
|
+
this._sum &&
|
14221
14227
|
this._calculatesum(d);
|
14222
14228
|
})).subscribe(d => this.data = d, (e) => {
|
14223
14229
|
this._sb.error(e.status === 401 ? 'Unauthorized' : null);
|
@@ -14264,7 +14270,7 @@ class CubeMatrixComponent {
|
|
14264
14270
|
this.totals['_total'] = grand;
|
14265
14271
|
}
|
14266
14272
|
_calculatesum(data) {
|
14267
|
-
let { xAxis,
|
14273
|
+
let { xAxis, series } = this._sum;
|
14268
14274
|
if (xAxis) {
|
14269
14275
|
let total = 0;
|
14270
14276
|
this.rows.forEach(r => {
|
@@ -14285,7 +14291,7 @@ class CubeMatrixComponent {
|
|
14285
14291
|
});
|
14286
14292
|
this.totals['_sum'] = total;
|
14287
14293
|
}
|
14288
|
-
if (
|
14294
|
+
if (series) {
|
14289
14295
|
let total = 0;
|
14290
14296
|
this.columns.forEach(c => {
|
14291
14297
|
let sum = 0, i = 0;
|
@@ -14295,7 +14301,7 @@ class CubeMatrixComponent {
|
|
14295
14301
|
let val = row[c.key];
|
14296
14302
|
if (val !== undefined)
|
14297
14303
|
sum += val;
|
14298
|
-
if (key ===
|
14304
|
+
if (key === series)
|
14299
14305
|
break;
|
14300
14306
|
}
|
14301
14307
|
i++;
|
@@ -14324,7 +14330,7 @@ class CubeMatrixComponent {
|
|
14324
14330
|
for (let i = 0; i < this.rows.length; i++) {
|
14325
14331
|
let key = this.rows[i].key;
|
14326
14332
|
serie.push(key);
|
14327
|
-
if (key === this._sum.
|
14333
|
+
if (key === this._sum.series)
|
14328
14334
|
break;
|
14329
14335
|
}
|
14330
14336
|
}
|
@@ -23979,7 +23985,7 @@ let CubeDocumentViewComponent = class CubeDocumentViewComponent extends CubeBase
|
|
23979
23985
|
}
|
23980
23986
|
};
|
23981
23987
|
CubeDocumentViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, deps: [{ token: SessionService }, { token: DocumentViewRef }, { token: CubeService }, { token: Popup }, { token: RouterImpl }, { token: GuideService }], target: i0.ɵɵFactoryTarget.Component });
|
23982
|
-
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
23988
|
+
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: CubeViewComponent, selector: "bizdoc-cube-view", inputs: ["filters", "cube", "view", "loading"], outputs: ["explore", "loadingChange"] }, { type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }], directives: [{ type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe } });
|
23983
23989
|
CubeDocumentViewComponent = __decorate([
|
23984
23990
|
BizDoc({
|
23985
23991
|
selector: 'bizdoc-cube-view'
|
@@ -23987,7 +23993,7 @@ CubeDocumentViewComponent = __decorate([
|
|
23987
23993
|
], CubeDocumentViewComponent);
|
23988
23994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, decorators: [{
|
23989
23995
|
type: Component,
|
23990
|
-
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
23996
|
+
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"] }]
|
23991
23997
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: DocumentViewRef }, { type: CubeService }, { type: Popup }, { type: RouterImpl }, { type: GuideService }]; }, propDecorators: { viewPane: [{
|
23992
23998
|
type: ViewChild,
|
23993
23999
|
args: [CubeViewComponent]
|