@bnsights/bbsf-controls 1.0.159 → 1.0.161

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,6 +6,13 @@ For more info please visit [BBSF Controls documenation](https://bbsfadmin.bnsigh
6
6
 
7
7
  # Change Log
8
8
 
9
+ ## 1.0.161 / 12-3-2025
10
+
11
+ =====================
12
+
13
+ - Enable Grouping feature in dropdown control (Added hasGroup property in DropdownOptions and group property in DropdownListItem)
14
+
15
+
9
16
  ## 1.0.159 / 16-2-2025
10
17
 
11
18
  =====================
@@ -1,3 +1,3 @@
1
1
  export class DropdownListItem {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0SXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duTGlzdEl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLGdCQUFnQjtDQUk1QiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0SXRlbVxyXG57XHJcbiAga2V5OmFueVxyXG4gIHZhbHVlOmFueVxyXG59XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0SXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duTGlzdEl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLGdCQUFnQjtDQUs1QiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0SXRlbVxyXG57XHJcbiAga2V5OmFueVxyXG4gIHZhbHVlOmFueVxyXG4gIGdyb3VwPzphbnlcclxufVxyXG4iXX0=
@@ -13,4 +13,4 @@ export class DropdownOptions extends ControlOptionsBase {
13
13
  this.notFoundText = "";
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Nb2RlbHMvRHJvcGRvd25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV6RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxrQkFBa0I7SUFBdkQ7O1FBTUUscUNBQXFDO1FBQ3JDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQWV4Qyx5Q0FBeUM7UUFDekMsbUJBQWMsR0FBVyxLQUFLLENBQUE7UUFDOUIsMkNBQTJDO1FBQzNDLHFCQUFnQixHQUFXLE9BQU8sQ0FBQTtRQUNsQyxtQkFBYyxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFBO1FBQ3ZELGlCQUFZLEdBQVcsRUFBRSxDQUFBO0lBSTNCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi9FbnVtcy9Db250cm9sTGF5b3V0J1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bkxpc3RJdGVtJ1xyXG5pbXBvcnQgeyBDdXN0b21WYWxpZGF0aW9uIH0gZnJvbSAnLi9DdXN0b21WYWxpZGF0aW9uJ1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGUgfSBmcm9tICcuL0F0dHJpYnV0ZSdcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi9FbnVtcy9Gb3JjZURpcmVjdGlvbidcclxuaW1wb3J0IHsgQ29udHJvbE9wdGlvbnNCYXNlIH0gZnJvbSAnLi9Db250cm9sT3B0aW9uc0Jhc2UnXHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIGV4dGVuZHMgQ29udHJvbE9wdGlvbnNCYXNlIHtcclxuXHJcbiAgLyoqVG8gc2V0ICBEYXRhU291cmNlICB0byBEcm9wZG93bkxpc3QgKi9cclxuICBkYXRhU291cmNlOiBEcm9wZG93bkxpc3RJdGVtW11cclxuICAvKipUbyBzZXQgIFNlbGVjdGVkSXRlbSAgdG8gRHJvcGRvd25MaXN0ICovXHJcbiAgc2VsZWN0ZWRJdGVtczogYW55XHJcbiAgLyoqIERpc2FibGUgQm9vdHN0cmFwIERyb3Bkb3duTGlzdCAqL1xyXG4gIGRpc2FibGVCb290c3RyYXBTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogIHRvIHNldCAgRHJvcGRvd25MaXN0IGluIFNpbmdsZU1vZGUgT3IgTXVsdGlibGVNb2RlICwsSWYgZmFsc2UgPT4gRGlzYWJsZUJvb3RzdHJhcFNlbGVjdCBtdXN0IGJlIGVxdWFsIGZhbHNlICovXHJcbiAgc2luZ2xlU2VsZWN0aW9uOiBib29sZWFuXHJcbiAgLyoqICB0byBzZXQgIE51bWJlciBPZiBzZWxlY3RlZCBFbGVtZW50IFRoYXQgd2lsbCBTaG93IEluIFRoZSBCb3ggKi9cclxuICBpdGVtc1Nob3dMaW1pdDogbnVtYmVyXHJcbiAgLyoqICB0byBTaG93IFNlYXJjaCBGaWx0ZXIgQm94Ki9cclxuICBhbGxvd1NlYXJjaEZpbHRlcjogYm9vbGVhblxyXG4gIC8qKiAgdG8gc2V0ICBMaW1pdCBPZiBzZWxlY3RlZCBFbGVtZW50IEZvciBEcm9wZG93bkxpc3QgKi9cclxuICBsaW1pdFNlbGVjdGlvbj86IG51bWJlclxyXG4gIC8qKiBTZXQgY3NzIGNsYXNzZXMgdG8gIERyb3Bkb3duTGlzdCAgKi9cclxuICBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgLyoqIEFsbG93ICBTaG93IENoZWNrYm94ICovXHJcbiAgc2hvd0NoZWNrYm94PzogYm9vbGVhbjtcclxuICAvKiogQWxsb3cgQ2hlY2sgQUxMIEl0ZW1zICovXHJcbiAgZW5hYmxlQ2hlY2tBbGw/OiBib29sZWFuO1xyXG4gIC8qKiBTZXQga2V5IGZvciBpdGVtIGluICBEcm9wZG93bkxpc3QgICovXHJcbiAgaXRlbVRlbXBsZXRrZXk6IHN0cmluZyA9IFwia2V5XCJcclxuICAvKiogU2V0IHZhbHVlIGZvciBpdGVtIGluICBEcm9wZG93bkxpc3QgICovXHJcbiAgaXRlbVRlbXBsZXR2YWx1ZTogc3RyaW5nID0gXCJ2YWx1ZVwiXHJcbiAgZm9yY2VEaXJlY3Rpb246IEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaFxyXG4gIG5vdEZvdW5kVGV4dDogc3RyaW5nID0gXCJcIlxyXG4gIC8qKiAgUmVwcmVzZW50IFZhbHVlIG9mIGRpc2FibGVkIGl0ZW1zIHRvb2x0aXAqL1xyXG4gIGRpc2FibGVkSXRlbXNUb29sdGlwVmFsdWU6IHN0cmluZ1xyXG5cclxufVxyXG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Nb2RlbHMvRHJvcGRvd25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV6RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxrQkFBa0I7SUFBdkQ7O1FBTUUscUNBQXFDO1FBQ3JDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQWV4Qyx5Q0FBeUM7UUFDekMsbUJBQWMsR0FBVyxLQUFLLENBQUE7UUFDOUIsMkNBQTJDO1FBQzNDLHFCQUFnQixHQUFXLE9BQU8sQ0FBQTtRQUNsQyxtQkFBYyxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFBO1FBQ3ZELGlCQUFZLEdBQVcsRUFBRSxDQUFBO0lBTTNCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi9FbnVtcy9Db250cm9sTGF5b3V0J1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bkxpc3RJdGVtJ1xyXG5pbXBvcnQgeyBDdXN0b21WYWxpZGF0aW9uIH0gZnJvbSAnLi9DdXN0b21WYWxpZGF0aW9uJ1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGUgfSBmcm9tICcuL0F0dHJpYnV0ZSdcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi9FbnVtcy9Gb3JjZURpcmVjdGlvbidcclxuaW1wb3J0IHsgQ29udHJvbE9wdGlvbnNCYXNlIH0gZnJvbSAnLi9Db250cm9sT3B0aW9uc0Jhc2UnXHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIGV4dGVuZHMgQ29udHJvbE9wdGlvbnNCYXNlIHtcclxuXHJcbiAgLyoqVG8gc2V0ICBEYXRhU291cmNlICB0byBEcm9wZG93bkxpc3QgKi9cclxuICBkYXRhU291cmNlOiBEcm9wZG93bkxpc3RJdGVtW11cclxuICAvKipUbyBzZXQgIFNlbGVjdGVkSXRlbSAgdG8gRHJvcGRvd25MaXN0ICovXHJcbiAgc2VsZWN0ZWRJdGVtczogYW55XHJcbiAgLyoqIERpc2FibGUgQm9vdHN0cmFwIERyb3Bkb3duTGlzdCAqL1xyXG4gIGRpc2FibGVCb290c3RyYXBTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogIHRvIHNldCAgRHJvcGRvd25MaXN0IGluIFNpbmdsZU1vZGUgT3IgTXVsdGlibGVNb2RlICwsSWYgZmFsc2UgPT4gRGlzYWJsZUJvb3RzdHJhcFNlbGVjdCBtdXN0IGJlIGVxdWFsIGZhbHNlICovXHJcbiAgc2luZ2xlU2VsZWN0aW9uOiBib29sZWFuXHJcbiAgLyoqICB0byBzZXQgIE51bWJlciBPZiBzZWxlY3RlZCBFbGVtZW50IFRoYXQgd2lsbCBTaG93IEluIFRoZSBCb3ggKi9cclxuICBpdGVtc1Nob3dMaW1pdDogbnVtYmVyXHJcbiAgLyoqICB0byBTaG93IFNlYXJjaCBGaWx0ZXIgQm94Ki9cclxuICBhbGxvd1NlYXJjaEZpbHRlcjogYm9vbGVhblxyXG4gIC8qKiAgdG8gc2V0ICBMaW1pdCBPZiBzZWxlY3RlZCBFbGVtZW50IEZvciBEcm9wZG93bkxpc3QgKi9cclxuICBsaW1pdFNlbGVjdGlvbj86IG51bWJlclxyXG4gIC8qKiBTZXQgY3NzIGNsYXNzZXMgdG8gIERyb3Bkb3duTGlzdCAgKi9cclxuICBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgLyoqIEFsbG93ICBTaG93IENoZWNrYm94ICovXHJcbiAgc2hvd0NoZWNrYm94PzogYm9vbGVhbjtcclxuICAvKiogQWxsb3cgQ2hlY2sgQUxMIEl0ZW1zICovXHJcbiAgZW5hYmxlQ2hlY2tBbGw/OiBib29sZWFuO1xyXG4gIC8qKiBTZXQga2V5IGZvciBpdGVtIGluICBEcm9wZG93bkxpc3QgICovXHJcbiAgaXRlbVRlbXBsZXRrZXk6IHN0cmluZyA9IFwia2V5XCJcclxuICAvKiogU2V0IHZhbHVlIGZvciBpdGVtIGluICBEcm9wZG93bkxpc3QgICovXHJcbiAgaXRlbVRlbXBsZXR2YWx1ZTogc3RyaW5nID0gXCJ2YWx1ZVwiXHJcbiAgZm9yY2VEaXJlY3Rpb246IEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaFxyXG4gIG5vdEZvdW5kVGV4dDogc3RyaW5nID0gXCJcIlxyXG4gIC8qKiAgUmVwcmVzZW50IFZhbHVlIG9mIGRpc2FibGVkIGl0ZW1zIHRvb2x0aXAqL1xyXG4gIGRpc2FibGVkSXRlbXNUb29sdGlwVmFsdWU6IHN0cmluZztcclxuICAvLyoqU2hvdyBpZiBEREwgaGFzIEdyb3VwICovXHJcbiAgaGFzR3JvdXA6Ym9vbGVhbjtcclxuXHJcbn1cclxuIl19
@@ -174,11 +174,11 @@ export class DropdownListComponent {
174
174
  }
175
175
  }
176
176
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, deps: [{ token: i1.OnPagingFiltersChangeService }, { token: i2.ControlUtility }, { token: i3.ControlContainer, optional: true }, { token: i3.FormGroupDirective }, { token: i4.UtilityService }, { token: i4.ControlValidationService }, { token: i5.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { onChange: "onChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i8.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i6.KeyValuePipe, name: "keyvalue" }] }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { onChange: "onChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\" groupBy=\"group\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox, Customize item template-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox, Customize item template-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <!--Has group, Customize group template-->\r\n <ng-template *ngIf=\"options.hasGroup\" ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\">\r\n <label class=\"bbsf-label bbsf-group-label\">{{item.group}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i8.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i6.KeyValuePipe, name: "keyvalue" }] }); }
178
178
  }
179
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, decorators: [{
180
180
  type: Component,
181
- args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>" }]
181
+ args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\" groupBy=\"group\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox, Customize item template-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox, Customize item template-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <!--Has group, Customize group template-->\r\n <ng-template *ngIf=\"options.hasGroup\" ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\">\r\n <label class=\"bbsf-label bbsf-group-label\">{{item.group}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
182
182
  }], ctorParameters: () => [{ type: i1.OnPagingFiltersChangeService }, { type: i2.ControlUtility }, { type: i3.ControlContainer, decorators: [{
183
183
  type: Optional
184
184
  }] }, { type: i3.FormGroupDirective }, { type: i4.UtilityService }, { type: i4.ControlValidationService }, { type: i5.GlobalSettings }], propDecorators: { group: [{
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
190
190
  }], onClear: [{
191
191
  type: Output
192
192
  }] } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBZ0IsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLHFCQUFxQjthQUN6QiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyw0Q0FBNEM7SUFDNUMsWUFBb0IsZUFBNkMsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyx1QkFBMkMsRUFDNU0sY0FBOEIsRUFBVSx3QkFBa0QsRUFDekYsY0FBOEI7UUFGcEIsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQW9CO1FBQzVNLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDekYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBT3hDLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QixpQkFBWSxHQUFVLEVBQUUs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TztzQkFBZixLQUFLO2dCQUtJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bkxpc3RJdGVtJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Ecm9wZG93bkxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9Ecm9wZG93bkxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgZHJvcGRvd25MaXN0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgRHJvcGRvd25MaXN0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgICAvL2NvbnNvbGUubG9nKGVudmlyb25tZW50W1wiQkJTRl9BZG1pblVybFwiXSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGRyb3Bkb3duTGlzdEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgZHJvcGRvd25TZXR0aW5ncyA9IHt9O1xyXG4gIHNlbGVjdGVkSXRlbXM6IERyb3Bkb3duTGlzdEl0ZW1bXTtcclxuICBTZWxlY3RlZExpc3Q6IGFueVtdID0gW107XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnRyb2xDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICB0ZXh0RGlyO1xyXG4gIEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb247XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uKVxyXG4gICAgICB0aGlzLnRleHREaXIgPSB0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24gPT0gMiA/ICdydGwnIDogJ2x0cic7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMudGV4dERpciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpID09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuU2VsZWN0ZWRMaXN0ID0gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXM7XHJcbiAgICB0aGlzLmRyb3Bkb3duU2V0dGluZ3MgPSB7XHJcbiAgICAgIHNpbmdsZVNlbGVjdGlvbjogdGhpcy5vcHRpb25zLnNpbmdsZVNlbGVjdGlvbixcclxuICAgICAgdGV4dDogXCJTZWxlY3RcIixcclxuICAgICAgc2VsZWN0QWxsVGV4dDogJ1NlbGVjdCBBbGwnLFxyXG4gICAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxyXG4gICAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IHRoaXMub3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlcixcclxuICAgICAgY2xhc3NlczogdGhpcy5vcHRpb25zLmNsYXNzZXMsXHJcbiAgICAgIGRpc2FibGVkOiB0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCxcclxuICAgICAgc2hvd0NoZWNrYm94OiB0aGlzLm9wdGlvbnMuc2hvd0NoZWNrYm94LFxyXG4gICAgICBlbmFibGVDaGVja0FsbDogdGhpcy5vcHRpb25zLmVuYWJsZUNoZWNrQWxsLFxyXG4gICAgICBpdGVtc1Nob3dMaW1pdDogdGhpcy5vcHRpb25zLml0ZW1zU2hvd0xpbWl0LFxyXG4gICAgICBhbGxvd1NlYXJjaEZpbHRlcjogdGhpcy5vcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyLFxyXG4gICAgICBzaG93U2VsZWN0ZWRJdGVtc0F0VG9wOiB0cnVlLFxyXG4gICAgICBsaW1pdFNlbGVjdGlvbjogdGhpcy5vcHRpb25zLmxpbWl0U2VsZWN0aW9uLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlclRleHQ6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcixcclxuICAgICAgbGFiZWxLZXk6IFwidmFsdWVcIixcclxuICAgICAgcHJpbWFyeUtleTogXCJrZXlcIlxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLm5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLm5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLnZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMudmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLnZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLmxhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRJdGVtVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24pXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kYXRhU291cmNlLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy5vcHRpb25zLml0ZW1UZW1wbGV0a2V5XSA9PSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcylbMF1bdGhpcy5vcHRpb25zLml0ZW1UZW1wbGV0dmFsdWVdO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kYXRhU291cmNlLmZpbHRlcihpdGVtID0+IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW1bdGhpcy5vcHRpb25zLml0ZW1UZW1wbGV0a2V5XSkpLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5vcHRpb25zLml0ZW1UZW1wbGV0dmFsdWVdKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0KCkge1xyXG4gICAgdGhpcy5vbkNoYW5nZVNlcnZpY2UuQ2hhbmdlVmFsdWUodGhpcy5vcHRpb25zLm5hbWUpO1xyXG4gICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcztcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChvcmlnaW5hbFZhbHVlKTtcclxuICAgIC8vY29uc29sZS5sb2codGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC52YWx1ZSlcclxuICB9XHJcbiAgQ2xlYXIoKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ2xlYXJcIilcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gIH1cclxuICBvblNlbGVjdEFsbChpdGVtcykge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gaXRlbXM7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG4gIG9uRGVzZWxlY3QoaXRlbXMpIHtcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIGlmICgodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwKSAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25EZXNlbGVjdEFsbChpdGVtcykge1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgaWYgKCh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyb3BEb3duQ2xvc2UoKSB7XHJcbiAgICBpZiAoKHRoaXMuc2VsZWN0ZWRJdGVtcyA9PSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwKSAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmlzVmFsaWQodGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgLy9VcGRhdGUgaXRlbXMgKGRhdGEgc291cmNlKSBvZiBkcm9wIGRvd25cclxuICB1cGRhdGVEYXRhU291cmNlID0gKGRhdGFTb3VyY2U6IERyb3Bkb3duTGlzdEl0ZW1bXSkgPT4ge1xyXG4gICAgdGhpcy5vcHRpb25zLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gIH07XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1kcm9wZG93blwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCIgYXJpYS1yZXF1aXJlZD1cInRydWVcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0taW5wdXQgZW5hYmxlZCBib290c3RyYXAgc2VsZWN0LS0+XHJcbiAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAqbmdJZj1cIm9wdGlvbnMuZGlzYWJsZUJvb3RzdHJhcFNlbGVjdD09ZmFsc2UmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgIFthdHRyLmRpcl09XCJvcHRpb25zLmZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidhdXRvJ1wiIFtiaW5kVmFsdWVdPVwib3B0aW9ucy5pdGVtVGVtcGxldGtleVwiXHJcbiAgICAgICAgW2JpbmRMYWJlbF09XCJvcHRpb25zLml0ZW1UZW1wbGV0dmFsdWVcIiBbaXRlbXNdPVwib3B0aW9ucy5kYXRhU291cmNlXCIgW25vdEZvdW5kVGV4dF09XCJvcHRpb25zLm5vdEZvdW5kVGV4dFwiXHJcbiAgICAgICAgW21heFNlbGVjdGVkSXRlbXNdPVwib3B0aW9ucy5saW1pdFNlbGVjdGlvblwiIFtzZWFyY2hhYmxlXT1cIm9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXJcIlxyXG4gICAgICAgIFttdWx0aXBsZV09XCIhb3B0aW9ucy5zaW5nbGVTZWxlY3Rpb25cIiBbcmVhZG9ubHldPVwib3B0aW9ucy5pc0Rpc2FibGVkXCIgW2NsZWFyYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5wbGFjZWhvbGRlcn19XCIgaWQ9XCJ7e29wdGlvbnMubmFtZX19XCIgW3NlbGVjdGFibGVHcm91cF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIiBbKG5nTW9kZWwpXT1cIm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiIChjbGVhcik9XCJDbGVhcigpXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJkcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkICYmIGRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cIm9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uICA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICAgIDwhLS1ObyBjaGVja2JveC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFvcHRpb25zLnNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIHRpdGxlPVwie3tpdGVtLmRpc2FibGVkID8gb3B0aW9ucy5kaXNhYmxlZEl0ZW1zVG9vbHRpcFZhbHVlIDogJyd9fVwiXHJcbiAgICAgICAgICAgIGlkPXt7aXRlbS5rZXl9fT57e2l0ZW0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8IS0tY2hlY2tib3gtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLnNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBiYnNmLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0XCIgaWQ9XCJpdGVtLXt7aW5kZXh9fVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgW25nTW9kZWxdPVwiaXRlbSQuc2VsZWN0ZWRcIiAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIGlkPXt7aXRlbS5rZXl9fT57e2l0ZW0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgIDwhLS1pbnB1dCBkaXNhYmxlZCBib290c3RyYXAgc2VsZWN0LS0+XHJcbiAgICAgIDxzZWxlY3QgKm5nSWY9XCJvcHRpb25zLmRpc2FibGVCb290c3RyYXBTZWxlY3QmJiFvcHRpb25zLmlzUmVhZG9ubHlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgW2F0dHIuZGlyXT1cIm9wdGlvbnMuZm9yY2VEaXJlY3Rpb249PTI/J3J0bCc6J2F1dG8nXCIgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLnNlbGVjdGVkSXRlbXNcIiBbZGlzYWJsZWRdPVwib3B0aW9ucy5pc0Rpc2FibGVkXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLm5hbWV9fVwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD4tLXt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcInNlbGVjdFwiKX19LS08L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMuZGF0YVNvdXJjZVwiIHZhbHVlPVwie3tpdGVtLmtleX19XCIgW25nVmFsdWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgIHt7aXRlbS52YWx1ZX19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tnZXRTZWxlY3RlZEl0ZW1WYWx1ZSgpfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sLWRlc2NcIiAqbmdJZj1cIm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9bnVsbFwiPnt7b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihkcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkICYmIGRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihkcm9wZG93bkxpc3RGb3JtQ29udHJvbC5lcnJvcnN8a2V5dmFsdWUpfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj5cclxuICAgICAgICB7e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFvRSxNQUFNLGdCQUFnQixDQUFDO0FBTzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQU9uRSxNQUFNLE9BQU8scUJBQXFCO2FBQ3pCLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBQ3JDLDRDQUE0QztJQUM1QyxZQUFvQixlQUE2QyxFQUFVLGNBQThCLEVBQXNCLGdCQUFrQyxFQUFTLHVCQUEyQyxFQUM1TSxjQUE4QixFQUFVLHdCQUFrRCxFQUN6RixjQUE4QjtRQUZwQixvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBb0I7UUFDNU0sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN6RixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFPeEMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVUsRUFBRSxD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c0JBQWYsS0FBSztnQkFLSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgQ29udHJvbENvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duT3B0aW9ucyc7XHJcbmltcG9ydCB7IERyb3Bkb3duTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duTGlzdEl0ZW0nO1xyXG5pbXBvcnQgeyBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL09uUGFnaW5nRmlsdGVyc0NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Ecm9wZG93bkxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9Ecm9wZG93bkxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgIHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9uQ2hhbmdlU2VydmljZTogT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIGRyb3Bkb3duTGlzdENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIERyb3Bkb3duTGlzdENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gICAgLy9jb25zb2xlLmxvZyhlbnZpcm9ubWVudFtcIkJCU0ZfQWRtaW5VcmxcIl0pO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBkcm9wZG93bkxpc3RGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGRyb3Bkb3duU2V0dGluZ3MgPSB7fTtcclxuICBzZWxlY3RlZEl0ZW1zOiBEcm9wZG93bkxpc3RJdGVtW107XHJcbiAgU2VsZWN0ZWRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29udHJvbENoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcbiAgRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbjtcclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLlNlbGVjdGVkTGlzdCA9IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zO1xyXG4gICAgdGhpcy5kcm9wZG93blNldHRpbmdzID0ge1xyXG4gICAgICBzaW5nbGVTZWxlY3Rpb246IHRoaXMub3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24sXHJcbiAgICAgIHRleHQ6IFwiU2VsZWN0XCIsXHJcbiAgICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcclxuICAgICAgdW5TZWxlY3RBbGxUZXh0OiAnVW5TZWxlY3QgQWxsJyxcclxuICAgICAgZW5hYmxlU2VhcmNoRmlsdGVyOiB0aGlzLm9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIsXHJcbiAgICAgIGNsYXNzZXM6IHRoaXMub3B0aW9ucy5jbGFzc2VzLFxyXG4gICAgICBkaXNhYmxlZDogdGhpcy5vcHRpb25zLmlzRGlzYWJsZWQsXHJcbiAgICAgIHNob3dDaGVja2JveDogdGhpcy5vcHRpb25zLnNob3dDaGVja2JveCxcclxuICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRoaXMub3B0aW9ucy5lbmFibGVDaGVja0FsbCxcclxuICAgICAgaXRlbXNTaG93TGltaXQ6IHRoaXMub3B0aW9ucy5pdGVtc1Nob3dMaW1pdCxcclxuICAgICAgYWxsb3dTZWFyY2hGaWx0ZXI6IHRoaXMub3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlcixcclxuICAgICAgc2hvd1NlbGVjdGVkSXRlbXNBdFRvcDogdHJ1ZSxcclxuICAgICAgbGltaXRTZWxlY3Rpb246IHRoaXMub3B0aW9ucy5saW1pdFNlbGVjdGlvbixcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXJUZXh0OiB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIsXHJcbiAgICAgIGxhYmVsS2V5OiBcInZhbHVlXCIsXHJcbiAgICAgIHByaW1hcnlLZXk6IFwia2V5XCJcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5uYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UucmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9O1xyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkSXRlbVZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uKVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGF0YVNvdXJjZS5maWx0ZXIoaXRlbSA9PiBpdGVtW3RoaXMub3B0aW9ucy5pdGVtVGVtcGxldGtleV0gPT0gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMpWzBdW3RoaXMub3B0aW9ucy5pdGVtVGVtcGxldHZhbHVlXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGF0YVNvdXJjZS5maWx0ZXIoaXRlbSA9PiB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW3RoaXMub3B0aW9ucy5pdGVtVGVtcGxldGtleV0pKS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMub3B0aW9ucy5pdGVtVGVtcGxldHZhbHVlXSk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTkEnKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbVNlbGVjdCgpIHtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXM7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJiB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLCB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiwgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wudmFsdWUpXHJcbiAgfVxyXG4gIENsZWFyKCkge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIkNsZWFyXCIpXHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5DaGFuZ2VWYWx1ZSh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcbiAgb25TZWxlY3RBbGwoaXRlbXMpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBvbkRlc2VsZWN0KGl0ZW1zKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICBpZiAoKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCkgJiYgdGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIG9uRGVzZWxlY3RBbGwoaXRlbXMpIHtcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIGlmICgodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwKSAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ecm9wRG93bkNsb3NlKCkge1xyXG4gICAgaWYgKCh0aGlzLnNlbGVjdGVkSXRlbXMgPT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCkgJiYgdGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfTtcclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIHJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBjdXN0b21WYWxpZGF0aW9uKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgYWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBpc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wpO1xyXG4gIH07XHJcblxyXG4gIC8vVXBkYXRlIGl0ZW1zIChkYXRhIHNvdXJjZSkgb2YgZHJvcCBkb3duXHJcbiAgdXBkYXRlRGF0YVNvdXJjZSA9IChkYXRhU291cmNlOiBEcm9wZG93bkxpc3RJdGVtW10pID0+IHtcclxuICAgIHRoaXMub3B0aW9ucy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICB9O1xyXG5cclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1kcm9wZG93blwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCIgYXJpYS1yZXF1aXJlZD1cInRydWVcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1pbnB1dCBlbmFibGVkIGJvb3RzdHJhcCBzZWxlY3QtLT5cclxuICAgICAgPG5nLXNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiICpuZ0lmPVwib3B0aW9ucy5kaXNhYmxlQm9vdHN0cmFwU2VsZWN0PT1mYWxzZSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgW2F0dHIuZGlyXT1cIm9wdGlvbnMuZm9yY2VEaXJlY3Rpb249PTI/J3J0bCc6J2F1dG8nXCIgW2JpbmRWYWx1ZV09XCJvcHRpb25zLml0ZW1UZW1wbGV0a2V5XCIgZ3JvdXBCeT1cImdyb3VwXCJcclxuICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cIm9wdGlvbnMuaXRlbVRlbXBsZXR2YWx1ZVwiIFtpdGVtc109XCJvcHRpb25zLmRhdGFTb3VyY2VcIiBbbm90Rm91bmRUZXh0XT1cIm9wdGlvbnMubm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgICAgICBbbWF4U2VsZWN0ZWRJdGVtc109XCJvcHRpb25zLmxpbWl0U2VsZWN0aW9uXCIgW3NlYXJjaGFibGVdPVwib3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIiFvcHRpb25zLnNpbmdsZVNlbGVjdGlvblwiIFtyZWFkb25seV09XCJvcHRpb25zLmlzRGlzYWJsZWRcIiBbY2xlYXJhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLnBsYWNlaG9sZGVyfX1cIiBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIiBbc2VsZWN0YWJsZUdyb3VwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBBc01vZGVsXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLm5hbWV9fVwiIFsobmdNb2RlbCldPVwib3B0aW9ucy5zZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgpXCIgKGNsZWFyKT1cIkNsZWFyKClcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQgJiYgZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwib3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gID8gdHJ1ZSA6IGZhbHNlXCI+XHJcbiAgICAgICAgPCEtLU5vIGNoZWNrYm94LCBDdXN0b21pemUgaXRlbSB0ZW1wbGF0ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFvcHRpb25zLnNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIHRpdGxlPVwie3tpdGVtLmRpc2FibGVkID8gb3B0aW9ucy5kaXNhYmxlZEl0ZW1zVG9vbHRpcFZhbHVlIDogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAgaWQ9e3tpdGVtLmtleX19Pnt7aXRlbS52YWx1ZX19PC9sYWJlbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwhLS1jaGVja2JveCwgQ3VzdG9taXplIGl0ZW0gdGVtcGxhdGUtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLnNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBiYnNmLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0XCIgaWQ9XCJpdGVtLXt7aW5kZXh9fVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiBbbmdNb2RlbF09XCJpdGVtJC5zZWxlY3RlZFwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN1YnRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsXCIgaWQ9e3tpdGVtLmtleX19Pnt7aXRlbS52YWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwhLS1IYXMgZ3JvdXAsIEN1c3RvbWl6ZSBncm91cCB0ZW1wbGF0ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvbnMuaGFzR3JvdXBcIiBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJic2YtbGFiZWwgYmJzZi1ncm91cC1sYWJlbFwiPnt7aXRlbS5ncm91cH19PC9sYWJlbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICA8IS0taW5wdXQgZGlzYWJsZWQgYm9vdHN0cmFwIHNlbGVjdC0tPlxyXG4gICAgICA8c2VsZWN0ICpuZ0lmPVwib3B0aW9ucy5kaXNhYmxlQm9vdHN0cmFwU2VsZWN0JiYhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFthdHRyLmRpcl09XCJvcHRpb25zLmZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidhdXRvJ1wiIChjaGFuZ2UpPVwib25JdGVtU2VsZWN0KClcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucy5zZWxlY3RlZEl0ZW1zXCIgW2Rpc2FibGVkXT1cIm9wdGlvbnMuaXNEaXNhYmxlZFwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+LS17e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJzZWxlY3RcIil9fS0tPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zLmRhdGFTb3VyY2VcIiB2YWx1ZT1cInt7aXRlbS5rZXl9fVwiIFtuZ1ZhbHVlXT1cIml0ZW0ua2V5XCI+XHJcbiAgICAgICAgICB7e2l0ZW0udmFsdWV9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7Z2V0U2VsZWN0ZWRJdGVtVmFsdWUoKX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZCAmJiBkcm9wZG93bkxpc3RGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24oZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -133,6 +133,8 @@ export class TagsInputComponent {
133
133
  this.tags = this.tagsFormControl.value;
134
134
  this.selectedId = this.tags?.filter(item => item.id).map(item => item.id);
135
135
  if (this.tags == null) {
136
+ if (!this.searchKey)
137
+ this.searchKey = {};
136
138
  this.searchKey.selected = "";
137
139
  this.tags = [];
138
140
  this.tagsFormControl.setValue([]);
@@ -298,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
298
300
  type: ViewChild,
299
301
  args: ['searchKey', { static: false }]
300
302
  }] } });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxRCxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUF5RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBbUQsbUJBQW1CLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBU2hJLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFDckMsNENBQTRDO0lBQzVDLFlBQW9CLElBQWdCLEVBQVUsY0FBOEIsRUFBVSxxQkFBNEMsRUFBc0IsZ0JBQWtDLEVBQVMsb0JBQXdDLEVBQ2pPLGNBQThCLEVBQVUsd0JBQWtELEVBQzFGLGNBQThCO1FBRnBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBQ2pPLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDMUYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUTlCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLG9DQUFvQztRQUNwQyxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDViw4QkFBeUIsR0FBVyxFQUFFLENBQUM7UUFJdkMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUUxQix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUE0R3RDLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBaUhGLGlCQUFpQjtRQUNqQiw2QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pHLENBQUMsQ0FBQztRQUNGLGlCQUFpQjtRQUNqQiwwQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RHLENBQUMsQ0FBQztRQUNGLGlCQUFpQjtRQUVqQiwyQkFBc0IsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUM7UUFDRixpQkFBaUI7UUFDakIsd0JBQW1CLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEcsQ0FBQyxDQUFDO1FBRUYsaUJBQWlCO1FBQ2pCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBelFBLGtCQUFrQixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRSxDQUFDO0lBc0JELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFXO1FBQ2xDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMsc0JBQXNCLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsT0FBb0IsQ0FBQztRQUM5RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNsQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBZ0IsQ0FBQztvQkFDdEQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUNqRCxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzdCO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsdUJBQXVCO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs7WUFFaEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFDcEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkYsaUVBQWlFO1FBQ2pFLDBHQUEwRztRQUUxRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDcEQ7U0FJRjtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEUsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNsQztZQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDdEMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEc7U0FDRjtRQUNELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLFlBQVksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFNRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBUztRQUMxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUMvQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUMvQjtRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQVk7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBUztRQUM3Qix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSTtZQUM3QixPQUFPO1FBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzSixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzdCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRO2dCQUMvQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQzs7Z0JBRTVDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7U0FDakQ7UUFDRCxJQUFJLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNwRCxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzFDLG1CQUFtQixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUN0RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDakYsT0FBTyxLQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRztRQUNmLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSztZQUNyQixPQUFPO1FBQ1QsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUNuQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDcEIsT0FBTztpQkFDUjs7b0JBRUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsOEJBQThCO2FBQ3pCLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtnQkFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RDO2lCQUNJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMvQztTQUNGO1FBQ0Qsd0RBQXdEO2FBQ25ELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ2hILElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDbEIsd0JBQXdCO1FBQ3hCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtnQkFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7YUFDOUI7U0FDRjtRQUNELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQ3RGLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUc7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQXlCRCxlQUFlLENBQUMsU0FBUztRQUN2QixJQUFJLFNBQVMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzNILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25DLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixPQUFPO2FBQ1I7O2dCQUVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QztJQUNILENBQUM7OEdBelNVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHFUQ2YvQixraEZBeUNBOzsyRkQxQmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUVFLGdCQUFnQjs7MEJBTTJHLFFBQVE7MktBTXBJLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNvQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRhZ3NJbnB1dE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1RhZ3NJbnB1dE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1UYWdzSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9UYWdzSW5wdXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWdzSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgVGFnc0lucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uczogVGFnc0lucHV0T3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoS2V5JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaEtleTogYW55O1xyXG4gIHNlYXJjaEtleVZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vIFRhZ0lucHV0Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHNlbGVjdGVkSWQ6IGFueVtdID0gW107XHJcbiAgdGFncyA9IFtdO1xyXG4gIG5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgdGFnc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIHRhZ3NGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGlzTm9NYXRjaDogYW55O1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VhcmNoUmVzdWx0SGFzSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0RGlyO1xyXG4gIHN0YXRpYyBzaG93RXJyb3JPZklucHV0cyhlcnJvcnM6IGFueSkge1xyXG4gICAgY29uc3QgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbENvbnRhaW5lcnN0YXRpYy5jb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xyXG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGVycm9yc1trZXldKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFwiRmx1ZW50QXBpXCI6IGl0ZXJhdG9yIH0pO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uKVxyXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5uYW1lKVxyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5kYXRhc291cmNlSXRlbVRleHQgPSB0aGlzLm9wdGlvbnMuZGF0YXNvdXJjZUl0ZW1UZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTs7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAuYWRkQ29udHJvbChcInRhZ3NcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbCA9IHRoaXMudGFnc0Zvcm1Hcm91cC5jb250cm9sc1tcInRhZ3NcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm5hbWUsIHRoaXMudGFnc0Zvcm1Db250cm9sKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0KVxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9JdGVtc01hdGNoXCIpO1xyXG5cclxuICAgIC8vIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAvLyB0aGlzLlRhZ0lucHV0Q29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLnZhbHVlW2luZGV4XTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWQucHVzaChlbGVtZW50LmlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICAvL0NoZWNrIGZvciBjaGFuZ2luZyBpbiB2YWx1ZVxyXG4gICAgdGhpcy5jaGFuZ2VWYWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIHRoaXMudGFncyA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLnRhZ3M/LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQpLm1hcChpdGVtID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAodGhpcy50YWdzID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaEtleS5zZWxlY3RlZCA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy50YWdzID0gW107XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0VmFsdWUoW10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3RbaW5kZXhdLmtleSwgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubmFtZSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcclxuICAgIGlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIiwgXCJvZmZcIik7XHJcbiAgfVxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UucmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9O1xyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGdW5jdGlvbkZhY3RvcnkoVGV4dDogYW55KTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcclxuICAgIC8vSWYgbm8gdGV4dCB0aGVuIHJldHVybiBlbXB0eSBvYnNlcnZhYmxlXHJcbiAgICBpZiAoIVRleHQpIHtcclxuICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogbnVsbCB9KTtcclxuICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hLZXlWYWx1ZSA9PSBUZXh0KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB0aGlzLnNlYXJjaEtleVZhbHVlID0gVGV4dDtcclxuICAgIGxldCBVcmwgPSBgJHt0aGlzLm9wdGlvbnMuYWN0aW9uVVJMfT8ke3RoaXMub3B0aW9ucy5xdWVyeVBhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQoVGV4dCl9JiR7dGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXNQYXJhbU5hbWV9PSR7dGhpcy5zZWxlY3RlZElkfWA7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmV4dHJhRmlsdGVycykge1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5leHRyYUZpbHRlcnMgPT09IFwic3RyaW5nXCIpXHJcbiAgICAgICAgVXJsID0gVXJsICsgYCYke3RoaXMub3B0aW9ucy5leHRyYUZpbHRlcnN9YDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIFVybCA9IFVybCArIGAmJHt0aGlzLm9wdGlvbnMuZXh0cmFGaWx0ZXJzKCl9YDtcclxuICAgIH1cclxuICAgIGxldCByZXF1ZXN0T3B0aW9uc01vZGVsID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuICAgIHJlcXVlc3RPcHRpb25zTW9kZWwuZGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICBsZXQgTW9kZWwgPSB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5nZXQoVXJsLCBudWxsLCBudWxsLCByZXF1ZXN0T3B0aW9uc01vZGVsKTtcclxuICAgIHJldHVybiBNb2RlbCBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICBhZGRUYWcoZXZlbnQsIGtleSkge1xyXG4gICAgLy9DaGVjayBpZiBpbnB1dCBpcyB5YWIgcHJlc3NcclxuICAgIGlmIChldmVudC5rZXkgPT09IFwiVGFiXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgZW50ZXIgcHJlc3NcclxuICAgIGlmICh0aGlzLmlzTm9NYXRjaCA9PSB0cnVlICYmIGV2ZW50LmtleSA9PSBcIkVudGVyXCIgJiYgdGhpcy5vcHRpb25zLmFsbG93TmV3U2VsZWN0aW9uICYmIGtleS5zZWxlY3RlZCkge1xyXG4gICAgICBpZiAoISh0aGlzLnRhZ3MubGVuZ3RoID49IHRoaXMub3B0aW9ucy5tYXhOdW1iZXJUYWdzKSkge1xyXG4gICAgICAgIHRoaXMudGFncy5wdXNoKHsgbmFtZToga2V5LnNlbGVjdGVkIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkuc2V0VmFsdWUodGhpcy50YWdzKTtcclxuICAgICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS52YWxpZCkge1xyXG4gICAgICAgICAga2V5LnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy50YWdzLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIGNoYXJhY2h0ZXJcclxuICAgIGVsc2UgaWYgKFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQua2V5Q29kZSkubWF0Y2goLyhcXHd8XFxzKS9nKSkge1xyXG4gICAgICBpZiAodGhpcy5pc05vTWF0Y2ggJiYgIXRoaXMub3B0aW9ucy5hbGxvd05ld1NlbGVjdGlvbiAmJiBrZXkuc2VsZWN0ZWQpIHtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiB0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0IH0pO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzTm9NYXRjaCA9PSBmYWxzZSAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vUmVtb3ZlIHVubWF0Y2hlZCBlcnJvciBpbmNhc2Ugb2YgZGVsZXRpbmcgc2VhcmNoIHZhbHVlXHJcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQmFja3NwYWNlXCIgJiYga2V5LnNlbGVjdGVkPy5sZW5ndGggPD0gMSAmJiB0aGlzLnRhZ3NGb3JtQ29udHJvbC5oYXNFcnJvcignZXJyb3JNYXNzYWdlJykpIHtcclxuICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogbnVsbCB9KTtcclxuICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZElkPy5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiBcIlwiIH0pO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYWdzQ2hhbmdlZChyZXN1bHQpIHtcclxuICAgIC8vY29uc29sZS5sb2codGhpcy50YWdzKVxyXG4gICAgaWYgKHJlc3VsdFtcImNoYW5nZVwiXSA9PSBcImFkZFwiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZC5wdXNoKHJlc3VsdC50YWcuaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlc3VsdFtcImNoYW5nZVwiXSA9PSBcInJlbW92ZVwiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZCA9IHRoaXMuc2VsZWN0ZWRJZC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gcmVzdWx0LnRhZy5pZCk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWQubGVuZ3RoID09IDAgJiYgdGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiBcIlwiIH0pO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5pZDsgfSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJiB0aGlzLnRhZ3NGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKTtcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMudGFncztcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkuc2V0VmFsdWUodGhpcy50YWdzKTtcclxuICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgdGhpcy5jaGVja0lzVGFnSW5GaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIG9uTm9PcHRpb25zTWF0Y2goZXZlbnQpIHtcclxuICAgIHRoaXMuaXNOb01hdGNoID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMudGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgYWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy50YWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy50YWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBjdXN0b21WYWxpZGF0aW9uKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgYWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy50YWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBjdXN0b21WYWxpZGF0aW9uKTtcclxuICB9O1xyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmlzVmFsaWQodGhpcy50YWdzRm9ybUNvbnRyb2wpO1xyXG4gIH07XHJcblxyXG4gIG9uVGFnc0lucHV0Qmx1cihTZWFyY2hLZXkpIHtcclxuICAgIGlmIChTZWFyY2hLZXkuc2VsZWN0ZWQgJiYgdGhpcy5vcHRpb25zLmFsbG93TmV3U2VsZWN0aW9uICYmIHRoaXMuaXNOb01hdGNoICYmIHRoaXMudGFncy5sZW5ndGggPCB0aGlzLm9wdGlvbnMubWF4TnVtYmVyVGFncykge1xyXG4gICAgICB0aGlzLnRhZ3MucHVzaCh7IG5hbWU6IFNlYXJjaEtleS5zZWxlY3RlZCB9KTtcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnZhbGlkKSB7XHJcbiAgICAgICAgU2VhcmNoS2V5LnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMudGFncy5wb3AoKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VGFnc1ZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMudGFncy5sZW5ndGggPiAwKVxyXG4gICAgICByZXR1cm4gdGhpcy50YWdzLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lzVGFnSW5GaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5Ecm9wZG93blRlbXBsYXRlVmFyaWFibGUpIHtcclxuICAgICAgdGhpcy5Ecm9wZG93blRlbXBsYXRlVmFyaWFibGUudG9nZ2xlKCk7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlLnRvZ2dsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtdGFncy1pbnB1dFwiIFtmb3JtR3JvdXBdPVwidGFnc0Zvcm1Hcm91cFwiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCIob3B0aW9ucy52aWV3VHlwZT09MSk/J2Jic2YtdmVydGljYWwnOidiYnNmLWhvcml6b250YWwnXCI+XHJcbiAgICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5oaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLmxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAgICB7e29wdGlvbnMubGFiZWxWYWx1ZX19XHJcbiAgICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuc2hvd0FzdGVyaXNrJiZvcHRpb25zLmlzUmVxdWlyZWQpfHwob3B0aW9ucy5pc1JlcXVpcmVkKSkmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDwhLS1pbnB1dC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgICA8Yi10YWdzLWlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wge3tvcHRpb25zLmV4dHJhQ2xhc3Nlc319XCIgW2Rpcl09XCJ0ZXh0RGlyXCJcclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbC1lcnJvclwiIGFyaWEtaW52YWxpZD1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YWdzXCJcclxuICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInRhZ3NGb3JtQ29udHJvbC5pbnZhbGlkICYmIHRhZ3NGb3JtQ29udHJvbC50b3VjaGVkXCIgcGxhY2Vob2xkZXI9XCJ7e29wdGlvbnMucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICBpZD1cInt7bmFtZX19XCIgKG9uVGFnc0NoYW5nZWQpPVwib25UYWdzQ2hhbmdlZCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0YWdzXCJcclxuICAgICAgICAgIFtyZW1vdmVMYXN0T25CYWNrc3BhY2VdPVwib3B0aW9ucy5yZW1vdmVMYXN0T25CYWNrc3BhY2VcIiAob25Ob09wdGlvbnNNYXRjaCk9XCJvbk5vT3B0aW9uc01hdGNoKCRldmVudClcIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwic2VhcmNoRnVuY3Rpb25GYWN0b3J5KHNlYXJjaEtleS5zZWxlY3RlZClcIiAjc2VhcmNoS2V5XHJcbiAgICAgICAgICBbc2Nyb2xsYWJsZU9wdGlvbnNdPVwib3B0aW9ucy5zY3JvbGxhYmxlT3B0aW9uc1wiIFtzY3JvbGxhYmxlT3B0aW9uc0luVmlld109XCJvcHRpb25zLm1heFNlYXJjaFJlc3VsdHNDb3VudFwiXHJcbiAgICAgICAgICAoa2V5ZG93bik9XCJhZGRUYWcoJGV2ZW50LHNlYXJjaEtleSlcIiBbVmlld01vZGVdPVwib3B0aW9ucy50YWdJbnB1dE1vZGVcIiBbbWF4VGFnc109XCJvcHRpb25zLm1heE51bWJlclRhZ3NcIlxyXG4gICAgICAgICAgW21pbkxlbmd0aEJlZm9yZU9wdGlvbnNdPVwib3B0aW9ucy5taW5TZWFyY2hMZW5ndGhcIiBbc2hvd0Rlc2NyaXB0aW9uXT1cIm9wdGlvbnMuc2hvd0Rlc2NyaXB0aW9uXCJcclxuICAgICAgICAgIFtkZWZhdWx0SW1hZ2VVUkxdPVwib3B0aW9ucy5kZWZhdWx0SW1nVXJsXCIgbmFtZT1cInRhZ3NcIiAob25CbHVySW5wdXQpPVwib25UYWdzSW5wdXRCbHVyKHNlYXJjaEtleSlcIj5cclxuICAgICAgICA8L2ItdGFncy1pbnB1dD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gcmVhZG9ubHkgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmlzUmVhZG9ubHlcIj48c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZpZXdcIj57e2dldFRhZ3NWYWx1ZSgpfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLmxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIodGFnc0Zvcm1Db250cm9sLmludmFsaWQgJiYgdGFnc0Zvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24odGFnc0Zvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpXCI+XHJcbiAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxRCxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUF5RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBbUQsbUJBQW1CLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBU2hJLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFDckMsNENBQTRDO0lBQzVDLFlBQW9CLElBQWdCLEVBQVUsY0FBOEIsRUFBVSxxQkFBNEMsRUFBc0IsZ0JBQWtDLEVBQVMsb0JBQXdDLEVBQ2pPLGNBQThCLEVBQVUsd0JBQWtELEVBQzFGLGNBQThCO1FBRnBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBQ2pPLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4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QUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QztJQUNILENBQUM7OEdBNVNVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHFUQ2YvQixraEZBeUNBOzsyRkQxQmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUVFLGdCQUFnQjs7MEJBTTJHLFFBQVE7MktBTXBJLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNvQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRhZ3NJbnB1dE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1RhZ3NJbnB1dE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1UYWdzSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9UYWdzSW5wdXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWdzSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgVGFnc0lucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uczogVGFnc0lucHV0T3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoS2V5JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaEtleTogYW55O1xyXG4gIHNlYXJjaEtleVZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vIFRhZ0lucHV0Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHNlbGVjdGVkSWQ6IGFueVtdID0gW107XHJcbiAgdGFncyA9IFtdO1xyXG4gIG5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgdGFnc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIHRhZ3NGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGlzTm9NYXRjaDogYW55O1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VhcmNoUmVzdWx0SGFzSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0RGlyO1xyXG4gIHN0YXRpYyBzaG93RXJyb3JPZklucHV0cyhlcnJvcnM6IGFueSkge1xyXG4gICAgY29uc3QgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbENvbnRhaW5lcnN0YXRpYy5jb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xyXG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGVycm9yc1trZXldKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFwiRmx1ZW50QXBpXCI6IGl0ZXJhdG9yIH0pO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uKVxyXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5uYW1lKVxyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5kYXRhc291cmNlSXRlbVRleHQgPSB0aGlzLm9wdGlvbnMuZGF0YXNvdXJjZUl0ZW1UZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTs7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAuYWRkQ29udHJvbChcInRhZ3NcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbCA9IHRoaXMudGFnc0Zvcm1Hcm91cC5jb250cm9sc1tcInRhZ3NcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm5hbWUsIHRoaXMudGFnc0Zvcm1Db250cm9sKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0KVxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9JdGVtc01hdGNoXCIpO1xyXG5cclxuICAgIC8vIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAvLyB0aGlzLlRhZ0lucHV0Q29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLnZhbHVlW2luZGV4XTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWQucHVzaChlbGVtZW50LmlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICAvL0NoZWNrIGZvciBjaGFuZ2luZyBpbiB2YWx1ZVxyXG4gICAgdGhpcy5jaGFuZ2VWYWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIHRoaXMudGFncyA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLnRhZ3M/LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQpLm1hcChpdGVtID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAodGhpcy50YWdzID09IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoS2V5KSBcclxuICAgICAgICAgIHRoaXMuc2VhcmNoS2V5ID0ge307XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5LnNlbGVjdGVkID0gXCJcIjtcclxuICAgICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3QgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0ua2V5LCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5uYW1lKS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xyXG4gICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiLCBcIm9mZlwiKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZ1bmN0aW9uRmFjdG9yeShUZXh0OiBhbnkpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgLy9JZiBubyB0ZXh0IHRoZW4gcmV0dXJuIGVtcHR5IG9ic2VydmFibGVcclxuICAgIGlmICghVGV4dCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHJldHVybiBFTVBUWTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEtleVZhbHVlID09IFRleHQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuc2VhcmNoS2V5VmFsdWUgPSBUZXh0O1xyXG4gICAgbGV0IFVybCA9IGAke3RoaXMub3B0aW9ucy5hY3Rpb25VUkx9PyR7dGhpcy5vcHRpb25zLnF1ZXJ5UGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChUZXh0KX0mJHt0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1BhcmFtTmFtZX09JHt0aGlzLnNlbGVjdGVkSWR9YDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXh0cmFGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmV4dHJhRmlsdGVycyA9PT0gXCJzdHJpbmdcIilcclxuICAgICAgICBVcmwgPSBVcmwgKyBgJiR7dGhpcy5vcHRpb25zLmV4dHJhRmlsdGVyc31gO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgVXJsID0gVXJsICsgYCYke3RoaXMub3B0aW9ucy5leHRyYUZpbHRlcnMoKX1gO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG4gICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIGxldCBNb2RlbCA9IHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmdldChVcmwsIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zTW9kZWwpO1xyXG4gICAgcmV0dXJuIE1vZGVsIGFzIGFueTtcclxuICB9XHJcblxyXG4gIGFkZFRhZyhldmVudCwga2V5KSB7XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIHlhYiBwcmVzc1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgLy9DaGVjayBpZiBpbnB1dCBpcyBlbnRlciBwcmVzc1xyXG4gICAgaWYgKHRoaXMuaXNOb01hdGNoID09IHRydWUgJiYgZXZlbnQua2V5ID09IFwiRW50ZXJcIiAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gJiYga2V5LnNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICghKHRoaXMudGFncy5sZW5ndGggPj0gdGhpcy5vcHRpb25zLm1heE51bWJlclRhZ3MpKSB7XHJcbiAgICAgICAgdGhpcy50YWdzLnB1c2goeyBuYW1lOiBrZXkuc2VsZWN0ZWQgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnZhbGlkKSB7XHJcbiAgICAgICAgICBrZXkuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLnRhZ3MucG9wKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgY2hhcmFjaHRlclxyXG4gICAgZWxzZSBpZiAoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5rZXlDb2RlKS5tYXRjaCgvKFxcd3xcXHMpL2cpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzTm9NYXRjaCAmJiAhdGhpcy5vcHRpb25zLmFsbG93TmV3U2VsZWN0aW9uICYmIGtleS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IFwiZXJyb3JNYXNzYWdlXCI6IHRoaXMub3B0aW9ucy5ub1Jlc3VsdFRleHQgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNOb01hdGNoID09IGZhbHNlICYmIHRoaXMub3B0aW9ucy5hbGxvd05ld1NlbGVjdGlvbiA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9SZW1vdmUgdW5tYXRjaGVkIGVycm9yIGluY2FzZSBvZiBkZWxldGluZyBzZWFyY2ggdmFsdWVcclxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJCYWNrc3BhY2VcIiAmJiBrZXkuc2VsZWN0ZWQ/Lmxlbmd0aCA8PSAxICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLmhhc0Vycm9yKCdlcnJvck1hc3NhZ2UnKSkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWQ/Lmxlbmd0aCA9PSAwICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhZ3NDaGFuZ2VkKHJlc3VsdCkge1xyXG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLnRhZ3MpXHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwiYWRkXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkLnB1c2gocmVzdWx0LnRhZy5pZCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwicmVtb3ZlXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkID0gdGhpcy5zZWxlY3RlZElkLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSByZXN1bHQudGFnLmlkKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZC5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy50YWdzRm9ybUNvbnRyb2wudmFsdWUubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiBhLmlkOyB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy50YWdzO1xyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICB0aGlzLmNoZWNrSXNUYWdJbkZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgb25Ob09wdGlvbnNNYXRjaChldmVudCkge1xyXG4gICAgdGhpcy5pc05vTWF0Y2ggPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy50YWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICByZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLnRhZ3NGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgb25UYWdzSW5wdXRCbHVyKFNlYXJjaEtleSkge1xyXG4gICAgaWYgKFNlYXJjaEtleS5zZWxlY3RlZCAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gJiYgdGhpcy5pc05vTWF0Y2ggJiYgdGhpcy50YWdzLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5tYXhOdW1iZXJUYWdzKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHsgbmFtZTogU2VhcmNoS2V5LnNlbGVjdGVkIH0pO1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnNldFZhbHVlKHRoaXMudGFncyk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkudmFsaWQpIHtcclxuICAgICAgICBTZWFyY2hLZXkuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy50YWdzLnBvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRUYWdzVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy50YWdzLmxlbmd0aCA+IDApXHJcbiAgICAgIHJldHVybiB0aGlzLnRhZ3MubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNUYWdJbkZpbHRlcigpIHtcclxuICAgIGlmICh0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICAgICAgdGhpcy5Ecm9wZG93blRlbXBsYXRlVmFyaWFibGUudG9nZ2xlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi10YWdzLWlucHV0XCIgW2Zvcm1Hcm91cF09XCJ0YWdzRm9ybUdyb3VwXCI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgICAgPCEtLWxhYmVsLS0+XHJcbiAgICAgIDxsYWJlbCAqbmdJZj1cIiFvcHRpb25zLmhpZGVMYWJlbFwiIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMubGFiZWxFeHRyYUNsYXNzZXN9fVwiPlxyXG4gICAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIigob3B0aW9ucy5zaG93QXN0ZXJpc2smJm9wdGlvbnMuaXNSZXF1aXJlZCl8fChvcHRpb25zLmlzUmVxdWlyZWQpKSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgIDxiLXRhZ3MtaW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIiBbZGlyXT1cInRleHREaXJcIlxyXG4gICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInRhZ3NcIlxyXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwidGFnc0Zvcm1Db250cm9sLmludmFsaWQgJiYgdGFnc0Zvcm1Db250cm9sLnRvdWNoZWRcIiBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgIGlkPVwie3tuYW1lfX1cIiAob25UYWdzQ2hhbmdlZCk9XCJvblRhZ3NDaGFuZ2VkKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRhZ3NcIlxyXG4gICAgICAgICAgW3JlbW92ZUxhc3RPbkJhY2tzcGFjZV09XCJvcHRpb25zLnJlbW92ZUxhc3RPbkJhY2tzcGFjZVwiIChvbk5vT3B0aW9uc01hdGNoKT1cIm9uTm9PcHRpb25zTWF0Y2goJGV2ZW50KVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJzZWFyY2hGdW5jdGlvbkZhY3Rvcnkoc2VhcmNoS2V5LnNlbGVjdGVkKVwiICNzZWFyY2hLZXlcclxuICAgICAgICAgIFtzY3JvbGxhYmxlT3B0aW9uc109XCJvcHRpb25zLnNjcm9sbGFibGVPcHRpb25zXCIgW3Njcm9sbGFibGVPcHRpb25zSW5WaWV3XT1cIm9wdGlvbnMubWF4U2VhcmNoUmVzdWx0c0NvdW50XCJcclxuICAgICAgICAgIChrZXlkb3duKT1cImFkZFRhZygkZXZlbnQsc2VhcmNoS2V5KVwiIFtWaWV3TW9kZV09XCJvcHRpb25zLnRhZ0lucHV0TW9kZVwiIFttYXhUYWdzXT1cIm9wdGlvbnMubWF4TnVtYmVyVGFnc1wiXHJcbiAgICAgICAgICBbbWluTGVuZ3RoQmVmb3JlT3B0aW9uc109XCJvcHRpb25zLm1pblNlYXJjaExlbmd0aFwiIFtzaG93RGVzY3JpcHRpb25dPVwib3B0aW9ucy5zaG93RGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgW2RlZmF1bHRJbWFnZVVSTF09XCJvcHRpb25zLmRlZmF1bHRJbWdVcmxcIiBuYW1lPVwidGFnc1wiIChvbkJsdXJJbnB1dCk9XCJvblRhZ3NJbnB1dEJsdXIoc2VhcmNoS2V5KVwiPlxyXG4gICAgICAgIDwvYi10YWdzLWlucHV0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7Z2V0VGFnc1ZhbHVlKCl9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIih0YWdzRm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0YWdzRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbih0YWdzRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSlcIj5cclxuICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -31,7 +31,7 @@ import { CommonModule, DatePipe } from '@angular/common';
31
31
  import * as i1 from '@angular/common/http';
32
32
  import { HttpHeaders, HttpParams, HttpEventType, HttpClientModule } from '@angular/common/http';
33
33
  import * as i0 from '@angular/core';
34
- import { forwardRef, EventEmitter, Output, Input, Component, Directive, Pipe, Optional, Injectable, ViewChild, ViewEncapsulation, ViewContainerRef, ViewChildren, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';
34
+ import { forwardRef, EventEmitter, Component, Input, Output, Directive, Pipe, Injectable, Optional, ViewChild, ViewEncapsulation, ViewContainerRef, ViewChildren, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
35
35
  import * as i2 from '@angular/forms';
36
36
  import { NG_VALUE_ACCESSOR, Validators, FormControl, FormGroup, ReactiveFormsModule, FormsModule, FormGroupDirective } from '@angular/forms';
37
37
  import * as i6$2 from '@angular/material/slide-toggle';
@@ -52,8 +52,8 @@ import { TranslateService } from '@ngx-translate/core';
52
52
  import { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';
53
53
  import * as i3 from '@bnsights/bbsf-utilities';
54
54
  import { RequestOptionsModel, environment as environment$1, BBSFUtilitiesModule, UtilityService, ConfigurationService, EnvironmentService, AuthService } from '@bnsights/bbsf-utilities';
55
- import { Subject, Observable, noop as noop$1, of, EMPTY, Subscription, switchMap as switchMap$1 } from 'rxjs';
56
- import { switchMap, map, tap } from 'rxjs/operators';
55
+ import { Subject, noop as noop$1, of, Observable, EMPTY, Subscription, switchMap as switchMap$1 } from 'rxjs';
56
+ import { map, tap, switchMap } from 'rxjs/operators';
57
57
  import * as i6 from '@angular/cdk/bidi';
58
58
  import dayGridPlugin from '@fullcalendar/daygrid';
59
59
  import timeGrigPlugin from '@fullcalendar/timegrid';
@@ -2007,11 +2007,11 @@ class DropdownListComponent {
2007
2007
  }
2008
2008
  }
2009
2009
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, deps: [{ token: OnPagingFiltersChangeService }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
2010
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { onChange: "onChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }] }); }
2010
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { onChange: "onChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\" groupBy=\"group\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox, Customize item template-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox, Customize item template-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <!--Has group, Customize group template-->\r\n <ng-template *ngIf=\"options.hasGroup\" ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\">\r\n <label class=\"bbsf-label bbsf-group-label\">{{item.group}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7$1.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i7$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }] }); }
2011
2011
  }
2012
2012
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, decorators: [{
2013
2013
  type: Component,
2014
- args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>" }]
2014
+ args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.disableBootstrapSelect==false&&!options.isReadonly\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" [bindValue]=\"options.itemTempletkey\" groupBy=\"group\"\r\n [bindLabel]=\"options.itemTempletvalue\" [items]=\"options.dataSource\" [notFoundText]=\"options.notFoundText\"\r\n [maxSelectedItems]=\"options.limitSelection\" [searchable]=\"options.allowSearchFilter\"\r\n [multiple]=\"!options.singleSelection\" [readonly]=\"options.isDisabled\" [clearable]=\"true\"\r\n placeholder=\"{{options.placeholder}}\" id=\"{{options.name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.name}}\" [(ngModel)]=\"options.selectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"dropdownListFormControl.invalid && dropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.singleSelection ? true : false\">\r\n <!--No checkbox, Customize item template-->\r\n <ng-template *ngIf=\"!options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.disabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox, Customize item template-->\r\n <ng-template *ngIf=\"options.showCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\"\r\n let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <!--Has group, Customize group template-->\r\n <ng-template *ngIf=\"options.hasGroup\" ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\">\r\n <label class=\"bbsf-label bbsf-group-label\">{{item.group}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.disableBootstrapSelect&&!options.isReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.forceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.selectedItems\" [disabled]=\"options.isDisabled\" formControlName=\"{{options.name}}\">\r\n <option value=\"\" disabled>--{{utilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.dataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(dropdownListFormControl.invalid && dropdownListFormControl.touched)\">\r\n {{getErrorValidation(dropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
2015
2015
  }], ctorParameters: () => [{ type: OnPagingFiltersChangeService }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2016
2016
  type: Optional
2017
2017
  }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }], propDecorators: { group: [{
@@ -5469,6 +5469,8 @@ class TagsInputComponent {
5469
5469
  this.tags = this.tagsFormControl.value;
5470
5470
  this.selectedId = this.tags?.filter(item => item.id).map(item => item.id);
5471
5471
  if (this.tags == null) {
5472
+ if (!this.searchKey)
5473
+ this.searchKey = {};
5472
5474
  this.searchKey.selected = "";
5473
5475
  this.tags = [];
5474
5476
  this.tagsFormControl.setValue([]);