@eui/ecl 15.0.0-rc.20 → 15.0.0-rc.21
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/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2020/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +17 -14
- package/fesm2015/eui-ecl.mjs +16 -13
- package/fesm2015/eui-ecl.mjs.map +1 -1
- package/fesm2020/eui-ecl.mjs +16 -13
- package/fesm2020/eui-ecl.mjs.map +1 -1
- package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts +1 -1
- package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -33,7 +33,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
33
33
|
this.multiSelectOptions = [];
|
|
34
34
|
this.selectedValues = [];
|
|
35
35
|
this.destroy$ = new Subject();
|
|
36
|
-
this.
|
|
36
|
+
this.noResultsFoundText = 'No results found';
|
|
37
37
|
this.CLASS_NO_RESULTS_FOUND = 'ecl-select__multiple-no-results';
|
|
38
38
|
this.propagateChange = (_) => {
|
|
39
39
|
};
|
|
@@ -149,9 +149,9 @@ export class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
149
149
|
}
|
|
150
150
|
createNoResultsFound() {
|
|
151
151
|
const noResultsDiv = document.createElement('div');
|
|
152
|
-
noResultsDiv.classList.add(
|
|
152
|
+
noResultsDiv.classList.add(this.CLASS_NO_RESULTS_FOUND);
|
|
153
153
|
const textSpan = document.createElement('span');
|
|
154
|
-
textSpan.innerHTML = this.
|
|
154
|
+
textSpan.innerHTML = this.noResultsFoundText;
|
|
155
155
|
noResultsDiv.appendChild(textSpan);
|
|
156
156
|
return noResultsDiv;
|
|
157
157
|
}
|
|
@@ -339,6 +339,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
339
339
|
});
|
|
340
340
|
this.selectedValues = selectedElementsValuesArray;
|
|
341
341
|
this.multiSelectInput.value = selectedElementsArray.join(',');
|
|
342
|
+
this.eclChange.emit(this.selectedValues);
|
|
342
343
|
this.propagateChange(this.selectedValues);
|
|
343
344
|
}
|
|
344
345
|
createIconComponent() {
|
|
@@ -363,15 +364,17 @@ export class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
363
364
|
item.style.display = 'flex';
|
|
364
365
|
});
|
|
365
366
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
item.
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
367
|
+
else {
|
|
368
|
+
this.multiSelectOptions.forEach(item => {
|
|
369
|
+
if (item.textContent.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {
|
|
370
|
+
item.style.display = 'none';
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
isMatchFound = true;
|
|
374
|
+
item.style.display = 'flex';
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
}
|
|
375
378
|
const noResultsFoundExists = this.multiDropdown.lastChild.classList.contains(this.CLASS_NO_RESULTS_FOUND);
|
|
376
379
|
if (!isMatchFound && !noResultsFoundExists) {
|
|
377
380
|
this.multiDropdown.appendChild(this.noResultsFound);
|
|
@@ -402,7 +405,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
402
405
|
this.translate
|
|
403
406
|
.stream([SELECT_ALL_KEY, NO_RESULTS_FOUND_KEY])
|
|
404
407
|
.pipe(takeUntil(this.destroy$)).subscribe((translation) => {
|
|
405
|
-
this.
|
|
408
|
+
this.noResultsFoundText = translation[NO_RESULTS_FOUND_KEY];
|
|
406
409
|
if (this.checkboxLabel) {
|
|
407
410
|
this.checkboxLabel.lastElementChild.textContent = translation[SELECT_ALL_KEY];
|
|
408
411
|
}
|
|
@@ -646,4 +649,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
646
649
|
type: HostListener,
|
|
647
650
|
args: ['document:click', ['$event']]
|
|
648
651
|
}] } });
|
|
649
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUVuRixJQUFLLFFBTUo7QUFORCxXQUFLLFFBQVE7SUFDWCxnQ0FBb0IsQ0FBQTtJQUNwQixvQ0FBd0IsQ0FBQTtJQUN4Qiw2QkFBaUIsQ0FBQTtJQUNqQiwyQkFBZSxDQUFBO0lBQ2YsdUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFOSSxRQUFRLEtBQVIsUUFBUSxRQU1aO0FBTUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQXVEekQs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SUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDOzt1SUFyckJRLHVCQUF1QjsySEFBdkIsdUJBQXVCLDhhQUdmLDZCQUE2QixvREM3Q2xELDJCQUF5QjtBRDhDTjtJQUFkLGFBQWE7MERBQTRDOzJGQUpqRCx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksd0JBQXdCOzswQkEyRDdCLFFBQVE7OzBCQUFJLElBQUk7aUtBckQyQixjQUFjO3NCQUE3RCxlQUFlO3VCQUFDLDZCQUE2QjtnQkFDdEIsU0FBUztzQkFBakIsS0FBSztnQkFFakIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBT1YsU0FBUztzQkFBbEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsZUFBZTtnQkF1SGMsV0FBVztzQkFBN0QsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2VsZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4gfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtY2hlY2tib3gvZWNsLWNoZWNrYm94LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWljb24vZWNsLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG5cbmVudW0gS0VZX0NPREUge1xuICBBUlJPV19VUCA9ICdBcnJvd1VwJyxcbiAgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nLFxuICBFU0NBUEUgPSAnRXNjYXBlJyxcbiAgRU5URVIgPSAnRW50ZXInLFxuICBUQUIgPSAnVGFiJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NlbGVjdFtlY2xNdWx0aXNlbGVjdF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTXVsdGlzZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSkgZWNsT3B0aW9uSXRlbXM6IFF1ZXJ5TGlzdDxFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgaXNJbnZhbGlkOiBib29sZWFuIHwgYW55ICA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtc2VsZWN0JyksXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgZWNsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQElucHV0KCkgc2V0IGVjbFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZWNsUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3RJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCB0aGlzLl9lY2xQbGFjZWhvbGRlciB8fCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KCkgZWNsU2l6ZTogc3RyaW5nID0gJ20nO1xuXG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBhbnkpIHsgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2VjbFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIGhvc3RFbDogSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBob3N0UGFyZW50RWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaG9zdFdyYXBwZXJFbDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RJY29uQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RXcmFwcGVyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpc2VsZWN0Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpRHJvcGRvd246IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgb3B0aW9uc1dyYXBwZXI6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlTZWxlY3RPcHRpb25zOiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgcHJpdmF0ZSBtdWx0aVNlbGVjdElucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgbm9SZXN1bHRzRm91bmQ6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgY2hlY2tib3hTZWxlY3RBbGw6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxFbGw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBzZWFyY2hFbDogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIGNoZWNrYm94TGFiZWw6IEhUTUxMYWJlbEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIE5PX1JFU1VMVFNfRk9VTkRfVEVYVCA9ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBwcml2YXRlIENMQVNTX05PX1JFU1VMVFNfRk9VTkQgPSAnZWNsLXNlbGVjdF9fbXVsdGlwbGUtbm8tcmVzdWx0cyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZENhbGxiYWNrcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmhvc3RFbCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwgPSB0aGlzLmdldEhvc3RQYXJlbnRFbGVtZW50KHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsID0gdGhpcy5jcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLnNlbGVjdEljb25Db250YWluZXJFbCA9IHRoaXMuY3JlYXRlSWNvbkNvbnRhaW5lcigpO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyID0gdGhpcy5jcmVhdGVXcmFwcGVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lciA9IHRoaXMuY3JlYXRlU2VsZWN0Q29udGFpbmVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5ub1Jlc3VsdHNGb3VuZCA9IHRoaXMuY3JlYXRlTm9SZXN1bHRzRm91bmQoKTtcblxuICAgICAgICBpZiAodGhpcy5ob3N0UGFyZW50RWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSHRtbEVsZW1lbnRzKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0aW9ucygpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCdlY2wtc2VsZWN0X19jb250YWluZXItLWludmFsaWQnLCB0aGlzLmlzSW52YWxpZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xPcHRpb25JdGVtcyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWxsT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGRpZmYuZm9yRWFjaEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU9wdGlvbldpdGhDaGVja2JveChpdGVtLml0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSkgb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25LZXlVcChldjogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0NsaWNrSW5zaWRlID0gdGhpcy5tdWx0aURyb3Bkb3duLmNvbnRhaW5zKDxFbGVtZW50PmV2LnRhcmdldCkgfHwgdGhpcy5tdWx0aVNlbGVjdElucHV0LmNvbnRhaW5zKDxFbGVtZW50PmV2LnRhcmdldCk7XG4gICAgICAgIGlmICghaXNDbGlja0luc2lkZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQWxsT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgd2hpbGUgKHRoaXMub3B0aW9uc1dyYXBwZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5maXJzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbnNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsT3B0aW9uSXRlbXMuZm9yRWFjaChpID0+IGkuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICkuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRNdWx0aXNlbGVjdERyb3Bkb3duKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU5vUmVzdWx0c0ZvdW5kKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgbm9SZXN1bHRzRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG5vUmVzdWx0c0Rpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS1uby1yZXN1bHRzJyk7XG4gICAgICAgIGNvbnN0IHRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0ZXh0U3Bhbi5pbm5lckhUTUwgPSB0aGlzLk5PX1JFU1VMVFNfRk9VTkRfVEVYVDtcbiAgICAgICAgbm9SZXN1bHRzRGl2LmFwcGVuZENoaWxkKHRleHRTcGFuKTtcbiAgICAgICAgcmV0dXJuIG5vUmVzdWx0c0RpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVPcmlnaW5hbFNlbGVjdENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwucmVwbGFjZUNoaWxkKHRoaXMuaG9zdFdyYXBwZXJFbCwgdGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUh0bWxFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0V3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdEljb25Db250YWluZXJFbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0SWNvbkNvbnRhaW5lckVsLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlSWNvbkNvbXBvbmVudCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCkgPT4ge1xuICAgIH07XG5cbiAgICBwcml2YXRlIGJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bih3aXRoT3B0aW9uczogYm9vbGVhbik6IHZvaWQge1xuXG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93biA9IHRoaXMuY3JlYXRlRHJvcGRvd25Gb3JNdWx0aXNlbGVjdCgpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0V3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLm11bHRpRHJvcGRvd24pO1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTZWFyY2hGb3JNdWx0aXNlbGVjdCgpKTtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTXVsdGlTZWxlY3RBbGwoKSk7XG4gICAgICAgIHRoaXMub3B0aW9uc1dyYXBwZXIgPSB0aGlzLmNyZWF0ZU9wdGlvbnNXcmFwcGVyKCk7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLm9wdGlvbnNXcmFwcGVyKTtcblxuICAgICAgICBpZiAod2l0aE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsT3B0aW9uSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1dyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVPcHRpb25XaXRoQ2hlY2tib3goaXRlbSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RFbGVtZW50KCk6IEhUTUxTZWxlY3RFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RQYXJlbnRFbGVtZW50KGhvc3RFbDogSFRNTFNlbGVjdEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiBob3N0RWwucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YCk7XG4gICAgICAgIHJldHVybiB3cmFwcGVyQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlV3JhcHBlck11bHRpc2VsZWN0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbnRhaW5lck11bHRpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXBwZXJDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZScpO1xuICAgICAgICByZXR1cm4gd3JhcHBlckNvbnRhaW5lck11bHRpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2VsZWN0Q29udGFpbmVyTXVsdGlzZWxlY3QoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBzZWxlY3RDb250YWluZXJNdWx0aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuY2xhc3NMaXN0LmFkZChgZWNsLXNlbGVjdF9fY29udGFpbmVyLS0ke3RoaXMuZWNsU2l6ZX1gKTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdENvbnRhaW5lck11bHRpLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5fZWNsUGxhY2Vob2xkZXIgfHwgJycpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcbiAgICAgICAgaWYgKHRoaXMuaG9zdEVsLmhhc0F0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ2Zvcm1Db250cm9sTmFtZScsIHRoaXMuaG9zdEVsLmdldEF0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS10b2dnbGUnKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5hcHBlbmRDaGlsZCh0aGlzLm11bHRpU2VsZWN0SW5wdXQpO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RDb250YWluZXJNdWx0aTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZURyb3Bkb3duRm9yTXVsdGlzZWxlY3QoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBkcm9wZG93bkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkcm9wZG93bkRpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS1kcm9wZG93bicpO1xuICAgICAgICBkcm9wZG93bkRpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgZHJvcGRvd25EaXYuY2xhc3NMaXN0LmFkZChgZWNsLXNlbGVjdF9fY29udGFpbmVyLS0ke3RoaXMuZWNsU2l6ZX1gKTtcbiAgICAgICAgZHJvcGRvd25EaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgcmV0dXJuIGRyb3Bkb3duRGl2O1xuICAgIH1cblxuICAgIC8vIHNlYXJjaCBib3ggdG8gc2VhcmNoIGFtb25nIG9wdGlvbnNcbiAgICBwcml2YXRlIGNyZWF0ZVNlYXJjaEZvck11bHRpc2VsZWN0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBjb25zdCBtdWx0aVNlYXJjaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIG11bHRpU2VhcmNoLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIG11bHRpU2VhcmNoLmNsYXNzTGlzdC5hZGQoJ2VjbC10ZXh0LWlucHV0Jyk7XG4gICAgICAgIG11bHRpU2VhcmNoLnBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG5cbiAgICAgICAgbXVsdGlTZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoKTtcbiAgICAgICAgbXVsdGlTZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uU2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwgPSBtdWx0aVNlYXJjaDtcbiAgICAgICAgcmV0dXJuIG11bHRpU2VhcmNoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3B0aW9uV2l0aENoZWNrYm94KGVsOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaWRTdHIgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgaWQgPSAnaWQtJyArIGVsLnZhbHVlICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcblxuICAgICAgICBjb25zdCBjaGVja2JveERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgIGlmIChlbC5jc3NDbGFzc2VzKSB7XG4gICAgICAgICAgICBlbC5jc3NDbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaChjbCA9PiB7XG4gICAgICAgICAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZChjbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94SW5wdXQgPSB0aGlzLmNyZWF0ZUNoZWNrYm94SW5wdXQoaWQsIGVsLnZhbHVlKTtcbiAgICAgICAgaWYgKGVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJyk7XG4gICAgICAgICAgICBjaGVja2JveElucHV0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoZWNrYm94SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZCB8fCAodGhpcy5zZWxlY3RlZFZhbHVlcy5pbmRleE9mKGVsLnZhbHVlKSA+IC0xKSkge1xuICAgICAgICAgICAgY2hlY2tib3hJbnB1dC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9PT0gJycgPyBlbC5sYWJlbCA6XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlICsgJywnICsgZWwubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja2JveElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbik7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKGNoZWNrYm94SW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94TGFiZWwoZWwubGFiZWwsIGlkKTtcbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7XG5cbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMucHVzaChjaGVja2JveERpdik7XG4gICAgICAgIHJldHVybiBjaGVja2JveERpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94TGFiZWwodGV4dDogc3RyaW5nLCBpZDogc3RyaW5nKTogSFRNTExhYmVsRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQpO1xuICAgICAgICBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuaHRtbEZvciA9IGlkO1xuXG4gICAgICAgIGNvbnN0IHRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0ZXh0U3Bhbi5pbm5lckhUTUwgPSB0ZXh0O1xuXG4gICAgICAgIGNoZWNrYm94TGFiZWwubG9jYXRpb24ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XG4gICAgICAgIHJldHVybiBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGVja2JveElucHV0KGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudHlwZSA9ICdjaGVja2JveCc7XG4gICAgICAgIGNoZWNrYm94SW5wdXQuY2xhc3NMaXN0LmFkZCgnZWNsLWNoZWNrYm94X19pbnB1dCcpO1xuICAgICAgICBjaGVja2JveElucHV0LmlkID0gaWQ7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94SW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gQWRkL3JlbW92ZSB2YWx1ZXMgZnJvbSB0aGUgc2VsZWN0IGlucHV0XG4gICAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50VmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkgPSBbXTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkucHVzaCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXSkudmFsdWUpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gc2VsZWN0ZWRFbGVtZW50c0FycmF5LmpvaW4oJywnKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2tib3ggdG8gc2VsZWN0IGFsbCB0aGUgZWxlbWVudHNcbiAgICBwcml2YXRlIGNyZWF0ZU11bHRpU2VsZWN0QWxsKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaWRTdHIgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgY2hlY2tib3hEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZCgnZWNsLWNoZWNrYm94Jyk7XG4gICAgICAgIGNoZWNrYm94RGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlLWFsbCcpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94SW5wdXQoJ3NlbGVjdC1tdWx0aXBsZS1hbGwnICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKSwgJ2FsbCcpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VsZWN0QWxsKTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPblNlbGVjdEFsbCk7XG5cbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQodGhpcy5jaGVja2JveFNlbGVjdEFsbCk7XG5cbiAgICAgICAgdGhpcy5jaGVja2JveExhYmVsID0gdGhpcy5jcmVhdGVDaGVja2JveExhYmVsKCdTZWxlY3QgYWxsJywgJ3NlbGVjdC1tdWx0aXBsZS1hbGwnICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKSk7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKHRoaXMuY2hlY2tib3hMYWJlbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsRWxsID0gY2hlY2tib3hEaXY7XG4gICAgICAgIHJldHVybiBjaGVja2JveERpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU9wdGlvbnNXcmFwcGVyKCk6IEhUTUxFbGVtZW50IHtcblxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlLW9wdGlvbnMnKTtcbiAgICAgICAgcmV0dXJuIGRpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzQXJyYXkgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5ID0gW107XG4gICAgICAgIC8vIFNlbGVjdCBhbGwgdGhlIGVsZW1lbnRzLCB0aGF0IGFyZSBub3QgZGlzYWJsZWRcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZmlsdGVyKGVsZW0gPT4gZWxlbS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheS5wdXNoKCg8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdKS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gc2VsZWN0ZWRFbGVtZW50c0FycmF5LmpvaW4oJywnKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJY29uQ29tcG9uZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZWNsSWNvbkNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoRWNsSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2Uuc2l6ZSA9ICdzJztcbiAgICAgICAgZWNsSWNvbkNvbXBvbmVudC5pbnN0YW5jZS5pY29uID0gJ2Nvcm5lci1hcnJvdyc7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2UudHJhbnNmb3JtID0gJ3JvdGF0ZS0xODAnO1xuICAgICAgICBlY2xJY29uQ29tcG9uZW50Lmluc3RhbmNlLmNsYXNzID0gJ2VjbC1zZWxlY3RfX2ljb24tc2hhcGUnO1xuICAgICAgICByZXR1cm4gZWNsSWNvbkNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSWNvbkNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEljb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgc2VsZWN0SWNvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19pY29uJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RJY29uQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hPcHRpb25zKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIGxldCBpc01hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGtleXdvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0udGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5vUmVzdWx0c0ZvdW5kRXhpc3RzID0gKHRoaXMubXVsdGlEcm9wZG93bi5sYXN0Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNMQVNTX05PX1JFU1VMVFNfRk9VTkQpO1xuICAgICAgICBpZiAoIWlzTWF0Y2hGb3VuZCAmJiAhbm9SZXN1bHRzRm91bmRFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLm5vUmVzdWx0c0ZvdW5kKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01hdGNoRm91bmQgJiYgbm9SZXN1bHRzRm91bmRFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5yZW1vdmVDaGlsZCh0aGlzLm5vUmVzdWx0c0ZvdW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbERpc2FibGVTdGF0dXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVNlbGVjdEFsbERpc2FibGVTdGF0dXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuZGlzYWJsZWQgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGggPCAyO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbEVsbC5jbGFzc0xpc3QudG9nZ2xlKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJywgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUcmFuc2xhdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFNFTEVDVF9BTExfS0VZID0gJ2VjbC5tdWx0aXNlbGVjdC5TRUxFQ1QtQUxMJztcbiAgICAgICAgY29uc3QgTk9fUkVTVUxUU19GT1VORF9LRVkgPSAnZWNsLm11bHRpc2VsZWN0Lk5PLVJFU1VMVFMtRk9VTkQnO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLnN0cmVhbShbU0VMRUNUX0FMTF9LRVksIE5PX1JFU1VMVFNfRk9VTkRfS0VZXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uOiBKU09OKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5OT19SRVNVTFRTX0ZPVU5EX1RFWFQgPSB0cmFuc2xhdGlvbltOT19SRVNVTFRTX0ZPVU5EX0tFWV07XG4gICAgICAgICAgICAgICAgaWYodGhpcy5jaGVja2JveExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3hMYWJlbC5sYXN0RWxlbWVudENoaWxkLnRleHRDb250ZW50ID0gdHJhbnNsYXRpb25bU0VMRUNUX0FMTF9LRVldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5NdWx0aXNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoaWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5maXJzdEVsZW1lbnRDaGlsZC5pZCA9PT0gaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPbk1haW5JbnB1dChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uc3R5bGUuZGlzcGxheSA9IHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnYmxvY2snIDogJ25vbmUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uTWFpbklucHV0KGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25NYWluSW5wdXRBcnJvd0Rvd24oZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25NYWluSW5wdXRBcnJvd0Rvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9wZW5NdWx0aXNlbGVjdCgpO1xuICAgICAgICB0aGlzLnNlYXJjaEVsLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25TZWFyY2goZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlYXJjaEFycm93RG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWFyY2hBcnJvd1VwKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VhcmNoQXJyb3dEb3duKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RPcHRpb24gPSBjdXJyZW50T3B0aW9uc1swXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGZpcnN0T3B0aW9uLmZvY3VzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlYXJjaEFycm93VXAoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrT25TZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uU2VsZWN0QWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25TZWxlY3RBbGwoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFsbEFycm93RG93bihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RBbGxBcnJvd1VwKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlbGVjdEFsbEFycm93RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZ0NoZWNrYm94ID0gY3VycmVudE9wdGlvbnNbMF0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBuZXh0U2libGluZ0NoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VsZWN0QWxsQXJyb3dVcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPbk9wdGlvbihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50VmFsdWUoKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25PcHRpb24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93RG93bihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dVcChldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25UYWIoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd0Rvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuaWQpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoaW5kZXggIT09IGN1cnJlbnRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTaWJsaW5nQ2hlY2tib3ggPSBjdXJyZW50T3B0aW9uc1tpbmRleCArIDFdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgbmV4dFNpYmxpbmdDaGVja2JveC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dVcChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucygoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5pZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldlNpYmxpbmdDaGVja2JveCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpW2luZGV4IC0gMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBwcmV2U2libGluZ0NoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hFbC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvblRhYihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlkKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZm9jdXMoKTsgLy8gVHJhcCB0YWJcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY3RpdmVPcHRpb25zKCk6IEhUTUxFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiZcbiAgICAgICAgICAgICFpdGVtLmNsYXNzTGlzdC5jb250YWlucygnZWNsLWNoZWNrYm94LS1kaXNhYmxlZCcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUFsbExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25TZWFyY2hPcHRpb25zKTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwpO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uU2VsZWN0QWxsKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGVjYm94RWwgPSBlbC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgY2hlY2JveEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbik7XG4gICAgICAgICAgICBjaGVjYm94RWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDYWxsYmFja3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bk9uTWFpbklucHV0ID0gdGhpcy5oYW5kbGVLZXlkb3duT25NYWluSW5wdXQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25TZWFyY2ggPSB0aGlzLmhhbmRsZUtleWRvd25PblNlYXJjaC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9uU2VhcmNoT3B0aW9ucyA9IHRoaXMub25TZWFyY2hPcHRpb25zLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VsZWN0QWxsID0gdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25PcHRpb24gPSB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbi5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrT25NYWluSW5wdXQgPSB0aGlzLmhhbmRsZUNsaWNrT25NYWluSW5wdXQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uU2VsZWN0QWxsID0gdGhpcy5oYW5kbGVDbGlja09uU2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPbk9wdGlvbiA9IHRoaXMuaGFuZGxlQ2xpY2tPbk9wdGlvbi5iaW5kKHRoaXMpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD4iXX0=
|
|
652
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUVuRixJQUFLLFFBTUo7QUFORCxXQUFLLFFBQVE7SUFDWCxnQ0FBb0IsQ0FBQTtJQUNwQixvQ0FBd0IsQ0FBQTtJQUN4Qiw2QkFBaUIsQ0FBQTtJQUNqQiwyQkFBZSxDQUFBO0lBQ2YsdUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFOSSxRQUFRLEtBQVIsUUFBUSxRQU1aO0FBTUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQXVEekQs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QXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDOzt1SUF2ckJRLHVCQUF1QjsySEFBdkIsdUJBQXVCLDhhQUdmLDZCQUE2QixvREM3Q2xELDJCQUF5QjtBRDhDTjtJQUFkLGFBQWE7MERBQTRDOzJGQUpqRCx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksd0JBQXdCOzswQkEyRDdCLFFBQVE7OzBCQUFJLElBQUk7aUtBckQyQixjQUFjO3NCQUE3RCxlQUFlO3VCQUFDLDZCQUE2QjtnQkFDdEIsU0FBUztzQkFBakIsS0FBSztnQkFFakIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBT1YsU0FBUztzQkFBbEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsZUFBZTtnQkF1SGMsV0FBVztzQkFBN0QsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2VsZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4gfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtY2hlY2tib3gvZWNsLWNoZWNrYm94LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWljb24vZWNsLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG5cbmVudW0gS0VZX0NPREUge1xuICBBUlJPV19VUCA9ICdBcnJvd1VwJyxcbiAgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nLFxuICBFU0NBUEUgPSAnRXNjYXBlJyxcbiAgRU5URVIgPSAnRW50ZXInLFxuICBUQUIgPSAnVGFiJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NlbGVjdFtlY2xNdWx0aXNlbGVjdF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTXVsdGlzZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSkgZWNsT3B0aW9uSXRlbXM6IFF1ZXJ5TGlzdDxFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgaXNJbnZhbGlkOiBib29sZWFuIHwgYW55ICA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtc2VsZWN0JyksXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgZWNsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQElucHV0KCkgc2V0IGVjbFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZWNsUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3RJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCB0aGlzLl9lY2xQbGFjZWhvbGRlciB8fCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KCkgZWNsU2l6ZTogc3RyaW5nID0gJ20nO1xuXG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBhbnkpIHsgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2VjbFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIGhvc3RFbDogSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBob3N0UGFyZW50RWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaG9zdFdyYXBwZXJFbDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RJY29uQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RXcmFwcGVyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpc2VsZWN0Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpRHJvcGRvd246IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgb3B0aW9uc1dyYXBwZXI6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlTZWxlY3RPcHRpb25zOiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgcHJpdmF0ZSBtdWx0aVNlbGVjdElucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgbm9SZXN1bHRzRm91bmQ6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgY2hlY2tib3hTZWxlY3RBbGw6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxFbGw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBzZWFyY2hFbDogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIGNoZWNrYm94TGFiZWw6IEhUTUxMYWJlbEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIG5vUmVzdWx0c0ZvdW5kVGV4dCA9ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBwcml2YXRlIENMQVNTX05PX1JFU1VMVFNfRk9VTkQgPSAnZWNsLXNlbGVjdF9fbXVsdGlwbGUtbm8tcmVzdWx0cyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZENhbGxiYWNrcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmhvc3RFbCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwgPSB0aGlzLmdldEhvc3RQYXJlbnRFbGVtZW50KHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsID0gdGhpcy5jcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLnNlbGVjdEljb25Db250YWluZXJFbCA9IHRoaXMuY3JlYXRlSWNvbkNvbnRhaW5lcigpO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyID0gdGhpcy5jcmVhdGVXcmFwcGVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lciA9IHRoaXMuY3JlYXRlU2VsZWN0Q29udGFpbmVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5ub1Jlc3VsdHNGb3VuZCA9IHRoaXMuY3JlYXRlTm9SZXN1bHRzRm91bmQoKTtcblxuICAgICAgICBpZiAodGhpcy5ob3N0UGFyZW50RWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSHRtbEVsZW1lbnRzKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0aW9ucygpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCdlY2wtc2VsZWN0X19jb250YWluZXItLWludmFsaWQnLCB0aGlzLmlzSW52YWxpZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xPcHRpb25JdGVtcyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWxsT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGRpZmYuZm9yRWFjaEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU9wdGlvbldpdGhDaGVja2JveChpdGVtLml0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSkgb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25LZXlVcChldjogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0NsaWNrSW5zaWRlID0gdGhpcy5tdWx0aURyb3Bkb3duLmNvbnRhaW5zKDxFbGVtZW50PmV2LnRhcmdldCkgfHwgdGhpcy5tdWx0aVNlbGVjdElucHV0LmNvbnRhaW5zKDxFbGVtZW50PmV2LnRhcmdldCk7XG4gICAgICAgIGlmICghaXNDbGlja0luc2lkZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQWxsT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgd2hpbGUgKHRoaXMub3B0aW9uc1dyYXBwZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5maXJzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbnNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsT3B0aW9uSXRlbXMuZm9yRWFjaChpID0+IGkuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICkuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRNdWx0aXNlbGVjdERyb3Bkb3duKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU5vUmVzdWx0c0ZvdW5kKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgbm9SZXN1bHRzRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG5vUmVzdWx0c0Rpdi5jbGFzc0xpc3QuYWRkKHRoaXMuQ0xBU1NfTk9fUkVTVUxUU19GT1VORCk7XG4gICAgICAgIGNvbnN0IHRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0ZXh0U3Bhbi5pbm5lckhUTUwgPSB0aGlzLm5vUmVzdWx0c0ZvdW5kVGV4dDtcbiAgICAgICAgbm9SZXN1bHRzRGl2LmFwcGVuZENoaWxkKHRleHRTcGFuKTtcbiAgICAgICAgcmV0dXJuIG5vUmVzdWx0c0RpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVPcmlnaW5hbFNlbGVjdENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwucmVwbGFjZUNoaWxkKHRoaXMuaG9zdFdyYXBwZXJFbCwgdGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUh0bWxFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0V3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdEljb25Db250YWluZXJFbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0SWNvbkNvbnRhaW5lckVsLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlSWNvbkNvbXBvbmVudCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCkgPT4ge1xuICAgIH07XG5cbiAgICBwcml2YXRlIGJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bih3aXRoT3B0aW9uczogYm9vbGVhbik6IHZvaWQge1xuXG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93biA9IHRoaXMuY3JlYXRlRHJvcGRvd25Gb3JNdWx0aXNlbGVjdCgpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0V3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLm11bHRpRHJvcGRvd24pO1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTZWFyY2hGb3JNdWx0aXNlbGVjdCgpKTtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTXVsdGlTZWxlY3RBbGwoKSk7XG4gICAgICAgIHRoaXMub3B0aW9uc1dyYXBwZXIgPSB0aGlzLmNyZWF0ZU9wdGlvbnNXcmFwcGVyKCk7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLm9wdGlvbnNXcmFwcGVyKTtcblxuICAgICAgICBpZiAod2l0aE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsT3B0aW9uSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1dyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVPcHRpb25XaXRoQ2hlY2tib3goaXRlbSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RFbGVtZW50KCk6IEhUTUxTZWxlY3RFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RQYXJlbnRFbGVtZW50KGhvc3RFbDogSFRNTFNlbGVjdEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiBob3N0RWwucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YCk7XG4gICAgICAgIHJldHVybiB3cmFwcGVyQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlV3JhcHBlck11bHRpc2VsZWN0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbnRhaW5lck11bHRpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXBwZXJDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZScpO1xuICAgICAgICByZXR1cm4gd3JhcHBlckNvbnRhaW5lck11bHRpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2VsZWN0Q29udGFpbmVyTXVsdGlzZWxlY3QoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBzZWxlY3RDb250YWluZXJNdWx0aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuY2xhc3NMaXN0LmFkZChgZWNsLXNlbGVjdF9fY29udGFpbmVyLS0ke3RoaXMuZWNsU2l6ZX1gKTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdENvbnRhaW5lck11bHRpLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5fZWNsUGxhY2Vob2xkZXIgfHwgJycpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcbiAgICAgICAgaWYgKHRoaXMuaG9zdEVsLmhhc0F0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ2Zvcm1Db250cm9sTmFtZScsIHRoaXMuaG9zdEVsLmdldEF0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS10b2dnbGUnKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5hcHBlbmRDaGlsZCh0aGlzLm11bHRpU2VsZWN0SW5wdXQpO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RDb250YWluZXJNdWx0aTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZURyb3Bkb3duRm9yTXVsdGlzZWxlY3QoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBkcm9wZG93bkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkcm9wZG93bkRpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS1kcm9wZG93bicpO1xuICAgICAgICBkcm9wZG93bkRpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgZHJvcGRvd25EaXYuY2xhc3NMaXN0LmFkZChgZWNsLXNlbGVjdF9fY29udGFpbmVyLS0ke3RoaXMuZWNsU2l6ZX1gKTtcbiAgICAgICAgZHJvcGRvd25EaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgcmV0dXJuIGRyb3Bkb3duRGl2O1xuICAgIH1cblxuICAgIC8vIHNlYXJjaCBib3ggdG8gc2VhcmNoIGFtb25nIG9wdGlvbnNcbiAgICBwcml2YXRlIGNyZWF0ZVNlYXJjaEZvck11bHRpc2VsZWN0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBjb25zdCBtdWx0aVNlYXJjaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIG11bHRpU2VhcmNoLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIG11bHRpU2VhcmNoLmNsYXNzTGlzdC5hZGQoJ2VjbC10ZXh0LWlucHV0Jyk7XG4gICAgICAgIG11bHRpU2VhcmNoLnBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG5cbiAgICAgICAgbXVsdGlTZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoKTtcbiAgICAgICAgbXVsdGlTZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uU2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwgPSBtdWx0aVNlYXJjaDtcbiAgICAgICAgcmV0dXJuIG11bHRpU2VhcmNoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3B0aW9uV2l0aENoZWNrYm94KGVsOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaWRTdHIgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgaWQgPSAnaWQtJyArIGVsLnZhbHVlICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcblxuICAgICAgICBjb25zdCBjaGVja2JveERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgIGlmIChlbC5jc3NDbGFzc2VzKSB7XG4gICAgICAgICAgICBlbC5jc3NDbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaChjbCA9PiB7XG4gICAgICAgICAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZChjbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94SW5wdXQgPSB0aGlzLmNyZWF0ZUNoZWNrYm94SW5wdXQoaWQsIGVsLnZhbHVlKTtcbiAgICAgICAgaWYgKGVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJyk7XG4gICAgICAgICAgICBjaGVja2JveElucHV0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoZWNrYm94SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZCB8fCAodGhpcy5zZWxlY3RlZFZhbHVlcy5pbmRleE9mKGVsLnZhbHVlKSA+IC0xKSkge1xuICAgICAgICAgICAgY2hlY2tib3hJbnB1dC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9PT0gJycgPyBlbC5sYWJlbCA6XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlICsgJywnICsgZWwubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja2JveElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbik7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKGNoZWNrYm94SW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94TGFiZWwoZWwubGFiZWwsIGlkKTtcbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7XG5cbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMucHVzaChjaGVja2JveERpdik7XG4gICAgICAgIHJldHVybiBjaGVja2JveERpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94TGFiZWwodGV4dDogc3RyaW5nLCBpZDogc3RyaW5nKTogSFRNTExhYmVsRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQpO1xuICAgICAgICBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuaHRtbEZvciA9IGlkO1xuXG4gICAgICAgIGNvbnN0IHRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0ZXh0U3Bhbi5pbm5lckhUTUwgPSB0ZXh0O1xuXG4gICAgICAgIGNoZWNrYm94TGFiZWwubG9jYXRpb24ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XG4gICAgICAgIHJldHVybiBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGVja2JveElucHV0KGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudHlwZSA9ICdjaGVja2JveCc7XG4gICAgICAgIGNoZWNrYm94SW5wdXQuY2xhc3NMaXN0LmFkZCgnZWNsLWNoZWNrYm94X19pbnB1dCcpO1xuICAgICAgICBjaGVja2JveElucHV0LmlkID0gaWQ7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94SW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gQWRkL3JlbW92ZSB2YWx1ZXMgZnJvbSB0aGUgc2VsZWN0IGlucHV0XG4gICAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50VmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkgPSBbXTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkucHVzaCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXSkudmFsdWUpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gc2VsZWN0ZWRFbGVtZW50c0FycmF5LmpvaW4oJywnKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2tib3ggdG8gc2VsZWN0IGFsbCB0aGUgZWxlbWVudHNcbiAgICBwcml2YXRlIGNyZWF0ZU11bHRpU2VsZWN0QWxsKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaWRTdHIgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgY2hlY2tib3hEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZCgnZWNsLWNoZWNrYm94Jyk7XG4gICAgICAgIGNoZWNrYm94RGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlLWFsbCcpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94SW5wdXQoJ3NlbGVjdC1tdWx0aXBsZS1hbGwnICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKSwgJ2FsbCcpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VsZWN0QWxsKTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPblNlbGVjdEFsbCk7XG5cbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQodGhpcy5jaGVja2JveFNlbGVjdEFsbCk7XG5cbiAgICAgICAgdGhpcy5jaGVja2JveExhYmVsID0gdGhpcy5jcmVhdGVDaGVja2JveExhYmVsKCdTZWxlY3QgYWxsJywgJ3NlbGVjdC1tdWx0aXBsZS1hbGwnICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKSk7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKHRoaXMuY2hlY2tib3hMYWJlbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsRWxsID0gY2hlY2tib3hEaXY7XG4gICAgICAgIHJldHVybiBjaGVja2JveERpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU9wdGlvbnNXcmFwcGVyKCk6IEhUTUxFbGVtZW50IHtcblxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlLW9wdGlvbnMnKTtcbiAgICAgICAgcmV0dXJuIGRpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzQXJyYXkgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5ID0gW107XG4gICAgICAgIC8vIFNlbGVjdCBhbGwgdGhlIGVsZW1lbnRzLCB0aGF0IGFyZSBub3QgZGlzYWJsZWRcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZmlsdGVyKGVsZW0gPT4gZWxlbS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheS5wdXNoKCg8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdKS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gc2VsZWN0ZWRFbGVtZW50c0FycmF5LmpvaW4oJywnKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJY29uQ29tcG9uZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZWNsSWNvbkNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoRWNsSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2Uuc2l6ZSA9ICdzJztcbiAgICAgICAgZWNsSWNvbkNvbXBvbmVudC5pbnN0YW5jZS5pY29uID0gJ2Nvcm5lci1hcnJvdyc7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2UudHJhbnNmb3JtID0gJ3JvdGF0ZS0xODAnO1xuICAgICAgICBlY2xJY29uQ29tcG9uZW50Lmluc3RhbmNlLmNsYXNzID0gJ2VjbC1zZWxlY3RfX2ljb24tc2hhcGUnO1xuICAgICAgICByZXR1cm4gZWNsSWNvbkNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSWNvbkNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEljb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgc2VsZWN0SWNvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19pY29uJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RJY29uQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hPcHRpb25zKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIGxldCBpc01hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGtleXdvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9SZXN1bHRzRm91bmRFeGlzdHMgPSAodGhpcy5tdWx0aURyb3Bkb3duLmxhc3RDaGlsZCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ0xBU1NfTk9fUkVTVUxUU19GT1VORCk7XG4gICAgICAgIGlmICghaXNNYXRjaEZvdW5kICYmICFub1Jlc3VsdHNGb3VuZEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMubm9SZXN1bHRzRm91bmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTWF0Y2hGb3VuZCAmJiBub1Jlc3VsdHNGb3VuZEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnJlbW92ZUNoaWxkKHRoaXMubm9SZXN1bHRzRm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCA8IDI7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsRWxsLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1jaGVja2JveC0tZGlzYWJsZWQnLCB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVRyYW5zbGF0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgU0VMRUNUX0FMTF9LRVkgPSAnZWNsLm11bHRpc2VsZWN0LlNFTEVDVC1BTEwnO1xuICAgICAgICBjb25zdCBOT19SRVNVTFRTX0ZPVU5EX0tFWSA9ICdlY2wubXVsdGlzZWxlY3QuTk8tUkVTVUxUUy1GT1VORCc7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAuc3RyZWFtKFtTRUxFQ1RfQUxMX0tFWSwgTk9fUkVTVUxUU19GT1VORF9LRVldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgodHJhbnNsYXRpb246IEpTT04pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vUmVzdWx0c0ZvdW5kVGV4dCA9IHRyYW5zbGF0aW9uW05PX1JFU1VMVFNfRk9VTkRfS0VZXTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNoZWNrYm94TGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveExhYmVsLmxhc3RFbGVtZW50Q2hpbGQudGV4dENvbnRlbnQgPSB0cmFuc2xhdGlvbltTRUxFQ1RfQUxMX0tFWV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3Blbk11bHRpc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhpZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmZpcnN0RWxlbWVudENoaWxkLmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGlja09uTWFpbklucHV0KGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID0gdGhpcy5tdWx0aURyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25NYWluSW5wdXQoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1haW5JbnB1dEFycm93RG93bihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk1haW5JbnB1dEFycm93RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMub3Blbk11bHRpc2VsZWN0KCk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25PblNlYXJjaChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VhcmNoQXJyb3dEb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlYXJjaEFycm93VXAoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbiA9IGN1cnJlbnRPcHRpb25zWzBdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZmlyc3RPcHRpb24uZm9jdXMoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VhcmNoQXJyb3dVcChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25TZWxlY3RBbGwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25PblNlbGVjdEFsbChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0QWxsQXJyb3dEb3duKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFsbEFycm93VXAoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VsZWN0QWxsQXJyb3dEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTaWJsaW5nQ2hlY2tib3ggPSBjdXJyZW50T3B0aW9uc1swXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIG5leHRTaWJsaW5nQ2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWxlY3RBbGxBcnJvd1VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaEVsLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGlja09uT3B0aW9uKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25Pbk9wdGlvbihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd1VwKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuVEFCOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblRhYihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucygoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNpYmxpbmdDaGVja2JveCA9IGN1cnJlbnRPcHRpb25zW2luZGV4ICsgMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBuZXh0U2libGluZ0NoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd1VwKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlkKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2U2libGluZ0NoZWNrYm94ID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKClbaW5kZXggLSAxXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIHByZXZTaWJsaW5nQ2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEVsLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uVGFiKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuaWQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5mb2N1cygpOyAvLyBUcmFwIHRhYlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGl2ZU9wdGlvbnMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJlxuICAgICAgICAgICAgIWl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQWxsTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uTWFpbklucHV0KTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uTWFpbklucHV0KTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWFyY2gpO1xuICAgICAgICB0aGlzLnNlYXJjaEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5vblNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbCk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNib3hFbCA9IGVsLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBjaGVjYm94RWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uKTtcbiAgICAgICAgICAgIGNoZWNib3hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk9wdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZENhbGxiYWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25NYWluSW5wdXQgPSB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25PblNlYXJjaCA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub25TZWFyY2hPcHRpb25zID0gdGhpcy5vblNlYXJjaE9wdGlvbnMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwgPSB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbiA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCA9IHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwgPSB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uT3B0aW9uID0gdGhpcy5oYW5kbGVDbGlja09uT3B0aW9uLmJpbmQodGhpcyk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
|
package/fesm2015/eui-ecl.mjs
CHANGED
|
@@ -8628,7 +8628,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
8628
8628
|
this.multiSelectOptions = [];
|
|
8629
8629
|
this.selectedValues = [];
|
|
8630
8630
|
this.destroy$ = new Subject();
|
|
8631
|
-
this.
|
|
8631
|
+
this.noResultsFoundText = 'No results found';
|
|
8632
8632
|
this.CLASS_NO_RESULTS_FOUND = 'ecl-select__multiple-no-results';
|
|
8633
8633
|
this.propagateChange = (_) => {
|
|
8634
8634
|
};
|
|
@@ -8744,9 +8744,9 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
8744
8744
|
}
|
|
8745
8745
|
createNoResultsFound() {
|
|
8746
8746
|
const noResultsDiv = document.createElement('div');
|
|
8747
|
-
noResultsDiv.classList.add(
|
|
8747
|
+
noResultsDiv.classList.add(this.CLASS_NO_RESULTS_FOUND);
|
|
8748
8748
|
const textSpan = document.createElement('span');
|
|
8749
|
-
textSpan.innerHTML = this.
|
|
8749
|
+
textSpan.innerHTML = this.noResultsFoundText;
|
|
8750
8750
|
noResultsDiv.appendChild(textSpan);
|
|
8751
8751
|
return noResultsDiv;
|
|
8752
8752
|
}
|
|
@@ -8934,6 +8934,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
8934
8934
|
});
|
|
8935
8935
|
this.selectedValues = selectedElementsValuesArray;
|
|
8936
8936
|
this.multiSelectInput.value = selectedElementsArray.join(',');
|
|
8937
|
+
this.eclChange.emit(this.selectedValues);
|
|
8937
8938
|
this.propagateChange(this.selectedValues);
|
|
8938
8939
|
}
|
|
8939
8940
|
createIconComponent() {
|
|
@@ -8958,15 +8959,17 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
8958
8959
|
item.style.display = 'flex';
|
|
8959
8960
|
});
|
|
8960
8961
|
}
|
|
8961
|
-
|
|
8962
|
-
|
|
8963
|
-
item.
|
|
8964
|
-
|
|
8965
|
-
|
|
8966
|
-
|
|
8967
|
-
|
|
8968
|
-
|
|
8969
|
-
|
|
8962
|
+
else {
|
|
8963
|
+
this.multiSelectOptions.forEach(item => {
|
|
8964
|
+
if (item.textContent.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {
|
|
8965
|
+
item.style.display = 'none';
|
|
8966
|
+
}
|
|
8967
|
+
else {
|
|
8968
|
+
isMatchFound = true;
|
|
8969
|
+
item.style.display = 'flex';
|
|
8970
|
+
}
|
|
8971
|
+
});
|
|
8972
|
+
}
|
|
8970
8973
|
const noResultsFoundExists = this.multiDropdown.lastChild.classList.contains(this.CLASS_NO_RESULTS_FOUND);
|
|
8971
8974
|
if (!isMatchFound && !noResultsFoundExists) {
|
|
8972
8975
|
this.multiDropdown.appendChild(this.noResultsFound);
|
|
@@ -8997,7 +9000,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
8997
9000
|
this.translate
|
|
8998
9001
|
.stream([SELECT_ALL_KEY, NO_RESULTS_FOUND_KEY])
|
|
8999
9002
|
.pipe(takeUntil(this.destroy$)).subscribe((translation) => {
|
|
9000
|
-
this.
|
|
9003
|
+
this.noResultsFoundText = translation[NO_RESULTS_FOUND_KEY];
|
|
9001
9004
|
if (this.checkboxLabel) {
|
|
9002
9005
|
this.checkboxLabel.lastElementChild.textContent = translation[SELECT_ALL_KEY];
|
|
9003
9006
|
}
|