@messaia/cdk 18.1.0-rc07 → 18.1.0-rc08

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.
@@ -460,27 +460,27 @@ export class VdChipsComponent extends AbstractMatFormField {
460
460
  if (this.dataSource) {
461
461
  /* Initialize parameters for filtering */
462
462
  let _params = { ...this.getQueryParams() };
463
- if (text) {
464
- /* Add search term to parameters if a search field is specified */
465
- if (this.searchField && (this.searchFields.length ?? 0) == 0 && (this.filters?.length ?? 0) == 0) {
466
- var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(this.searchField);
463
+ /* Add search term to parameters if a search field is specified */
464
+ if (this.searchField && (this.searchFields.length ?? 0) == 0 && (this.filters?.length ?? 0) == 0) {
465
+ var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(this.searchField);
466
+ if (result) {
467
+ _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
468
+ }
469
+ }
470
+ /* Add search terms for each specified search field */
471
+ if ((this.filters?.length ?? 0) == 0) {
472
+ this.searchFields?.map(x => x.trim())?.forEach(x => {
473
+ var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(x);
467
474
  if (result) {
468
475
  _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
469
476
  }
470
- }
471
- /* Add search terms for each specified search field */
472
- if ((this.filters?.length ?? 0) == 0) {
473
- this.searchFields?.map(x => x.trim())?.forEach(x => {
474
- var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(x);
475
- if (result) {
476
- _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
477
- }
478
- });
479
- }
480
- if ((this.filters?.length ?? 0) > 0) {
481
- /* Construct the URL for the filters */
482
- let filterQuery = '';
483
- /* Include additional filters if defined */
477
+ });
478
+ }
479
+ if ((this.filters?.length ?? 0) > 0) {
480
+ /* Construct the URL for the filters */
481
+ let filterQuery = '';
482
+ /* Include additional filters if defined */
483
+ if (text) {
484
484
  this.filters.forEach(filter => {
485
485
  const { glue, fields } = filter;
486
486
  fields.forEach((field, index) => {
@@ -493,11 +493,9 @@ export class VdChipsComponent extends AbstractMatFormField {
493
493
  }
494
494
  });
495
495
  });
496
- /* Update the URL parameters with the constructed filter query */
497
- if (filterQuery) {
498
- _params['filters'] = filterQuery;
499
- }
500
496
  }
497
+ /* Update the URL parameters with the constructed filter query */
498
+ _params['filters'] = filterQuery;
501
499
  }
502
500
  /* Check if there are no changes to the parameters */
503
501
  if (Utils.equals(this._params, _params)) {
@@ -643,4 +641,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
643
641
  }], chipFocus: [{
644
642
  type: Output
645
643
  }] } });
646
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sNEJBQTRC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c0JBRGxCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPdEMsbUJBQW1CO3NCQUR6QixTQUFTO3VCQUFDLHNCQUFzQjtnQkFZN0IsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixNQUFNO3NCQURULEtBQUs7Z0JBb0JGLFVBQVU7c0JBRGIsS0FBSztnQkEyQkYsU0FBUztzQkFEWixLQUFLO2dCQWdCRixXQUFXO3NCQURkLEtBQUs7Z0JBWUMsT0FBTztzQkFEYixLQUFLO2dCQU9DLEdBQUc7c0JBRFQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFRQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0Msb0JBQW9CO3NCQUQxQixLQUFLO2dCQVlDLFVBQVU7c0JBRGhCLE1BQU07Z0JBT0EsUUFBUTtzQkFEZCxNQUFNO2dCQU9BLE9BQU87c0JBRGIsTUFBTTtnQkFPQSxRQUFRO3NCQURkLE1BQU07dUJBQUMsUUFBUTtnQkFPVCxhQUFhO3NCQURuQixLQUFLO2dCQVFDLFNBQVM7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFR5cGUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgRmlsdGVyLCBTdWZmaXhCdXR0b24gfSBmcm9tICcuLi8uLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlscyc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWF0Rm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZm9ybXMvaGVscGVycy9hYnN0cmFjdC1tYXQtZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFZkTWVkaWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVkaWEvc2VydmljZXMvbWVkaWEuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUvdGFibGUuZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBWZEF1dG9jb21wbGV0ZU9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYXV0b2NvbXBsZXRlLW9wdGlvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBWZENoaXBEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2NoaXAuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAndmQtY2hpcHMnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9jaGlwcy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vY2hpcHMuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkQ2hpcHNDb21wb25lbnQgfSxcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXHJcblx0XHRcdHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiAndmQtY2hpcHMtYXV0b2NvbXBsZXRlJyB9XHJcblx0XHR9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRDaGlwc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TWF0Rm9ybUZpZWxkPGFueT4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblx0LyoqXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBkeW5hbWljIHRhYmxlIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9keW5hbWljVGFibGU/OiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgZHluYW1pYyB0YWJsZSBjb21wb25lbnQgcmVmZXJlbmNlLlxyXG5cdCAqIFNldHMgdGhlIGRhdGEgc291cmNlJ3Mgc29ydCB3aGVuIHRoZSBkeW5hbWljIHRhYmxlIGlzIGRlZmluZWQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGdldCBkeW5hbWljVGFibGUoKTogVmREeW5hbWljVGFibGVDb21wb25lbnQgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZHluYW1pY1RhYmxlOyB9XHJcblx0cHVibGljIHNldCBkeW5hbWljVGFibGUoZHluYW1pY1RhYmxlOiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCkge1xyXG5cdFx0dGhpcy5fZHluYW1pY1RhYmxlID0gZHluYW1pY1RhYmxlO1xyXG5cdFx0aWYgKHRoaXMuX2R5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UhLnNvcnQgPSB0aGlzLl9keW5hbWljVGFibGUubWF0U29ydDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlZmluZXMgdGhlIGNsYXNzIHR5cGUgZm9yIHRoZSBkeW5hbWljIHRhYmxlLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNsYXNzVHlwZT86IFR5cGU8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBwYWdpbmF0b3IgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BhZ2luYXRvcj86IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgcGFnaW5hdG9yIGNvbXBvbmVudCByZWZlcmVuY2UuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHsgdGhpcy5fcGFnaW5hdG9yID0gcGFnaW5hdG9yOyB9XHJcblx0cHVibGljIGdldCBwYWdpbmF0b3IoKTogTWF0UGFnaW5hdG9yIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3BhZ2luYXRvcjsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIHNvcnRpbmcgZGlyZWN0aXZlIGZvciB0aGUgdGFibGUuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgc29ydD86IE1hdFNvcnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9ucyBmb3IgcGFnaW5hdGlvbi5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IGFjdGl2ZSBzb3J0IGNvbHVtbi5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZT86IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBkaXJlY3Rpb24gb2Ygc29ydGluZy5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhIHNvdXJjZSBmb3IgdGhlIGRhdGEgdGFibGUuXHJcblx0ICovXHJcblx0cHVibGljIGRhdGFTb3VyY2U/OiBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+IHwgbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogU3Vic2NyaXB0aW9uIGZvciB0aGUgZGF0YSBzb3VyY2Ugb2JzZXJ2YWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogRm9ybSBjb250cm9sIGZvciB0aGUgYXV0b2NvbXBsZXRlIGNoaXAgbGlzdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYXV0b0NvbXBsZXRlQ2hpcExpc3Q6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIGZpbHRlciBpbnB1dCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpbHRlcklucHV0PzogRWxlbWVudFJlZjtcclxuXHJcblx0LyoqXHJcblx0ICogTGlzdCBvZiBzZWFyY2ggb3BlcmF0b3JzIGZvciBmaWx0ZXJpbmcuXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaE9wZXJhdG9yczogc3RyaW5nW10gPSBbXCIhPVwiLCBcIiFcIiwgXCI8PlwiLCBcIj49XCIsIFwiPlwiLCBcIjw9XCIsIFwiPFwiLCBcIl5cIiwgXCIkXCIsIFwiflwiXTtcclxuXHJcblx0LyoqXHJcblx0ICogQXJyYXkgb2YgY2hpcHMgY3VycmVudGx5IGJlaW5nIHVzZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2hpcHM6IGFueVtdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRlbXBsYXRlIGZvciByZW5kZXJpbmcgY2hpcHMuXHJcblx0ICovXHJcblx0QENvbnRlbnRDaGlsZChWZENoaXBEaXJlY3RpdmUpXHJcblx0cHVibGljIGNoaXBUZW1wbGF0ZT86IFZkQ2hpcERpcmVjdGl2ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGVtcGxhdGUgZm9yIGF1dG9jb21wbGV0ZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPzogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZT86IE1hdEF1dG9jb21wbGV0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBhdXRvY29tcGxldGUgdHJpZ2dlci5cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZVRyaWdnZXI/OiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG5cclxuXHQvKipcclxuXHQgKiBFbmRwb2ludCBmb3IgZGF0YSByZXRyaWV2YWwuXHJcblx0ICovXHJcblx0cHVibGljIF9lbmRwb2ludD86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIG9yIHNldHMgdGhlIGVuZHBvaW50IGZvciB0aGUgc2VydmljZS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBlbmRwb2ludCgpOiBzdHJpbmcgfCBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHNldCBlbmRwb2ludChlbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb24pIHtcclxuXHRcdHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0eXBlb2YgZW5kcG9pbnQgPT09ICdmdW5jdGlvbicgPyBlbmRwb2ludCh0aGlzKSA6ICg8c3RyaW5nPmVuZHBvaW50KTtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcmFtZXRlcnMgdXNlZCBmb3IgZGF0YSByZXRyaWV2YWwuXHJcblx0ICovXHJcblx0cHVibGljIF9wYXJhbXM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgc2VydmljZS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYXJhbXMoKSB7IHJldHVybiB0aGlzLl9wYXJhbXM7IH1cclxuXHRzZXQgcGFyYW1zKHBhcmFtczogYW55KSB7XHJcblx0XHQvKiBSZW1vdmUgZW1wdHkgcGFyYW1ldGVycyAqL1xyXG5cdFx0VXRpbHMuY2xlYW5PYmplY3QocGFyYW1zKTtcclxuXHJcblx0XHRpZiAoIVV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIHBhcmFtcykpIHtcclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJvamVjdGlvbiBmaWVsZHMgZm9yIGRhdGEgcmV0cmlldmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcHJvamVjdGlvbj86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIG9yIHNldHMgdGhlIHByb2plY3Rpb24gZm9yIHRoZSBzZXJ2aWNlLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLl9yZWFkb25seSkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc3VwZXIuZGlzYWJsZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmRpY2F0ZXMgaWYgcGFnaW5hdGlvbiBpcyBlbmFibGVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcGFnaW5hdGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHRoZSBwYWdpbmF0aW9uIG9wdGlvbi5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYWdpbmF0ZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wYWdpbmF0ZWQ7IH1cclxuXHRzZXQgcGFnaW5hdGVkKHBhZ2luYXRlZDogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5fcGFnaW5hdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHBhZ2luYXRlZCk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmRpY2F0ZXMgd2hldGhlciBjdXN0b20gdmFsdWVzIGFyZSBhbGxvd2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfY3VzdG9tVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHRoZSBjdXN0b20gdmFsdWUgb3B0aW9uLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGN1c3RvbVZhbHVlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fY3VzdG9tVmFsdWU7IH1cclxuXHRzZXQgY3VzdG9tVmFsdWUoY3VzdG9tVmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuX2N1c3RvbVZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGN1c3RvbVZhbHVlKTtcclxuXHRcdHRoaXMua2V5ID0gY3VzdG9tVmFsdWUgJiYgdGhpcy5rZXkgPT0gJ2lkJyA/ICduYW1lJyA6IHRoaXMua2V5O1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBjb250ZXh0IGZvciB0aGUgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNvbnRleHQ6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogS2V5IHVzZWQgZm9yIGlkZW50aWZ5aW5nIGl0ZW1zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGtleTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogRmllbGQgdXNlZCBmb3Igc2VhcmNoIGZ1bmN0aW9uYWxpdHkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VhcmNoRmllbGQ6IHN0cmluZyA9ICdzZWFyY2gnO1xyXG5cclxuXHQvKipcclxuXHQgKiBMaXN0IG9mIGZpZWxkcyB1c2VkIGZvciBzZWFyY2ggZnVuY3Rpb25hbGl0eS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFuIGFycmF5IG9mIGZpbHRlciBvYmplY3RzLCBlYWNoIGRlZmluZWQgYnkgYSBnbHVlIG9wZXJhdG9yIGFuZCBmaWVsZHMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVycz86IEZpbHRlcltdO1xyXG5cclxuXHQvKipcclxuXHQgKiBJbmRpY2F0ZXMgd2hldGhlciBjaGlwcyBjYW4gYmUgcmVtb3ZlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyByZW1vdmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIGtleSBwcmVzc2VzIGZvciBkZWJvdW5jaW5nLlxyXG5cdCAqIERlZmF1bHRzIHRvIDQwMC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBDU1MgY2xhc3MgZm9yIHRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZUNzc0NsYXNzOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBjdXJyZW50bHkgb3BlbmVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3QgYWN0aW9uIGlzIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBpbml0U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGlzIGNsZWFyZWQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgb24gbGF1bmNoIGFjdGlvbi5cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKVxyXG5cdHB1YmxpYyBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogQXJyYXkgb2Ygc3VmZml4IGJ1dHRvbnMgZm9yIGFkZGl0aW9uYWwgYWN0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdWZmaXhCdXR0b25zOiBTdWZmaXhCdXR0b25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBjaGlwIGlzIGZvY3VzZWQuXHJcblx0ICogU2VuZHMgdGhlIGNoaXAgdmFsdWUgYXMgYW4gZXZlbnQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNoaXBGb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogRGV0ZXJtaW5lcyBpZiB0aGUgbGFiZWwgb2YgdGhlIGBNYXRGb3JtRmllbGRgIHNob3VsZCBmbG9hdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7IHJldHVybiBzdXBlci5zaG91bGRMYWJlbEZsb2F0IHx8IHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Q/LnZhbHVlOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIGRhdGEgaXMgY3VycmVudGx5IGxvYWRpbmcuXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3VsdCBzZXQgaXMgZW1wdHkuXHJcblx0ICovXHJcblx0cHVibGljIGVtcHR5UmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcnZpY2UgdXNlZCBmb3IgZGF0YSBvcGVyYXRpb25zLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IG5ldyBCYXNlU2VydmljZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvciBmb3IgaW5pdGlhbGl6aW5nIHRoZSBjb21wb25lbnQuXHJcblx0ICogQHBhcmFtIGluamVjdG9yIC0gSW5qZWN0b3IgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxyXG5cdCAqIEBwYXJhbSBtZWRpYSAtIE1lZGlhIHNlcnZpY2UgZm9yIGhhbmRsaW5nIG1lZGlhIHF1ZXJpZXMuXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIC0gUmVmZXJlbmNlIGZvciBjaGFuZ2UgZGV0ZWN0aW9uLlxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgLSBDb250cm9sIGZvciByZWFjdGl2ZSBmb3Jtcy5cclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybSAtIFBhcmVudCBmb3JtIHJlZmVyZW5jZS5cclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybUdyb3VwIC0gUGFyZW50IGZvcm0gZ3JvdXAgcmVmZXJlbmNlLlxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIgLSBNYXRjaGVyIGZvciBlcnJvciBzdGF0ZS5cclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIC0gTW9uaXRvciBmb3IgZm9jdXMgZXZlbnRzLlxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIC0gUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuXHRcdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0QE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG5cdFx0ZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcclxuXHRcdGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG5cdCkge1xyXG5cdFx0c3VwZXIoXCJhcHAtdmQtY2hpcHNcIiwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBcclxuXHQgKiBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLiBJdCBzZXRzIHVwIHN1YnNjcmlwdGlvbnMgdG8gdGhlIFxyXG5cdCAqIHNlYXJjaCBpbnB1dCB2YWx1ZSBjaGFuZ2VzIGFuZCBuZ0NvbnRyb2wgdmFsdWUgY2hhbmdlcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdPbkluaXQoKSB7XHJcblx0XHQvKiBMaXN0ZW4gdG8gdmFsdWUgY2hhbmdlcyBvZiB0aGUgc2VhcmNoIGlucHV0IGFuZCBkZWJvdW5jZSB0aGUgaW5wdXQgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QudmFsdWVDaGFuZ2VzXHJcblx0XHRcdC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcclxuXHRcdFx0LnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpbHRlck9wdGlvbnModik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHQvKiBTdWJzY3JpYmUgdG8gbmdDb250cm9sIHZhbHVlIGNoYW5nZXMgdG8gbWFuYWdlIGNoaXAgbGlzdCAqL1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlcz8ucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0aWYgKCF2YWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5zZXRWYWx1ZShcIlwiKTtcclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKiBJdCBicm9hZGNhc3RzIG1lZGlhIGNoYW5nZXMgYW5kIGluaXRpYWxpemVzIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHRoZSBjdXJyZW50IHNlcnZpY2UsXHJcblx0ICogcGFnaW5hdG9yLCBhbmQgc29ydCBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm1lZGlhLmJyb2FkY2FzdCgpO1xyXG5cclxuXHRcdC8qIEluaXRpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yLCBhbmQgc29ydCAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlID8/PSBuZXcgVGFibGVEYXRhU291cmNlPGFueSwgYW55Pih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHdyaXRlIGEgbmV3IHZhbHVlIFxyXG5cdCAqIHRvIHRoZSBlbGVtZW50LlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB3cml0ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHQvKiBTZXQgdGhlIHZhbHVlIHRvIHRoZSBpbnRlcm5hbCBzdGF0ZSAqL1xyXG5cdFx0dGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHQvKiBDbGVhciB0aGUgY2hpcHMgbGlzdCBmb3IgbmV3IGlucHV0ICovXHJcblx0XHR0aGlzLmNoaXBzID0gW107XHJcblxyXG5cdFx0aWYgKCF0aGlzLmN1c3RvbVZhbHVlICYmIHZhbHVlICYmIHRoaXMuY2hpcHM/Lmxlbmd0aCA8PSAwKSB7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdGxldCBfcGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcblx0XHRcdC8qIEluY2x1ZGUgcGFyYW1ldGVycyBmcm9tIF9wYXJhbXMgaWYgYXZhaWxhYmxlICovXHJcblx0XHRcdGlmICh0aGlzLl9wYXJhbXM/LmluY2x1ZGVzKSB7XHJcblx0XHRcdFx0X3BhcmFtcy5pbmNsdWRlcyA9IHRoaXMuX3BhcmFtcy5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogSW5jbHVkZSBwcm9qZWN0aW9uIGZyb20gX3BhcmFtcyBpZiBhdmFpbGFibGUgKi9cclxuXHRcdFx0aWYgKHRoaXMuX3BhcmFtcz8ucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IHRoaXMuX3BhcmFtcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgcHJvamVjdGlvbiBpZiBzcGVjaWZpZWQgKi9cclxuXHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IEFycmF5LmlzQXJyYXkodGhpcy5wcm9qZWN0aW9uKSA/IHRoaXMucHJvamVjdGlvbi5qb2luKCcsJykgOiB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIENvbnN0cnVjdCB0aGUgcmVxdWVzdCBVUkwgKi9cclxuXHRcdFx0dmFyIHVybFBhcnRzOiBzdHJpbmdbXSA9IHRoaXMuc2VydmljZT8uZW5kcG9pbnQ/LnNwbGl0KCc/JykgPz8gW107XHJcblx0XHRcdHRoaXMuc2VydmljZS5odHRwLmdldChgJHt1cmxQYXJ0c1swXX0vJHt2YWx1ZX0ke3VybFBhcnRzLmxlbmd0aCA+IDEgPyBgPyR7dXJsUGFydHNbMV19YCA6ICcnfWAsIHsgcGFyYW1zOiBVdGlscy5jbGVhbk9iamVjdChfcGFyYW1zKSB9KS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdC8qIEFkZCB0aGUgcmV0dXJuZWQgaXRlbSBhcyBhIGNoaXAgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hpcHMucHVzaCh4KTtcclxuXHJcblx0XHRcdFx0XHQvKiBFbWl0IHRoZSBzZWxlY3RlZCBpdGVtICovXHJcblx0XHRcdFx0XHR0aGlzLmluaXRTZWxlY3QuZW1pdCh4KTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuY3VzdG9tVmFsdWUpIHtcclxuXHRcdFx0LyogSGFuZGxlIGN1c3RvbSB2YWx1ZSBpbnB1dCAqL1xyXG5cdFx0XHR0aGlzLmNoaXBzID0gdmFsdWUgPyBbeyBbdGhpcy5rZXldOiB2YWx1ZSB9XSA6IFtdO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0LyogQ2xlYXIgdGhlIGlucHV0IGlmIG5vIHZhbHVlIGlzIHByb3ZpZGVkICovXHJcblx0XHRcdHRoaXMuY2xlYXIoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29ubmVjdHMgdGhlIGRhdGEgc291cmNlIGFuZCBzdWJzY3JpYmVzIHRvIGRhdGEgY2hhbmdlcy4gXHJcblx0ICogSXQgYWxzbyBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KCk6IHZvaWQge1xyXG5cdFx0LyogU2V0IHRoZSBkcm9wZG93biB0byBvcGVuICovXHJcblx0XHR0aGlzLm9wZW5lZCA9IHRydWU7XHJcblxyXG5cdFx0LyogQ29uZmlndXJlIGZpZWxkIGZpbHRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlIS5maWVsZEZpbHRlcnMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKCk7XHJcblxyXG5cdFx0LyogTWFudWFsbHkgY29ubmVjdCB0aGUgZGF0YSBzb3VyY2UgZm9yICdtYXQtb3B0aW9uJyB0cmlnZ2VycyAqL1xyXG5cdFx0aWYgKCF0aGlzLmNsYXNzVHlwZSAmJiAhdGhpcy5kYXRhU291cmNlPy5pc0Nvbm5lY3RlZCkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZT8uY29ubmVjdCgpLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGZvY3VzIG9uIHRoZSBmaWx0ZXIgaW5wdXQgZWxlbWVudC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyB0aGUgYmx1ciBldmVudCBvZiB0aGUgaW5wdXQgYm94LiBJZiB0aGUgZm9jdXMgbW92ZXMgYXdheSBmcm9tIGEgXHJcblx0ICogbWF0LW9wdGlvbiwgaXQgYWRkcyB0aGUgY3VycmVudCB2YWx1ZSBhcyBhIGNoaXAuXHJcblx0ICogQHBhcmFtIGV2ZW50IC0gVGhlIGZvY3VzIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRPbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuXHRcdGNvbnN0IHRhcmdldDogSFRNTEVsZW1lbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cdFx0aWYgKCF0YXJnZXQgfHwgdGFyZ2V0LnRhZ05hbWUgIT09ICdNQVQtT1BUSU9OJykge1xyXG5cdFx0XHRsZXQgdmFsdWU6IHN0cmluZyA9IHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlO1xyXG5cdFx0XHRpZiAodmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLmFkZENoaXAoeyBbdGhpcy5rZXldOiB2YWx1ZSB9LCB0aGlzLmZpbHRlcklucHV0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIGNoaXAgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlIGFuZCBjbGVhcnMgdGhlIGlucHV0LlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhZGQgYXMgYSBjaGlwLlxyXG5cdCAqIEBwYXJhbSBpbnB1dCAtIFRoZSBpbnB1dCBlbGVtZW50IHRvIHJlc2V0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRDaGlwKHZhbHVlOiBhbnksIGlucHV0OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCB0aGUgbmV3IGNoaXAgKi9cclxuXHRcdHRoaXMuY2hpcHMgPSBbdmFsdWVdO1xyXG5cclxuXHRcdC8qIEVtaXQgdGhlIHNlbGVjdGVkIHZhbHVlICovXHJcblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWUpO1xyXG5cclxuXHRcdC8qIFNldCB0aGUgbmdNb2RlbCB2YWx1ZSAqL1xyXG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlW3RoaXMua2V5XTtcclxuXHJcblx0XHQvKiBEaXNhYmxlIHRoZSBpbnB1dCB0byBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dCB0ZXh0IHZhbHVlICovXHJcblx0XHRpZiAoaW5wdXQpIHtcclxuXHRcdFx0aW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDbG9zZSB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsIGlmIGl0IGlzIG9wZW4gKi9cclxuXHRcdHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlcj8uY2xvc2VQYW5lbCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2xlYXJzIGFsbCBjaGlwcyBhbmQgcmVzZXRzIHRoZSBjb250cm9sIHN0YXRlLlxyXG5cdCAqIEBwYXJhbSB0cmlnZ2VyU3RhdGVDaGFuZ2VzIC0gV2hldGhlciB0byB0cmlnZ2VyIHN0YXRlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0cHVibGljIGNsZWFyKHRyaWdnZXJTdGF0ZUNoYW5nZXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHQvKiBSZXNldCB0aGUgdmFsdWUgYW5kIGNoaXBzICovXHJcblx0XHR0aGlzLnZhbHVlID0gbnVsbDtcclxuXHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHJcblx0XHQvKiBNYXJrIHRoZSBjb250cm9sIGFzIHRvdWNoZWQgKi9cclxuXHRcdGlmICh0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSBuZ01vZGVsIHZhbHVlICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnBhdGNoVmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcblx0XHRpZiAodHJpZ2dlclN0YXRlQ2hhbmdlcykge1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogRW5hYmxlIHRoZSBpbnB1dCBmb3IgbmV3IGVudHJpZXMgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcblx0XHQvKiBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVycyB0aGUgb3B0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdGV4dCBpbnB1dC5cclxuXHQgKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIGZpbHRlciBvcHRpb25zIGJ5LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZmlsdGVyT3B0aW9ucyh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdC8qIFBlcmZvcm0gZmlsdGVyaW5nIGJhc2VkIG9uIHRoZSBjdXJyZW50IHRleHQgaW5wdXQgKi9cclxuXHRcdGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuXHRcdFx0LyogSW5pdGlhbGl6ZSBwYXJhbWV0ZXJzIGZvciBmaWx0ZXJpbmcgKi9cclxuXHRcdFx0bGV0IF9wYXJhbXM6IGFueVtdID0geyAuLi50aGlzLmdldFF1ZXJ5UGFyYW1zKCkgfTtcclxuXHJcblx0XHRcdGlmICh0ZXh0KSB7XHJcblx0XHRcdFx0LyogQWRkIHNlYXJjaCB0ZXJtIHRvIHBhcmFtZXRlcnMgaWYgYSBzZWFyY2ggZmllbGQgaXMgc3BlY2lmaWVkICovXHJcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQgJiYgKHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA/PyAwKSA9PSAwICYmICh0aGlzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwKSA9PSAwKSB7XHJcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh0aGlzLnNlYXJjaEZpZWxkKTtcclxuXHRcdFx0XHRcdGlmIChyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0X3BhcmFtc1socmVzdWx0IGFzIGFueSlbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgc2VhcmNoIHRlcm1zIGZvciBlYWNoIHNwZWNpZmllZCBzZWFyY2ggZmllbGQgKi9cclxuXHRcdFx0XHRpZiAoKHRoaXMuZmlsdGVycz8ubGVuZ3RoID8/IDApID09IDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoRmllbGRzPy5tYXAoeCA9PiB4LnRyaW0oKSk/LmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5zZWFyY2hPcGVyYXRvcnMuam9pbignfFxcXFwnKX0pPyguKilgKS5leGVjKHgpO1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdFx0X3BhcmFtc1socmVzdWx0IGFzIGFueSlbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKCh0aGlzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuXHRcdFx0XHRcdC8qIENvbnN0cnVjdCB0aGUgVVJMIGZvciB0aGUgZmlsdGVycyAqL1xyXG5cdFx0XHRcdFx0bGV0IGZpbHRlclF1ZXJ5ID0gJyc7XHJcblxyXG5cdFx0XHRcdFx0LyogSW5jbHVkZSBhZGRpdGlvbmFsIGZpbHRlcnMgaWYgZGVmaW5lZCAqL1xyXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJzIS5mb3JFYWNoKGZpbHRlciA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHsgZ2x1ZSwgZmllbGRzIH0gPSBmaWx0ZXI7XHJcblx0XHRcdFx0XHRcdGZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCB7IG5hbWUsIG9wZXJhdG9yIH0gPSBmaWVsZDtcclxuXHRcdFx0XHRcdFx0XHQvKiBDb25zdHJ1Y3QgdGhlIGZpbHRlciBzdHJpbmcgKi9cclxuXHRcdFx0XHRcdFx0XHRmaWx0ZXJRdWVyeSArPSBgJHtuYW1lfToke29wZXJhdG9yfSR7dGV4dH1gO1xyXG5cclxuXHRcdFx0XHRcdFx0XHQvKiBBZGQgZ2x1ZSBpZiBpdCdzIG5vdCB0aGUgbGFzdCBmaWVsZCAqL1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpbmRleCA8IGZpZWxkcy5sZW5ndGggLSAxIHx8IGZpbHRlciAhPT0gdGhpcy5maWx0ZXJzIVt0aGlzLmZpbHRlcnMhLmxlbmd0aCAtIDFdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJRdWVyeSArPSBgJHtnbHVlfWA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRcdC8qIFVwZGF0ZSB0aGUgVVJMIHBhcmFtZXRlcnMgd2l0aCB0aGUgY29uc3RydWN0ZWQgZmlsdGVyIHF1ZXJ5ICovXHJcblx0XHRcdFx0XHRpZiAoZmlsdGVyUXVlcnkpIHtcclxuXHRcdFx0XHRcdFx0X3BhcmFtc1snZmlsdGVycycgYXMgYW55XSA9IGZpbHRlclF1ZXJ5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gdGhlIHBhcmFtZXRlcnMgKi9cclxuXHRcdFx0aWYgKFV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIF9wYXJhbXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBVcGRhdGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlICovXHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IF9wYXJhbXM7XHJcblxyXG5cdFx0XHQvKiBSZXF1ZXN0IG5ldyByZXN1bHRzIGZyb20gdGhlIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UuYXBwbHlGaWx0ZXJzKHRoaXMuX3BhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHRoZSBldmVudCB3aGVuIGEgY2hpcCBpcyByZW1vdmVkLiBJdCBlbWl0cyB0aGUgY2xlYXJlZCB2YWx1ZSBcclxuXHQgKiBhbmQgb3B0aW9uYWxseSBjbGVhcnMgdGhlIGNoaXBzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSZW1vdmVkRXZlbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNsZWFyZWQ/LmVtaXQodGhpcy52YWx1ZSk7XHJcblx0XHRpZiAodGhpcy5yZW1vdmFibGUpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGxhdW5jaCBidXR0b24sIGVtaXR0aW5nIHRoZSBcclxuXHQgKiBzZWxlY3RlZCBjaGlwIGlmIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmNoaXBzPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMub25MYXVuY2guZW1pdCh0aGlzLmNoaXBzWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UuXHJcblx0ICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldFF1ZXJ5UGFyYW1zKCk6IGFueSB7XHJcblx0XHQvKiBJbml0aWFsaXplIHBhcmFtZXRlcnMgaWYgbnVsbCAqL1xyXG5cdFx0dmFyIHBhcmFtcyA9IHRoaXMuX3BhcmFtcyB8fCB7fTtcclxuXHJcblx0XHQvKiBJbmNsdWRlIHByb2plY3Rpb24gaWYgc3BlY2lmaWVkICovXHJcblx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwYXJhbXM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnVwIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBpbnN0YW5jZSBcclxuXHQgKiBpcyBkZXN0cm95ZWQuIEl0IHVuc3Vic2NyaWJlcyBmcm9tIHRoZSBkYXRhIHNvdXJjZSBzdWJzY3JpcHRpb24uXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufSIsIjxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cclxuXHQ8IS0tICNyZWdpb24gQ2hpcHMgLS0+XHJcblx0PG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGZpcnN0ID0gZmlyc3Q7IGxldCBpbmRleCA9IGluZGV4XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiIGRpc2FibGVSaXBwbGU+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgY2hpcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNoaXA6IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L3NwYW4+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygc3VmZml4QnV0dG9uczsgbGV0IGZpcnN0ID0gZmlyc3RcIiBbaGlkZGVuXT1cImJ1dHRvbi5oaWRlICYmIGJ1dHRvbi5oaWRlKGNoaXBzWzBdLCBjb250ZXh0KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGJ1dHRvbi5ldmVudCAmJiBidXR0b24uZXZlbnQoY2hpcHNbMF0sIGNvbnRleHQpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7YnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcblx0XHQ8L2E+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0lmPVwiKG9uTGF1bmNoPy5vYnNlcnZlcnM/Lmxlbmd0aD8/MCkgPiAwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmxhdW5jaDwvbWF0LWljb24+XHJcblx0XHQ8L2E+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0lmPVwiIXJlYWRvbmx5XCIgKGNsaWNrKT1cImhhbmRsZVJlbW92ZWRFdmVudCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdDwvYT5cclxuXHQ8L21hdC1jaGlwLXJvdz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBTZWFyY2ggYm94IC0tPlxyXG5cdDxpbnB1dCBtYXRJbnB1dCBbaGlkZGVuXT1cInZhbHVlICYmICFlbXB0eVwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgKGZvY3VzKT1cImNvbm5lY3QoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG9dPVwib3JpZ2luXCIgW2Zvcm1Db250cm9sXT1cImF1dG9Db21wbGV0ZUNoaXBMaXN0XCIgKGJsdXIpPVwiY3VzdG9tVmFsdWUgJiYgYWRkT25CbHVyKCRldmVudClcIiAjZmlsdGVySW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBSZXNldCBidXR0b24gLS0+XHJcblx0PGEgdHJhaWxpbmdJY29uICpuZ0lmPVwiKCF2YWx1ZSB8fCBlbXB0eSkgJiYgIXJlYWRvbmx5ICYmICFkaXNhYmxlZFwiIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtYXJyb3dcIiAoY2xpY2spPVwiZmlsdGVySW5wdXQudmFsdWUgPSAnJ1wiPlxyXG5cdFx0PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJuZy10bnMtYzE4NC0yMVwiPlxyXG5cdFx0XHQ8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIiBjbGFzcz1cIm5nLXRucy1jMTg0LTIxXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0PC9hPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC9tYXQtY2hpcC1ncmlkPlxyXG5cclxuPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkQ2hpcCgkZXZlbnQub3B0aW9uLnZhbHVlLCBmaWx0ZXJJbnB1dClcIiBjbGFzcz1cInt7YXV0b2NvbXBsZXRlQ3NzQ2xhc3N9fXt7Y2xhc3NUeXBlPycgdGFibGUtYXV0b2NvbXBsZXRlJzonJ319XCI+XHJcblx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiIWNsYXNzVHlwZSAmJiBvcGVuZWRcIiBsZXQtaXRlbSBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImRhdGFTb3VyY2U/Lml0ZW1zXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj57e2l0ZW19fTwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbWF0LW9wdGlvbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGFzc1R5cGUgJiYgb3BlbmVkXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBoaWRlPVwidHJ1ZVwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdDx2ZC1keW5hbWljLXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbY2xhc3NUeXBlXT1cImNsYXNzVHlwZVwiIFtzdGlja3lIZWFkZXJdPVwidHJ1ZVwiIChyb3dDbGljayk9XCJhZGRDaGlwKCRldmVudCwgZmlsdGVySW5wdXQpXCIgbWF0U29ydCBbc29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlfHwnaWQnXCIgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiPjwvdmQtZHluYW1pYy10YWJsZT5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8ZGl2IGNsYXNzPVwidmQtY2hpcHMtcGFnaW5hdG9yXCI+XHJcblx0XHQ8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHRcdDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZT8udG90YWxcIiBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2U/LnBhZ2VJbmRleFwiIFtwYWdlU2l6ZV09XCJkYXRhU291cmNlPy5wYWdlU2l6ZVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9XCJ0cnVlXCIgaGlkZVBhZ2VTaXplPVwidHJ1ZVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuXHQ8L2Rpdj5cclxuPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48ZGl2IG1hdEF1dG9jb21wbGV0ZU9yaWdpbiAjb3JpZ2luPVwibWF0QXV0b2NvbXBsZXRlT3JpZ2luXCIgY2xhc3M9XCJhdXRvY29tcGxldGUtb3JpZ2luXCI+PC9kaXY+Il19
644
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sNEJBQTRC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QUFLLEVBQUU7Z0JBT3RDLG1CQUFtQjtzQkFEekIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBWTdCLFFBQVE7c0JBRFgsS0FBSztnQkFpQkYsTUFBTTtzQkFEVCxLQUFLO2dCQW9CRixVQUFVO3NCQURiLEtBQUs7Z0JBMkJGLFNBQVM7c0JBRFosS0FBSztnQkFnQkYsV0FBVztzQkFEZCxLQUFLO2dCQVlDLE9BQU87c0JBRGIsS0FBSztnQkFPQyxHQUFHO3NCQURULEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFZQyxVQUFVO3NCQURoQixNQUFNO2dCQU9BLFFBQVE7c0JBRGQsTUFBTTtnQkFPQSxPQUFPO3NCQURiLE1BQU07Z0JBT0EsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBT1QsYUFBYTtzQkFEbkIsS0FBSztnQkFRQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBUeXBlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLCBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIEZpbHRlciwgU3VmZml4QnV0dG9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1hdEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL2Zvcm1zL2hlbHBlcnMvYWJzdHJhY3QtbWF0LWZvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBWZE1lZGlhU2VydmljZSB9IGZyb20gJy4uLy4uL21lZGlhL3NlcnZpY2VzL21lZGlhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYmxlL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS1vcHRpb24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmRDaGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jaGlwLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3ZkLWNoaXBzJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBWZENoaXBzQ29tcG9uZW50IH0sXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLFxyXG5cdFx0XHR1c2VWYWx1ZTogeyBvdmVybGF5UGFuZWxDbGFzczogJ3ZkLWNoaXBzLWF1dG9jb21wbGV0ZScgfVxyXG5cdFx0fVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkQ2hpcHNDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1hdEZvcm1GaWVsZDxhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdC8qKlxyXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgZHluYW1pYyB0YWJsZSBjb21wb25lbnQuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZHluYW1pY1RhYmxlPzogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGR5bmFtaWMgdGFibGUgY29tcG9uZW50IHJlZmVyZW5jZS5cclxuXHQgKiBTZXRzIHRoZSBkYXRhIHNvdXJjZSdzIHNvcnQgd2hlbiB0aGUgZHluYW1pYyB0YWJsZSBpcyBkZWZpbmVkLlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBnZXQgZHluYW1pY1RhYmxlKCk6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2R5bmFtaWNUYWJsZTsgfVxyXG5cdHB1YmxpYyBzZXQgZHluYW1pY1RhYmxlKGR5bmFtaWNUYWJsZTogVmREeW5hbWljVGFibGVDb21wb25lbnQpIHtcclxuXHRcdHRoaXMuX2R5bmFtaWNUYWJsZSA9IGR5bmFtaWNUYWJsZTtcclxuXHRcdGlmICh0aGlzLl9keW5hbWljVGFibGUpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlIS5zb3J0ID0gdGhpcy5fZHluYW1pY1RhYmxlLm1hdFNvcnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWZpbmVzIHRoZSBjbGFzcyB0eXBlIGZvciB0aGUgZHluYW1pYyB0YWJsZS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjbGFzc1R5cGU/OiBUeXBlPGFueT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgcGFnaW5hdG9yIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9wYWdpbmF0b3I/OiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIHBhZ2luYXRvciBjb21wb25lbnQgcmVmZXJlbmNlLlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7IHRoaXMuX3BhZ2luYXRvciA9IHBhZ2luYXRvcjsgfVxyXG5cdHB1YmxpYyBnZXQgcGFnaW5hdG9yKCk6IE1hdFBhZ2luYXRvciB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9wYWdpbmF0b3I7IH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBzb3J0aW5nIGRpcmVjdGl2ZSBmb3IgdGhlIHRhYmxlLlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIHNvcnQ/OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBBdmFpbGFibGUgcGFnZSBzaXplIG9wdGlvbnMgZm9yIHBhZ2luYXRpb24uXHJcblx0ICovXHJcblx0cHVibGljIHBhZ2VTaXplT3B0aW9uczogQXJyYXk8bnVtYmVyPiA9IFs1LCAxMCwgMTUsIDIwLCAzMCwgNTAsIDEwMCwgMjAwXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBhY3RpdmUgc29ydCBjb2x1bW4uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnRBY3RpdmU/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgZGlyZWN0aW9uIG9mIHNvcnRpbmcuXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YSBzb3VyY2UgZm9yIHRoZSBkYXRhIHRhYmxlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlPzogVGFibGVEYXRhU291cmNlPGFueSwgYW55PiB8IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFN1YnNjcmlwdGlvbiBmb3IgdGhlIGRhdGEgc291cmNlIG9ic2VydmFibGUuXHJcblx0ICovXHJcblx0cHVibGljIGRhdGFTb3VyY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZvcm0gY29udHJvbCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBjaGlwIGxpc3QuXHJcblx0ICovXHJcblx0cHVibGljIGF1dG9Db21wbGV0ZUNoaXBMaXN0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuXHQvKiogXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBmaWx0ZXIgaW5wdXQgZWxlbWVudC5cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBmaWx0ZXJJbnB1dD86IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpc3Qgb2Ygc2VhcmNoIG9wZXJhdG9ycyBmb3IgZmlsdGVyaW5nLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdID0gW1wiIT1cIiwgXCIhXCIsIFwiPD5cIiwgXCI+PVwiLCBcIj5cIiwgXCI8PVwiLCBcIjxcIiwgXCJeXCIsIFwiJFwiLCBcIn5cIl07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFycmF5IG9mIGNoaXBzIGN1cnJlbnRseSBiZWluZyB1c2VkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNoaXBzOiBhbnlbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIGNoaXBzLlxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRDaGlwRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBjaGlwVGVtcGxhdGU/OiBWZENoaXBEaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRlbXBsYXRlIGZvciBhdXRvY29tcGxldGUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT86IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGU/OiBNYXRBdXRvY29tcGxldGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgYXV0b2NvbXBsZXRlIHRyaWdnZXIuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVUcmlnZ2VyPzogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcblx0LyoqXHJcblx0ICogRW5kcG9pbnQgZm9yIGRhdGEgcmV0cmlldmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZW5kcG9pbnQ/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHRoZSBlbmRwb2ludCBmb3IgdGhlIHNlcnZpY2UuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHwgRnVuY3Rpb24gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7IH1cclxuXHRzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdHlwZW9mIGVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz5lbmRwb2ludCk7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXJhbWV0ZXJzIHVzZWQgZm9yIGRhdGEgcmV0cmlldmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcGFyYW1zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgb3Igc2V0cyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHNlcnZpY2UuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtZXRlcnMgKi9cclxuXHRcdFV0aWxzLmNsZWFuT2JqZWN0KHBhcmFtcyk7XHJcblxyXG5cdFx0aWYgKCFVdGlscy5lcXVhbHModGhpcy5fcGFyYW1zLCBwYXJhbXMpKSB7XHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb24gZmllbGRzIGZvciBkYXRhIHJldHJpZXZhbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHRoZSBwcm9qZWN0aW9uIGZvciB0aGUgc2VydmljZS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3Byb2plY3Rpb247IH1cclxuXHRzZXQgcHJvamVjdGlvbihwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG5cdFx0dGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcblx0XHRpZiAodGhpcy5fcmVhZG9ubHkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHN1cGVyLmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5kaWNhdGVzIGlmIHBhZ2luYXRpb24gaXMgZW5hYmxlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhZ2luYXRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgb3Igc2V0cyB0aGUgcGFnaW5hdGlvbiBvcHRpb24uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFnaW5hdGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcGFnaW5hdGVkOyB9XHJcblx0c2V0IHBhZ2luYXRlZChwYWdpbmF0ZWQ6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuX3BhZ2luYXRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShwYWdpbmF0ZWQpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgY3VzdG9tIHZhbHVlcyBhcmUgYWxsb3dlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX2N1c3RvbVZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgb3Igc2V0cyB0aGUgY3VzdG9tIHZhbHVlIG9wdGlvbi5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBjdXN0b21WYWx1ZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2N1c3RvbVZhbHVlOyB9XHJcblx0c2V0IGN1c3RvbVZhbHVlKGN1c3RvbVZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLl9jdXN0b21WYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjdXN0b21WYWx1ZSk7XHJcblx0XHR0aGlzLmtleSA9IGN1c3RvbVZhbHVlICYmIHRoaXMua2V5ID09ICdpZCcgPyAnbmFtZScgOiB0aGlzLmtleTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgY29udGV4dCBmb3IgdGhlIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEtleSB1c2VkIGZvciBpZGVudGlmeWluZyBpdGVtcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBrZXk6IHN0cmluZyA9ICdpZCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpZWxkIHVzZWQgZm9yIHNlYXJjaCBmdW5jdGlvbmFsaXR5LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkOiBzdHJpbmcgPSAnc2VhcmNoJztcclxuXHJcblx0LyoqXHJcblx0ICogTGlzdCBvZiBmaWVsZHMgdXNlZCBmb3Igc2VhcmNoIGZ1bmN0aW9uYWxpdHkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBbiBhcnJheSBvZiBmaWx0ZXIgb2JqZWN0cywgZWFjaCBkZWZpbmVkIGJ5IGEgZ2x1ZSBvcGVyYXRvciBhbmQgZmllbGRzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcnM/OiBGaWx0ZXJbXTtcclxuXHJcblx0LyoqXHJcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgY2hpcHMgY2FuIGJlIHJlbW92ZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcmVtb3ZhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBrZXkgcHJlc3NlcyBmb3IgZGVib3VuY2luZy5cclxuXHQgKiBEZWZhdWx0cyB0byA0MDAuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZGVib3VuY2U6IG51bWJlciA9IDQwMDtcclxuXHJcblx0LyoqXHJcblx0ICogQ1NTIGNsYXNzIGZvciB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgY3VycmVudGx5IG9wZW5lZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0IGFjdGlvbiBpcyBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgaW5pdFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBjbGVhcmVkLlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBjbGVhcmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIG9uIGxhdW5jaCBhY3Rpb24uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJylcclxuXHRwdWJsaWMgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFycmF5IG9mIHN1ZmZpeCBidXR0b25zIGZvciBhZGRpdGlvbmFsIGFjdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc3VmZml4QnV0dG9uczogU3VmZml4QnV0dG9uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY2hpcCBpcyBmb2N1c2VkLlxyXG5cdCAqIFNlbmRzIHRoZSBjaGlwIHZhbHVlIGFzIGFuIGV2ZW50LlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBjaGlwRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgaWYgdGhlIGxhYmVsIG9mIHRoZSBgTWF0Rm9ybUZpZWxkYCBzaG91bGQgZmxvYXQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4geyByZXR1cm4gc3VwZXIuc2hvdWxkTGFiZWxGbG9hdCB8fCB0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0Py52YWx1ZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmRpY2F0ZXMgd2hldGhlciBkYXRhIGlzIGN1cnJlbnRseSBsb2FkaW5nLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSByZXN1bHQgc2V0IGlzIGVtcHR5LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlbXB0eVJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgb3BlcmF0aW9ucy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VydmljZTogQmFzZVNlcnZpY2UgPSBuZXcgQmFzZVNlcnZpY2UoKTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3IgZm9yIGluaXRpYWxpemluZyB0aGUgY29tcG9uZW50LlxyXG5cdCAqIEBwYXJhbSBpbmplY3RvciAtIEluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvbi5cclxuXHQgKiBAcGFyYW0gbWVkaWEgLSBNZWRpYSBzZXJ2aWNlIGZvciBoYW5kbGluZyBtZWRpYSBxdWVyaWVzLlxyXG5cdCAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiAtIFJlZmVyZW5jZSBmb3IgY2hhbmdlIGRldGVjdGlvbi5cclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIC0gQ29udHJvbCBmb3IgcmVhY3RpdmUgZm9ybXMuXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gLSBQYXJlbnQgZm9ybSByZWZlcmVuY2UuXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCAtIFBhcmVudCBmb3JtIGdyb3VwIHJlZmVyZW5jZS5cclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIC0gTWF0Y2hlciBmb3IgZXJyb3Igc3RhdGUuXHJcblx0ICogQHBhcmFtIGZvY3VzTW9uaXRvciAtIE1vbml0b3IgZm9yIGZvY3VzIGV2ZW50cy5cclxuXHQgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudC5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwdWJsaWMgbWVkaWE6IFZkTWVkaWFTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHRcdGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXHJcblx0XHRmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcclxuXHRcdGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKFwiYXBwLXZkLWNoaXBzXCIsIG5nQ29udHJvbCwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvciwgZWxlbWVudFJlZiwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgXHJcblx0ICogZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC4gSXQgc2V0cyB1cCBzdWJzY3JpcHRpb25zIHRvIHRoZSBcclxuXHQgKiBzZWFyY2ggaW5wdXQgdmFsdWUgY2hhbmdlcyBhbmQgbmdDb250cm9sIHZhbHVlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25Jbml0KCkge1xyXG5cdFx0LyogTGlzdGVuIHRvIHZhbHVlIGNoYW5nZXMgb2YgdGhlIHNlYXJjaCBpbnB1dCBhbmQgZGVib3VuY2UgdGhlIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcblx0XHRcdC5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJPcHRpb25zKHYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0LyogU3Vic2NyaWJlIHRvIG5nQ29udHJvbCB2YWx1ZSBjaGFuZ2VzIHRvIG1hbmFnZSBjaGlwIGxpc3QgKi9cclxuXHRcdHRoaXMubmdDb250cm9sPy52YWx1ZUNoYW5nZXM/LnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGlmICghdmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLmNoaXBzID0gW107XHJcblx0XHRcdFx0dGhpcy5fdmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Quc2V0VmFsdWUoXCJcIik7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5lbmFibGUoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICogSXQgYnJvYWRjYXN0cyBtZWRpYSBjaGFuZ2VzIGFuZCBpbml0aWFsaXplcyB0aGUgZGF0YSBzb3VyY2Ugd2l0aCB0aGUgY3VycmVudCBzZXJ2aWNlLFxyXG5cdCAqIHBhZ2luYXRvciwgYW5kIHNvcnQgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBJbml0aWFsaXplIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHRoZSBjdXJyZW50IHNlcnZpY2UsIHBhZ2luYXRvciwgYW5kIHNvcnQgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZSA/Pz0gbmV3IFRhYmxlRGF0YVNvdXJjZTxhbnksIGFueT4odGhpcy5zZXJ2aWNlISwgdGhpcy5wYWdpbmF0b3IsIHRoaXMuc29ydCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byB3cml0ZSBhIG5ldyB2YWx1ZSBcclxuXHQgKiB0byB0aGUgZWxlbWVudC5cclxuXHQgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gd3JpdGUuXHJcblx0ICovXHJcblx0cHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0LyogU2V0IHRoZSB2YWx1ZSB0byB0aGUgaW50ZXJuYWwgc3RhdGUgKi9cclxuXHRcdHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0LyogQ2xlYXIgdGhlIGNoaXBzIGxpc3QgZm9yIG5ldyBpbnB1dCAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdGlmICghdGhpcy5jdXN0b21WYWx1ZSAmJiB2YWx1ZSAmJiB0aGlzLmNoaXBzPy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRsZXQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdFx0XHQvKiBJbmNsdWRlIHBhcmFtZXRlcnMgZnJvbSBfcGFyYW1zIGlmIGF2YWlsYWJsZSAqL1xyXG5cdFx0XHRpZiAodGhpcy5fcGFyYW1zPy5pbmNsdWRlcykge1xyXG5cdFx0XHRcdF9wYXJhbXMuaW5jbHVkZXMgPSB0aGlzLl9wYXJhbXMuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEluY2x1ZGUgcHJvamVjdGlvbiBmcm9tIF9wYXJhbXMgaWYgYXZhaWxhYmxlICovXHJcblx0XHRcdGlmICh0aGlzLl9wYXJhbXM/LnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSB0aGlzLl9wYXJhbXMucHJvamVjdGlvbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWRkIHByb2plY3Rpb24gaWYgc3BlY2lmaWVkICovXHJcblx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSBBcnJheS5pc0FycmF5KHRoaXMucHJvamVjdGlvbikgPyB0aGlzLnByb2plY3Rpb24uam9pbignLCcpIDogdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBDb25zdHJ1Y3QgdGhlIHJlcXVlc3QgVVJMICovXHJcblx0XHRcdHZhciB1cmxQYXJ0czogc3RyaW5nW10gPSB0aGlzLnNlcnZpY2U/LmVuZHBvaW50Py5zcGxpdCgnPycpID8/IFtdO1xyXG5cdFx0XHR0aGlzLnNlcnZpY2UuaHR0cC5nZXQoYCR7dXJsUGFydHNbMF19LyR7dmFsdWV9JHt1cmxQYXJ0cy5sZW5ndGggPiAxID8gYD8ke3VybFBhcnRzWzFdfWAgOiAnJ31gLCB7IHBhcmFtczogVXRpbHMuY2xlYW5PYmplY3QoX3BhcmFtcykgfSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoeDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQvKiBBZGQgdGhlIHJldHVybmVkIGl0ZW0gYXMgYSBjaGlwICovXHJcblx0XHRcdFx0XHR0aGlzLmNoaXBzLnB1c2goeCk7XHJcblxyXG5cdFx0XHRcdFx0LyogRW1pdCB0aGUgc2VsZWN0ZWQgaXRlbSAqL1xyXG5cdFx0XHRcdFx0dGhpcy5pbml0U2VsZWN0LmVtaXQoeCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLmN1c3RvbVZhbHVlKSB7XHJcblx0XHRcdC8qIEhhbmRsZSBjdXN0b20gdmFsdWUgaW5wdXQgKi9cclxuXHRcdFx0dGhpcy5jaGlwcyA9IHZhbHVlID8gW3sgW3RoaXMua2V5XTogdmFsdWUgfV0gOiBbXTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8qIENsZWFyIHRoZSBpbnB1dCBpZiBubyB2YWx1ZSBpcyBwcm92aWRlZCAqL1xyXG5cdFx0XHR0aGlzLmNsZWFyKGZhbHNlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbm5lY3RzIHRoZSBkYXRhIHNvdXJjZSBhbmQgc3Vic2NyaWJlcyB0byBkYXRhIGNoYW5nZXMuIFxyXG5cdCAqIEl0IGFsc28gc2V0cyB1cCB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgY29ubmVjdCgpOiB2b2lkIHtcclxuXHRcdC8qIFNldCB0aGUgZHJvcGRvd24gdG8gb3BlbiAqL1xyXG5cdFx0dGhpcy5vcGVuZWQgPSB0cnVlO1xyXG5cclxuXHRcdC8qIENvbmZpZ3VyZSBmaWVsZCBmaWx0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZSEuZmllbGRGaWx0ZXJzID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xyXG5cclxuXHRcdC8qIE1hbnVhbGx5IGNvbm5lY3QgdGhlIGRhdGEgc291cmNlIGZvciAnbWF0LW9wdGlvbicgdHJpZ2dlcnMgKi9cclxuXHRcdGlmICghdGhpcy5jbGFzc1R5cGUgJiYgIXRoaXMuZGF0YVNvdXJjZT8uaXNDb25uZWN0ZWQpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2U/LmNvbm5lY3QoKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBmb2N1cyBvbiB0aGUgZmlsdGVyIGlucHV0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0cHVibGljIGZvY3VzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIGlucHV0IGJveC4gSWYgdGhlIGZvY3VzIG1vdmVzIGF3YXkgZnJvbSBhIFxyXG5cdCAqIG1hdC1vcHRpb24sIGl0IGFkZHMgdGhlIGN1cnJlbnQgdmFsdWUgYXMgYSBjaGlwLlxyXG5cdCAqIEBwYXJhbSBldmVudCAtIFRoZSBmb2N1cyBldmVudC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkT25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcblx0XHRjb25zdCB0YXJnZXQ6IEhUTUxFbGVtZW50ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHRcdGlmICghdGFyZ2V0IHx8IHRhcmdldC50YWdOYW1lICE9PSAnTUFULU9QVElPTicpIHtcclxuXHRcdFx0bGV0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50Py52YWx1ZTtcclxuXHRcdFx0aWYgKHZhbHVlKSB7XHJcblx0XHRcdFx0dGhpcy5hZGRDaGlwKHsgW3RoaXMua2V5XTogdmFsdWUgfSwgdGhpcy5maWx0ZXJJbnB1dCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBjaGlwIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZSBhbmQgY2xlYXJzIHRoZSBpbnB1dC5cclxuXHQgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYWRkIGFzIGEgY2hpcC5cclxuXHQgKiBAcGFyYW0gaW5wdXQgLSBUaGUgaW5wdXQgZWxlbWVudCB0byByZXNldC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQ2hpcCh2YWx1ZTogYW55LCBpbnB1dDogYW55KTogdm9pZCB7XHJcblx0XHQvKiBBZGQgdGhlIG5ldyBjaGlwICovXHJcblx0XHR0aGlzLmNoaXBzID0gW3ZhbHVlXTtcclxuXHJcblx0XHQvKiBFbWl0IHRoZSBzZWxlY3RlZCB2YWx1ZSAqL1xyXG5cdFx0dGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHQvKiBTZXQgdGhlIG5nTW9kZWwgdmFsdWUgKi9cclxuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZVt0aGlzLmtleV07XHJcblxyXG5cdFx0LyogRGlzYWJsZSB0aGUgaW5wdXQgdG8gYWxsb3cgb25seSBvbmUgY2hpcCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QucGF0Y2hWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgaW5wdXQgdGV4dCB2YWx1ZSAqL1xyXG5cdFx0aWYgKGlucHV0KSB7XHJcblx0XHRcdGlucHV0LnZhbHVlID0gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2xvc2UgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpZiBpdCBpcyBvcGVuICovXHJcblx0XHR0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXI/LmNsb3NlUGFuZWwoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFycyBhbGwgY2hpcHMgYW5kIHJlc2V0cyB0aGUgY29udHJvbCBzdGF0ZS5cclxuXHQgKiBAcGFyYW0gdHJpZ2dlclN0YXRlQ2hhbmdlcyAtIFdoZXRoZXIgdG8gdHJpZ2dlciBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGVhcih0cmlnZ2VyU3RhdGVDaGFuZ2VzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0LyogUmVzZXQgdGhlIHZhbHVlIGFuZCBjaGlwcyAqL1xyXG5cdFx0dGhpcy52YWx1ZSA9IG51bGw7XHJcblx0XHR0aGlzLmNoaXBzID0gW107XHJcblxyXG5cdFx0LyogTWFyayB0aGUgY29udHJvbCBhcyB0b3VjaGVkICovXHJcblx0XHRpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgbmdNb2RlbCB2YWx1ZSAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0aWYgKHRyaWdnZXJTdGF0ZUNoYW5nZXMpIHtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEVuYWJsZSB0aGUgaW5wdXQgZm9yIG5ldyBlbnRyaWVzICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpbHRlcnMgdGhlIG9wdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRleHQgaW5wdXQuXHJcblx0ICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBmaWx0ZXIgb3B0aW9ucyBieS5cclxuXHQgKi9cclxuXHRwcml2YXRlIGZpbHRlck9wdGlvbnModGV4dDogc3RyaW5nKSB7XHJcblx0XHQvKiBQZXJmb3JtIGZpbHRlcmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB0ZXh0IGlucHV0ICovXHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcblx0XHRcdC8qIEluaXRpYWxpemUgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nICovXHJcblx0XHRcdGxldCBfcGFyYW1zOiBhbnlbXSA9IHsgLi4udGhpcy5nZXRRdWVyeVBhcmFtcygpIH07XHJcblxyXG5cdFx0XHQvKiBBZGQgc2VhcmNoIHRlcm0gdG8gcGFyYW1ldGVycyBpZiBhIHNlYXJjaCBmaWVsZCBpcyBzcGVjaWZpZWQgKi9cclxuXHRcdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQgJiYgKHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA/PyAwKSA9PSAwICYmICh0aGlzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwKSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWModGhpcy5zZWFyY2hGaWVsZCk7XHJcblx0XHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0X3BhcmFtc1socmVzdWx0IGFzIGFueSlbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgc2VhcmNoIHRlcm1zIGZvciBlYWNoIHNwZWNpZmllZCBzZWFyY2ggZmllbGQgKi9cclxuXHRcdFx0aWYgKCh0aGlzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwKSA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hGaWVsZHM/Lm1hcCh4ID0+IHgudHJpbSgpKT8uZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRcdHZhciByZXN1bHQgPSBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5zZWFyY2hPcGVyYXRvcnMuam9pbignfFxcXFwnKX0pPyguKilgKS5leGVjKHgpO1xyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHRfcGFyYW1zWyhyZXN1bHQgYXMgYW55KVsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCh0aGlzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuXHRcdFx0XHQvKiBDb25zdHJ1Y3QgdGhlIFVSTCBmb3IgdGhlIGZpbHRlcnMgKi9cclxuXHRcdFx0XHRsZXQgZmlsdGVyUXVlcnkgPSAnJztcclxuXHJcblx0XHRcdFx0LyogSW5jbHVkZSBhZGRpdGlvbmFsIGZpbHRlcnMgaWYgZGVmaW5lZCAqL1xyXG5cdFx0XHRcdGlmICh0ZXh0KSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpbHRlcnMhLmZvckVhY2goZmlsdGVyID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgeyBnbHVlLCBmaWVsZHMgfSA9IGZpbHRlcjtcclxuXHRcdFx0XHRcdFx0ZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHsgbmFtZSwgb3BlcmF0b3IgfSA9IGZpZWxkO1xyXG5cdFx0XHRcdFx0XHRcdC8qIENvbnN0cnVjdCB0aGUgZmlsdGVyIHN0cmluZyAqL1xyXG5cdFx0XHRcdFx0XHRcdGZpbHRlclF1ZXJ5ICs9IGAke25hbWV9OiR7b3BlcmF0b3J9JHt0ZXh0fWA7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8qIEFkZCBnbHVlIGlmIGl0J3Mgbm90IHRoZSBsYXN0IGZpZWxkICovXHJcblx0XHRcdFx0XHRcdFx0aWYgKGluZGV4IDwgZmllbGRzLmxlbmd0aCAtIDEgfHwgZmlsdGVyICE9PSB0aGlzLmZpbHRlcnMhW3RoaXMuZmlsdGVycyEubGVuZ3RoIC0gMV0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlclF1ZXJ5ICs9IGAke2dsdWV9YDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBVcGRhdGUgdGhlIFVSTCBwYXJhbWV0ZXJzIHdpdGggdGhlIGNvbnN0cnVjdGVkIGZpbHRlciBxdWVyeSAqL1xyXG5cdFx0XHRcdF9wYXJhbXNbJ2ZpbHRlcnMnIGFzIGFueV0gPSBmaWx0ZXJRdWVyeTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gdGhlIHBhcmFtZXRlcnMgKi9cclxuXHRcdFx0aWYgKFV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIF9wYXJhbXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBVcGRhdGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlICovXHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IF9wYXJhbXM7XHJcblxyXG5cdFx0XHQvKiBSZXF1ZXN0IG5ldyByZXN1bHRzIGZyb20gdGhlIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UuYXBwbHlGaWx0ZXJzKHRoaXMuX3BhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHRoZSBldmVudCB3aGVuIGEgY2hpcCBpcyByZW1vdmVkLiBJdCBlbWl0cyB0aGUgY2xlYXJlZCB2YWx1ZSBcclxuXHQgKiBhbmQgb3B0aW9uYWxseSBjbGVhcnMgdGhlIGNoaXBzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSZW1vdmVkRXZlbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNsZWFyZWQ/LmVtaXQodGhpcy52YWx1ZSk7XHJcblx0XHRpZiAodGhpcy5yZW1vdmFibGUpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGxhdW5jaCBidXR0b24sIGVtaXR0aW5nIHRoZSBcclxuXHQgKiBzZWxlY3RlZCBjaGlwIGlmIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmNoaXBzPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMub25MYXVuY2guZW1pdCh0aGlzLmNoaXBzWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UuXHJcblx0ICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldFF1ZXJ5UGFyYW1zKCk6IGFueSB7XHJcblx0XHQvKiBJbml0aWFsaXplIHBhcmFtZXRlcnMgaWYgbnVsbCAqL1xyXG5cdFx0dmFyIHBhcmFtcyA9IHRoaXMuX3BhcmFtcyB8fCB7fTtcclxuXHJcblx0XHQvKiBJbmNsdWRlIHByb2plY3Rpb24gaWYgc3BlY2lmaWVkICovXHJcblx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwYXJhbXM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnVwIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBpbnN0YW5jZSBcclxuXHQgKiBpcyBkZXN0cm95ZWQuIEl0IHVuc3Vic2NyaWJlcyBmcm9tIHRoZSBkYXRhIHNvdXJjZSBzdWJzY3JpcHRpb24uXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufSIsIjxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cclxuXHQ8IS0tICNyZWdpb24gQ2hpcHMgLS0+XHJcblx0PG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGZpcnN0ID0gZmlyc3Q7IGxldCBpbmRleCA9IGluZGV4XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiIGRpc2FibGVSaXBwbGU+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgY2hpcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNoaXA6IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L3NwYW4+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygc3VmZml4QnV0dG9uczsgbGV0IGZpcnN0ID0gZmlyc3RcIiBbaGlkZGVuXT1cImJ1dHRvbi5oaWRlICYmIGJ1dHRvbi5oaWRlKGNoaXBzWzBdLCBjb250ZXh0KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGJ1dHRvbi5ldmVudCAmJiBidXR0b24uZXZlbnQoY2hpcHNbMF0sIGNvbnRleHQpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7YnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcblx0XHQ8L2E+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0lmPVwiKG9uTGF1bmNoPy5vYnNlcnZlcnM/Lmxlbmd0aD8/MCkgPiAwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmxhdW5jaDwvbWF0LWljb24+XHJcblx0XHQ8L2E+XHJcblx0XHQ8YSBtYXRDaGlwVHJhaWxpbmdJY29uICpuZ0lmPVwiIXJlYWRvbmx5XCIgKGNsaWNrKT1cImhhbmRsZVJlbW92ZWRFdmVudCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdDwvYT5cclxuXHQ8L21hdC1jaGlwLXJvdz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBTZWFyY2ggYm94IC0tPlxyXG5cdDxpbnB1dCBtYXRJbnB1dCBbaGlkZGVuXT1cInZhbHVlICYmICFlbXB0eVwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgKGZvY3VzKT1cImNvbm5lY3QoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG9dPVwib3JpZ2luXCIgW2Zvcm1Db250cm9sXT1cImF1dG9Db21wbGV0ZUNoaXBMaXN0XCIgKGJsdXIpPVwiY3VzdG9tVmFsdWUgJiYgYWRkT25CbHVyKCRldmVudClcIiAjZmlsdGVySW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBSZXNldCBidXR0b24gLS0+XHJcblx0PGEgdHJhaWxpbmdJY29uICpuZ0lmPVwiKCF2YWx1ZSB8fCBlbXB0eSkgJiYgIXJlYWRvbmx5ICYmICFkaXNhYmxlZFwiIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtYXJyb3dcIiAoY2xpY2spPVwiZmlsdGVySW5wdXQudmFsdWUgPSAnJ1wiPlxyXG5cdFx0PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJuZy10bnMtYzE4NC0yMVwiPlxyXG5cdFx0XHQ8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIiBjbGFzcz1cIm5nLXRucy1jMTg0LTIxXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0PC9hPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC9tYXQtY2hpcC1ncmlkPlxyXG5cclxuPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkQ2hpcCgkZXZlbnQub3B0aW9uLnZhbHVlLCBmaWx0ZXJJbnB1dClcIiBjbGFzcz1cInt7YXV0b2NvbXBsZXRlQ3NzQ2xhc3N9fXt7Y2xhc3NUeXBlPycgdGFibGUtYXV0b2NvbXBsZXRlJzonJ319XCI+XHJcblx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiIWNsYXNzVHlwZSAmJiBvcGVuZWRcIiBsZXQtaXRlbSBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImRhdGFTb3VyY2U/Lml0ZW1zXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj57e2l0ZW19fTwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbWF0LW9wdGlvbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGFzc1R5cGUgJiYgb3BlbmVkXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBoaWRlPVwidHJ1ZVwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdDx2ZC1keW5hbWljLXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbY2xhc3NUeXBlXT1cImNsYXNzVHlwZVwiIFtzdGlja3lIZWFkZXJdPVwidHJ1ZVwiIChyb3dDbGljayk9XCJhZGRDaGlwKCRldmVudCwgZmlsdGVySW5wdXQpXCIgbWF0U29ydCBbc29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlfHwnaWQnXCIgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiPjwvdmQtZHluYW1pYy10YWJsZT5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8ZGl2IGNsYXNzPVwidmQtY2hpcHMtcGFnaW5hdG9yXCI+XHJcblx0XHQ8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHRcdDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZT8udG90YWxcIiBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2U/LnBhZ2VJbmRleFwiIFtwYWdlU2l6ZV09XCJkYXRhU291cmNlPy5wYWdlU2l6ZVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9XCJ0cnVlXCIgaGlkZVBhZ2VTaXplPVwidHJ1ZVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuXHQ8L2Rpdj5cclxuPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48ZGl2IG1hdEF1dG9jb21wbGV0ZU9yaWdpbiAjb3JpZ2luPVwibWF0QXV0b2NvbXBsZXRlT3JpZ2luXCIgY2xhc3M9XCJhdXRvY29tcGxldGUtb3JpZ2luXCI+PC9kaXY+Il19
@@ -23388,27 +23388,27 @@ class VdChipsComponent extends AbstractMatFormField {
23388
23388
  if (this.dataSource) {
23389
23389
  /* Initialize parameters for filtering */
23390
23390
  let _params = { ...this.getQueryParams() };
23391
- if (text) {
23392
- /* Add search term to parameters if a search field is specified */
23393
- if (this.searchField && (this.searchFields.length ?? 0) == 0 && (this.filters?.length ?? 0) == 0) {
23394
- var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(this.searchField);
23391
+ /* Add search term to parameters if a search field is specified */
23392
+ if (this.searchField && (this.searchFields.length ?? 0) == 0 && (this.filters?.length ?? 0) == 0) {
23393
+ var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(this.searchField);
23394
+ if (result) {
23395
+ _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
23396
+ }
23397
+ }
23398
+ /* Add search terms for each specified search field */
23399
+ if ((this.filters?.length ?? 0) == 0) {
23400
+ this.searchFields?.map(x => x.trim())?.forEach(x => {
23401
+ var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(x);
23395
23402
  if (result) {
23396
23403
  _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
23397
23404
  }
23398
- }
23399
- /* Add search terms for each specified search field */
23400
- if ((this.filters?.length ?? 0) == 0) {
23401
- this.searchFields?.map(x => x.trim())?.forEach(x => {
23402
- var result = new RegExp(`(\\${this.searchOperators.join('|\\')})?(.*)`).exec(x);
23403
- if (result) {
23404
- _params[result[2]] = `${result[1] ? result[1] : ''}${text}`;
23405
- }
23406
- });
23407
- }
23408
- if ((this.filters?.length ?? 0) > 0) {
23409
- /* Construct the URL for the filters */
23410
- let filterQuery = '';
23411
- /* Include additional filters if defined */
23405
+ });
23406
+ }
23407
+ if ((this.filters?.length ?? 0) > 0) {
23408
+ /* Construct the URL for the filters */
23409
+ let filterQuery = '';
23410
+ /* Include additional filters if defined */
23411
+ if (text) {
23412
23412
  this.filters.forEach(filter => {
23413
23413
  const { glue, fields } = filter;
23414
23414
  fields.forEach((field, index) => {
@@ -23421,11 +23421,9 @@ class VdChipsComponent extends AbstractMatFormField {
23421
23421
  }
23422
23422
  });
23423
23423
  });
23424
- /* Update the URL parameters with the constructed filter query */
23425
- if (filterQuery) {
23426
- _params['filters'] = filterQuery;
23427
- }
23428
23424
  }
23425
+ /* Update the URL parameters with the constructed filter query */
23426
+ _params['filters'] = filterQuery;
23429
23427
  }
23430
23428
  /* Check if there are no changes to the parameters */
23431
23429
  if (Utils.equals(this._params, _params)) {