@valtimo/dossier 12.18.0 → 12.19.0

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.
@@ -204,7 +204,11 @@ export class DossierListComponent {
204
204
  })), switchMap(([documentSearchRequest, assigneeFilter, searchValues, selectedStatuses, selectedCaseTags, _, hasEnvColumnConfig, hasApiColumnConfig, allStatuses,]) => {
205
205
  const obsEnv = of(hasEnvColumnConfig);
206
206
  const obsApi = of(hasApiColumnConfig);
207
- const statusKeys = selectedStatuses.map((status) => status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key);
207
+ const statusKeys =
208
+ // if no case statusses have been configured, prevent from sending the empty filter
209
+ allStatuses.length === 1
210
+ ? []
211
+ : selectedStatuses.map((status) => status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key);
208
212
  const caseTagsKeys = selectedCaseTags.map(caseTag => caseTag.key);
209
213
  if ((Object.keys(searchValues) || []).length > 0) {
210
214
  return forkJoin({
@@ -485,4 +489,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
485
489
  type: ViewChild,
486
490
  args: [Tabs]
487
491
  }] } });
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUVMLG1CQUFtQixFQUduQix3QkFBd0IsRUFJeEIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFXN0IsT0FBTyxFQUVMLGlDQUFpQyxFQUtqQyx1QkFBdUIsRUFHdkIsYUFBYSxHQUNkLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFNLElBQUksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUVGLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFDL0IsK0JBQStCLEdBQ2hDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGtDQUFrQyxHQUNu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O21HQUFwQixvQkFBb0IsK0NBWnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQiwwQkFBMEI7WUFDMUIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLHlCQUF5QjtZQUN6QixpQkFBaUI7U0FDbEIsc0VBR1UsbUJBQW1CLHVGQUNuQiwyQkFBMkIsZ0ZBQzNCLElBQUksZ0RDbkhqQixpNlFBbVBBOzs0RkRuSWEsb0JBQW9CO2tCQWhCaEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGlCQUFpQjtxQkFDbEI7MnBCQUcrQixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDVSxvQkFBb0I7c0JBQTNELFNBQVM7dUJBQUMsMkJBQTJCO2dCQUNyQixhQUFhO3NCQUE3QixTQUFTO3VCQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQnJlYWRjcnVtYlNlcnZpY2UsXG4gIENhcmJvbkxpc3RDb21wb25lbnQsXG4gIENhcmJvbkxpc3ROb1Jlc3VsdHNNZXNzYWdlLFxuICBDYXJib25QYWdpbmF0aW9uU2VsZWN0aW9uLFxuICBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVksXG4gIExpc3RGaWVsZCxcbiAgUGFnZVRpdGxlU2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXNzaWduZWVGaWx0ZXIsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERlZmluaXRpb25Db2x1bW4sXG4gIERpcmVjdGlvbixcbiAgRG9zc2llckxpc3RUYWIsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxufSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gIEFkdmFuY2VkRG9jdW1lbnRTZWFyY2hSZXF1ZXN0SW1wbCxcbiAgRG9jdW1lbnQsXG4gIERvY3VtZW50cyxcbiAgRG9jdW1lbnRTZXJ2aWNlLFxuICBJbnRlcm5hbENhc2VTdGF0dXMsXG4gIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLFxuICBTcGVjaWZpZWREb2N1bWVudHMsXG4gIENhc2VUYWcsXG4gIENhc2VUYWdzVXRpbHMsXG59IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7VGFiLCBUYWJzLCBUYWdUeXBlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7aXNFcXVhbH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkZWZhdWx0SWZFbXB0eSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgZm9ya0pvaW4sXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX0RPU1NJRVJfTElTVF9UQUJTLFxuICBET1NTSUVSX0xJU1RfTk9fUkVTVUxUU19NRVNTQUdFLFxuICBET1NTSUVSX0xJU1RfVEFCTEVfVFJBTlNMQVRJT05TLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQ0FOX0NSRUFURV9DQVNFX1BFUk1JU1NJT04sXG4gIENBTl9FWFBPUlRfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sXG4gIERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7XG4gIERvc3NpZXJCdWxrQXNzaWduU2VydmljZSxcbiAgRG9zc2llckNvbHVtblNlcnZpY2UsXG4gIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFNlYXJjaFNlcnZpY2UsXG4gIERvc3NpZXJMaXN0U2VydmljZSxcbiAgRG9zc2llckxpc3RTdGF0dXNTZXJ2aWNlLFxuICBEb3NzaWVyUGFyYW1ldGVyU2VydmljZSxcbiAgRG9zc2llckxpc3RDYXNlVGFnU2VydmljZSxcbiAgQ2FzZUV4cG9ydFNlcnZpY2UsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9zc2llckxpc3RBY3Rpb25zQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9zc2llckxpc3RTZXJ2aWNlLFxuICAgIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgICBEb3NzaWVyTGlzdENhc2VUYWdTZXJ2aWNlLFxuICAgIENhc2VFeHBvcnRTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXJib25MaXN0Q29tcG9uZW50KSBjYXJib25MaXN0OiBDYXJib25MaXN0Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudCkgbGlzdEFjdGlvbnNDb21wb25lbnQ6IERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChUYWJzKSB0YWJzQ29tcG9uZW50OiBUYWJzO1xuXG4gIHB1YmxpYyBhY3RpdmVUYWI6IERvc3NpZXJMaXN0VGFiID0gbnVsbDtcbiAgcHVibGljIGxvYWRpbmdGaWVsZHMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1BhZ2luYXRpb24gPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1NlYXJjaEZpZWxkcyA9IHRydWU7XG4gIHB1YmxpYyBsb2FkaW5nQXNzaWduZWVGaWx0ZXIgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ0RvY3VtZW50SXRlbXMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1N0YXR1c2VzID0gdHJ1ZTtcbiAgcHVibGljIHBhZ2luYXRpb24hOiBQYWdpbmF0aW9uO1xuICBwdWJsaWMgY2FuSGF2ZUFzc2lnbmVlITogYm9vbGVhbjtcbiAgcHVibGljIHZpc2libGVEb3NzaWVyVGFiczogQXJyYXk8RG9zc2llckxpc3RUYWI+IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBsb2FkaW5nRXhwb3J0ID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRUYWJzID0gREVGQVVMVF9ET1NTSUVSX0xJU1RfVEFCUztcbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlVHJhbnNsYXRpb25zID0gRE9TU0lFUl9MSVNUX1RBQkxFX1RSQU5TTEFUSU9OUztcblxuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRzTWVzc2FnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvbkxpc3ROb1Jlc3VsdHNNZXNzYWdlPihcbiAgICBET1NTSUVSX0xJU1RfTk9fUkVTVUxUU19NRVNTQUdFXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlU3RhcnRCdXR0b24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93QXNzaWduTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hhbmdlUGFnZU1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0NoYW5nZVRhYk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZUV4cG9ydEJ1dHRvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4gfCBudWxsPiA9XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvY3VtZW50U2VhcmNoRmllbGRzJC5waXBlKHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gZmFsc2UpKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c2VzJCA9IHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLnBpcGUoXG4gICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmdTdGF0dXNlcyA9IGZhbHNlKSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VUYWdzJCA9IHRoaXMuZG9zc2llckxpc3RDYXNlVGFnU2VydmljZS5jYXNlVGFncyQucGlwZShcbiAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZ1N0YXR1c2VzID0gZmFsc2UpKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRTdGF0dXNlcyQgPSB0aGlzLnN0YXR1c1NlcnZpY2Uuc2VsZWN0ZWRDYXNlU3RhdHVzZXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRDYXNlVGFncyQgPSB0aGlzLmRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2Uuc2VsZWN0ZWRDYXNlVGFncyQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREb2N1bWVudElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVtYSQgPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50RGVmaW5pdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiBkb2N1bWVudERlZmluaXRpb24/LnNjaGVtYSksXG4gICAgdGFwKHNjaGVtYSA9PiB7XG4gICAgICBpZiAoc2NoZW1hPy50aXRsZSkge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2Uuc2V0Q3VzdG9tUGFnZVRpdGxlKHNjaGVtYT8udGl0bGUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5DcmVhdGVEb2N1bWVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0NSRUFURV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgaWRlbnRpZmllcjogZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5FeHBvcnRDYXNlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25LZXkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9FWFBPUlRfQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgICBpZGVudGlmaWVyOiBjYXNlRGVmaW5pdGlvbktleSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VMaXN0KGNhc2VEZWZpbml0aW9uS2V5KSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoKFtjYW5FeHBvcnRQZXJtaXNzaW9uLCBjYXNlTGlzdF0pID0+IHtcbiAgICAgIGNvbnN0IGlzRXhwb3J0YWJsZUNvbHVtbnMgPSBjYXNlTGlzdC5zb21lKGNhc2VMaXN0aXRlbSA9PiBjYXNlTGlzdGl0ZW0uZXhwb3J0YWJsZSk7XG4gICAgICByZXR1cm4gb2YoY2FuRXhwb3J0UGVybWlzc2lvbiAmJiBpc0V4cG9ydGFibGVDb2x1bW5zKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hGaWVsZFZhbHVlcyQgPSB0aGlzLnBhcmFtZXRlclNlcnZpY2Uuc2VhcmNoRmllbGRWYWx1ZXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzaWduZWVGaWx0ZXIkOiBPYnNlcnZhYmxlPEFzc2lnbmVlRmlsdGVyPiA9XG4gICAgdGhpcy5hc3NpZ25lZVNlcnZpY2UuYXNzaWduZWVGaWx0ZXIkLnBpcGUoXG4gICAgICB0YXAoYXNzaWduZWVGaWx0ZXIgPT4gKHRoaXMuYWN0aXZlVGFiID0gYXNzaWduZWVGaWx0ZXIgYXMgRG9zc2llckxpc3RUYWIpKVxuICAgICk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0aW9uQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FyYm9uUGFnaW5hdGlvblNlbGVjdGlvbiB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFiQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9zc2llckxpc3RUYWIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnaW5hdGlvbiQgPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb24kLnBpcGUoXG4gICAgdGFwKHBhZ2luYXRpb24gPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gcGFnaW5hdGlvbjtcbiAgICAgIHRoaXMubG9hZGluZ1BhZ2luYXRpb24gPSBmYWxzZTtcbiAgICB9KVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNFbnZDb2x1bW5Db25maWckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5saXN0U2VydmljZS5oYXNFbnZDb2x1bW5Db25maWckO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNBcGlDb2x1bW5Db25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhbkhhdmVBc3NpZ25lZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmFzc2lnbmVlU2VydmljZS5jYW5IYXZlQXNzaWduZWUkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zJDogT2JzZXJ2YWJsZTxBcnJheTxEZWZpbml0aW9uQ29sdW1uPj4gPVxuICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuY29sdW1uU2VydmljZS5nZXREZWZpbml0aW9uQ29sdW1ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICB0aGlzLl9oYXNBcGlDb2x1bW5Db25maWckLm5leHQocmVzLmhhc0FwaUNvbmZpZyk7XG4gICAgICAgIHJldHVybiByZXMuY29sdW1ucztcbiAgICAgIH0pLFxuICAgICAgdGFwKGNvbHVtbnMgPT4ge1xuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2V0UGFnaW5hdGlvbihjb2x1bW5zKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dTdGF0dXNTZWxlY3RvciQgPSB0aGlzLnN0YXR1c1NlcnZpY2Uuc2hvd1N0YXR1c1NlbGVjdG9yJDtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDYXNlVGFnc1NlbGVjdG9yJCA9IHRoaXMuZG9zc2llckxpc3RDYXNlVGFnU2VydmljZS5zaG93Q2FzZVRhZ3NTZWxlY3RvciQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBJTlRFUk5BTF9TVEFUVVNfQ09MVU1OID0gJ2ludGVybmFsU3RhdHVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1RBR1NfQ09MVU1OID0gJ2Nhc2VUYWdzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdHVzRmllbGQ6IExpc3RGaWVsZCA9IHtcbiAgICBsYWJlbDogJ2RvY3VtZW50LnN0YXR1cycsXG4gICAga2V5OiB0aGlzLklOVEVSTkFMX1NUQVRVU19DT0xVTU4sXG4gICAgdmlld1R5cGU6IFZpZXdUeXBlLlRBR1MsXG4gICAgc29ydGFibGU6IHRydWUsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmFsU3RhdHVzS2V5cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXG4gICAgdGhpcy5JTlRFUk5BTF9TVEFUVVNfQ09MVU1OLFxuICBdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FzZVRhZ3NLZXlzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFt0aGlzLkNBU0VfVEFHU19DT0xVTU5dKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9jYW5IYXZlQXNzaWduZWUkLFxuICAgIHRoaXMuX2NvbHVtbnMkLFxuICAgIHRoaXMuX2hhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy5faGFzQXBpQ29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLnN0YXR1c2VzJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICB0YXAoKFtjYW5IYXZlQXNzaWduZWVdKSA9PiB7XG4gICAgICB0aGlzLmNhbkhhdmVBc3NpZ25lZSA9IGNhbkhhdmVBc3NpZ25lZTtcbiAgICB9KSxcbiAgICBtYXAoKFtjYW5IYXZlQXNzaWduZWUsIGNvbHVtbnMsIGhhc0VudkNvbmZpZywgaGFzQXBpQ29uZmlnLCBzdGF0dXNlc10pID0+IHtcbiAgICAgIHRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQubmV4dChbXG4gICAgICAgIC4uLnRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQuZ2V0VmFsdWUoKSxcbiAgICAgICAgLi4uY29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT5cbiAgICAgICAgICAgIGN1cnIucHJvcGVydHlOYW1lID09PSB0aGlzLklOVEVSTkFMX1NUQVRVU19DT0xVTU4gPyBbLi4uYWNjLCBjdXJyLnRyYW5zbGF0aW9uS2V5XSA6IGFjYyxcbiAgICAgICAgICBbXVxuICAgICAgICApLFxuICAgICAgXSk7XG4gICAgICB0aGlzLl9jYXNlVGFnc0tleXMkLm5leHQoW1xuICAgICAgICAuLi50aGlzLl9jYXNlVGFnc0tleXMkLmdldFZhbHVlKCksXG4gICAgICAgIC4uLmNvbHVtbnMucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+XG4gICAgICAgICAgICBjdXJyLnByb3BlcnR5TmFtZSA9PT0gdGhpcy5DQVNFX1RBR1NfQ09MVU1OID8gWy4uLmFjYywgY3Vyci50cmFuc2xhdGlvbktleV0gOiBhY2MsXG4gICAgICAgICAgW11cbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZmlsdGVyZWRBc3NpZ25lZUNvbHVtbnMgPSB0aGlzLmFzc2lnbmVlU2VydmljZS5maWx0ZXJBc3NpZ25lZUNvbHVtbnMoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxpc3RGaWVsZHMgPSB0aGlzLmNvbHVtblNlcnZpY2UubWFwRGVmaW5pdGlvbkNvbHVtbnNUb0xpc3RGaWVsZHMoXG4gICAgICAgIGZpbHRlcmVkQXNzaWduZWVDb2x1bW5zLFxuICAgICAgICBoYXNFbnZDb25maWcsXG4gICAgICAgIGhhc0FwaUNvbmZpZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpZWxkc1RvUmV0dXJuID0gdGhpcy5hc3NpZ25lZVNlcnZpY2UuYWRkQXNzaWduZWVMaXN0RmllbGQoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGxpc3RGaWVsZHMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHN0YXR1c2VzLnNvbWUoXG4gICAgICAgIChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSAhPT0gQ0FTRVNfV0lUSE9VVF9TVEFUVVNfS0VZXG4gICAgICApICYmICFoYXNBcGlDb25maWdcbiAgICAgICAgPyBbLi4uZmllbGRzVG9SZXR1cm4sIHRoaXMuX3N0YXR1c0ZpZWxkXVxuICAgICAgICA6IGZpZWxkc1RvUmV0dXJuO1xuICAgIH0pLFxuICAgIHRhcChsaXN0RmllbGRzID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRMaXN0RmllbGQgPSBsaXN0RmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuZGVmYXVsdCk7XG4gICAgICAvLyBzZXQgZGVmYXVsdCBzb3J0IHN0YXRlIGlmIG5vIHBhZ2luYXRpb24gcXVlcnkgcGFyYW1ldGVycyBmb3Igc29ydGluZyBhcmUgYXZhaWxhYmxlXG4gICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UucXVlcnlQYWdpbmF0aW9uUGFyYW1zJFxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKHF1ZXJ5UGFnaW5hdGlvblBhcmFtcyA9PiB7XG4gICAgICAgICAgaWYgKGRlZmF1bHRMaXN0RmllbGQgJiYgIXF1ZXJ5UGFnaW5hdGlvblBhcmFtcz8uc29ydD8uaXNTb3J0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgdHlwZW9mIGRlZmF1bHRMaXN0RmllbGQuZGVmYXVsdCA9PT0gJ3N0cmluZycgPyBkZWZhdWx0TGlzdEZpZWxkLmRlZmF1bHQgOiAnREVTQyc7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNvcnRDaGFuZ2VkKHtcbiAgICAgICAgICAgICAgaXNTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0ZToge25hbWU6IGRlZmF1bHRMaXN0RmllbGQua2V5LCBkaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gYXMgRGlyZWN0aW9ufSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0ZpZWxkcyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BhZ2luYXRpb24kLCB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3BhZ2luYXRpb25dKSA9PiAhIXBhZ2luYXRpb24pLFxuICAgICAgbWFwKChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZV0pID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhZ2luYXRpb24ucGFnZSAtIDE7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBwYWdlID49IDAgPyBwYWdlIDogMCxcbiAgICAgICAgICBwYWdpbmF0aW9uLnNpemUsXG4gICAgICAgICAgcGFnaW5hdGlvbi5zb3J0XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPiA9IHRoaXMubGlzdFNlcnZpY2UuY2hlY2tSZWZyZXNoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2RvY3VtZW50U2VhcmNoUmVxdWVzdCQsXG4gICAgICAgIHRoaXMuYXNzaWduZWVGaWx0ZXIkLFxuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkVmFsdWVzJCxcbiAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNlbGVjdGVkQ2FzZVN0YXR1c2VzJCxcbiAgICAgICAgdGhpcy5kb3NzaWVyTGlzdENhc2VUYWdTZXJ2aWNlLnNlbGVjdGVkQ2FzZVRhZ3MkLFxuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCQsXG4gICAgICAgIHRoaXMuX2hhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgICAgIHRoaXMuX2hhc0FwaUNvbHVtbkNvbmZpZyQsXG4gICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLFxuICAgICAgICB0aGlzLmRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2UuY2FzZVRhZ3MkLFxuICAgICAgXSkucGlwZShkZWJvdW5jZVRpbWUoNTApKVxuICAgICksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAoXG4gICAgICAgIFtcbiAgICAgICAgICBwcmV2U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICBwcmV2QXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgcHJldlNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgIHByZXZTZWxlY3RlZFN0YXR1c2VzLFxuICAgICAgICAgIHByZXZDYXNlVGFncyxcbiAgICAgICAgICBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgIGN1cnJTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICBjdXJyU2VsZWN0ZWRTdGF0dXNlcyxcbiAgICAgICAgICBjdXJyQ2FzZVRhZ3MsXG4gICAgICAgICAgY3VyckZvcmNlUmVmcmVzaCxcbiAgICAgICAgXVxuICAgICAgKSA9PlxuICAgICAgICBpc0VxdWFsKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgYXNzaWduZWU6IHByZXZBc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICAgIC4uLnByZXZTZWxlY3RlZFN0YXR1c2VzLm1hcCgoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+IHN0YXR1cy5rZXkpLFxuICAgICAgICAgICAgLi4ucHJldkNhc2VUYWdzLm1hcCgoY2FzZVRhZzogQ2FzZVRhZykgPT4gY2FzZVRhZy5rZXkpLFxuICAgICAgICAgICAgZm9yY2VSZWZyZXNoOiBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICBhc3NpZ25lZTogY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgLi4uY3VyclNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgICAgLi4uY3VyclNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSksXG4gICAgICAgICAgICAuLi5jdXJyQ2FzZVRhZ3MubWFwKChjYXNlVGFnOiBDYXNlVGFnKSA9PiBjYXNlVGFnLmtleSksXG4gICAgICAgICAgICBmb3JjZVJlZnJlc2g6IGN1cnJGb3JjZVJlZnJlc2gsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoXG4gICAgICAoW1xuICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICBzZWFyY2hWYWx1ZXMsXG4gICAgICAgIHNlbGVjdGVkU3RhdHVzZXMsXG4gICAgICAgIHNlbGVjdGVkQ2FzZVRhZ3MsXG4gICAgICAgIF8sXG4gICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyxcbiAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnLFxuICAgICAgICBhbGxTdGF0dXNlcyxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgY29uc3Qgb2JzRW52OiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzRW52Q29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgb2JzQXBpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzQXBpQ29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzS2V5czogKHN0cmluZyB8IG51bGwpW10gPSBzZWxlY3RlZFN0YXR1c2VzLm1hcCgoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+XG4gICAgICAgICAgc3RhdHVzLmtleSA9PT0gQ0FTRVNfV0lUSE9VVF9TVEFUVVNfS0VZID8gbnVsbCA6IHN0YXR1cy5rZXlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2FzZVRhZ3NLZXlzID0gc2VsZWN0ZWRDYXNlVGFncy5tYXAoY2FzZVRhZyA9PiBjYXNlVGFnLmtleSk7XG4gICAgICAgIGlmICgoT2JqZWN0LmtleXMoc2VhcmNoVmFsdWVzKSB8fCBbXSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICAgICAgICBkb2N1bWVudHM6XG4gICAgICAgICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyB8fCAhaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UubWFwU2VhcmNoVmFsdWVzVG9GaWx0ZXJzKHNlYXJjaFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0tleXMsXG4gICAgICAgICAgICAgICAgICAgIGNhc2VUYWdzS2V5c1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0U3BlY2lmaWVkRG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLm1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhzZWFyY2hWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNLZXlzLFxuICAgICAgICAgICAgICAgICAgICBjYXNlVGFnc0tleXNcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBoYXNFbnZDb2x1bW5Db25maWc6IG9ic0VudixcbiAgICAgICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZzogb2JzQXBpLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IG9mKHRydWUpLFxuICAgICAgICAgICAgYWxsU3RhdHVzZXM6IG9mKGFsbFN0YXR1c2VzKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICAgICAgZG9jdW1lbnRzOlxuICAgICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnIHx8ICFoYXNBcGlDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5cyxcbiAgICAgICAgICAgICAgICAgIGNhc2VUYWdzS2V5c1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRTcGVjaWZpZWREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5cyxcbiAgICAgICAgICAgICAgICAgIGNhc2VUYWdzS2V5c1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnOiBvYnNFbnYsXG4gICAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnOiBvYnNBcGksXG4gICAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IG9mKGZhbHNlKSxcbiAgICAgICAgICBhbGxTdGF0dXNlczogb2YoYWxsU3RhdHVzZXMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApLFxuICAgIHN3aXRjaE1hcChyZXMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBvZihyZXMpLFxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICByZXMuZG9jdW1lbnRzLmNvbnRlbnQubWFwKGRvY3VtZW50ID0+XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlXG4gICAgICAgICAgICAgIC5yZXF1ZXN0UGVybWlzc2lvbihDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogZG9jdW1lbnQuaWQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoZGVmYXVsdElmRW1wdHkoW10gYXMgYm9vbGVhbltdKSksXG4gICAgICAgIHRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQsXG4gICAgICAgIHRoaXMuX2Nhc2VUYWdzS2V5cyQsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbcmVzLCBkb2N1bWVudHNBdXRob3JpemF0aW9uLCBzdGF0dXNDb2x1bW5LZXlzLCBjYXNlVGFnc0tleXNdKSA9PiAoe1xuICAgICAgLi4ucmVzLFxuICAgICAgZG9jdW1lbnRzOiB7XG4gICAgICAgIC4uLnJlcy5kb2N1bWVudHMsXG4gICAgICAgIGNvbnRlbnQ6IHJlcy5kb2N1bWVudHMuY29udGVudC5tYXAoKGRvY3VtZW50LCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAuLi5kb2N1bWVudCxcbiAgICAgICAgICBsb2NrZWQ6ICFkb2N1bWVudHNBdXRob3JpemF0aW9uW2luZGV4XSxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHN0YXR1c0NvbHVtbktleXMsXG4gICAgICBjYXNlVGFnc0tleXMsXG4gICAgfSkpLFxuICAgIG1hcChcbiAgICAgIChyZXM6IHtcbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHM7XG4gICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZzogYm9vbGVhbjtcbiAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnOiBib29sZWFuO1xuICAgICAgICBpc1NlYXJjaFJlc3VsdDogYm9vbGVhbjtcbiAgICAgICAgc2VsZWN0ZWRTdGF0dXNlczogSW50ZXJuYWxDYXNlU3RhdHVzW107XG4gICAgICAgIGFsbFN0YXR1c2VzOiBJbnRlcm5hbENhc2VTdGF0dXNbXTtcbiAgICAgICAgc3RhdHVzQ29sdW1uS2V5czogc3RyaW5nW107XG4gICAgICAgIGNhc2VUYWdzS2V5czogc3RyaW5nW107XG4gICAgICB9KSA9PiB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2V0Q29sbGVjdGlvblNpemUocmVzLmRvY3VtZW50cyk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY2hlY2tQYWdlKHJlcy5kb2N1bWVudHMpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UocmVzLmlzU2VhcmNoUmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB0aGlzLmxpc3RTZXJ2aWNlLm1hcERvY3VtZW50cyhcbiAgICAgICAgICAgIHJlcy5kb2N1bWVudHMsXG4gICAgICAgICAgICByZXMuaGFzRW52Q29sdW1uQ29uZmlnLFxuICAgICAgICAgICAgcmVzLmhhc0FwaUNvbHVtbkNvbmZpZ1xuICAgICAgICAgICksXG4gICAgICAgICAgc3RhdHVzZXM6IHJlcy5hbGxTdGF0dXNlcyxcbiAgICAgICAgICBzdGF0dXNDb2x1bW5LZXlzOiByZXMuc3RhdHVzQ29sdW1uS2V5cyxcbiAgICAgICAgICBjYXNlVGFnc0tleXM6IHJlcy5jYXNlVGFnc0tleXMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgKSxcbiAgICBtYXAocmVzID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXMuZGF0YSkpIHJldHVybiByZXMuZGF0YTtcbiAgICAgIHRoaXMuZGlzYWJsZUV4cG9ydEJ1dHRvbiQubmV4dChyZXMuZGF0YS5sZW5ndGggPT09IDAgPyB0cnVlIDogZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlcy5kYXRhLm1hcChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGVkSW50ZXJuYWxTdGF0dXNDb2x1bW5zID0gcmVzLnN0YXR1c0NvbHVtbktleXMucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZXMuc3RhdHVzZXMuZmluZChcbiAgICAgICAgICAgIChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSA9PT0gaXRlbVtjdXJyXSB8fCBzdGF0dXMua2V5ID09PSBpdGVtLnN0YXR1c1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuICFzdGF0dXNcbiAgICAgICAgICAgID8gYWNjXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgW2N1cnJdOiB7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBzdGF0dXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBJbnRlcm5hbENhc2VTdGF0dXNVdGlscy5nZXRUYWdUeXBlRnJvbUludGVybmFsQ2FzZVN0YXR1c0NvbG9yKHN0YXR1cy5jb2xvciksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBjb25zdCBtYXBwZWRUYWdDb2x1bW5zID0gcmVzLmNhc2VUYWdzS2V5cy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChpdGVtW2N1cnJdKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtjdXJyXTogaXRlbVtjdXJyXS5tYXAodGFnID0+ICh7XG4gICAgICAgICAgICAgICAgY29udGVudDogdGFnLnRpdGxlLFxuICAgICAgICAgICAgICAgIHR5cGU6IENhc2VUYWdzVXRpbHMuZ2V0VGFnVHlwZUZyb21DYXNlVGFnQ29sb3IodGFnLmNvbG9yKSxcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAuLi5tYXBwZWRJbnRlcm5hbFN0YXR1c0NvbHVtbnMsXG4gICAgICAgICAgLi4ubWFwcGVkVGFnQ29sdW1ucyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmdBc3NpZ25lZUZpbHRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkaW5nRG9jdW1lbnRJdGVtcyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lITogc3RyaW5nO1xuICBwcml2YXRlIF9kb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXNzaWduZWVTZXJ2aWNlOiBEb3NzaWVyTGlzdEFzc2lnbmVlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1bGtBc3NpZ25TZXJ2aWNlOiBEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5TZXJ2aWNlOiBEb3NzaWVyQ29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5hdGlvblNlcnZpY2U6IERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTZXJ2aWNlOiBEb3NzaWVyUGFyYW1ldGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZTogRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1NlcnZpY2U6IERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2U6IERvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRXhwb3J0U2VydmljZTogQ2FzZUV4cG9ydFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZpc2libGVUYWJzKCk7XG4gICAgdGhpcy5vcGVuRG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaChzZWFyY2hGaWVsZFZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgcm93Q2xpY2soaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuY2FjaGVRdWVyeVBhcmFtcyhcbiAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9YCxcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1xuICAgICAgKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXJzLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX0vZG9jdW1lbnQvJHtpdGVtLmlkfWBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0YWJDaGFuZ2UodGFiOiBEb3NzaWVyTGlzdFRhYik6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3RpdmVUYWIpIHtcbiAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICAgICAgdGhpcy51cGRhdGVOb1Jlc3VsdHNNZXNzYWdlKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVUYWIudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYXJib25MaXN0Lm1vZGVsLnNlbGVjdGVkUm93c0NvdW50KCkpIHtcbiAgICAgIHRoaXMuc2hvd0NoYW5nZVRhYk1vZGFsJC5uZXh0KHRydWUpO1xuICAgICAgdGhpcy50YWJDaGFuZ2UkLm5leHQodGFiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlVGFiQ29uZmlybSh0YWIpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlVGFiQ2FuY2VsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldlRhYjogVGFiIHwgdW5kZWZpbmVkID0gdGhpcy50YWJzQ29tcG9uZW50LnRhYnMuZmluZChcbiAgICAgICh0YWI6IFRhYikgPT4gdGFiLmlkID09PSB0aGlzLmFjdGl2ZVRhYlxuICAgICk7XG5cbiAgICBpZiAoIXByZXZUYWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRhYnNDb21wb25lbnQudGFicy5maW5kKCh0YWI6IFRhYikgPT4gdGFiLmFjdGl2ZSkuYWN0aXZlID0gZmFsc2U7XG4gICAgcHJldlRhYi5hY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FyYm9uTGlzdD8ubW9kZWwuc2VsZWN0ZWRSb3dzQ291bnQoKSkge1xuICAgICAgdGhpcy5zaG93Q2hhbmdlUGFnZU1vZGFsJC5uZXh0KHRydWUpO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlJC5uZXh0KHtwYWdlLCBzaXplOiB0aGlzLnBhZ2luYXRpb24uc2l6ZX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2VDaGFuZ2UocGFnZSk7XG4gIH1cblxuICBwdWJsaWMgcGFnZVNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FyYm9uTGlzdD8ubW9kZWwuc2VsZWN0ZWRSb3dzQ291bnQoKSkge1xuICAgICAgdGhpcy5zaG93Q2hhbmdlUGFnZU1vZGFsJC5uZXh0KHRydWUpO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlJC5uZXh0KHtwYWdlOiB0aGlzLnBhZ2luYXRpb24ucGFnZSwgc2l6ZX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2VTaXplQ2hhbmdlKHNpemUpO1xuICB9XG5cbiAgcHVibGljIHNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zb3J0Q2hhbmdlZChuZXdTb3J0U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVRhYkNvbmZpcm0odGFiOiBEb3NzaWVyTGlzdFRhYik6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICB0aGlzLnVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2V0UGFnZSgxKTtcbiAgICB0aGlzLmFzc2lnbmVlU2VydmljZS5zZXRBc3NpZ25lZUZpbHRlcih0YWIpO1xuICB9XG5cbiAgcHVibGljIHNob3dBc3NpZ25Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnRJZHMkLm5leHQoXG4gICAgICB0aGlzLmNhcmJvbkxpc3Quc2VsZWN0ZWRJdGVtcy5tYXAoKGRvY3VtZW50OiBEb2N1bWVudCkgPT4gZG9jdW1lbnQuaWQpXG4gICAgKTtcbiAgICB0aGlzLnNob3dBc3NpZ25Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlRXZlbnQoYXNzaWduZWVJZDogbnVsbCB8IHN0cmluZywgZG9jdW1lbnRJZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QXNzaWduTW9kYWwkLm5leHQoZmFsc2UpO1xuICAgIGlmICghYXNzaWduZWVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVsa0Fzc2lnblNlcnZpY2UuYnVsa0Fzc2lnbihhc3NpZ25lZUlkLCBkb2N1bWVudElkcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9yY2VSZWZyZXNoKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VQYWdlQ29uZmlybShwYWdpbmF0aW9uOiBDYXJib25QYWdpbmF0aW9uU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKHBhZ2luYXRpb24uc2l6ZSAhPT0gdGhpcy5wYWdpbmF0aW9uLnNpemUpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZVNpemVDaGFuZ2UocGFnaW5hdGlvbi5zaXplKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2VDaGFuZ2UocGFnaW5hdGlvbi5wYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydERvc3NpZXIoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0QWN0aW9uc0NvbXBvbmVudC5zdGFydERvc3NpZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBleHBvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRXhwb3J0U2VydmljZVxuICAgICAgLmRvd25sb2FkRXhwb3J0KClcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiAodGhpcy5sb2FkaW5nRXhwb3J0ID0gZGF0YS5pc0xvYWRpbmcpKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JjZVJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5saXN0U2VydmljZS5mb3JjZVJlZnJlc2goKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkU3RhdHVzZXNDaGFuZ2Uoc3RhdHVzZXM6IEludGVybmFsQ2FzZVN0YXR1c1tdKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNldFNlbGVjdGVkU3RhdHVzZXMoc3RhdHVzZXMpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRDYXNlVGFnc0NoYW5nZShjYXNlVGFnczogQ2FzZVRhZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyTGlzdENhc2VUYWdTZXJ2aWNlLnNldFNlbGVjdGVkQ2FzZVRhZ3MoY2FzZVRhZ3MpO1xuICB9XG5cbiAgcHVibGljIG9uU3RhcnRCdXR0b25EaXNhYmxlRXZlbnQoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVTdGFydEJ1dHRvbiQubmV4dChkaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Eb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnBhcmFtc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocGFyYW1zOiBQYXJhbXMpID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0b25OYW1lID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzRG9jdW1lbnREZWZpbml0aW9uTmFtZSkge1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5jbGVhclBhcmFtZXRlcnMoKTtcbiAgICAgICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuY2xlYXJTZWFyY2hGaWVsZFZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzRG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IGRvY3VtZW50RGVmaW5pdG9uTmFtZTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jbGVhclBhZ2luYXRpb24oKTtcbiAgICAgICAgdGhpcy5hc3NpZ25lZVNlcnZpY2UucmVzZXRBc3NpZ25lZUZpbHRlcigpO1xuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLnNldERvY3VtZW50RGVmaW5pdGlvbk5hbWUoZG9jdW1lbnREZWZpbml0b25OYW1lKTtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdGaWVsZHMgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ1BhZ2luYXRpb24gPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ1NlYXJjaEZpZWxkcyA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nQXNzaWduZWVGaWx0ZXIgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ0RvY3VtZW50SXRlbXMgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ1N0YXR1c2VzID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlzaWJsZVRhYnMoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlRG9zc2llclRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlRG9zc2llckxpc3RUYWJzIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UoaXNTZWFyY2hSZXN1bHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm5vUmVzdWx0c01lc3NhZ2UkLm5leHQoXG4gICAgICBpc1NlYXJjaFJlc3VsdFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZG9zc2llci5ub1Jlc3VsdHMuc2VhcmNoLmRlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIGlzU2VhcmNoUmVzdWx0LFxuICAgICAgICAgICAgdGl0bGU6ICdkb3NzaWVyLm5vUmVzdWx0cy5zZWFyY2gudGl0bGUnLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYGRvc3NpZXIubm9SZXN1bHRzLiR7dGhpcy5hY3RpdmVUYWIgPz8gJ0FMTCd9LmRlc2NyaXB0aW9uYCxcbiAgICAgICAgICAgIGlzU2VhcmNoUmVzdWx0LFxuICAgICAgICAgICAgdGl0bGU6IGBkb3NzaWVyLm5vUmVzdWx0cy4ke3RoaXMuYWN0aXZlVGFiID8/ICdBTEwnfS50aXRsZWAsXG4gICAgICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBmaWVsZHM6IGZpZWxkcyQgfCBhc3luYyxcbiAgICBkb2N1bWVudEl0ZW1zOiBkb2N1bWVudEl0ZW1zJCB8IGFzeW5jLFxuICAgIG5vUmVzdWx0c01lc3NhZ2U6IG5vUmVzdWx0c01lc3NhZ2UkIHwgYXN5bmMsXG4gICAgc2VhcmNoRmllbGRzOiBzZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgc2NoZW1hOiBzY2hlbWEkIHwgYXN5bmMsXG4gICAgc2hvd0Fzc2lnbk1vZGFsOiBzaG93QXNzaWduTW9kYWwkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWREb2N1bWVudElkczogc2VsZWN0ZWREb2N1bWVudElkcyQgfCBhc3luYyxcbiAgICBzdGF0dXNlczogc3RhdHVzZXMkIHwgYXN5bmMsXG4gICAgY2FzZVRhZ3M6IGNhc2VUYWdzJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkU3RhdHVzZXM6IHNlbGVjdGVkU3RhdHVzZXMkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRDYXNlVGFnczogc2VsZWN0ZWRDYXNlVGFncyQgfCBhc3luYyxcbiAgICBzaG93U3RhdHVzU2VsZWN0b3I6IHNob3dTdGF0dXNTZWxlY3RvciQgfCBhc3luYyxcbiAgICBzaG93Q2FzZVRhZ3NTZWxlY3Rvcjogc2hvd0Nhc2VUYWdzU2VsZWN0b3IkIHwgYXN5bmMsXG4gICAgbG9hZGVkOlxuICAgICAgIWxvYWRpbmdGaWVsZHMgJiZcbiAgICAgICFsb2FkaW5nUGFnaW5hdGlvbiAmJlxuICAgICAgIWxvYWRpbmdTZWFyY2hGaWVsZHMgJiZcbiAgICAgICFsb2FkaW5nQXNzaWduZWVGaWx0ZXIgJiZcbiAgICAgICFsb2FkaW5nRG9jdW1lbnRJdGVtcyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50IHB0LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTAgbWItNVwiPlxuICAgICAgICA8dmFsdGltby1kb3NzaWVyLWxpc3QtYWN0aW9uc1xuICAgICAgICAgIFtsb2FkaW5nXT1cIiFvYnMubG9hZGVkXCJcbiAgICAgICAgICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJmb3JjZVJlZnJlc2goKVwiXG4gICAgICAgICAgKHN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50KT1cIm9uU3RhcnRCdXR0b25EaXNhYmxlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgID48L3ZhbHRpbW8tZG9zc2llci1saXN0LWFjdGlvbnM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hGaWVsZHM7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRlZDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1bGtBc3NpZ25Nb2RhbDsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGFuZ2VQYWdlTW9kYWxcIj48L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhbmdlVGFiTW9kYWxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkcyBsZXQtb2JzPVwib2JzXCI+XG4gIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgPHZhbHRpbW8tc2VhcmNoLWZpZWxkc1xuICAgICAgW3NlYXJjaEZpZWxkc109XCJvYnMuc2VhcmNoRmllbGRzXCJcbiAgICAgIChkb1NlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJkb2N1bWVudERlZmluaXRpb25OYW1lJCB8IGFzeW5jXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVzXT1cInNlYXJjaEZpZWxkVmFsdWVzJCB8IGFzeW5jXCJcbiAgICAgIFtpbnB1dERpc2FibGVkXT1cIiFvYnMubG9hZGVkXCJcbiAgICAgIFtleHRlcm5hbFNlYXJjaEZpZWxkXT1cIm9icy5zaG93U3RhdHVzU2VsZWN0b3JcIlxuICAgID5cbiAgICAgIDx2YWx0aW1vLXN0YXR1cy1zZWxlY3RvclxuICAgICAgICAqbmdJZj1cIm9icy5zaG93U3RhdHVzU2VsZWN0b3JcIlxuICAgICAgICBbc3RhdHVzZXNdPVwib2JzLnN0YXR1c2VzXCJcbiAgICAgICAgW3NlbGVjdGVkU3RhdHVzZXNdPVwib2JzLnNlbGVjdGVkU3RhdHVzZXNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIW9icy5sb2FkZWRcIlxuICAgICAgICAoc2VsZWN0ZWRTdGF0dXNlc0NoYW5nZUV2ZW50KT1cIm9uU2VsZWN0ZWRTdGF0dXNlc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3ZhbHRpbW8tc3RhdHVzLXNlbGVjdG9yPlxuXG4gICAgICA8dmFsdGltby1jYXNlLXRhZ3Mtc2VsZWN0b3JcbiAgICAgICAgKm5nSWY9XCJvYnMuc2hvd0Nhc2VUYWdzU2VsZWN0b3JcIlxuICAgICAgICBbY2FzZVRhZ3NdPVwib2JzLmNhc2VUYWdzXCJcbiAgICAgICAgW3NlbGVjdGVkQ2FzZVRhZ3NdPVwib2JzLnNlbGVjdGVkQ2FzZVRhZ3NcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIW9icy5sb2FkZWRcIlxuICAgICAgICAoc2VsZWN0ZWRDYXNlVGFnc0NoYW5nZUV2ZW50KT1cIm9uU2VsZWN0ZWRDYXNlVGFnc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3ZhbHRpbW8tY2FzZS10YWdzLXNlbGVjdG9yPlxuICAgIDwvdmFsdGltby1zZWFyY2gtZmllbGRzPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICBbaGVhZGVyXT1cImZhbHNlXCJcbiAgICBbaW5pdGlhbFNvcnRTdGF0ZV09XCJwYWdpbmF0aW9uLnNvcnRcIlxuICAgIFtpdGVtc109XCJvYnMuZG9jdW1lbnRJdGVtc1wiXG4gICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb3NzaWVyTGlzdFwiXG4gICAgbG9ja2VkVG9vbHRpcFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5yb3dMb2NrZWRcIlxuICAgIFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cImNhbkhhdmVBc3NpZ25lZVwiXG4gICAgW3RhYmxlVHJhbnNsYXRpb25zXT1cInRhYmxlVHJhbnNsYXRpb25zXCJcbiAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocGFnaW5hdGlvblNldCk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGNhcmJvblRvb2xiYXJBY3Rpb25zPlxuICAgICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNob3dBc3NpZ25Nb2RhbCgpXCI+XG4gICAgICAgIHt7ICdkb3NzaWVyLmJ1bGtBc3NpZ24uYXNzaWduJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRvc3NpZXJMaXN0QWN0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5pc1NlYXJjaFJlc3VsdCA/IG51bGwgOiBlbXB0eVJlc3VsdERvc3NpZXJMaXN0QWN0aW9uc1wiXG4gICAgICBbZGVzY3JpcHRpb25dPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIm9icy5ub1Jlc3VsdHNNZXNzYWdlLnRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG5cbiAgICA8ZGl2IHRhYnMgKm5nSWY9XCJjYW5IYXZlQXNzaWduZWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFicz5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzc2lnbmVlRmlsdGVyJCB8IGFzeW5jIGFzIGFzc2lnbmVlRmlsdGVyXCI+XG4gICAgPGNkcy10YWJzXG4gICAgICAqbmdJZj1cIiF2aXNpYmxlRG9zc2llclRhYnM7IGVsc2UgY29uZmlndXJlZFRhYnNcIlxuICAgICAgdHlwZT1cImNvbnRhaW5lZFwiXG4gICAgICBjbGFzcz1cImRvc3NpZXItbGlzdC10YWJzXCJcbiAgICA+XG4gICAgICA8Y2RzLXRhYlxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIGRlZmF1bHRUYWJzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICBbYWN0aXZlXT1cImFzc2lnbmVlRmlsdGVyID09PSB0YWJcIlxuICAgICAgICBoZWFkaW5nPVwie3sgJ2Rvc3NpZXIudGFicy4nICsgdGFiIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2lkXT1cInRhYlwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgICA+PC9jZHMtdGFiPlxuICAgIDwvY2RzLXRhYnM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb25maWd1cmVkVGFicz5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzc2lnbmVlRmlsdGVyJCB8IGFzeW5jIGFzIGFzc2lnbmVlRmlsdGVyXCI+XG4gICAgPGNkcy10YWJzIHR5cGU9XCJjb250YWluZWRcIiBjbGFzcz1cImRvc3NpZXItbGlzdC10YWJzXCI+XG4gICAgICA8Y2RzLXRhYlxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHZpc2libGVEb3NzaWVyVGFiczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCJcbiAgICAgICAgW2FjdGl2ZV09XCJhc3NpZ25lZUZpbHRlciA9PT0gdGFiXCJcbiAgICAgICAgaGVhZGluZz1cInt7ICdkb3NzaWVyLnRhYnMuJyArIHRhYiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtpZF09XCJ0YWJcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwidGFiQ2hhbmdlKHRhYilcIlxuICAgICAgPjwvY2RzLXRhYj5cbiAgICA8L2Nkcy10YWJzPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1xuICA+PHZhbHRpbW8tY2FyYm9uLWxpc3QgW2xvYWRpbmddPVwidHJ1ZVwiPlxuICAgIDxkaXYgdGFicyAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj4gPC92YWx0aW1vLWNhcmJvbi1saXN0XG4+PC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidWxrQXNzaWduTW9kYWwgbGV0LW9icz1cIm9ic1wiPlxuICA8dmFsdGltby1kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsXG4gICAgW2RvY3VtZW50SWRzXT1cIm9icy5zZWxlY3RlZERvY3VtZW50SWRzXCJcbiAgICBbb3Blbl09XCJvYnMuc2hvd0Fzc2lnbk1vZGFsXCJcbiAgICAoY2xvc2VFdmVudCk9XCJvbkNsb3NlRXZlbnQoJGV2ZW50LCBvYnMuc2VsZWN0ZWREb2N1bWVudElkcylcIlxuICA+PC92YWx0aW1vLWRvc3NpZXItYnVsay1hc3NpZ24tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NoYW5nZVBhZ2VNb2RhbD5cbiAgPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlUGFnZU1vZGFsLmNvbmZpcm1cIlxuICAgIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlUGFnZU1vZGFsLmNvbnRlbnRcIlxuICAgIFtvdXRwdXRPbkNvbmZpcm1dPVwicGFnaW5hdGlvbkNoYW5nZSQgfCBhc3luY1wiXG4gICAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dDaGFuZ2VQYWdlTW9kYWwkXCJcbiAgICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VQYWdlTW9kYWwudGl0bGVcIlxuICAgIChjb25maXJtRXZlbnQpPVwib25DaGFuZ2VQYWdlQ29uZmlybSgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NoYW5nZVRhYk1vZGFsPlxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VUYWJNb2RhbC5jb25maXJtXCJcbiAgICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVRhYk1vZGFsLmNvbnRlbnRcIlxuICAgIFtvdXRwdXRPbkNvbmZpcm1dPVwidGFiQ2hhbmdlJCB8IGFzeW5jXCJcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0NoYW5nZVRhYk1vZGFsJFwiXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlVGFiTW9kYWwudGl0bGVcIlxuICAgIChjYW5jZWxFdmVudCk9XCJvbkNoYW5nZVRhYkNhbmNlbCgpXCJcbiAgICAoY29uZmlybUV2ZW50KT1cIm9uQ2hhbmdlVGFiQ29uZmlybSgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rvc3NpZXJMaXN0QWN0aW9ucz5cbiAgPGNkcy10b29sdGlwXG4gICAgKm5nSWY9XCJjYW5FeHBvcnRDYXNlJCB8IGFzeW5jXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIuZXhwb3J0QnV0dG9uVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAgPGNkcy1sb2FkaW5nICpuZ0lmPVwibG9hZGluZ0V4cG9ydFwiIHNpemU9XCJzbVwiIGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9jZHMtbG9hZGluZz5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWxvYWRpbmdFeHBvcnRcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJjYXNlLWxpc3QtZXhwb3J0LWJ1dHRvblwiXG4gICAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgICBpY29uT25seT1cInRydWVcIlxuICAgICAgKGNsaWNrKT1cImV4cG9ydCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlRXhwb3J0QnV0dG9uJCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZG93bmxvYWRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9jZHMtdG9vbHRpcD5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJjYW5DcmVhdGVEb2N1bWVudCQgfCBhc3luY1wiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVTdGFydEJ1dHRvbiQgfCBhc3luY1wiXG4gICAgKGNsaWNrKT1cInN0YXJ0RG9zc2llcigpXCJcbiAgPlxuICAgIHt7ICdTdGFydCBEb3NzaWVyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlSZXN1bHREb3NzaWVyTGlzdEFjdGlvbnM+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cImNhbkNyZWF0ZURvY3VtZW50JCB8IGFzeW5jXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVN0YXJ0QnV0dG9uJCB8IGFzeW5jXCJcbiAgICAoY2xpY2spPVwic3RhcnREb3NzaWVyKClcIlxuICA+XG4gICAge3sgJ1N0YXJ0IERvc3NpZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUVMLG1CQUFtQixFQUduQix3QkFBd0IsRUFJeEIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFXN0IsT0FBTyxFQUVMLGlDQUFpQyxFQUtqQyx1QkFBdUIsRUFHdkIsYUFBYSxHQUNkLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFNLElBQUksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUVGLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFDL0IsK0JBQStCLEdBQ2hDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGtDQUFrQyxHQUNu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QUFxQixJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssUUFBUTthQUM1RCxDQUNOLENBQUM7SUFDSixDQUFDOytHQW5wQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsK0NBWnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQiwwQkFBMEI7WUFDMUIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLHlCQUF5QjtZQUN6QixpQkFBaUI7U0FDbEIsc0VBR1UsbUJBQW1CLHVGQUNuQiwyQkFBMkIsZ0ZBQzNCLElBQUksZ0RDbkhqQixpNlFBbVBBOzs0RkRuSWEsb0JBQW9CO2tCQWhCaEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGlCQUFpQjtxQkFDbEI7MnBCQUcrQixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDVSxvQkFBb0I7c0JBQTNELFNBQVM7dUJBQUMsMkJBQTJCO2dCQUNyQixhQUFhO3NCQUE3QixTQUFTO3VCQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQnJlYWRjcnVtYlNlcnZpY2UsXG4gIENhcmJvbkxpc3RDb21wb25lbnQsXG4gIENhcmJvbkxpc3ROb1Jlc3VsdHNNZXNzYWdlLFxuICBDYXJib25QYWdpbmF0aW9uU2VsZWN0aW9uLFxuICBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVksXG4gIExpc3RGaWVsZCxcbiAgUGFnZVRpdGxlU2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXNzaWduZWVGaWx0ZXIsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERlZmluaXRpb25Db2x1bW4sXG4gIERpcmVjdGlvbixcbiAgRG9zc2llckxpc3RUYWIsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxufSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gIEFkdmFuY2VkRG9jdW1lbnRTZWFyY2hSZXF1ZXN0SW1wbCxcbiAgRG9jdW1lbnQsXG4gIERvY3VtZW50cyxcbiAgRG9jdW1lbnRTZXJ2aWNlLFxuICBJbnRlcm5hbENhc2VTdGF0dXMsXG4gIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLFxuICBTcGVjaWZpZWREb2N1bWVudHMsXG4gIENhc2VUYWcsXG4gIENhc2VUYWdzVXRpbHMsXG59IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7VGFiLCBUYWJzLCBUYWdUeXBlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7aXNFcXVhbH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkZWZhdWx0SWZFbXB0eSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgZm9ya0pvaW4sXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX0RPU1NJRVJfTElTVF9UQUJTLFxuICBET1NTSUVSX0xJU1RfTk9fUkVTVUxUU19NRVNTQUdFLFxuICBET1NTSUVSX0xJU1RfVEFCTEVfVFJBTlNMQVRJT05TLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQ0FOX0NSRUFURV9DQVNFX1BFUk1JU1NJT04sXG4gIENBTl9FWFBPUlRfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sXG4gIERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7XG4gIERvc3NpZXJCdWxrQXNzaWduU2VydmljZSxcbiAgRG9zc2llckNvbHVtblNlcnZpY2UsXG4gIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFNlYXJjaFNlcnZpY2UsXG4gIERvc3NpZXJMaXN0U2VydmljZSxcbiAgRG9zc2llckxpc3RTdGF0dXNTZXJ2aWNlLFxuICBEb3NzaWVyUGFyYW1ldGVyU2VydmljZSxcbiAgRG9zc2llckxpc3RDYXNlVGFnU2VydmljZSxcbiAgQ2FzZUV4cG9ydFNlcnZpY2UsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9zc2llckxpc3RBY3Rpb25zQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9zc2llckxpc3RTZXJ2aWNlLFxuICAgIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgICBEb3NzaWVyTGlzdENhc2VUYWdTZXJ2aWNlLFxuICAgIENhc2VFeHBvcnRTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXJib25MaXN0Q29tcG9uZW50KSBjYXJib25MaXN0OiBDYXJib25MaXN0Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudCkgbGlzdEFjdGlvbnNDb21wb25lbnQ6IERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChUYWJzKSB0YWJzQ29tcG9uZW50OiBUYWJzO1xuXG4gIHB1YmxpYyBhY3RpdmVUYWI6IERvc3NpZXJMaXN0VGFiID0gbnVsbDtcbiAgcHVibGljIGxvYWRpbmdGaWVsZHMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1BhZ2luYXRpb24gPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1NlYXJjaEZpZWxkcyA9IHRydWU7XG4gIHB1YmxpYyBsb2FkaW5nQXNzaWduZWVGaWx0ZXIgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ0RvY3VtZW50SXRlbXMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ1N0YXR1c2VzID0gdHJ1ZTtcbiAgcHVibGljIHBhZ2luYXRpb24hOiBQYWdpbmF0aW9uO1xuICBwdWJsaWMgY2FuSGF2ZUFzc2lnbmVlITogYm9vbGVhbjtcbiAgcHVibGljIHZpc2libGVEb3NzaWVyVGFiczogQXJyYXk8RG9zc2llckxpc3RUYWI+IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBsb2FkaW5nRXhwb3J0ID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRUYWJzID0gREVGQVVMVF9ET1NTSUVSX0xJU1RfVEFCUztcbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlVHJhbnNsYXRpb25zID0gRE9TU0lFUl9MSVNUX1RBQkxFX1RSQU5TTEFUSU9OUztcblxuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRzTWVzc2FnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvbkxpc3ROb1Jlc3VsdHNNZXNzYWdlPihcbiAgICBET1NTSUVSX0xJU1RfTk9fUkVTVUxUU19NRVNTQUdFXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlU3RhcnRCdXR0b24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93QXNzaWduTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hhbmdlUGFnZU1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0NoYW5nZVRhYk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZUV4cG9ydEJ1dHRvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4gfCBudWxsPiA9XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvY3VtZW50U2VhcmNoRmllbGRzJC5waXBlKHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gZmFsc2UpKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c2VzJCA9IHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLnBpcGUoXG4gICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmdTdGF0dXNlcyA9IGZhbHNlKSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VUYWdzJCA9IHRoaXMuZG9zc2llckxpc3RDYXNlVGFnU2VydmljZS5jYXNlVGFncyQucGlwZShcbiAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZ1N0YXR1c2VzID0gZmFsc2UpKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRTdGF0dXNlcyQgPSB0aGlzLnN0YXR1c1NlcnZpY2Uuc2VsZWN0ZWRDYXNlU3RhdHVzZXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRDYXNlVGFncyQgPSB0aGlzLmRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2Uuc2VsZWN0ZWRDYXNlVGFncyQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREb2N1bWVudElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVtYSQgPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50RGVmaW5pdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiBkb2N1bWVudERlZmluaXRpb24/LnNjaGVtYSksXG4gICAgdGFwKHNjaGVtYSA9PiB7XG4gICAgICBpZiAoc2NoZW1hPy50aXRsZSkge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2Uuc2V0Q3VzdG9tUGFnZVRpdGxlKHNjaGVtYT8udGl0bGUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5DcmVhdGVEb2N1bWVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0NSRUFURV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgaWRlbnRpZmllcjogZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5FeHBvcnRDYXNlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25LZXkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9FWFBPUlRfQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgICBpZGVudGlmaWVyOiBjYXNlRGVmaW5pdGlvbktleSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VMaXN0KGNhc2VEZWZpbml0aW9uS2V5KSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoKFtjYW5FeHBvcnRQZXJtaXNzaW9uLCBjYXNlTGlzdF0pID0+IHtcbiAgICAgIGNvbnN0IGlzRXhwb3J0YWJsZUNvbHVtbnMgPSBjYXNlTGlzdC5zb21lKGNhc2VMaXN0aXRlbSA9PiBjYXNlTGlzdGl0ZW0uZXhwb3J0YWJsZSk7XG4gICAgICByZXR1cm4gb2YoY2FuRXhwb3J0UGVybWlzc2lvbiAmJiBpc0V4cG9ydGFibGVDb2x1bW5zKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hGaWVsZFZhbHVlcyQgPSB0aGlzLnBhcmFtZXRlclNlcnZpY2Uuc2VhcmNoRmllbGRWYWx1ZXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzaWduZWVGaWx0ZXIkOiBPYnNlcnZhYmxlPEFzc2lnbmVlRmlsdGVyPiA9XG4gICAgdGhpcy5hc3NpZ25lZVNlcnZpY2UuYXNzaWduZWVGaWx0ZXIkLnBpcGUoXG4gICAgICB0YXAoYXNzaWduZWVGaWx0ZXIgPT4gKHRoaXMuYWN0aXZlVGFiID0gYXNzaWduZWVGaWx0ZXIgYXMgRG9zc2llckxpc3RUYWIpKVxuICAgICk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0aW9uQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FyYm9uUGFnaW5hdGlvblNlbGVjdGlvbiB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFiQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9zc2llckxpc3RUYWIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnaW5hdGlvbiQgPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb24kLnBpcGUoXG4gICAgdGFwKHBhZ2luYXRpb24gPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gcGFnaW5hdGlvbjtcbiAgICAgIHRoaXMubG9hZGluZ1BhZ2luYXRpb24gPSBmYWxzZTtcbiAgICB9KVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNFbnZDb2x1bW5Db25maWckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5saXN0U2VydmljZS5oYXNFbnZDb2x1bW5Db25maWckO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNBcGlDb2x1bW5Db25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhbkhhdmVBc3NpZ25lZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmFzc2lnbmVlU2VydmljZS5jYW5IYXZlQXNzaWduZWUkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zJDogT2JzZXJ2YWJsZTxBcnJheTxEZWZpbml0aW9uQ29sdW1uPj4gPVxuICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuY29sdW1uU2VydmljZS5nZXREZWZpbml0aW9uQ29sdW1ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICB0aGlzLl9oYXNBcGlDb2x1bW5Db25maWckLm5leHQocmVzLmhhc0FwaUNvbmZpZyk7XG4gICAgICAgIHJldHVybiByZXMuY29sdW1ucztcbiAgICAgIH0pLFxuICAgICAgdGFwKGNvbHVtbnMgPT4ge1xuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2V0UGFnaW5hdGlvbihjb2x1bW5zKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dTdGF0dXNTZWxlY3RvciQgPSB0aGlzLnN0YXR1c1NlcnZpY2Uuc2hvd1N0YXR1c1NlbGVjdG9yJDtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDYXNlVGFnc1NlbGVjdG9yJCA9IHRoaXMuZG9zc2llckxpc3RDYXNlVGFnU2VydmljZS5zaG93Q2FzZVRhZ3NTZWxlY3RvciQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBJTlRFUk5BTF9TVEFUVVNfQ09MVU1OID0gJ2ludGVybmFsU3RhdHVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1RBR1NfQ09MVU1OID0gJ2Nhc2VUYWdzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdHVzRmllbGQ6IExpc3RGaWVsZCA9IHtcbiAgICBsYWJlbDogJ2RvY3VtZW50LnN0YXR1cycsXG4gICAga2V5OiB0aGlzLklOVEVSTkFMX1NUQVRVU19DT0xVTU4sXG4gICAgdmlld1R5cGU6IFZpZXdUeXBlLlRBR1MsXG4gICAgc29ydGFibGU6IHRydWUsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmFsU3RhdHVzS2V5cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXG4gICAgdGhpcy5JTlRFUk5BTF9TVEFUVVNfQ09MVU1OLFxuICBdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FzZVRhZ3NLZXlzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFt0aGlzLkNBU0VfVEFHU19DT0xVTU5dKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9jYW5IYXZlQXNzaWduZWUkLFxuICAgIHRoaXMuX2NvbHVtbnMkLFxuICAgIHRoaXMuX2hhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy5faGFzQXBpQ29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLnN0YXR1c2VzJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICB0YXAoKFtjYW5IYXZlQXNzaWduZWVdKSA9PiB7XG4gICAgICB0aGlzLmNhbkhhdmVBc3NpZ25lZSA9IGNhbkhhdmVBc3NpZ25lZTtcbiAgICB9KSxcbiAgICBtYXAoKFtjYW5IYXZlQXNzaWduZWUsIGNvbHVtbnMsIGhhc0VudkNvbmZpZywgaGFzQXBpQ29uZmlnLCBzdGF0dXNlc10pID0+IHtcbiAgICAgIHRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQubmV4dChbXG4gICAgICAgIC4uLnRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQuZ2V0VmFsdWUoKSxcbiAgICAgICAgLi4uY29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT5cbiAgICAgICAgICAgIGN1cnIucHJvcGVydHlOYW1lID09PSB0aGlzLklOVEVSTkFMX1NUQVRVU19DT0xVTU4gPyBbLi4uYWNjLCBjdXJyLnRyYW5zbGF0aW9uS2V5XSA6IGFjYyxcbiAgICAgICAgICBbXVxuICAgICAgICApLFxuICAgICAgXSk7XG4gICAgICB0aGlzLl9jYXNlVGFnc0tleXMkLm5leHQoW1xuICAgICAgICAuLi50aGlzLl9jYXNlVGFnc0tleXMkLmdldFZhbHVlKCksXG4gICAgICAgIC4uLmNvbHVtbnMucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+XG4gICAgICAgICAgICBjdXJyLnByb3BlcnR5TmFtZSA9PT0gdGhpcy5DQVNFX1RBR1NfQ09MVU1OID8gWy4uLmFjYywgY3Vyci50cmFuc2xhdGlvbktleV0gOiBhY2MsXG4gICAgICAgICAgW11cbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZmlsdGVyZWRBc3NpZ25lZUNvbHVtbnMgPSB0aGlzLmFzc2lnbmVlU2VydmljZS5maWx0ZXJBc3NpZ25lZUNvbHVtbnMoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxpc3RGaWVsZHMgPSB0aGlzLmNvbHVtblNlcnZpY2UubWFwRGVmaW5pdGlvbkNvbHVtbnNUb0xpc3RGaWVsZHMoXG4gICAgICAgIGZpbHRlcmVkQXNzaWduZWVDb2x1bW5zLFxuICAgICAgICBoYXNFbnZDb25maWcsXG4gICAgICAgIGhhc0FwaUNvbmZpZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpZWxkc1RvUmV0dXJuID0gdGhpcy5hc3NpZ25lZVNlcnZpY2UuYWRkQXNzaWduZWVMaXN0RmllbGQoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGxpc3RGaWVsZHMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHN0YXR1c2VzLnNvbWUoXG4gICAgICAgIChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSAhPT0gQ0FTRVNfV0lUSE9VVF9TVEFUVVNfS0VZXG4gICAgICApICYmICFoYXNBcGlDb25maWdcbiAgICAgICAgPyBbLi4uZmllbGRzVG9SZXR1cm4sIHRoaXMuX3N0YXR1c0ZpZWxkXVxuICAgICAgICA6IGZpZWxkc1RvUmV0dXJuO1xuICAgIH0pLFxuICAgIHRhcChsaXN0RmllbGRzID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRMaXN0RmllbGQgPSBsaXN0RmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuZGVmYXVsdCk7XG4gICAgICAvLyBzZXQgZGVmYXVsdCBzb3J0IHN0YXRlIGlmIG5vIHBhZ2luYXRpb24gcXVlcnkgcGFyYW1ldGVycyBmb3Igc29ydGluZyBhcmUgYXZhaWxhYmxlXG4gICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UucXVlcnlQYWdpbmF0aW9uUGFyYW1zJFxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKHF1ZXJ5UGFnaW5hdGlvblBhcmFtcyA9PiB7XG4gICAgICAgICAgaWYgKGRlZmF1bHRMaXN0RmllbGQgJiYgIXF1ZXJ5UGFnaW5hdGlvblBhcmFtcz8uc29ydD8uaXNTb3J0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgdHlwZW9mIGRlZmF1bHRMaXN0RmllbGQuZGVmYXVsdCA9PT0gJ3N0cmluZycgPyBkZWZhdWx0TGlzdEZpZWxkLmRlZmF1bHQgOiAnREVTQyc7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNvcnRDaGFuZ2VkKHtcbiAgICAgICAgICAgICAgaXNTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0ZToge25hbWU6IGRlZmF1bHRMaXN0RmllbGQua2V5LCBkaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gYXMgRGlyZWN0aW9ufSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0ZpZWxkcyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BhZ2luYXRpb24kLCB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3BhZ2luYXRpb25dKSA9PiAhIXBhZ2luYXRpb24pLFxuICAgICAgbWFwKChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZV0pID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhZ2luYXRpb24ucGFnZSAtIDE7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBwYWdlID49IDAgPyBwYWdlIDogMCxcbiAgICAgICAgICBwYWdpbmF0aW9uLnNpemUsXG4gICAgICAgICAgcGFnaW5hdGlvbi5zb3J0XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPiA9IHRoaXMubGlzdFNlcnZpY2UuY2hlY2tSZWZyZXNoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2RvY3VtZW50U2VhcmNoUmVxdWVzdCQsXG4gICAgICAgIHRoaXMuYXNzaWduZWVGaWx0ZXIkLFxuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkVmFsdWVzJCxcbiAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNlbGVjdGVkQ2FzZVN0YXR1c2VzJCxcbiAgICAgICAgdGhpcy5kb3NzaWVyTGlzdENhc2VUYWdTZXJ2aWNlLnNlbGVjdGVkQ2FzZVRhZ3MkLFxuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCQsXG4gICAgICAgIHRoaXMuX2hhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgICAgIHRoaXMuX2hhc0FwaUNvbHVtbkNvbmZpZyQsXG4gICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLFxuICAgICAgICB0aGlzLmRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2UuY2FzZVRhZ3MkLFxuICAgICAgXSkucGlwZShkZWJvdW5jZVRpbWUoNTApKVxuICAgICksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAoXG4gICAgICAgIFtcbiAgICAgICAgICBwcmV2U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICBwcmV2QXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgcHJldlNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgIHByZXZTZWxlY3RlZFN0YXR1c2VzLFxuICAgICAgICAgIHByZXZDYXNlVGFncyxcbiAgICAgICAgICBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgIGN1cnJTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICBjdXJyU2VsZWN0ZWRTdGF0dXNlcyxcbiAgICAgICAgICBjdXJyQ2FzZVRhZ3MsXG4gICAgICAgICAgY3VyckZvcmNlUmVmcmVzaCxcbiAgICAgICAgXVxuICAgICAgKSA9PlxuICAgICAgICBpc0VxdWFsKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgYXNzaWduZWU6IHByZXZBc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICAgIC4uLnByZXZTZWxlY3RlZFN0YXR1c2VzLm1hcCgoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+IHN0YXR1cy5rZXkpLFxuICAgICAgICAgICAgLi4ucHJldkNhc2VUYWdzLm1hcCgoY2FzZVRhZzogQ2FzZVRhZykgPT4gY2FzZVRhZy5rZXkpLFxuICAgICAgICAgICAgZm9yY2VSZWZyZXNoOiBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICBhc3NpZ25lZTogY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgLi4uY3VyclNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgICAgLi4uY3VyclNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSksXG4gICAgICAgICAgICAuLi5jdXJyQ2FzZVRhZ3MubWFwKChjYXNlVGFnOiBDYXNlVGFnKSA9PiBjYXNlVGFnLmtleSksXG4gICAgICAgICAgICBmb3JjZVJlZnJlc2g6IGN1cnJGb3JjZVJlZnJlc2gsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoXG4gICAgICAoW1xuICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICBzZWFyY2hWYWx1ZXMsXG4gICAgICAgIHNlbGVjdGVkU3RhdHVzZXMsXG4gICAgICAgIHNlbGVjdGVkQ2FzZVRhZ3MsXG4gICAgICAgIF8sXG4gICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyxcbiAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnLFxuICAgICAgICBhbGxTdGF0dXNlcyxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgY29uc3Qgb2JzRW52OiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzRW52Q29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgb2JzQXBpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzQXBpQ29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzS2V5czogKHN0cmluZyB8IG51bGwpW10gPVxuICAgICAgICAgIC8vIGlmIG5vIGNhc2Ugc3RhdHVzc2VzIGhhdmUgYmVlbiBjb25maWd1cmVkLCBwcmV2ZW50IGZyb20gc2VuZGluZyB0aGUgZW1wdHkgZmlsdGVyXG4gICAgICAgICAgYWxsU3RhdHVzZXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT5cbiAgICAgICAgICAgICAgICBzdGF0dXMua2V5ID09PSBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVkgPyBudWxsIDogc3RhdHVzLmtleVxuICAgICAgICAgICAgICApO1xuICAgICAgICBjb25zdCBjYXNlVGFnc0tleXMgPSBzZWxlY3RlZENhc2VUYWdzLm1hcChjYXNlVGFnID0+IGNhc2VUYWcua2V5KTtcbiAgICAgICAgaWYgKChPYmplY3Qua2V5cyhzZWFyY2hWYWx1ZXMpIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGRvY3VtZW50czpcbiAgICAgICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnIHx8ICFoYXNBcGlDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5tYXBTZWFyY2hWYWx1ZXNUb0ZpbHRlcnMoc2VhcmNoVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5cyxcbiAgICAgICAgICAgICAgICAgICAgY2FzZVRhZ3NLZXlzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRTcGVjaWZpZWREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UubWFwU2VhcmNoVmFsdWVzVG9GaWx0ZXJzKHNlYXJjaFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0tleXMsXG4gICAgICAgICAgICAgICAgICAgIGNhc2VUYWdzS2V5c1xuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZzogb2JzRW52LFxuICAgICAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnOiBvYnNBcGksXG4gICAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogb2YodHJ1ZSksXG4gICAgICAgICAgICBhbGxTdGF0dXNlczogb2YoYWxsU3RhdHVzZXMpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHtcbiAgICAgICAgICBkb2N1bWVudHM6XG4gICAgICAgICAgICBoYXNFbnZDb2x1bW5Db25maWcgfHwgIWhhc0FwaUNvbHVtbkNvbmZpZ1xuICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICdBTkQnLFxuICAgICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNLZXlzLFxuICAgICAgICAgICAgICAgICAgY2FzZVRhZ3NLZXlzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldFNwZWNpZmllZERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICdBTkQnLFxuICAgICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNLZXlzLFxuICAgICAgICAgICAgICAgICAgY2FzZVRhZ3NLZXlzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBoYXNFbnZDb2x1bW5Db25maWc6IG9ic0VudixcbiAgICAgICAgICBoYXNBcGlDb2x1bW5Db25maWc6IG9ic0FwaSxcbiAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogb2YoZmFsc2UpLFxuICAgICAgICAgIGFsbFN0YXR1c2VzOiBvZihhbGxTdGF0dXNlcyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICksXG4gICAgc3dpdGNoTWFwKHJlcyA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIG9mKHJlcyksXG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHJlcy5kb2N1bWVudHMuY29udGVudC5tYXAoZG9jdW1lbnQgPT5cbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2VcbiAgICAgICAgICAgICAgLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBkb2N1bWVudC5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShkZWZhdWx0SWZFbXB0eShbXSBhcyBib29sZWFuW10pKSxcbiAgICAgICAgdGhpcy5faW50ZXJuYWxTdGF0dXNLZXlzJCxcbiAgICAgICAgdGhpcy5fY2FzZVRhZ3NLZXlzJCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtyZXMsIGRvY3VtZW50c0F1dGhvcml6YXRpb24sIHN0YXR1c0NvbHVtbktleXMsIGNhc2VUYWdzS2V5c10pID0+ICh7XG4gICAgICAuLi5yZXMsXG4gICAgICBkb2N1bWVudHM6IHtcbiAgICAgICAgLi4ucmVzLmRvY3VtZW50cyxcbiAgICAgICAgY29udGVudDogcmVzLmRvY3VtZW50cy5jb250ZW50Lm1hcCgoZG9jdW1lbnQsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLmRvY3VtZW50LFxuICAgICAgICAgIGxvY2tlZDogIWRvY3VtZW50c0F1dGhvcml6YXRpb25baW5kZXhdLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAgc3RhdHVzQ29sdW1uS2V5cyxcbiAgICAgIGNhc2VUYWdzS2V5cyxcbiAgICB9KSksXG4gICAgbWFwKFxuICAgICAgKHJlczoge1xuICAgICAgICBkb2N1bWVudHM6IERvY3VtZW50cyB8IFNwZWNpZmllZERvY3VtZW50cztcbiAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnOiBib29sZWFuO1xuICAgICAgICBoYXNBcGlDb2x1bW5Db25maWc6IGJvb2xlYW47XG4gICAgICAgIGlzU2VhcmNoUmVzdWx0OiBib29sZWFuO1xuICAgICAgICBzZWxlY3RlZFN0YXR1c2VzOiBJbnRlcm5hbENhc2VTdGF0dXNbXTtcbiAgICAgICAgYWxsU3RhdHVzZXM6IEludGVybmFsQ2FzZVN0YXR1c1tdO1xuICAgICAgICBzdGF0dXNDb2x1bW5LZXlzOiBzdHJpbmdbXTtcbiAgICAgICAgY2FzZVRhZ3NLZXlzOiBzdHJpbmdbXTtcbiAgICAgIH0pID0+IHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZXRDb2xsZWN0aW9uU2l6ZShyZXMuZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jaGVja1BhZ2UocmVzLmRvY3VtZW50cyk7XG4gICAgICAgIHRoaXMudXBkYXRlTm9SZXN1bHRzTWVzc2FnZShyZXMuaXNTZWFyY2hSZXN1bHQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHRoaXMubGlzdFNlcnZpY2UubWFwRG9jdW1lbnRzKFxuICAgICAgICAgICAgcmVzLmRvY3VtZW50cyxcbiAgICAgICAgICAgIHJlcy5oYXNFbnZDb2x1bW5Db25maWcsXG4gICAgICAgICAgICByZXMuaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzdGF0dXNlczogcmVzLmFsbFN0YXR1c2VzLFxuICAgICAgICAgIHN0YXR1c0NvbHVtbktleXM6IHJlcy5zdGF0dXNDb2x1bW5LZXlzLFxuICAgICAgICAgIGNhc2VUYWdzS2V5czogcmVzLmNhc2VUYWdzS2V5cyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApLFxuICAgIG1hcChyZXMgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlcy5kYXRhKSkgcmV0dXJuIHJlcy5kYXRhO1xuICAgICAgdGhpcy5kaXNhYmxlRXhwb3J0QnV0dG9uJC5uZXh0KHJlcy5kYXRhLmxlbmd0aCA9PT0gMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVzLmRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBtYXBwZWRJbnRlcm5hbFN0YXR1c0NvbHVtbnMgPSByZXMuc3RhdHVzQ29sdW1uS2V5cy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXNlcy5maW5kKFxuICAgICAgICAgICAgKHN0YXR1czogSW50ZXJuYWxDYXNlU3RhdHVzKSA9PiBzdGF0dXMua2V5ID09PSBpdGVtW2N1cnJdIHx8IHN0YXR1cy5rZXkgPT09IGl0ZW0uc3RhdHVzXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gIXN0YXR1c1xuICAgICAgICAgICAgPyBhY2NcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbY3Vycl06IHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHN0YXR1cy50aXRsZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3Ioc3RhdHVzLmNvbG9yKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGNvbnN0IG1hcHBlZFRhZ0NvbHVtbnMgPSByZXMuY2FzZVRhZ3NLZXlzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW1bY3Vycl0pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2N1cnJdOiBpdGVtW2N1cnJdLm1hcCh0YWcgPT4gKHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0YWcudGl0bGUsXG4gICAgICAgICAgICAgICAgdHlwZTogQ2FzZVRhZ3NVdGlscy5nZXRUYWdUeXBlRnJvbUNhc2VUYWdDb2xvcih0YWcuY29sb3IpLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIC4uLm1hcHBlZEludGVybmFsU3RhdHVzQ29sdW1ucyxcbiAgICAgICAgICAuLi5tYXBwZWRUYWdDb2x1bW5zLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRpbmdEb2N1bWVudEl0ZW1zID0gZmFsc2U7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIF9wcmV2aW91c0RvY3VtZW50RGVmaW5pdGlvbk5hbWUhOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhc3NpZ25lZVNlcnZpY2U6IERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVsa0Fzc2lnblNlcnZpY2U6IERvc3NpZXJCdWxrQXNzaWduU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbHVtblNlcnZpY2U6IERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdFNlcnZpY2U6IERvc3NpZXJMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0aW9uU2VydmljZTogRG9zc2llckxpc3RQYWdpbmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNlcnZpY2U6IERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzU2VydmljZTogRG9zc2llckxpc3RTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llckxpc3RDYXNlVGFnU2VydmljZTogRG9zc2llckxpc3RDYXNlVGFnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFeHBvcnRTZXJ2aWNlOiBDYXNlRXhwb3J0U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmlzaWJsZVRhYnMoKTtcbiAgICB0aGlzLm9wZW5Eb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZW5hYmxlUmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlYXJjaChzZWFyY2hGaWVsZFZhbHVlczogU2VhcmNoRmllbGRWYWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHNlYXJjaEZpZWxkVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyByb3dDbGljayhpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5jYWNoZVF1ZXJ5UGFyYW1zKFxuICAgICAgICBgL2Rvc3NpZXJzLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gLFxuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zXG4gICAgICApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llcnMvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2l0ZW0uaWR9YF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRhYkNoYW5nZSh0YWI6IERvc3NpZXJMaXN0VGFiKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgICB0aGlzLnVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVRhYi50b0xvd2VyQ2FzZSgpID09PSB0YWIudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhcmJvbkxpc3QubW9kZWwuc2VsZWN0ZWRSb3dzQ291bnQoKSkge1xuICAgICAgdGhpcy5zaG93Q2hhbmdlVGFiTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhYkNoYW5nZSQubmV4dCh0YWIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VUYWJDb25maXJtKHRhYik7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VUYWJDYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2VGFiOiBUYWIgfCB1bmRlZmluZWQgPSB0aGlzLnRhYnNDb21wb25lbnQudGFicy5maW5kKFxuICAgICAgKHRhYjogVGFiKSA9PiB0YWIuaWQgPT09IHRoaXMuYWN0aXZlVGFiXG4gICAgKTtcblxuICAgIGlmICghcHJldlRhYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJzLmZpbmQoKHRhYjogVGFiKSA9PiB0YWIuYWN0aXZlKS5hY3RpdmUgPSBmYWxzZTtcbiAgICBwcmV2VGFiLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJib25MaXN0Py5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpKSB7XG4gICAgICB0aGlzLnNob3dDaGFuZ2VQYWdlTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UkLm5leHQoe3BhZ2UsIHNpemU6IHRoaXMucGFnaW5hdGlvbi5zaXplfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZUNoYW5nZShwYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJib25MaXN0Py5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpKSB7XG4gICAgICB0aGlzLnNob3dDaGFuZ2VQYWdlTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UkLm5leHQoe3BhZ2U6IHRoaXMucGFnaW5hdGlvbi5wYWdlLCBzaXplfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZVNpemVDaGFuZ2Uoc2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQobmV3U29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlVGFiQ29uZmlybSh0YWI6IERvc3NpZXJMaXN0VGFiKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nQXNzaWduZWVGaWx0ZXIgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICAgIHRoaXMudXBkYXRlTm9SZXN1bHRzTWVzc2FnZShmYWxzZSk7XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZXRQYWdlKDEpO1xuICAgIHRoaXMuYXNzaWduZWVTZXJ2aWNlLnNldEFzc2lnbmVlRmlsdGVyKHRhYik7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Fzc2lnbk1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudElkcyQubmV4dChcbiAgICAgIHRoaXMuY2FyYm9uTGlzdC5zZWxlY3RlZEl0ZW1zLm1hcCgoZG9jdW1lbnQ6IERvY3VtZW50KSA9PiBkb2N1bWVudC5pZClcbiAgICApO1xuICAgIHRoaXMuc2hvd0Fzc2lnbk1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VFdmVudChhc3NpZ25lZUlkOiBudWxsIHwgc3RyaW5nLCBkb2N1bWVudElkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBc3NpZ25Nb2RhbCQubmV4dChmYWxzZSk7XG4gICAgaWYgKCFhc3NpZ25lZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWxrQXNzaWduU2VydmljZS5idWxrQXNzaWduKGFzc2lnbmVlSWQsIGRvY3VtZW50SWRzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JjZVJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZVBhZ2VDb25maXJtKHBhZ2luYXRpb246IENhcmJvblBhZ2luYXRpb25TZWxlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAocGFnaW5hdGlvbi5zaXplICE9PSB0aGlzLnBhZ2luYXRpb24uc2l6ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlU2l6ZUNoYW5nZShwYWdpbmF0aW9uLnNpemUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZUNoYW5nZShwYWdpbmF0aW9uLnBhZ2UpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0RG9zc2llcigpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RBY3Rpb25zQ29tcG9uZW50LnN0YXJ0RG9zc2llcigpO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFeHBvcnRTZXJ2aWNlXG4gICAgICAuZG93bmxvYWRFeHBvcnQoKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+ICh0aGlzLmxvYWRpbmdFeHBvcnQgPSBkYXRhLmlzTG9hZGluZykpO1xuICB9XG5cbiAgcHVibGljIGZvcmNlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRTdGF0dXNlc0NoYW5nZShzdGF0dXNlczogSW50ZXJuYWxDYXNlU3RhdHVzW10pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0U2VsZWN0ZWRTdGF0dXNlcyhzdGF0dXNlcyk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZENhc2VUYWdzQ2hhbmdlKGNhc2VUYWdzOiBDYXNlVGFnW10pOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJMaXN0Q2FzZVRhZ1NlcnZpY2Uuc2V0U2VsZWN0ZWRDYXNlVGFncyhjYXNlVGFncyk7XG4gIH1cblxuICBwdWJsaWMgb25TdGFydEJ1dHRvbkRpc2FibGVFdmVudChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZVN0YXJ0QnV0dG9uJC5uZXh0KGRpc2FibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChwYXJhbXM6IFBhcmFtcykgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICAgICAgZmlsdGVyKGRvY0RlZk5hbWUgPT4gISFkb2NEZWZOYW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRvbk5hbWUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lKSB7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmNsZWFyUGFyYW1ldGVycygpO1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5jbGVhclNlYXJjaEZpZWxkVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lID0gZG9jdW1lbnREZWZpbml0b25OYW1lO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmNsZWFyUGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLmFzc2lnbmVlU2VydmljZS5yZXNldEFzc2lnbmVlRmlsdGVyKCk7XG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2Uuc2V0RG9jdW1lbnREZWZpbml0aW9uTmFtZShkb2N1bWVudERlZmluaXRvbk5hbWUpO1xuICAgICAgICB0aGlzLnNldExvYWRpbmcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ0ZpZWxkcyA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nUGFnaW5hdGlvbiA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdBc3NpZ25lZUZpbHRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nRG9jdW1lbnRJdGVtcyA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nU3RhdHVzZXMgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaXNpYmxlVGFicygpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVEb3NzaWVyVGFicyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/LnZpc2libGVEb3NzaWVyTGlzdFRhYnMgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTm9SZXN1bHRzTWVzc2FnZShpc1NlYXJjaFJlc3VsdDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubm9SZXN1bHRzTWVzc2FnZSQubmV4dChcbiAgICAgIGlzU2VhcmNoUmVzdWx0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdkb3NzaWVyLm5vUmVzdWx0cy5zZWFyY2guZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQsXG4gICAgICAgICAgICB0aXRsZTogJ2Rvc3NpZXIubm9SZXN1bHRzLnNlYXJjaC50aXRsZScsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgZG9zc2llci5ub1Jlc3VsdHMuJHt0aGlzLmFjdGl2ZVRhYiA/PyAnQUxMJ30uZGVzY3JpcHRpb25gLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQsXG4gICAgICAgICAgICB0aXRsZTogYGRvc3NpZXIubm9SZXN1bHRzLiR7dGhpcy5hY3RpdmVUYWIgPz8gJ0FMTCd9LnRpdGxlYCxcbiAgICAgICAgICB9XG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGZpZWxkczogZmllbGRzJCB8IGFzeW5jLFxuICAgIGRvY3VtZW50SXRlbXM6IGRvY3VtZW50SXRlbXMkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luYyxcbiAgICBzZWFyY2hGaWVsZHM6IHNlYXJjaEZpZWxkcyQgfCBhc3luYyxcbiAgICBzY2hlbWE6IHNjaGVtYSQgfCBhc3luYyxcbiAgICBzaG93QXNzaWduTW9kYWw6IHNob3dBc3NpZ25Nb2RhbCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZERvY3VtZW50SWRzOiBzZWxlY3RlZERvY3VtZW50SWRzJCB8IGFzeW5jLFxuICAgIHN0YXR1c2VzOiBzdGF0dXNlcyQgfCBhc3luYyxcbiAgICBjYXNlVGFnczogY2FzZVRhZ3MkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRTdGF0dXNlczogc2VsZWN0ZWRTdGF0dXNlcyQgfCBhc3luYyxcbiAgICBzZWxlY3RlZENhc2VUYWdzOiBzZWxlY3RlZENhc2VUYWdzJCB8IGFzeW5jLFxuICAgIHNob3dTdGF0dXNTZWxlY3Rvcjogc2hvd1N0YXR1c1NlbGVjdG9yJCB8IGFzeW5jLFxuICAgIHNob3dDYXNlVGFnc1NlbGVjdG9yOiBzaG93Q2FzZVRhZ3NTZWxlY3RvciQgfCBhc3luYyxcbiAgICBsb2FkZWQ6XG4gICAgICAhbG9hZGluZ0ZpZWxkcyAmJlxuICAgICAgIWxvYWRpbmdQYWdpbmF0aW9uICYmXG4gICAgICAhbG9hZGluZ1NlYXJjaEZpZWxkcyAmJlxuICAgICAgIWxvYWRpbmdBc3NpZ25lZUZpbHRlciAmJlxuICAgICAgIWxvYWRpbmdEb2N1bWVudEl0ZW1zLFxuICB9IGFzIG9ic1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQgcHQtMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICAgIDx2YWx0aW1vLWRvc3NpZXItbGlzdC1hY3Rpb25zXG4gICAgICAgICAgW2xvYWRpbmddPVwiIW9icy5sb2FkZWRcIlxuICAgICAgICAgIChmb3JtRmxvd0NvbXBsZXRlKT1cImZvcmNlUmVmcmVzaCgpXCJcbiAgICAgICAgICAoc3RhcnRCdXR0b25EaXNhYmxlRXZlbnQpPVwib25TdGFydEJ1dHRvbkRpc2FibGVFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgPjwvdmFsdGltby1kb3NzaWVyLWxpc3QtYWN0aW9ucz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEZpZWxkczsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMubG9hZGVkOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdDsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVsa0Fzc2lnbk1vZGFsOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoYW5nZVBhZ2VNb2RhbFwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGFuZ2VUYWJNb2RhbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoRmllbGRzIGxldC1vYnM9XCJvYnNcIj5cbiAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICA8dmFsdGltby1zZWFyY2gtZmllbGRzXG4gICAgICBbc2VhcmNoRmllbGRzXT1cIm9icy5zZWFyY2hGaWVsZHNcIlxuICAgICAgKGRvU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgICAgW2RlZmF1bHRWYWx1ZXNdPVwic2VhcmNoRmllbGRWYWx1ZXMkIHwgYXN5bmNcIlxuICAgICAgW2lucHV0RGlzYWJsZWRdPVwiIW9icy5sb2FkZWRcIlxuICAgICAgW2V4dGVybmFsU2VhcmNoRmllbGRdPVwib2JzLnNob3dTdGF0dXNTZWxlY3RvclwiXG4gICAgPlxuICAgICAgPHZhbHRpbW8tc3RhdHVzLXNlbGVjdG9yXG4gICAgICAgICpuZ0lmPVwib2JzLnNob3dTdGF0dXNTZWxlY3RvclwiXG4gICAgICAgIFtzdGF0dXNlc109XCJvYnMuc3RhdHVzZXNcIlxuICAgICAgICBbc2VsZWN0ZWRTdGF0dXNlc109XCJvYnMuc2VsZWN0ZWRTdGF0dXNlc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhb2JzLmxvYWRlZFwiXG4gICAgICAgIChzZWxlY3RlZFN0YXR1c2VzQ2hhbmdlRXZlbnQpPVwib25TZWxlY3RlZFN0YXR1c2VzQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvdmFsdGltby1zdGF0dXMtc2VsZWN0b3I+XG5cbiAgICAgIDx2YWx0aW1vLWNhc2UtdGFncy1zZWxlY3RvclxuICAgICAgICAqbmdJZj1cIm9icy5zaG93Q2FzZVRhZ3NTZWxlY3RvclwiXG4gICAgICAgIFtjYXNlVGFnc109XCJvYnMuY2FzZVRhZ3NcIlxuICAgICAgICBbc2VsZWN0ZWRDYXNlVGFnc109XCJvYnMuc2VsZWN0ZWRDYXNlVGFnc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhb2JzLmxvYWRlZFwiXG4gICAgICAgIChzZWxlY3RlZENhc2VUYWdzQ2hhbmdlRXZlbnQpPVwib25TZWxlY3RlZENhc2VUYWdzQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvdmFsdGltby1jYXNlLXRhZ3Mtc2VsZWN0b3I+XG4gICAgPC92YWx0aW1vLXNlYXJjaC1maWVsZHM+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0IGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgICBbZmllbGRzXT1cIm9icy5maWVsZHNcIlxuICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgIFtpbml0aWFsU29ydFN0YXRlXT1cInBhZ2luYXRpb24uc29ydFwiXG4gICAgW2l0ZW1zXT1cIm9icy5kb2N1bWVudEl0ZW1zXCJcbiAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cImRvc3NpZXJMaXN0XCJcbiAgICBsb2NrZWRUb29sdGlwVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLnJvd0xvY2tlZFwiXG4gICAgW3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgICBbdGFibGVUcmFuc2xhdGlvbnNdPVwidGFibGVUcmFuc2xhdGlvbnNcIlxuICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxuICAgIChwYWdpbmF0aW9uU2V0KT1cInBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrKCRldmVudClcIlxuICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgY2FyYm9uVG9vbGJhckFjdGlvbnM+XG4gICAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwic2hvd0Fzc2lnbk1vZGFsKClcIj5cbiAgICAgICAge3sgJ2Rvc3NpZXIuYnVsa0Fzc2lnbi5hc3NpZ24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9zc2llckxpc3RBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm9icy5ub1Jlc3VsdHNNZXNzYWdlLmlzU2VhcmNoUmVzdWx0ID8gbnVsbCA6IGVtcHR5UmVzdWx0RG9zc2llckxpc3RBY3Rpb25zXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UudGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cblxuICAgIDxkaXYgdGFicyAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJzPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWVGaWx0ZXIkIHwgYXN5bmMgYXMgYXNzaWduZWVGaWx0ZXJcIj5cbiAgICA8Y2RzLXRhYnNcbiAgICAgICpuZ0lmPVwiIXZpc2libGVEb3NzaWVyVGFiczsgZWxzZSBjb25maWd1cmVkVGFic1wiXG4gICAgICB0eXBlPVwiY29udGFpbmVkXCJcbiAgICAgIGNsYXNzPVwiZG9zc2llci1saXN0LXRhYnNcIlxuICAgID5cbiAgICAgIDxjZHMtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgZGVmYXVsdFRhYnM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgIFthY3RpdmVdPVwiYXNzaWduZWVGaWx0ZXIgPT09IHRhYlwiXG4gICAgICAgIGhlYWRpbmc9XCJ7eyAnZG9zc2llci50YWJzLicgKyB0YWIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbaWRdPVwidGFiXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cInRhYkNoYW5nZSh0YWIpXCJcbiAgICAgID48L2Nkcy10YWI+XG4gICAgPC9jZHMtdGFicz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbmZpZ3VyZWRUYWJzPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWVGaWx0ZXIkIHwgYXN5bmMgYXMgYXNzaWduZWVGaWx0ZXJcIj5cbiAgICA8Y2RzLXRhYnMgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwiZG9zc2llci1saXN0LXRhYnNcIj5cbiAgICAgIDxjZHMtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdmlzaWJsZURvc3NpZXJUYWJzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICBbYWN0aXZlXT1cImFzc2lnbmVlRmlsdGVyID09PSB0YWJcIlxuICAgICAgICBoZWFkaW5nPVwie3sgJ2Rvc3NpZXIudGFicy4nICsgdGFiIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2lkXT1cInRhYlwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgICA+PC9jZHMtdGFiPlxuICAgIDwvY2RzLXRhYnM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nXG4gID48dmFsdGltby1jYXJib24tbGlzdCBbbG9hZGluZ109XCJ0cnVlXCI+XG4gICAgPGRpdiB0YWJzICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFic1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Rcbj48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1bGtBc3NpZ25Nb2RhbCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWRvc3NpZXItYnVsay1hc3NpZ24tbW9kYWxcbiAgICBbZG9jdW1lbnRJZHNdPVwib2JzLnNlbGVjdGVkRG9jdW1lbnRJZHNcIlxuICAgIFtvcGVuXT1cIm9icy5zaG93QXNzaWduTW9kYWxcIlxuICAgIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2VFdmVudCgkZXZlbnQsIG9icy5zZWxlY3RlZERvY3VtZW50SWRzKVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhbmdlUGFnZU1vZGFsPlxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VQYWdlTW9kYWwuY29uZmlybVwiXG4gICAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VQYWdlTW9kYWwuY29udGVudFwiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJwYWdpbmF0aW9uQ2hhbmdlJCB8IGFzeW5jXCJcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0NoYW5nZVBhZ2VNb2RhbCRcIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVBhZ2VNb2RhbC50aXRsZVwiXG4gICAgKGNvbmZpcm1FdmVudCk9XCJvbkNoYW5nZVBhZ2VDb25maXJtKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhbmdlVGFiTW9kYWw+XG4gIDx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICAgIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVRhYk1vZGFsLmNvbmZpcm1cIlxuICAgIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlVGFiTW9kYWwuY29udGVudFwiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJ0YWJDaGFuZ2UkIHwgYXN5bmNcIlxuICAgIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93Q2hhbmdlVGFiTW9kYWwkXCJcbiAgICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VUYWJNb2RhbC50aXRsZVwiXG4gICAgKGNhbmNlbEV2ZW50KT1cIm9uQ2hhbmdlVGFiQ2FuY2VsKClcIlxuICAgIChjb25maXJtRXZlbnQpPVwib25DaGFuZ2VUYWJDb25maXJtKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZG9zc2llckxpc3RBY3Rpb25zPlxuICA8Y2RzLXRvb2x0aXBcbiAgICAqbmdJZj1cImNhbkV4cG9ydENhc2UkIHwgYXN5bmNcIlxuICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5leHBvcnRCdXR0b25Ub29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gID5cbiAgICA8Y2RzLWxvYWRpbmcgKm5nSWY9XCJsb2FkaW5nRXhwb3J0XCIgc2l6ZT1cInNtXCIgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj48L2Nkcy1sb2FkaW5nPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhbG9hZGluZ0V4cG9ydFwiXG4gICAgICBkYXRhLXRlc3RpZD1cImNhc2UtbGlzdC1leHBvcnQtYnV0dG9uXCJcbiAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgIGljb25Pbmx5PVwidHJ1ZVwiXG4gICAgICAoY2xpY2spPVwiZXhwb3J0KClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVFeHBvcnRCdXR0b24kIHwgYXN5bmNcIlxuICAgID5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJkb3dubG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Nkcy10b29sdGlwPlxuXG4gIDxidXR0b25cbiAgICAqbmdJZj1cImNhbkNyZWF0ZURvY3VtZW50JCB8IGFzeW5jXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVN0YXJ0QnV0dG9uJCB8IGFzeW5jXCJcbiAgICAoY2xpY2spPVwic3RhcnREb3NzaWVyKClcIlxuICA+XG4gICAge3sgJ1N0YXJ0IERvc3NpZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVJlc3VsdERvc3NpZXJMaXN0QWN0aW9ucz5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiY2FuQ3JlYXRlRG9jdW1lbnQkIHwgYXN5bmNcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU3RhcnRCdXR0b24kIHwgYXN5bmNcIlxuICAgIChjbGljayk9XCJzdGFydERvc3NpZXIoKVwiXG4gID5cbiAgICB7eyAnU3RhcnQgRG9zc2llcicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -5345,7 +5345,11 @@ class DossierListComponent {
5345
5345
  })), switchMap(([documentSearchRequest, assigneeFilter, searchValues, selectedStatuses, selectedCaseTags, _, hasEnvColumnConfig, hasApiColumnConfig, allStatuses,]) => {
5346
5346
  const obsEnv = of(hasEnvColumnConfig);
5347
5347
  const obsApi = of(hasApiColumnConfig);
5348
- const statusKeys = selectedStatuses.map((status) => status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key);
5348
+ const statusKeys =
5349
+ // if no case statusses have been configured, prevent from sending the empty filter
5350
+ allStatuses.length === 1
5351
+ ? []
5352
+ : selectedStatuses.map((status) => status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key);
5349
5353
  const caseTagsKeys = selectedCaseTags.map(caseTag => caseTag.key);
5350
5354
  if ((Object.keys(searchValues) || []).length > 0) {
5351
5355
  return forkJoin({