@unipin/angular-applet 18.7.6 → 18.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -91,12 +91,7 @@ export class FilterComponent {
|
|
|
91
91
|
search() {
|
|
92
92
|
this.resetValue();
|
|
93
93
|
this.emitValue((k, v) => {
|
|
94
|
-
|
|
95
|
-
v.forEach((value) => this.processFilter(k, value));
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
this.processFilter(k, v);
|
|
99
|
-
}
|
|
94
|
+
this.processFilter(k, v);
|
|
100
95
|
});
|
|
101
96
|
if (this.activeFilter.length === 0) {
|
|
102
97
|
this.initialItems.clear();
|
|
@@ -105,14 +100,28 @@ export class FilterComponent {
|
|
|
105
100
|
this.close();
|
|
106
101
|
}
|
|
107
102
|
processFilter(key, value) {
|
|
103
|
+
let values;
|
|
108
104
|
if (Array.isArray(value)) {
|
|
109
|
-
|
|
105
|
+
values = value;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
values = [value];
|
|
109
|
+
}
|
|
110
|
+
values = values.filter(v => v !== undefined && v !== null && v !== '');
|
|
111
|
+
if (values.length === 0) {
|
|
112
|
+
this.activeFilter = this.activeFilter.filter(item => item.key !== key);
|
|
113
|
+
return;
|
|
110
114
|
}
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
115
|
+
const labels = values.map(v => {
|
|
116
|
+
const initialItem = this.initialItems.get(key)?.find(item => item.value === v);
|
|
117
|
+
return initialItem
|
|
118
|
+
? initialItem.label
|
|
119
|
+
: key.toLowerCase().includes('date') ? formatDate(v, 'dd MMM yyyy', 'en-US') : v;
|
|
120
|
+
});
|
|
121
|
+
const label = `${key}: ${labels.join(', ')}`;
|
|
122
|
+
const valueString = values.join(',');
|
|
123
|
+
this.activeFilter = this.activeFilter.filter(item => item.key !== key);
|
|
124
|
+
this.activeFilter.push({ key, value: valueString, label });
|
|
116
125
|
}
|
|
117
126
|
add() {
|
|
118
127
|
const { key, value } = this.getValue(this.searchBox.nativeElement.value);
|
|
@@ -122,7 +131,7 @@ export class FilterComponent {
|
|
|
122
131
|
}
|
|
123
132
|
const i = this.activeFilter.findIndex(({ key: k }) => k === key);
|
|
124
133
|
if (i === -1)
|
|
125
|
-
this.activeFilter.
|
|
134
|
+
this.activeFilter.unshift({ label: `${key}:${value}`, key, value });
|
|
126
135
|
else {
|
|
127
136
|
this.activeFilter[i].key = key;
|
|
128
137
|
this.activeFilter[i].value = value;
|
|
@@ -146,7 +155,7 @@ export class FilterComponent {
|
|
|
146
155
|
getValue(value) {
|
|
147
156
|
const values = value.split(':');
|
|
148
157
|
if (values.length === 1)
|
|
149
|
-
return { key: this.config.fields[0].key, value: values[0] };
|
|
158
|
+
return { key: (Array.isArray(this.config.fields[0].key) ? this.config.fields[0].key[0] : this.config.fields[0].key), value: values[0] };
|
|
150
159
|
return { key: values[0], value: values[1] };
|
|
151
160
|
}
|
|
152
161
|
emitValue(extraAction) {
|
|
@@ -154,7 +163,7 @@ export class FilterComponent {
|
|
|
154
163
|
const f = this.form.getRawValue();
|
|
155
164
|
const data = {};
|
|
156
165
|
Object.keys(f).forEach((k) => {
|
|
157
|
-
if (!f[k])
|
|
166
|
+
if (!f[k] || (Array.isArray(f[k]) && f[k].length === 0))
|
|
158
167
|
return;
|
|
159
168
|
flag = true;
|
|
160
169
|
data[k] = f[k];
|
|
@@ -210,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
210
219
|
type: ViewChild,
|
|
211
220
|
args: ['searchBox']
|
|
212
221
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcs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NkI7cUJBQzlCOzswQkFrREUsU0FBUzsyQkFBQyxhQUFhO3lHQXpDUSxFQUFFO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPUyxNQUFNO3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPQyxRQUFRO3NCQUFqQyxNQUFNO2dCQU1vQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgc3R5bGVVcmw6ICAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgXG4gICAgY2xhc3M6ICdkLWJsb2NrIHBvc2l0aW9uLXJlbGF0aXZlJyBcbiAgfSxcbiAgaW1wb3J0czogWyAgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIE1hcCB0byBzdG9yZSBpbml0aWFsIGl0ZW1zIGZvciBlYWNoIGZpbHRlciBrZXkuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPn1cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsSXRlbXM6IE1hcDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyXG4gICkgeyB9IFxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQuXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9scyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdG9yZXMgc2F2ZWQgZmlsdGVyIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgY29uc3QgaXJyZXNvbHV0ZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBpcnJlc29sdXRlVmFsdWUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUsIGluaXRpYWxJdGVtcywgaXNJcnJlc29sdXRlIH06IEZpbHRlckZpZWxkKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrLCBpbml0aWFsVmFsdWU/LmF0KGkpLCBpc0lycmVzb2x1dGUpO1xuXG4gICAgICAgICAgaWYgKGlzSXJyZXNvbHV0ZSkge1xuICAgICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGspO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrLCBpbml0aWFsVmFsdWU/LmF0KGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxJdGVtcykge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zLnNldChrZXksIGluaXRpYWxJdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlLCBpc0lycmVzb2x1dGUpO1xuICAgICAgICBpZiAoaXNJcnJlc29sdXRlKSB7XG4gICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGtleSk7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrZXksIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICBpZiAoIXNhdmVkU3RhdGUpIHtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICBjb25zdCBzdGF0ZSA9IEpTT04ucGFyc2Uoc2F2ZWRTdGF0ZSk7XG4gICAgaWYgKHN0YXRlLmluaXRpYWxJdGVtcykge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0YXRlLmluaXRpYWxJdGVtcykpO1xuICAgIH1cbiAgXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHN0YXRlLmZvcm1WYWx1ZXMgfHwge307XG4gICAgY29uc3QgY29tYlZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaXJyZXNvbHV0ZUtleXMuaGFzKGtleSkpIGNvbWJWYWx1ZXNba2V5XSA9IGZvcm1WYWx1ZXNba2V5XTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb21iVmFsdWVzW2tleV0gPSBpcnJlc29sdXRlVmFsdWUuZ2V0KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShjb21iVmFsdWVzKTtcbiAgICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY3VycmVudFZhbHVlc1trZXldKSB0aGlzLnByb2Nlc3NGaWx0ZXIoa2V5LCBjdXJyZW50VmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IFxuICAgIHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyBcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGZpbHRlciBjcml0ZXJpYSwgbG9jYWxTdG9yYWdlLCBhbmQgdHJpZ2dlcnMgYSBzZWFyY2ggZXZlbnQgd2l0aCBudWxsIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYSBhbmQgY2xlYXJzIHRoZSBzYXZlZCBmaWx0ZXIgc3RhdGUgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaCgpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKChrOiBzdHJpbmcsIHY6IGFueSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgdi5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB0aGlzLnByb2Nlc3NGaWx0ZXIoaywgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrLCB2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMuaWR9YCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBcbiAgcHJvdGVjdGVkIHByb2Nlc3NGaWx0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lke1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZVswXTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLmluaXRpYWxJdGVtcy5nZXQoa2V5KT8uZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBjb25zdCBsYWJlbCA9IGluaXRpYWxJdGVtXG4gICAgICA/IGAkeyBrZXkgfTogJHsgaW5pdGlhbEl0ZW0ubGFiZWwgfWBcbiAgICAgIDogYCR7IGtleSB9OiAkeyBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHZhbHVlIH1gO1xuICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsga2V5LCB2YWx1ZSwgbGFiZWwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYWRkKCk6IHZvaWR7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldFZhbHVlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5maWVsZHMuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGkgPSB0aGlzLmFjdGl2ZUZpbHRlci5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSk7XG4gICAgaWYgKGkgPT09IC0xKSB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWx1ZSB9YCwga2V5LCB2YWx1ZSB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmtleSA9IGtleTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5sYWJlbCA9IGAkeyBrZXkgfTokeyB2YWx1ZSB9YDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlIHRoZSBpbml0aWFsSXRlbXMgZm9ybSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnQgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIGluaXRpYWxJdGVtcyBtYXAgdG8gYmUgdXNlZCBhZ2FpbiBieSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnRcbiAgICogd2hlbiBpdCBpbml0aWFsaXplZCBhZ2Fpbi5cbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBUaGUgaW5pdGlhbCBpdGVtcyByZWNlaXZlZCBmcm9tIHRoZSBzZWFyY2FibGUgb3Igc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbml0aWFsIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFwcGx5SW5pdGlhbEl0ZW1zKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkeyBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgWyBpdGVtIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgZmlsdGVyIGFuZCBjbGVhcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZSgpOiB2b2lke1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgdmFsdWUgYW5kIHJldHVybnMgYSBrZXktdmFsdWUgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gSW5wdXQgdmFsdWUgdG8gYmUgcGFyc2VkLlxuICAgKiBAcmV0dXJucyB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSAtIEtleS12YWx1ZSBwYWlyIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9e1xuICAgIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHJldHVybiB7IGtleTogPHN0cmluZz4gdGhpcy5jb25maWcuZmllbGRzWzBdLmtleSwgdmFsdWU6IHZhbHVlc1swXSB9O1xuICAgIHJldHVybiB7IGtleTogdmFsdWVzWzBdLCB2YWx1ZTogdmFsdWVzWzFdIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlYXJjaCBldmVudCBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXMuXG4gICAqIEludm9rZXMgYW4gZXh0cmEgYWN0aW9uIGlmIHByb3ZpZGVkIGFuZCBzYXZlcyB0aGUgc3RhdGUgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBAcGFyYW0geyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZH0gW2V4dHJhQWN0aW9uXSAtIE9wdGlvbmFsIGV4dHJhIGFjdGlvbiB0byBiZSBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGVtaXRWYWx1ZShleHRyYUFjdGlvbj86IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWR7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZGF0YTogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICBPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghZltrXSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgICBcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZm9yIGEgZ2l2ZW4ga2V5IGFuZCBzZXRzIGl0cyBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5IGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0geyp9IFt2YWxdIC0gSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbChrZXk6IHN0cmluZywgdmFsPzogYW55LCBpc0lycmVzb2x1dGU/OiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsKTtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrZXksIHZhbCk7XG5cbiAgICAgIGlmICghaXNJcnJlc29sdXRlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVTdGF0ZSgpOiB2b2lke1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7IHRoaXMuaWQgfWAsIFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY3RpdmVGaWx0ZXI6IHRoaXMuYWN0aXZlRmlsdGVyLFxuICAgICAgICBpbml0aWFsSXRlbXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmluaXRpYWxJdGVtcyksXG4gICAgICAgIGZvcm1WYWx1ZXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgQGlmIChhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgdHJhY2sgaXRlbS5rZXk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwZS0xIG1lLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKTtcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dCAjc2VhcmNoQm94IHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgY2xhc3M9XCJmbGV4LXNocmluay0xIGJvcmRlci0wIGZvcm0tY29udHJvbCBwcy0wIHB5LTJcIiBbY2xhc3MuYWR2XT1cImNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnXCIgKGtleXVwLmVudGVyKT1cImFkZCgpO1wiIC8+XG48L2Rpdj5cblxuQGlmIChjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJykge1xuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuICAgIFxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4LWdyb3ctMSBvdmVyZmxvdy1hdXRvIHB4LTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb25maWcuZmllbGRzOyB0cmFjayBjLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUtcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1kYXRlIGNsYXNzPVwiZmxleC1ncm93LTFcIiBuYW1lPVwiZmlsdGVyLXRvXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzFdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMV0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYy5vcHRpb25zIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VhcmNoYWJsZS1zZWxlY3QnKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5RnVuY109XCJjLmdldE9wdGlvbnMhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyEgfHwgaW5pdGlhbEl0ZW1zLmdldChjLmtleS50b1N0cmluZygpKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImMubXVsdGlwbGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImFwcGx5SW5pdGlhbEl0ZW1zKCRldmVudCwgYy5rZXkudG9TdHJpbmcoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICA8L2lvbi1wb3BvdmVyPiAgICBcbn1cbiJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcs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akMsTUFBTTtnQkFNb0MsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUsIFBvcG92ZXJDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckZpZWxkIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLXNlYXJjaC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50LCBGb3JtU2VsZWN0Q29tcG9uZW50LCBGb3JtRGF0ZUNvbXBvbmVudCwgRm9ybVNlYXJjaGFibGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWZpbHRlcicsXG4gIHN0eWxlVXJsOiAgJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IFxuICAgIGNsYXNzOiAnZC1ibG9jayBwb3NpdGlvbi1yZWxhdGl2ZScgXG4gIH0sXG4gIGltcG9ydHM6IFsgIFxuICAgIElvbmljTW9kdWxlLFxuICAgIEZvcm1EYXRlQ29tcG9uZW50LFxuICAgIEZvcm1JbnB1dENvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1TZWxlY3RDb21wb25lbnQsXG4gICAgRm9ybVNlYXJjaGFibGVTZWxlY3RDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSBmb3IgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBmaWx0ZXIuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGlkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHNwZWNpZnlpbmcgZmlsdGVyIGZpZWxkcyBhbmQgbW9kZS5cbiAgICogQHR5cGUge0ZpbHRlckNvbmZpZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgY29uZmlnITogRmlsdGVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZXZlbnQgZW1pdHRlciB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhIHNlYXJjaC5cbiAgICogRW1pdHMgYSBgRmlsdGVyU2VhcmNoRXZlbnRgIG9iamVjdCB3aXRoIHNlYXJjaCBtb2RlIGFuZCBjcml0ZXJpYSBkYXRhLlxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxGaWx0ZXJTZWFyY2hFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFZpZXdDaGlsZCBkZWNvcmF0b3IgdG8gcmVmZXJlbmNlIHRoZSBzZWFyY2hCb3ggZWxlbWVudCBpbiB0aGUgdGVtcGxhdGUuXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmfVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnc2VhcmNoQm94JykgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaEJveCE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEZvcm0gZ3JvdXAgZm9yIG1hbmFnaW5nIGZvcm0gY29udHJvbHMuXG4gICAqIEB0eXBlIHtGb3JtR3JvdXA8YW55Pn1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmb3JtOiBGb3JtR3JvdXA8YW55PiA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIC8qKlxuICAgKiBBcnJheSB0byBzdG9yZSBhY3RpdmUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKiBAdHlwZSB7eyBsYWJlbDogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W119XG4gICAqL1xuICBwdWJsaWMgYWN0aXZlRmlsdGVyOiB7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBNYXAgdG8gc3RvcmUgaW5pdGlhbCBpdGVtcyBmb3IgZWFjaCBmaWx0ZXIga2V5LlxuICAgKiBAdHlwZSB7TWFwPHN0cmluZywgeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXT59XG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbEl0ZW1zOiBNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjaDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvcG92ZXJDdHJsOiBQb3BvdmVyQ29udHJvbGxlclxuICApIHsgfSBcblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50LlxuICAgKiBDcmVhdGVzIGZvcm0gY29udHJvbHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gYW5kIHJlc3RvcmVzIHNhdmVkIGZpbHRlciBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lke1xuICAgIGNvbnN0IGlycmVzb2x1dGVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgaXJyZXNvbHV0ZVZhbHVlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICAgIHRoaXMuY29uZmlnLmZpZWxkcy5mb3JFYWNoKCh7IGtleSwgaW5pdGlhbFZhbHVlLCBpbml0aWFsSXRlbXMsIGlzSXJyZXNvbHV0ZSB9OiBGaWx0ZXJGaWVsZCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleS5mb3JFYWNoKChrOiBzdHJpbmcsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woaywgaW5pdGlhbFZhbHVlPy5hdChpKSwgaXNJcnJlc29sdXRlKTtcblxuICAgICAgICAgIGlmIChpc0lycmVzb2x1dGUpIHtcbiAgICAgICAgICAgIGlycmVzb2x1dGVLZXlzLmFkZChrKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsVmFsdWUpIGlycmVzb2x1dGVWYWx1ZS5zZXQoaywgaW5pdGlhbFZhbHVlPy5hdChpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbml0aWFsSXRlbXMpIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxJdGVtcy5zZXQoa2V5LCBpbml0aWFsSXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrZXksIGluaXRpYWxWYWx1ZSwgaXNJcnJlc29sdXRlKTtcbiAgICAgICAgaWYgKGlzSXJyZXNvbHV0ZSkge1xuICAgICAgICAgIGlycmVzb2x1dGVLZXlzLmFkZChrZXkpO1xuICAgICAgICAgIGlmIChpbml0aWFsVmFsdWUpIGlycmVzb2x1dGVWYWx1ZS5zZXQoa2V5LCBpbml0aWFsVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzYXZlZFN0YXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7IHRoaXMuaWQgfWApO1xuICAgIGlmICghc2F2ZWRTdGF0ZSkge1xuICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZSA9IEpTT04ucGFyc2Uoc2F2ZWRTdGF0ZSk7XG4gICAgaWYgKHN0YXRlLmluaXRpYWxJdGVtcykge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0YXRlLmluaXRpYWxJdGVtcykpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBzdGF0ZS5mb3JtVmFsdWVzIHx8IHt9O1xuICAgIGNvbnN0IGNvbWJWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhmb3JtVmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIWlycmVzb2x1dGVLZXlzLmhhcyhrZXkpKSBjb21iVmFsdWVzW2tleV0gPSBmb3JtVmFsdWVzW2tleV07XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29tYlZhbHVlc1trZXldID0gaXJyZXNvbHV0ZVZhbHVlLmdldChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoY29tYlZhbHVlcyk7XG4gICAgXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXIgPSBbXTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgT2JqZWN0LmtleXMoY3VycmVudFZhbHVlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZXNba2V5XSkgdGhpcy5wcm9jZXNzRmlsdGVyKGtleSwgY3VycmVudFZhbHVlc1trZXldKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBmaWx0ZXIgcG9wb3Zlci5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkeyBcbiAgICB0aGlzLnBvcG92ZXJDdHJsLmRpc21pc3MoKTsgXG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBmaWx0ZXIgY3JpdGVyaWEsIGxvY2FsU3RvcmFnZSwgYW5kIHRyaWdnZXJzIGEgc2VhcmNoIGV2ZW50IHdpdGggbnVsbCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWR7XG4gICAgdGhpcy5yZXNldFZhbHVlKCk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG5cbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHsgdGhpcy5pZCB9YCk7XG4gICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBudWxsIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBzcGVjaWZpYyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gaXRzIGluZGV4LlxuICAgKiBAcGFyYW0ge251bWJlcn0gaSAtIEluZGV4IG9mIHRoZSBmaWx0ZXIgY3JpdGVyaWEgdG8gYmUgcmVtb3ZlZC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoaTogbnVtYmVyKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5hY3RpdmVGaWx0ZXJbaV0ua2V5XS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXIuc3BsaWNlKGksIDEpO1xuICAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgYSBzZWFyY2ggYmFzZWQgb24gdGhlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEgYW5kIGNsZWFycyB0aGUgc2F2ZWQgZmlsdGVyIHN0YXRlIGlmIHRoZXJlIGFyZSBubyBhY3RpdmUgZmlsdGVycy5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgoazogc3RyaW5nLCB2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrLCB2KTtcbiAgICB9KTtcbiAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMuaWR9YCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzRmlsdGVyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZHtcbiAgICBsZXQgdmFsdWVzOiBzdHJpbmdbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlcyA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMgPSBbdmFsdWVdO1xuICAgIH1cbiAgXG4gICAgdmFsdWVzID0gdmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsICYmIHYgIT09ICcnKTtcbiAgXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gdGhpcy5hY3RpdmVGaWx0ZXIuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkgIT09IGtleSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICBjb25zdCBsYWJlbHMgPSB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLmluaXRpYWxJdGVtcy5nZXQoa2V5KT8uZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHYpO1xuICAgICAgcmV0dXJuIGluaXRpYWxJdGVtXG4gICAgICAgID8gaW5pdGlhbEl0ZW0ubGFiZWxcbiAgICAgICAgOiBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHYsICdkZCBNTU0geXl5eScsICdlbi1VUycpIDogdjtcbiAgICB9KTtcbiAgXG4gICAgY29uc3QgbGFiZWwgPSBgJHsga2V5IH06ICR7IGxhYmVscy5qb2luKCcsICcpIH1gO1xuICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWVzLmpvaW4oJywnKTtcblxuICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gdGhpcy5hY3RpdmVGaWx0ZXIuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkgIT09IGtleSk7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXIucHVzaCh7IGtleSwgdmFsdWU6IHZhbHVlU3RyaW5nLCBsYWJlbCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhZGQoKTogdm9pZHtcbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHRoaXMuZ2V0VmFsdWUodGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZpZWxkcy5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSkgPT09IC0xKSB7XG4gICAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaSA9IHRoaXMuYWN0aXZlRmlsdGVyLmZpbmRJbmRleCgoeyBrZXk6IGsgfSkgPT4gayA9PT0ga2V5KTtcbiAgICBpZiAoaSA9PT0gLTEpIHRoaXMuYWN0aXZlRmlsdGVyLnVuc2hpZnQoeyBsYWJlbDogYCR7IGtleSB9OiR7IHZhbHVlIH1gLCBrZXksIHZhbHVlIH0pO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJbaV0ua2V5ID0ga2V5O1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJbaV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmxhYmVsID0gYCR7IGtleSB9OiR7IHZhbHVlIH1gO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgW2tleV06IHZhbHVlIH0pO1xuICAgIHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2VpdmUgdGhlIGluaXRpYWxJdGVtcyBmb3JtIHNlYXJjaGFibGUgb3Igc2VsZWN0IGNvbXBvbmVudCBhbmQgYXBwbHkgdGhlbSB0byB0aGUgaW5pdGlhbEl0ZW1zIG1hcCB0byBiZSB1c2VkIGFnYWluIGJ5IHNlYXJjaGFibGUgb3Igc2VsZWN0IGNvbXBvbmVudFxuICAgKiB3aGVuIGl0IGluaXRpYWxpemVkIGFnYWluLlxuICAgKiBAcGFyYW0ge2FueX0gaXRlbSAtIFRoZSBpbml0aWFsIGl0ZW1zIHJlY2VpdmVkIGZyb20gdGhlIHNlYXJjYWJsZSBvciBzZWxlY3QgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIGluaXRpYWwgaXRlbXMuXG4gICAqL1xuICBwdWJsaWMgYXBwbHlJbml0aWFsSXRlbXMoaXRlbTogYW55LCBrZXk6IHN0cmluZyk6IHZvaWR7IFxuICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMgPSB0aGlzLmluaXRpYWxJdGVtcy5zZXQoa2V5LCBbIGl0ZW0gXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsSXRlbXMgPSB0aGlzLmluaXRpYWxJdGVtcy5zZXQoa2V5LCBpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGFjdGl2ZSBmaWx0ZXIgYW5kIGNsZWFycyB0aGUgc2VhcmNoIGJveC5cbiAgICovXG4gIHByb3RlY3RlZCByZXNldFZhbHVlKCk6IHZvaWR7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBpbnB1dCB2YWx1ZSBhbmQgcmV0dXJucyBhIGtleS12YWx1ZSBwYWlyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBJbnB1dCB2YWx1ZSB0byBiZSBwYXJzZWQuXG4gICAqIEByZXR1cm5zIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH19IC0gS2V5LXZhbHVlIHBhaXIgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH17XG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG5cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHsga2V5OiA8c3RyaW5nPiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5maWVsZHNbMF0ua2V5KT8gdGhpcy5jb25maWcuZmllbGRzWzBdLmtleVswXSA6IHRoaXMuY29uZmlnLmZpZWxkc1swXS5rZXkpLCB2YWx1ZTogdmFsdWVzWzBdIH07XG4gICAgcmV0dXJuIHsga2V5OiB2YWx1ZXNbMF0sIHZhbHVlOiB2YWx1ZXNbMV0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VhcmNoIGV2ZW50IGJhc2VkIG9uIHRoZSBmb3JtIHZhbHVlcy5cbiAgICogSW52b2tlcyBhbiBleHRyYSBhY3Rpb24gaWYgcHJvdmlkZWQgYW5kIHNhdmVzIHRoZSBzdGF0ZSB0byBsb2NhbFN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB2b2lkfSBbZXh0cmFBY3Rpb25dIC0gT3B0aW9uYWwgZXh0cmEgYWN0aW9uIHRvIGJlIGludm9rZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZW1pdFZhbHVlKGV4dHJhQWN0aW9uPzogKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZHtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCBkYXRhOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIFxuICAgIE9iamVjdC5rZXlzKGYpLmZvckVhY2goKGs6IGFueSkgPT4ge1xuICAgICAgaWYgKCFmW2tdIHx8IChBcnJheS5pc0FycmF5KGZba10pICYmIGZba10ubGVuZ3RoID09PSAwKSkgcmV0dXJuO1xuXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgICBcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZm9yIGEgZ2l2ZW4ga2V5IGFuZCBzZXRzIGl0cyBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5IGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0geyp9IFt2YWxdIC0gSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbChrZXk6IHN0cmluZywgdmFsPzogYW55LCBpc0lycmVzb2x1dGU/OiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsKTtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrZXksIHZhbCk7XG5cbiAgICAgIGlmICghaXNJcnJlc29sdXRlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVTdGF0ZSgpOiB2b2lke1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7IHRoaXMuaWQgfWAsIFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY3RpdmVGaWx0ZXI6IHRoaXMuYWN0aXZlRmlsdGVyLFxuICAgICAgICBpbml0aWFsSXRlbXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmluaXRpYWxJdGVtcyksXG4gICAgICAgIGZvcm1WYWx1ZXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgQGlmIChhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgdHJhY2sgaXRlbS5rZXk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwZS0xIG1lLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKTtcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dCAjc2VhcmNoQm94IHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgY2xhc3M9XCJmbGV4LXNocmluay0xIGJvcmRlci0wIGZvcm0tY29udHJvbCBwcy0wIHB5LTJcIiBbY2xhc3MuYWR2XT1cImNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnXCIgKGtleXVwLmVudGVyKT1cImFkZCgpO1wiIC8+XG48L2Rpdj5cblxuQGlmIChjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJykge1xuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuICAgIFxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4LWdyb3ctMSBvdmVyZmxvdy1hdXRvIHB4LTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb25maWcuZmllbGRzOyB0cmFjayBjLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUtcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1kYXRlIGNsYXNzPVwiZmxleC1ncm93LTFcIiBuYW1lPVwiZmlsdGVyLXRvXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzFdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMV0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYy5vcHRpb25zIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VhcmNoYWJsZS1zZWxlY3QnKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5RnVuY109XCJjLmdldE9wdGlvbnMhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyEgfHwgaW5pdGlhbEl0ZW1zLmdldChjLmtleS50b1N0cmluZygpKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImMubXVsdGlwbGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImFwcGx5SW5pdGlhbEl0ZW1zKCRldmVudCwgYy5rZXkudG9TdHJpbmcoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICA8L2lvbi1wb3BvdmVyPiAgICBcbn1cbiJdfQ==
|
|
@@ -2979,12 +2979,7 @@ class FilterComponent {
|
|
|
2979
2979
|
search() {
|
|
2980
2980
|
this.resetValue();
|
|
2981
2981
|
this.emitValue((k, v) => {
|
|
2982
|
-
|
|
2983
|
-
v.forEach((value) => this.processFilter(k, value));
|
|
2984
|
-
}
|
|
2985
|
-
else {
|
|
2986
|
-
this.processFilter(k, v);
|
|
2987
|
-
}
|
|
2982
|
+
this.processFilter(k, v);
|
|
2988
2983
|
});
|
|
2989
2984
|
if (this.activeFilter.length === 0) {
|
|
2990
2985
|
this.initialItems.clear();
|
|
@@ -2993,14 +2988,28 @@ class FilterComponent {
|
|
|
2993
2988
|
this.close();
|
|
2994
2989
|
}
|
|
2995
2990
|
processFilter(key, value) {
|
|
2991
|
+
let values;
|
|
2996
2992
|
if (Array.isArray(value)) {
|
|
2997
|
-
|
|
2993
|
+
values = value;
|
|
2994
|
+
}
|
|
2995
|
+
else {
|
|
2996
|
+
values = [value];
|
|
2997
|
+
}
|
|
2998
|
+
values = values.filter(v => v !== undefined && v !== null && v !== '');
|
|
2999
|
+
if (values.length === 0) {
|
|
3000
|
+
this.activeFilter = this.activeFilter.filter(item => item.key !== key);
|
|
3001
|
+
return;
|
|
2998
3002
|
}
|
|
2999
|
-
const
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3003
|
+
const labels = values.map(v => {
|
|
3004
|
+
const initialItem = this.initialItems.get(key)?.find(item => item.value === v);
|
|
3005
|
+
return initialItem
|
|
3006
|
+
? initialItem.label
|
|
3007
|
+
: key.toLowerCase().includes('date') ? formatDate(v, 'dd MMM yyyy', 'en-US') : v;
|
|
3008
|
+
});
|
|
3009
|
+
const label = `${key}: ${labels.join(', ')}`;
|
|
3010
|
+
const valueString = values.join(',');
|
|
3011
|
+
this.activeFilter = this.activeFilter.filter(item => item.key !== key);
|
|
3012
|
+
this.activeFilter.push({ key, value: valueString, label });
|
|
3004
3013
|
}
|
|
3005
3014
|
add() {
|
|
3006
3015
|
const { key, value } = this.getValue(this.searchBox.nativeElement.value);
|
|
@@ -3010,7 +3019,7 @@ class FilterComponent {
|
|
|
3010
3019
|
}
|
|
3011
3020
|
const i = this.activeFilter.findIndex(({ key: k }) => k === key);
|
|
3012
3021
|
if (i === -1)
|
|
3013
|
-
this.activeFilter.
|
|
3022
|
+
this.activeFilter.unshift({ label: `${key}:${value}`, key, value });
|
|
3014
3023
|
else {
|
|
3015
3024
|
this.activeFilter[i].key = key;
|
|
3016
3025
|
this.activeFilter[i].value = value;
|
|
@@ -3034,7 +3043,7 @@ class FilterComponent {
|
|
|
3034
3043
|
getValue(value) {
|
|
3035
3044
|
const values = value.split(':');
|
|
3036
3045
|
if (values.length === 1)
|
|
3037
|
-
return { key: this.config.fields[0].key, value: values[0] };
|
|
3046
|
+
return { key: (Array.isArray(this.config.fields[0].key) ? this.config.fields[0].key[0] : this.config.fields[0].key), value: values[0] };
|
|
3038
3047
|
return { key: values[0], value: values[1] };
|
|
3039
3048
|
}
|
|
3040
3049
|
emitValue(extraAction) {
|
|
@@ -3042,7 +3051,7 @@ class FilterComponent {
|
|
|
3042
3051
|
const f = this.form.getRawValue();
|
|
3043
3052
|
const data = {};
|
|
3044
3053
|
Object.keys(f).forEach((k) => {
|
|
3045
|
-
if (!f[k])
|
|
3054
|
+
if (!f[k] || (Array.isArray(f[k]) && f[k].length === 0))
|
|
3046
3055
|
return;
|
|
3047
3056
|
flag = true;
|
|
3048
3057
|
data[k] = f[k];
|