@messaia/cdk 15.0.0-rc70 → 15.0.0-rc71

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdlbmVyaWMtbGlzdC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2ludGVyZmFjZXMvaWdlbmVyaWMtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3JcIjtcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XHJcbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHlcIjtcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnXCI7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZVwiO1xyXG5pbXBvcnQgeyBJQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuL2liYXNlLWNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHkgfCBhbnk+IGV4dGVuZHMgSUJhc2VDb21wb25lbnQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byBWZER5bmFtaWNUYWJsZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBkeW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0YS10YWJsZSBkYXRhc291cmNlXHJcbiAgICAgKi9cclxuICAgIGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBhbnk+IHwgbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcbiAgICAgKi9cclxuICAgIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWRzIGl0ZW1zXHJcbiAgICAgKi9cclxuICAgIGxvYWRMaXN0KHJlc2V0U2VsZWN0aW9uPzogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWFyY2hcclxuICAgICAqIEBwYXJhbSBmaWx0ZXIgXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaChmaWx0ZXI6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG4gICAgICovXHJcbiAgICBhZGQoKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgZWRpdCBwYWdlLlxyXG4gICAgICogQHBhcmFtIGl0ZW0gVGhlIGlkIG9mIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIGVkaXQoaXRlbTogVEVudGl0eSwgY29udGV4dD86IGFueSk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuICAgICAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG4gICAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHBhdGNoXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcbiAgICAgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG4gICAgICovXHJcbiAgICBwYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlSXRlbShpdGVtOiBURW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlSXRlbXMoKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW5zIHRoZSBjb25maWcgZGlhbG9nXHJcbiAgICAgKi9cclxuICAgIG9wZW5Db25maWdEaWFsb2coKTogdm9pZFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZXMgdGhlIHRhYmxlIGNvbmZpZ1xyXG4gICAgICogQHBhcmFtIGNvbmZpZ3NcclxuICAgICAqL1xyXG4gICAgc2F2ZUNvbmZpZ3MoY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFuZCBhcHBsaWVzIHRoZSB0YWJsZSBjb25maWdzXHJcbiAgICAgKi9cclxuICAgIGxvYWRDb25maWdzKCk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSB0YWJsZSBjb2x1bW5zXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUNvbHVtbnMobG9hZENvbmZpZz86IGJvb2xlYW4pOiB2b2lkO1xyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdlbmVyaWMtbGlzdC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2ludGVyZmFjZXMvaWdlbmVyaWMtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3JcIjtcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XHJcbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHlcIjtcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnXCI7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZVwiO1xyXG5pbXBvcnQgeyBJQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuL2liYXNlLWNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHkgfCBhbnk+IGV4dGVuZHMgSUJhc2VDb21wb25lbnQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byBWZER5bmFtaWNUYWJsZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBkeW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHBhcmFtc1xyXG4gICAgICovXHJcbiAgICBxdWVyeTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0YS10YWJsZSBkYXRhc291cmNlXHJcbiAgICAgKi9cclxuICAgIGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBhbnk+IHwgbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcbiAgICAgKi9cclxuICAgIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyB0aGUgY29sdW1uICdDaGVja2JveCdcclxuICAgICAqL1xyXG4gICAgc2VsZWN0YWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRydWUsIHNob3cgdGhlIGJ1dHRvbiAnQWRkJ1xyXG4gICAgICovXHJcbiAgICBhZGRhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRWRpdCdcclxuICAgICAqL1xyXG4gICAgZWRpdGFibGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEZWxldGUnXHJcbiAgICAgKi9cclxuICAgIGRlbGV0YWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0Rvd25sb2FkJ1xyXG4gICAgICovXHJcbiAgICBkb3dubG9hZGFibGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEdXBsaWNhdGUnXHJcbiAgICAgKi9cclxuICAgIGR1cGxpY2FibGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdDb25maWd1cmUgdGFibGUnXHJcbiAgICAgKi9cclxuICAgIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZHMgaXRlbXNcclxuICAgICAqL1xyXG4gICAgbG9hZExpc3QocmVzZXRTZWxlY3Rpb24/OiBib29sZWFuKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaFxyXG4gICAgICogQHBhcmFtIGZpbHRlciBcclxuICAgICAqL1xyXG4gICAgc2VhcmNoKGZpbHRlcjogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcbiAgICAgKi9cclxuICAgIGFkZCgpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmF2aWdhdGVzIHRvIHRoZSBlZGl0IHBhZ2UuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaWQgb2YgdGhlIGl0ZW1cclxuICAgICAqL1xyXG4gICAgZWRpdChpdGVtOiBURW50aXR5LCBjb250ZXh0PzogYW55KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG4gICAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50aXR5XHJcbiAgICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuICAgICAqIEBwYXJhbSBpbmNsdWRlcyBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHBhdGNoKGlkOiBudW1iZXIsIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG4gICAgICovXHJcbiAgICBkZWxldGVJdGVtKGl0ZW06IFRFbnRpdHkpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG4gICAgICovXHJcbiAgICBkZWxldGVJdGVtcygpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbnMgdGhlIGNvbmZpZyBkaWFsb2dcclxuICAgICAqL1xyXG4gICAgb3BlbkNvbmZpZ0RpYWxvZygpOiB2b2lkXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYXZlcyB0aGUgdGFibGUgY29uZmlnXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnc1xyXG4gICAgICovXHJcbiAgICBzYXZlQ29uZmlncyhjb25maWdzOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYW5kIGFwcGxpZXMgdGhlIHRhYmxlIGNvbmZpZ3NcclxuICAgICAqL1xyXG4gICAgbG9hZENvbmZpZ3MoKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHRhYmxlIGNvbHVtbnNcclxuICAgICAqL1xyXG4gICAgdXBkYXRlQ29sdW1ucyhsb2FkQ29uZmlnPzogYm9vbGVhbik6IHZvaWQ7XHJcbn0iXX0=
@@ -196,11 +196,6 @@ export class AbstractSelectFormField extends AbstractMatFormField {
196
196
  if (this._enumFilter && this.options) {
197
197
  this.filteredOptions = this.options = this.options.filter(this._enumFilter);
198
198
  }
199
- // this._enumChange.pipe(distinctUntilChanged()).pipe(debounceTime(1)).subscribe(_ => {
200
- // // if (this._enumFilter) {
201
- // // console.log('_enumFilter', this._enumFilter);
202
- // // }
203
- // });
204
199
  if (Array.isArray(this.options)) {
205
200
  this.handleItemSelected(this.value);
206
201
  }
@@ -378,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
378
373
  }], searchField: [{
379
374
  type: Input
380
375
  }] } });
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUduRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQWdRL0U7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxZQUNDLFdBQW1CLEVBQ1QsUUFBa0IsRUFDUixTQUFvQixFQUM1QixVQUFrQixFQUNsQixlQUFtQyxFQUMvQyx3QkFBMkMsRUFDM0MsWUFBMEIsRUFDMUIsVUFB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aEIsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPSyxRQUFRO3NCQURsQixLQUFLO2dCQVFLLE1BQU07c0JBRGhCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQXVCSyxVQUFVO3NCQURwQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssVUFBVTtzQkFEcEIsS0FBSztnQkFTSyxRQUFRO3NCQURsQixLQUFLO2dCQTJCSyxXQUFXO3NCQURyQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLE1BQU07dUJBQUMsUUFBUTtnQkFPVCxZQUFZO3NCQURsQixNQUFNO3VCQUFDLFlBQVk7Z0JBT2IsVUFBVTtzQkFEaEIsTUFBTTt1QkFBQyxVQUFVO2dCQU9YLGNBQWM7c0JBRHBCLE1BQU07dUJBQUMsY0FBYztnQkFPZixRQUFRO3NCQURkLE1BQU07dUJBQUMsUUFBUTtnQkFNUCxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW51bVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvZW51bS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTZWxlY3RGb3JtRmllbGQ8VD4gZXh0ZW5kcyBBYnN0cmFjdE1hdEZvcm1GaWVsZDxUPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNoYW5nZXMgb3ZlciB0aW1lLiBcclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNoYW5nZXMgb3ZlciB0aW1lLiBcclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbnVtQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGh0dHAgc2VydmljZSBmcm9tIHRvIGdldCB0aGUgZGF0YVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfaHR0cDogSHR0cENsaWVudCA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE11bHRpcGxlIHNlbGVjdCBvcHRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX211bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNvcnRzIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3NvcnRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9lbmRwb2ludDogc3RyaW5nXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfcGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogX3Byb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvYWQgZGF0YVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfbG9hZERhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBfZW51bUZpbHRlcjogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2VudW1GaWx0ZXI6IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIGNvbXBhcmUgdGhlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVzLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hbWUgb2YgdGhlIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZW51bTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiB0ZXh0UHJlZml4PzogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGV4dFByZWZpeDogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBrZXk6IGFueSA9ICdpZCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0ZXh0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGV4dDogYW55ID0gJ25hbWUnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgcHJlZml4XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcHJlZml4OiBhbnkgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uIGxpc3RcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBvcHRpb25zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmVkIG9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmFibGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNhY2hlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNhY2hlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogc29ydEJ5P1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNvcnRCeTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBtYXBwZXI6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgbWFwcGVyOiAoeDogYW55W10pID0+IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRwdWJsaWMgc2V0IG11bHRpcGxlKG11bHRpKSB7IHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBzb3J0ZWQoKSB7IHJldHVybiB0aGlzLl9zb3J0ZWQ7IH1cclxuXHRwdWJsaWMgc2V0IHNvcnRlZChzb3J0ZWQpIHsgdGhpcy5fc29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHNvcnRlZCk7IHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHwgRnVuY3Rpb24geyByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7IH1cclxuXHRwdWJsaWMgc2V0IGVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcgfCBGdW5jdGlvbikgeyB0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50OyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBwYXJhbXMoKSB7IHJldHVybiB0aGlzLl9wYXJhbXM7IH1cclxuXHRwdWJsaWMgc2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0aWYgKHBhcmFtcykge1xyXG5cdFx0XHQvKiBSZW1vdmUgZW1wdHkgcGFyYW1zICovXHJcblx0XHRcdE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdFx0aWYgKChwYXJhbXNba2V5XSA9PSBudWxsIHx8IHBhcmFtc1trZXldID09ICcnIHx8IHBhcmFtc1trZXldID09ICd1bmRlZmluZWQnKSkge1xyXG5cdFx0XHRcdFx0ZGVsZXRlIHBhcmFtc1trZXldO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBDaGVjayBpZiB0aGUgcGFyYW1zIGhhcyBjaGFuZ2VkICovXHJcblx0XHRcdGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl9wYXJhbXMpICE9PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpKSB7XHJcblx0XHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHRcdHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHB1YmxpYyBzZXQgcHJvamVjdGlvbihwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSkgeyB0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgbG9hZERhdGEoKSB7IHJldHVybiB0aGlzLl9sb2FkRGF0YTsgfVxyXG5cdHB1YmxpYyBzZXQgbG9hZERhdGEobG9hZERhdGEpIHsgdGhpcy5fbG9hZERhdGEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobG9hZERhdGEpOyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlbnVtRmlsdGVyKCk6IEZ1bmN0aW9uIHsgcmV0dXJuIHRoaXMuX2VudW1GaWx0ZXI7IH1cclxuXHRwdWJsaWMgc2V0IGVudW1GaWx0ZXIoZW51bUZpbHRlcjogRnVuY3Rpb24pIHsgdGhpcy5fZW51bUZpbHRlciA9IGVudW1GaWx0ZXI7IHRoaXMuZW51bUNoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLlxyXG5cdCAqIEBwYXJhbSBkaXNhYmxlZFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX3JlYWRvbmx5IHx8IHN1cGVyLmRpc2FibGVkOyB9XHJcblx0cHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYW55KSB7XHJcblx0XHR0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXNhYmxlZCk7XHJcblx0XHRpZiAodGhpcy5mb2N1c2VkKSB7XHJcblx0XHRcdHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGN1cnJlbnQgdmFsdWVcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBhbnkge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55W10+KHRoaXMuX3ZhbHVlIHx8IFtdKSkuaW5jbHVkZXMoeFt0aGlzLmtleV0pKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdGhpcy5fdmFsdWUpWzBdO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy4gVGhlIGZpcnN0IGFyZ3VtZW50XHJcblx0ICogaXMgYSB2YWx1ZSBmcm9tIGFuIG9wdGlvbi4gVGhlIHNlY29uZCBpcyBhIHZhbHVlIGZyb20gdGhlIHNlbGVjdGlvbi4gQSBib29sZWFuXHJcblx0ICogc2hvdWxkIGJlIHJldHVybmVkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7IHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDsgfVxyXG5cdHB1YmxpYyBzZXQgY29tcGFyZVdpdGgoZm46IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuKSB7IHRoaXMuX2NvbXBhcmVXaXRoID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogY2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdjaGFuZ2UnKVxyXG5cdHB1YmxpYyBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtQ2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtQ2hhbmdlJylcclxuXHRwdWJsaWMgb25JdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnc2VsZWN0ZWQnKVxyXG5cdHB1YmxpYyBvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtU2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2l0ZW1TZWxlY3RlZCcpXHJcblx0cHVibGljIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBsYXVuY2g/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2xhdW5jaCcpXHJcblx0cHVibGljIG9uTGF1bmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KCkgc2VhcmNoRmllbGQ6ICh4OiBhbnkpID0+IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gY29udHJvbFR5cGUgXHJcblx0ICogQHBhcmFtIGluamVjdG9yIFxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCBcclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIFxyXG5cdCAqIEBwYXJhbSBmb2N1c01vbml0b3IgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0Y29udHJvbFR5cGU6IHN0cmluZyxcclxuXHRcdHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcblx0XHRkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxyXG5cdFx0Zm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcblx0XHRlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG5cdFx0Y2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihjb250cm9sVHlwZSwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0XHRpZiAoIXRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLl9odHRwID0gaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyBcclxuXHQgKiB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmFibGUgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSBFbnVtU2VydmljZS50b0FycmF5KHRoaXMuZW51bSwgdGhpcy5wcmVmaXgpO1xyXG5cclxuXHRcdFx0LyogQXBwbHkgZW51bSBmaWx0ZXJzICovXHJcblx0XHRcdGlmICh0aGlzLl9lbnVtRmlsdGVyICYmIHRoaXMub3B0aW9ucykge1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcih0aGlzLl9lbnVtRmlsdGVyKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gdGhpcy5fZW51bUNoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoZGVib3VuY2VUaW1lKDEpKS5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdC8vIFx0Ly8gXHRpZiAodGhpcy5fZW51bUZpbHRlcikge1xyXG5cdFx0XHQvLyBcdC8vIFx0XHRjb25zb2xlLmxvZygnX2VudW1GaWx0ZXInLCB0aGlzLl9lbnVtRmlsdGVyKTtcclxuXHRcdFx0Ly8gXHQvLyBcdH1cclxuXHRcdFx0Ly8gfSk7XHJcblxyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucykge1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoZGVib3VuY2VUaW1lKDEpKS5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0bGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdFx0XHRpZiAodGhpcy5jYWNoZSkge1xyXG5cdFx0XHRcdFx0aGVhZGVycy5zZXQoJ0NsaWVudC1DYWNoZScsICdZZXMnKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEluaXQgcGFyYW1zLCBpZiBudWxsICovXHJcblx0XHRcdFx0bGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhcmFtcyB8fCB7fSk7XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMucHJvamVjdGlvbiA9IEFycmF5LmlzQXJyYXkodGhpcy5wcm9qZWN0aW9uKSA/IHRoaXMucHJvamVjdGlvbi5qb2luKCcsJykgOiB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgc29ydGluZyAqL1xyXG5cdFx0XHRcdGlmICghdGhpcy5wYXJhbXMuc29ydEJ5ICYmICh0aGlzLnNvcnRCeSB8fCB0aGlzLnNvcnRlZCkpIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5zb3J0QnkgPSB0aGlzLnNvcnRCeSB8fCB0aGlzLnRleHQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBHZXQgZW5kcG9pbnQgKi9cclxuXHRcdFx0XHRsZXQgZW5kcG9pbnQgPSB0eXBlb2YgdGhpcy5lbmRwb2ludCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz50aGlzLmVuZHBvaW50KTtcclxuXHRcdFx0XHRpZiAoZW5kcG9pbnQgJiYgdGhpcy5sb2FkRGF0YSkge1xyXG5cdFx0XHRcdFx0dGhpcy5faHR0cC5nZXQoZW5kcG9pbnQsIHsgcGFyYW1zOiBwYXJhbXMsIGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuXHRcdFx0XHRcdFx0LnBpcGUobWFwKCh4OiBhbnlbXSkgPT4gdGhpcy5tYXBwZXIgPyB0aGlzLm1hcHBlcih4KSA6IHgpKVxyXG5cdFx0XHRcdFx0XHQuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0geDtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRzdXBlci53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHQvKiBXcml0ZSB0aGUgdmFsdWUgYW5kIHRyaWdnZXIgc29tZSBldmVudHMgKi9cclxuXHRcdHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5vblNlbGVjdGVkLmVtaXQodmFsdWUpO1xyXG5cclxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhbiBvcHRpb24gY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVDaGFuZ2UoJGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KCRldmVudCk7XHJcblx0XHR0aGlzLmhhbmRsZUl0ZW1DaGFuZ2UoJGV2ZW50LnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgaXRlbSBjaGFuZ2VzXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVJdGVtU2VsZWN0ZWQodmFsdWU6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gKHZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMua2V5XSkpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5rZXldID09IHZhbHVlKVswXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGl0ZW0gY2hhbmdlc1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlSXRlbUNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uSXRlbUNoYW5nZS5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gKHZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMua2V5XSkpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMub25JdGVtQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMua2V5XSA9PSB2YWx1ZSlbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGVscyBmaWx0ZXIgZXZlbnRcclxuXHQgKiBAcGFyYW0gJGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVGaWx0ZXIoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IHNlYXJjaFRleHQ6IHN0cmluZyA9ICgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWUgPz8gJyc7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hGaWVsZCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gdGhpcy5zZWFyY2hGaWVsZCh4KT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMudGV4dF0/LnRvTG93ZXJDYXNlKCkuc2VhcmNoKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgPiAtMSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVuZHBvaW50IGNoYW5nZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZW5kcG9pbnRDaGFuZ2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5fcGFyYW1zLCB0aGlzLnByb2plY3Rpb24sIHRoaXMuX2xvYWREYXRhXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVudW0gY2hhbmdlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBlbnVtQ2hhbmdlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2VudW1DaGFuZ2UubmV4dChbdGhpcy5fZW51bUZpbHRlcl0pO1xyXG5cdH1cclxufSJdfQ==
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUduRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQWdRL0U7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxZQUNDLFdBQW1CLEVBQ1QsUUFBa0IsRUFDUixTQUFvQixFQUM1QixVQUFrQixFQUNsQixlQUFtQyxFQUMvQyx3QkFBMkMsRUFDM0MsWUFBMEIsRUFDMUIsVUFB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QUFNO3NCQURaLEtBQUs7Z0JBT0ssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssTUFBTTtzQkFEaEIsS0FBSztnQkF1QkssVUFBVTtzQkFEcEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBU0ssUUFBUTtzQkFEbEIsS0FBSztnQkEyQkssV0FBVztzQkFEckIsS0FBSztnQkFRQyxhQUFhO3NCQURuQixNQUFNO3VCQUFDLFFBQVE7Z0JBT1QsWUFBWTtzQkFEbEIsTUFBTTt1QkFBQyxZQUFZO2dCQU9iLFVBQVU7c0JBRGhCLE1BQU07dUJBQUMsVUFBVTtnQkFPWCxjQUFjO3NCQURwQixNQUFNO3VCQUFDLGNBQWM7Z0JBT2YsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBTVAsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL2VudW0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWF0Rm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZm9ybXMvaGVscGVycy9hYnN0cmFjdC1tYXQtZm9ybS1maWVsZCc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VsZWN0Rm9ybUZpZWxkPFQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8VD4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjaGFuZ2VzIG92ZXIgdGltZS4gXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZW5kcG9pbnRDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjaGFuZ2VzIG92ZXIgdGltZS4gXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZW51bUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBodHRwIHNlcnZpY2UgZnJvbSB0byBnZXQgdGhlIGRhdGFcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2h0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBfZW5kcG9pbnQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3Byb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuXHQvKipcclxuXHQgKiBMb2FkIGRhdGFcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2xvYWREYXRhOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogX2VudW1GaWx0ZXI6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbnVtRmlsdGVyOiBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiBvMSA9PT0gbzI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGVudW06IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogdGV4dFByZWZpeD86IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHRQcmVmaXg6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBhbnkgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGV4dFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHQ6IGFueSA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJlZCBvcHRpb24gbGlzdFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJhYmxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBjYWNoZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjYWNoZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNvcnRCeT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogbWFwcGVyOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG1hcHBlcjogKHg6IGFueVtdKSA9PiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBtdWx0aXBsZSgpIHsgcmV0dXJuIHRoaXMuX211bHRpcGxlOyB9XHJcblx0cHVibGljIHNldCBtdWx0aXBsZShtdWx0aSkgeyB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aSk7IHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0cHVibGljIHNldCBzb3J0ZWQoc29ydGVkKSB7IHRoaXMuX3NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShzb3J0ZWQpOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB8IEZ1bmN0aW9uIHsgcmV0dXJuIHRoaXMuX2VuZHBvaW50OyB9XHJcblx0cHVibGljIHNldCBlbmRwb2ludChlbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb24pIHsgdGhpcy5fZW5kcG9pbnQgPSBlbmRwb2ludDsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0cHVibGljIHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdGlmIChwYXJhbXMpIHtcclxuXHRcdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtcyAqL1xyXG5cdFx0XHRPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdGlmICgocGFyYW1zW2tleV0gPT0gbnVsbCB8fCBwYXJhbXNba2V5XSA9PSAnJyB8fCBwYXJhbXNba2V5XSA9PSAndW5kZWZpbmVkJykpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbXNba2V5XTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlIHBhcmFtcyBoYXMgY2hhbmdlZCAqL1xyXG5cdFx0XHRpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fcGFyYW1zKSAhPT0gSlNPTi5zdHJpbmdpZnkocGFyYW1zKSkge1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdFx0XHR0aGlzLmVuZHBvaW50Q2hhbmdlZCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcHJvamVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Byb2plY3Rpb247IH1cclxuXHRwdWJsaWMgc2V0IHByb2plY3Rpb24ocHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10pIHsgdGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247IHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGxvYWREYXRhKCkgeyByZXR1cm4gdGhpcy5fbG9hZERhdGE7IH1cclxuXHRwdWJsaWMgc2V0IGxvYWREYXRhKGxvYWREYXRhKSB7IHRoaXMuX2xvYWREYXRhID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGxvYWREYXRhKTsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZW51bUZpbHRlcigpOiBGdW5jdGlvbiB7IHJldHVybiB0aGlzLl9lbnVtRmlsdGVyOyB9XHJcblx0cHVibGljIHNldCBlbnVtRmlsdGVyKGVudW1GaWx0ZXI6IEZ1bmN0aW9uKSB7IHRoaXMuX2VudW1GaWx0ZXIgPSBlbnVtRmlsdGVyOyB0aGlzLmVudW1DaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC5cclxuXHQgKiBAcGFyYW0gZGlzYWJsZWRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLl9yZWFkb25seSB8fCBzdXBlci5kaXNhYmxlZDsgfVxyXG5cdHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGFueSkge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzYWJsZWQpO1xyXG5cdFx0aWYgKHRoaXMuZm9jdXNlZCkge1xyXG5cdFx0XHR0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBjdXJyZW50IHZhbHVlXHJcblx0ICovXHJcblx0cHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogYW55IHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiAoPGFueVtdPih0aGlzLl92YWx1ZSB8fCBbXSkpLmluY2x1ZGVzKHhbdGhpcy5rZXldKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5rZXldID09IHRoaXMuX3ZhbHVlKVswXTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSB0aGUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmd1bWVudFxyXG5cdCAqIGlzIGEgdmFsdWUgZnJvbSBhbiBvcHRpb24uIFRoZSBzZWNvbmQgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3Rpb24uIEEgYm9vbGVhblxyXG5cdCAqIHNob3VsZCBiZSByZXR1cm5lZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgY29tcGFyZVdpdGgoKTogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7IH1cclxuXHRwdWJsaWMgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikgeyB0aGlzLl9jb21wYXJlV2l0aCA9IGZuOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnY2hhbmdlJylcclxuXHRwdWJsaWMgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbUNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnaXRlbUNoYW5nZScpXHJcblx0cHVibGljIG9uSXRlbUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ3NlbGVjdGVkJylcclxuXHRwdWJsaWMgb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbVNlbGVjdGVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtU2VsZWN0ZWQnKVxyXG5cdHB1YmxpYyBvbkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogbGF1bmNoPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKVxyXG5cdHB1YmxpYyBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIHNlYXJjaEZpZWxkOiAoeDogYW55KSA9PiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIGNvbnRyb2xUeXBlIFxyXG5cdCAqIEBwYXJhbSBpbmplY3RvciBcclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtR3JvdXAgXHJcblx0ICogQHBhcmFtIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciBcclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIFxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG5cdCAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdGNvbnRyb2xUeXBlOiBzdHJpbmcsXHJcblx0XHRwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG5cdFx0QE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG5cdFx0ZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcclxuXHRcdGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuXHRcdGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge1xyXG5cdFx0c3VwZXIoY29udHJvbFR5cGUsIG5nQ29udHJvbCwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvciwgZWxlbWVudFJlZiwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdFx0aWYgKCF0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5faHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgXHJcblx0ICogdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJhYmxlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gRW51bVNlcnZpY2UudG9BcnJheSh0aGlzLmVudW0sIHRoaXMucHJlZml4KTtcclxuXHJcblx0XHRcdC8qIEFwcGx5IGVudW0gZmlsdGVycyAqL1xyXG5cdFx0XHRpZiAodGhpcy5fZW51bUZpbHRlciAmJiB0aGlzLm9wdGlvbnMpIHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIodGhpcy5fZW51bUZpbHRlcik7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShkZWJvdW5jZVRpbWUoMSkpLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmNhY2hlKSB7XHJcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnQ2xpZW50LUNhY2hlJywgJ1llcycpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogSW5pdCBwYXJhbXMsIGlmIG51bGwgKi9cclxuXHRcdFx0XHRsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFyYW1zIHx8IHt9KTtcclxuXHJcblx0XHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gQXJyYXkuaXNBcnJheSh0aGlzLnByb2plY3Rpb24pID8gdGhpcy5wcm9qZWN0aW9uLmpvaW4oJywnKSA6IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBzb3J0aW5nICovXHJcblx0XHRcdFx0aWYgKCF0aGlzLnBhcmFtcy5zb3J0QnkgJiYgKHRoaXMuc29ydEJ5IHx8IHRoaXMuc29ydGVkKSkge1xyXG5cdFx0XHRcdFx0cGFyYW1zLnNvcnRCeSA9IHRoaXMuc29ydEJ5IHx8IHRoaXMudGV4dDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEdldCBlbmRwb2ludCAqL1xyXG5cdFx0XHRcdGxldCBlbmRwb2ludCA9IHR5cGVvZiB0aGlzLmVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gdGhpcy5lbmRwb2ludCh0aGlzKSA6ICg8c3RyaW5nPnRoaXMuZW5kcG9pbnQpO1xyXG5cdFx0XHRcdGlmIChlbmRwb2ludCAmJiB0aGlzLmxvYWREYXRhKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9odHRwLmdldChlbmRwb2ludCwgeyBwYXJhbXM6IHBhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KVxyXG5cdFx0XHRcdFx0XHQucGlwZShtYXAoKHg6IGFueVtdKSA9PiB0aGlzLm1hcHBlciA/IHRoaXMubWFwcGVyKHgpIDogeCkpXHJcblx0XHRcdFx0XHRcdC5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB4O1xyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdHN1cGVyLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdC8qIFdyaXRlIHRoZSB2YWx1ZSBhbmQgdHJpZ2dlciBzb21lIGV2ZW50cyAqL1xyXG5cdFx0c3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcblx0XHR0aGlzLm9uU2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGFuIG9wdGlvbiBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUNoYW5nZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KTtcclxuXHRcdHRoaXMuaGFuZGxlSXRlbUNoYW5nZSgkZXZlbnQudmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1TZWxlY3RlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgaXRlbSBjaGFuZ2VzXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVJdGVtQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5rZXldID09IHZhbHVlKVswXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kZWxzIGZpbHRlciBldmVudFxyXG5cdCAqIEBwYXJhbSAkZXZlbnQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgc2VhcmNoVGV4dDogc3RyaW5nID0gKCRldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSA/PyAnJztcclxuXHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB0aGlzLnNlYXJjaEZpZWxkKHgpPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpID4gLTEpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy50ZXh0XT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgZW5kcG9pbnQgY2hhbmdlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBlbmRwb2ludENoYW5nZWQoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLl9wYXJhbXMsIHRoaXMucHJvamVjdGlvbiwgdGhpcy5fbG9hZERhdGFdKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgZW51bSBjaGFuZ2VkXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGVudW1DaGFuZ2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZW51bUNoYW5nZS5uZXh0KFt0aGlzLl9lbnVtRmlsdGVyXSk7XHJcblx0fVxyXG59Il19