@ecodev/natural 60.0.1 → 60.0.2

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.
@@ -168,6 +168,9 @@ export class NaturalInputComponent {
168
168
  }
169
169
  }
170
170
  clear() {
171
+ // Prevent opening the facets list when we are removing a facet
172
+ this.neutralizeDropdownOpening = true;
173
+ setTimeout(() => (this.neutralizeDropdownOpening = false));
171
174
  this.facet = null;
172
175
  this.selection = null;
173
176
  this.formCtrl.setValue(null);
@@ -346,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
346
349
  type: HostListener,
347
350
  args: ['focus']
348
351
  }] } });
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0gscUJBQXFCLEdBR3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUE2QixNQUFNLDRDQUE0QyxDQUFDO0FBSTlHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixD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dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBSzBCLE1BQU07c0JBQXJDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUtQLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBS21CLE9BQU87c0JBQWhDLE1BQU07Z0JBbURBLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGUsIE1hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge2dldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy91dGlscyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge1xuICAgIE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICBOYXR1cmFsRHJvcGRvd25EYXRhLFxuICAgIE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG59IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudCwgRmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge0Ryb3Bkb3duUmVzdWx0LCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbi8vIFJlcXVpcmVkIHRvIGNoZWNrIGludmFsaWQgZmllbGRzIHdoZW4gaW5pdGlhbGl6aW5nIG5hdHVyYWwtc2VhcmNoXG5jbGFzcyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgICBwdWJsaWMgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sPHVua25vd24+IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50VmFsaWQoY29tcG9uZW50OiBEcm9wZG93bkNvbXBvbmVudCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge2NvbXBvbmVudDogdHJ1ZX07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25EaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9scyB0aGUgcmlwcGxlIGVmZmVjdCwgdXNlZCB3aGVuIG9wZW5pbmcgYSBkcm9wZG93blxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UmlwcGxlLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHJpcHBsZSE6IE1hdFJpcHBsZTtcblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBlbGVtZW50IHJlZiBmb3IgPGlucHV0PiByZWxhdGVkIHRvIHRoaXMgPG5hdHVyYWwtaW5wdXQ+IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBMYWJlbCBmb3IgdGhpcyBmaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZpZWxkIG9uIHdoaWNoIGRvIGEgZ2xvYmFsIHNlYXJjaCAod2l0aG91dCBmYWNldClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoRmllbGROYW1lID0gJ3NlYXJjaCc7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBzZXR0ZWQgZm9yIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQXZhaWxhYmxlIGZhY2V0cywgYWxsb3dzIHRoZSB1c2VyIHRvIHBpY2sgb25lLCB0aGFuIGdlbmVyYXRlZCB0aGVuIGEgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBmYWNldHMhOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXNwbGF5IGluIHRoZSBkcm9wZG93biB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duVGl0bGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciBhIGFkZGVkL3VwZGF0ZWQvZGVsZXRlZCBhIHNlYXJjaCAoZnJvbSBnbG9iYWwgY29udGV4dCBvciBmcm9tIGZhY2V0KVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIHJlbW92ZXMgdGhlIHNlYXJjaCBieSBwcmVzc2luZyB0aGUgY3Jvc3MgaWNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbElucHV0Q29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgZmFjZXQgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIGZhY2V0OiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3IgdGhlIGlucHV0IGZpZWxkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tZXIgZXJyb3IgbWF0Y2hlciB0aGF0IHNob3VsZCB2YWxpZGF0ZSBvbiBlYWNoIGNoYW5nZSAoaW5jbHVkaW5nIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlcnJvck1hdGNoZXIgPSBuZXcgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgb3BlbmVkIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgaW5zaWRlIHRoZSBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgTWluaW11bSBpbnB1dCBsZW5ndGggKG51bWJlciBvZiBjaGFycylcbiAgICAgKiAgU2VlIGxlbmd0aCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbkxlbmd0aCA9IDU7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqIE1hdGNoIHRoZSBpbnB1dC5zaXplIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcblxuICAgIC8qKlxuICAgICAqIEZsYWcsIHRoYXQsIGlmIG1hcmtlZCBhcyB5ZXMsIHByZXZlbnRzIHRoZSBvcGVuaW5nIG9mIHRoZSBkcm9wZG93blxuICAgICAqIElzIHVzZWQgdG8gcHJldmVudCBkcm9wZG93biBvcGVuaW5nIHdoZW4gbmF0dXJhbC1zZWFyY2ggdGFrZXMgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHQgKGxpa2Ugb24gbW9kYWwgb3BlbmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIG5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYW5hZ2VtZW50IGZvciB0YWtpbmcgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHRcbiAgICAgKiBXaGVuIGZvY3VzaW5nIG1hbnVhbGx5IG9uIHRoZSA8aW5wdXQ+LCBhIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqIEJ1dCB3aGVuIHRoZSBmb2N1cyBpcyBnaXZlbiBmcm9tIGFuZ3VsYXIgaW4gYSBwYXJlbnQgY29udGV4dCAobGlrZSBhIGRpYWxvZykgdGhlIGRyb3Bkb3duIHdvdWxkIG9wZW4gYW5kIHdlIGRvbid0IHdhbnQgaXQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wZG93blNlcnZpY2U6IE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFjZXQgPSBnZXRGYWNldEZyb21TZWxlY3Rpb24odGhpcy5mYWNldHMsIHRoaXMuc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbGlkYXRvcnMoW2lzQ29tcG9uZW50VmFsaWQoZHJvcGRvd25Db21wb25lbnQpXSk7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25Db21wb25lbnQucmVuZGVyZWRWYWx1ZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZsYWcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpZWxkID09PSB0aGlzLnNlYXJjaEZpZWxkTmFtZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBnbG9iYWwgc2VhcmNoIG1vZGVcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnICsgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UudmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBjb21wb25lbnQgaXMgaW52YWxpZCAobm8gZmFjZXQgYW5kIG5vdCBhIGdsb2JhbCBzZWFyY2gpLCBjbGVhciBmcm9tIHJlc3VsdCBhbmQgZGVzdHJveSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcm9wZG93blJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUN0cmwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAkbG9jYWxpemVgUmVjaGVyY2hlYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU2l6ZSA9ICh0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5kaXNwbGF5Lmxlbmd0aCA6IHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKSAqIDAuNjY7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5taW5MZW5ndGgsIE1hdGguY2VpbChwbGFjZWhvbGRlclNpemUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKHRoaXMuZHJvcGRvd25UaXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiA6IG51bGw7XG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEgPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChmYWNldC5jb21wb25lbnQsIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IGluamVjdG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByb3ZpZGVycyhkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhKTogU3RhdGljUHJvdmlkZXJbXSB7XG4gICAgICAgIC8vIEN1c3RvbWl6ZSBpbmplY3RvciB0byBhbGxvdyBkYXRhIGFuZCBkcm9wZG93biByZWZlcmVuY2UgaW5qZWN0aW9uIGluIGNvbXBvbmVudFxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5hdHVyYWxEcm9wZG93blJlZixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9EQVRBLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdW5jaFJpcHBsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmlwcGxlUmVmID0gdGhpcy5yaXBwbGUubGF1bmNoKHtcbiAgICAgICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmlwcGxlUmVmLmZhZGVPdXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24odGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzIHx8ICh0aGlzLmZhY2V0cyAmJiAhdGhpcy5mYWNldHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKEZhY2V0U2VsZWN0b3JDb21wb25lbnQsIHRoaXMuZWxlbWVudCwgaW5qZWN0b3JUb2tlbnMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmFjZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYWNldChyZXN1bHQuZmFjZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5UeXBlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRmFjZXQgPSB0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8dW5rbm93bj47XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZHJvcGRvd25GYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRyb3Bkb3duRmFjZXQuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGluamVjdG9yVG9rZW5zLFxuICAgICAgICAgICAgZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gIT09IHVuZGVmaW5lZCA/IGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uIDogdHJ1ZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZhY2V0KGZhY2V0OiBGYWNldCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gZmFjZXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IChmYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHJlc3VsdDogRHJvcGRvd25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24ocmVzdWx0LmNvbmRpdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3Rpb24oY29uZGl0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uWydjb25kaXRpb24nXSk6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZmllbGQgOiB0aGlzLnNlYXJjaEZpZWxkTmFtZSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmZhY2V0Py5uYW1lKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24ubmFtZSA9IHRoaXMuZmFjZXQubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfVxufVxuIiwiPCEtLSBjbGljayBjb25kaXRpb24gc2hvdWxkIG1hdGNoIHRvIGFsbG93IGNsaWNrIGFjdGlvbiBvbmx5IHdoZW4gbm8gb3RoZXIgYnV0dG9uIGlzIHZpc2libGUgLS0+XG48bWF0LWZvcm0tZmllbGQgI2ZpZWxkIG1hdFJpcHBsZSAoY2xpY2spPVwiIXNlbGVjdGlvbiAmJiAhKGZhY2V0ICYmICFzZWxlY3Rpb24pID8gb3BlbkRyb3Bkb3duKCkgOiBudWxsXCI+XG4gICAgQGlmIChmYWNldCkge1xuICAgICAgICA8bWF0LWxhYmVsPnt7IGZhY2V0LmRpc3BsYXkgfX08L21hdC1sYWJlbD5cbiAgICB9XG4gICAgQGlmICghZmFjZXQpIHtcbiAgICAgICAgPG1hdC1sYWJlbD57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuICAgIH1cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKGJsdXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwibGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yTWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZWFkb25seV09XCIoaXNEcm9wZG93bigpICYmICEhc2VsZWN0aW9uKSB8fCBpc0ZsYWcoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuXG4gICAgQGlmICghZmFjZXQgJiYgIXNlbGVjdGlvbikge1xuICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJzZWFyY2hcIiBtYXRJY29uUHJlZml4IC8+XG4gICAgfVxuXG4gICAgQGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwiY2xvc2VcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYgKGZhY2V0ICYmICFzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwidW5kb1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvbWF0LWZvcm0tZmllbGQ+XG48ZGl2IGNsYXNzPVwiaGlkZVwiPnt7IGZvcm1DdHJsLnZhbHVlID8gZm9ybUN0cmwudmFsdWUgOiBmYWNldCA/IGZhY2V0LmRpc3BsYXkgOiBwbGFjZWhvbGRlciB9fTwvZGl2PlxuIl19
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0gscUJBQXFCLEdBR3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUE2QixNQUFNLDRDQUE0QyxDQUFDO0FBSTlHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixD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Q25CLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixlQUFlO3FCQUNsQjtzSkFNNEMsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtPLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBSzBCLE1BQU07c0JBQXJDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUtQLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBS21CLE9BQU87c0JBQWhDLE1BQU07Z0JBbURBLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGUsIE1hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge2dldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy91dGlscyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge1xuICAgIE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICBOYXR1cmFsRHJvcGRvd25EYXRhLFxuICAgIE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG59IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudCwgRmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge0Ryb3Bkb3duUmVzdWx0LCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbi8vIFJlcXVpcmVkIHRvIGNoZWNrIGludmFsaWQgZmllbGRzIHdoZW4gaW5pdGlhbGl6aW5nIG5hdHVyYWwtc2VhcmNoXG5jbGFzcyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgICBwdWJsaWMgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sPHVua25vd24+IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50VmFsaWQoY29tcG9uZW50OiBEcm9wZG93bkNvbXBvbmVudCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge2NvbXBvbmVudDogdHJ1ZX07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25EaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9scyB0aGUgcmlwcGxlIGVmZmVjdCwgdXNlZCB3aGVuIG9wZW5pbmcgYSBkcm9wZG93blxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UmlwcGxlLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHJpcHBsZSE6IE1hdFJpcHBsZTtcblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBlbGVtZW50IHJlZiBmb3IgPGlucHV0PiByZWxhdGVkIHRvIHRoaXMgPG5hdHVyYWwtaW5wdXQ+IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBMYWJlbCBmb3IgdGhpcyBmaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZpZWxkIG9uIHdoaWNoIGRvIGEgZ2xvYmFsIHNlYXJjaCAod2l0aG91dCBmYWNldClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoRmllbGROYW1lID0gJ3NlYXJjaCc7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBzZXR0ZWQgZm9yIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQXZhaWxhYmxlIGZhY2V0cywgYWxsb3dzIHRoZSB1c2VyIHRvIHBpY2sgb25lLCB0aGFuIGdlbmVyYXRlZCB0aGVuIGEgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBmYWNldHMhOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXNwbGF5IGluIHRoZSBkcm9wZG93biB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duVGl0bGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciBhIGFkZGVkL3VwZGF0ZWQvZGVsZXRlZCBhIHNlYXJjaCAoZnJvbSBnbG9iYWwgY29udGV4dCBvciBmcm9tIGZhY2V0KVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIHJlbW92ZXMgdGhlIHNlYXJjaCBieSBwcmVzc2luZyB0aGUgY3Jvc3MgaWNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbElucHV0Q29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgZmFjZXQgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIGZhY2V0OiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3IgdGhlIGlucHV0IGZpZWxkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tZXIgZXJyb3IgbWF0Y2hlciB0aGF0IHNob3VsZCB2YWxpZGF0ZSBvbiBlYWNoIGNoYW5nZSAoaW5jbHVkaW5nIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlcnJvck1hdGNoZXIgPSBuZXcgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgb3BlbmVkIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgaW5zaWRlIHRoZSBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgTWluaW11bSBpbnB1dCBsZW5ndGggKG51bWJlciBvZiBjaGFycylcbiAgICAgKiAgU2VlIGxlbmd0aCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbkxlbmd0aCA9IDU7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqIE1hdGNoIHRoZSBpbnB1dC5zaXplIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcblxuICAgIC8qKlxuICAgICAqIEZsYWcsIHRoYXQsIGlmIG1hcmtlZCBhcyB5ZXMsIHByZXZlbnRzIHRoZSBvcGVuaW5nIG9mIHRoZSBkcm9wZG93blxuICAgICAqIElzIHVzZWQgdG8gcHJldmVudCBkcm9wZG93biBvcGVuaW5nIHdoZW4gbmF0dXJhbC1zZWFyY2ggdGFrZXMgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHQgKGxpa2Ugb24gbW9kYWwgb3BlbmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIG5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYW5hZ2VtZW50IGZvciB0YWtpbmcgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHRcbiAgICAgKiBXaGVuIGZvY3VzaW5nIG1hbnVhbGx5IG9uIHRoZSA8aW5wdXQ+LCBhIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqIEJ1dCB3aGVuIHRoZSBmb2N1cyBpcyBnaXZlbiBmcm9tIGFuZ3VsYXIgaW4gYSBwYXJlbnQgY29udGV4dCAobGlrZSBhIGRpYWxvZykgdGhlIGRyb3Bkb3duIHdvdWxkIG9wZW4gYW5kIHdlIGRvbid0IHdhbnQgaXQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wZG93blNlcnZpY2U6IE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFjZXQgPSBnZXRGYWNldEZyb21TZWxlY3Rpb24odGhpcy5mYWNldHMsIHRoaXMuc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbGlkYXRvcnMoW2lzQ29tcG9uZW50VmFsaWQoZHJvcGRvd25Db21wb25lbnQpXSk7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25Db21wb25lbnQucmVuZGVyZWRWYWx1ZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZsYWcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpZWxkID09PSB0aGlzLnNlYXJjaEZpZWxkTmFtZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBnbG9iYWwgc2VhcmNoIG1vZGVcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnICsgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UudmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBjb21wb25lbnQgaXMgaW52YWxpZCAobm8gZmFjZXQgYW5kIG5vdCBhIGdsb2JhbCBzZWFyY2gpLCBjbGVhciBmcm9tIHJlc3VsdCBhbmQgZGVzdHJveSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcm9wZG93blJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUN0cmwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAkbG9jYWxpemVgUmVjaGVyY2hlYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU2l6ZSA9ICh0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5kaXNwbGF5Lmxlbmd0aCA6IHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKSAqIDAuNjY7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5taW5MZW5ndGgsIE1hdGguY2VpbChwbGFjZWhvbGRlclNpemUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICAvLyBQcmV2ZW50IG9wZW5pbmcgdGhlIGZhY2V0cyBsaXN0IHdoZW4gd2UgYXJlIHJlbW92aW5nIGEgZmFjZXRcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gZmFsc2UpKTtcblxuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKHRoaXMuZHJvcGRvd25UaXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiA6IG51bGw7XG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEgPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChmYWNldC5jb21wb25lbnQsIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IGluamVjdG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByb3ZpZGVycyhkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhKTogU3RhdGljUHJvdmlkZXJbXSB7XG4gICAgICAgIC8vIEN1c3RvbWl6ZSBpbmplY3RvciB0byBhbGxvdyBkYXRhIGFuZCBkcm9wZG93biByZWZlcmVuY2UgaW5qZWN0aW9uIGluIGNvbXBvbmVudFxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5hdHVyYWxEcm9wZG93blJlZixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9EQVRBLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdW5jaFJpcHBsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmlwcGxlUmVmID0gdGhpcy5yaXBwbGUubGF1bmNoKHtcbiAgICAgICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmlwcGxlUmVmLmZhZGVPdXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24odGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzIHx8ICh0aGlzLmZhY2V0cyAmJiAhdGhpcy5mYWNldHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKEZhY2V0U2VsZWN0b3JDb21wb25lbnQsIHRoaXMuZWxlbWVudCwgaW5qZWN0b3JUb2tlbnMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmFjZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYWNldChyZXN1bHQuZmFjZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5UeXBlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRmFjZXQgPSB0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8dW5rbm93bj47XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZHJvcGRvd25GYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRyb3Bkb3duRmFjZXQuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGluamVjdG9yVG9rZW5zLFxuICAgICAgICAgICAgZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gIT09IHVuZGVmaW5lZCA/IGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uIDogdHJ1ZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZhY2V0KGZhY2V0OiBGYWNldCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gZmFjZXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IChmYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHJlc3VsdDogRHJvcGRvd25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24ocmVzdWx0LmNvbmRpdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3Rpb24oY29uZGl0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uWydjb25kaXRpb24nXSk6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZmllbGQgOiB0aGlzLnNlYXJjaEZpZWxkTmFtZSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmZhY2V0Py5uYW1lKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24ubmFtZSA9IHRoaXMuZmFjZXQubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfVxufVxuIiwiPCEtLSBjbGljayBjb25kaXRpb24gc2hvdWxkIG1hdGNoIHRvIGFsbG93IGNsaWNrIGFjdGlvbiBvbmx5IHdoZW4gbm8gb3RoZXIgYnV0dG9uIGlzIHZpc2libGUgLS0+XG48bWF0LWZvcm0tZmllbGQgI2ZpZWxkIG1hdFJpcHBsZSAoY2xpY2spPVwiIXNlbGVjdGlvbiAmJiAhKGZhY2V0ICYmICFzZWxlY3Rpb24pID8gb3BlbkRyb3Bkb3duKCkgOiBudWxsXCI+XG4gICAgQGlmIChmYWNldCkge1xuICAgICAgICA8bWF0LWxhYmVsPnt7IGZhY2V0LmRpc3BsYXkgfX08L21hdC1sYWJlbD5cbiAgICB9XG4gICAgQGlmICghZmFjZXQpIHtcbiAgICAgICAgPG1hdC1sYWJlbD57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuICAgIH1cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKGJsdXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwibGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yTWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZWFkb25seV09XCIoaXNEcm9wZG93bigpICYmICEhc2VsZWN0aW9uKSB8fCBpc0ZsYWcoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuXG4gICAgQGlmICghZmFjZXQgJiYgIXNlbGVjdGlvbikge1xuICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJzZWFyY2hcIiBtYXRJY29uUHJlZml4IC8+XG4gICAgfVxuXG4gICAgQGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwiY2xvc2VcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYgKGZhY2V0ICYmICFzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwidW5kb1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvbWF0LWZvcm0tZmllbGQ+XG48ZGl2IGNsYXNzPVwiaGlkZVwiPnt7IGZvcm1DdHJsLnZhbHVlID8gZm9ybUN0cmwudmFsdWUgOiBmYWNldCA/IGZhY2V0LmRpc3BsYXkgOiBwbGFjZWhvbGRlciB9fTwvZGl2PlxuIl19
@@ -7643,6 +7643,9 @@ class NaturalInputComponent {
7643
7643
  }
7644
7644
  }
7645
7645
  clear() {
7646
+ // Prevent opening the facets list when we are removing a facet
7647
+ this.neutralizeDropdownOpening = true;
7648
+ setTimeout(() => (this.neutralizeDropdownOpening = false));
7646
7649
  this.facet = null;
7647
7650
  this.selection = null;
7648
7651
  this.formCtrl.setValue(null);