ngx-sp-infra 1.3.85 → 1.4.87
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.
|
@@ -66,6 +66,8 @@ export class SearchComboboxComponent {
|
|
|
66
66
|
this.mainInputPlaceholder = "Selecione uma opção...";
|
|
67
67
|
/** Placeholder para o input de pesquisa. */
|
|
68
68
|
this.searchInputPlaceholder = "Pesquisa...";
|
|
69
|
+
/** Informa se o input será exibido como desabilitado. */
|
|
70
|
+
this.disabled = false;
|
|
69
71
|
/**
|
|
70
72
|
* Evento emitido quando a lista precisa ser recarregada.
|
|
71
73
|
* Leva uma string que é usada para pesquisa.
|
|
@@ -76,8 +78,6 @@ export class SearchComboboxComponent {
|
|
|
76
78
|
}
|
|
77
79
|
ngOnInit() {
|
|
78
80
|
this.createFilterForm();
|
|
79
|
-
console.log("ngOnInit");
|
|
80
|
-
console.log(this.initializedValueID);
|
|
81
81
|
if (this.initializedValueID) {
|
|
82
82
|
this.initializeSelectedValue();
|
|
83
83
|
}
|
|
@@ -87,16 +87,12 @@ export class SearchComboboxComponent {
|
|
|
87
87
|
}
|
|
88
88
|
ngOnChanges(changes) {
|
|
89
89
|
if (changes["initializedValueID"] != undefined && changes["initializedValueID"].currentValue != undefined) {
|
|
90
|
-
console.log("ngOnChanges");
|
|
91
|
-
console.log(changes["initializedValueID"].currentValue);
|
|
92
90
|
this.initializeSelectedValue();
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
93
|
get selectedItem() { return this._selectedItem; }
|
|
96
94
|
set selectedItem(value) {
|
|
97
95
|
this._selectedItem = value;
|
|
98
|
-
console.log("public set selectedItem");
|
|
99
|
-
console.log(this.initializedValueID);
|
|
100
96
|
this.onSelectItem.emit(value);
|
|
101
97
|
}
|
|
102
98
|
get FormUtils() { return FormUtils; }
|
|
@@ -117,8 +113,6 @@ export class SearchComboboxComponent {
|
|
|
117
113
|
* @param item Objeto de item selecionado.
|
|
118
114
|
*/
|
|
119
115
|
setFilterValue(item) {
|
|
120
|
-
console.log("public setFilterValue");
|
|
121
|
-
console.log(item);
|
|
122
116
|
if (item) {
|
|
123
117
|
this.filterForm.controls["_searchInput"].setValue(`${item.ID} - ${item.LABEL}`);
|
|
124
118
|
this.selectedText = item.LABEL;
|
|
@@ -154,11 +148,11 @@ export class SearchComboboxComponent {
|
|
|
154
148
|
this.onReloadList.emit(search);
|
|
155
149
|
}
|
|
156
150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SearchComboboxComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SearchComboboxComponent, selector: "lib-search-combobox", inputs: { comboboxList: "comboboxList", labelText: "labelText", initializedValueID: "initializedValueID", colorTheme: "colorTheme", mainInputPlaceholder: "mainInputPlaceholder", searchInputPlaceholder: "searchInputPlaceholder" }, outputs: { onReloadList: "onReloadList", onSelectItem: "onSelectItem" }, viewQueries: [{ propertyName: "_mainInput", first: true, predicate: ["mainInput"], descendants: true }, { propertyName: "_dropdownMenu", first: true, predicate: ["dropdownMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SearchComboboxComponent, selector: "lib-search-combobox", inputs: { comboboxList: "comboboxList", labelText: "labelText", initializedValueID: "initializedValueID", colorTheme: "colorTheme", mainInputPlaceholder: "mainInputPlaceholder", searchInputPlaceholder: "searchInputPlaceholder", disabled: "disabled" }, outputs: { onReloadList: "onReloadList", onSelectItem: "onSelectItem" }, viewQueries: [{ propertyName: "_mainInput", first: true, predicate: ["mainInput"], descendants: true }, { propertyName: "_dropdownMenu", first: true, predicate: ["dropdownMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput *ngIf=\"!disabled; else disabledInput\" class=\"form-select text-start rounded-end\" type=\"text\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" data-bs-auto-close=\"outside\" aria-expanded=\"false\" readonly>\r\n <ul #dropdownMenu class=\"dropdown-menu p-2 glb-max-height-350px overflow-y-scroll\">\r\n <div class=\"input-group mb-2\">\r\n <input #searchInput type=\"text\" id=\"searchInput\" class=\"form-control glb-input-no-glow\" [placeholder]=\"searchInputPlaceholder\" (keyup.enter)=\"reloadList(searchInput.value)\">\r\n <button class=\"btn btn-{{colorTheme}}\" (click)=\"reloadList(searchInput.value)\"> <app-svg-storage svgName=\"lupa\" svgSize=\"medium-small\" /> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"comboboxList; else loadingList\">\r\n <ng-container *ngIf=\"comboboxList.length > 0; else emptyItemList\">\r\n <li *ngIf=\"selectedItem && selectedItem.ID != ''\" class=\"dropdown-item\" (click)=\"setFilterValue()\"> <span class=\"fw-bold\">Limpar op\u00E7\u00E3o selecionada</span> </li>\r\n <li class=\"dropdown-item\" *ngFor=\"let item of comboboxList\" (click)=\"setFilterValue(item)\">\r\n <span *ngIf=\"item.AdditionalStringProperty1 || item.AdditionalStringProperty1 != ''\" class=\"glb-fs-12 fw-bold d-inline-block w-125\">{{ item.AdditionalStringProperty1 }}</span> {{ item.LABEL }}\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loadingList> <li class=\"dropdown-item text-center\"> <div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Carregando dados...</span></div> </li> </ng-template>\r\n <ng-template #emptyItemList> <li class=\"dropdown-item fst-italic\">Nenhum registro encontrado com esta pesquisa...</li> </ng-template>\r\n </ul>\r\n\r\n <ng-template #disabledInput>\r\n <input #mainInput class=\"form-select text-start rounded-end\" type=\"text\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" readonly disabled>\r\n </ng-template>\r\n\r\n <!-- Este elemento ng-content com o atributo [btnRight] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado direito do combobox de pesquisa.\r\n Ao usar o atributo [btnRight], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnRight]\"></ng-content>\r\n\r\n</div>\r\n", styles: [".glb-max-height-350px{max-height:350px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgStorageComponent, selector: "app-svg-storage", inputs: ["svgName", "svgColor", "svgFill", "svgSize", "svgStrokeWidth"] }] }); }
|
|
158
152
|
}
|
|
159
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SearchComboboxComponent, decorators: [{
|
|
160
154
|
type: Component,
|
|
161
|
-
args: [{ selector: 'lib-search-combobox', template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput
|
|
155
|
+
args: [{ selector: 'lib-search-combobox', template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput *ngIf=\"!disabled; else disabledInput\" class=\"form-select text-start rounded-end\" type=\"text\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" data-bs-auto-close=\"outside\" aria-expanded=\"false\" readonly>\r\n <ul #dropdownMenu class=\"dropdown-menu p-2 glb-max-height-350px overflow-y-scroll\">\r\n <div class=\"input-group mb-2\">\r\n <input #searchInput type=\"text\" id=\"searchInput\" class=\"form-control glb-input-no-glow\" [placeholder]=\"searchInputPlaceholder\" (keyup.enter)=\"reloadList(searchInput.value)\">\r\n <button class=\"btn btn-{{colorTheme}}\" (click)=\"reloadList(searchInput.value)\"> <app-svg-storage svgName=\"lupa\" svgSize=\"medium-small\" /> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"comboboxList; else loadingList\">\r\n <ng-container *ngIf=\"comboboxList.length > 0; else emptyItemList\">\r\n <li *ngIf=\"selectedItem && selectedItem.ID != ''\" class=\"dropdown-item\" (click)=\"setFilterValue()\"> <span class=\"fw-bold\">Limpar op\u00E7\u00E3o selecionada</span> </li>\r\n <li class=\"dropdown-item\" *ngFor=\"let item of comboboxList\" (click)=\"setFilterValue(item)\">\r\n <span *ngIf=\"item.AdditionalStringProperty1 || item.AdditionalStringProperty1 != ''\" class=\"glb-fs-12 fw-bold d-inline-block w-125\">{{ item.AdditionalStringProperty1 }}</span> {{ item.LABEL }}\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loadingList> <li class=\"dropdown-item text-center\"> <div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Carregando dados...</span></div> </li> </ng-template>\r\n <ng-template #emptyItemList> <li class=\"dropdown-item fst-italic\">Nenhum registro encontrado com esta pesquisa...</li> </ng-template>\r\n </ul>\r\n\r\n <ng-template #disabledInput>\r\n <input #mainInput class=\"form-select text-start rounded-end\" type=\"text\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" readonly disabled>\r\n </ng-template>\r\n\r\n <!-- Este elemento ng-content com o atributo [btnRight] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado direito do combobox de pesquisa.\r\n Ao usar o atributo [btnRight], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnRight]\"></ng-content>\r\n\r\n</div>\r\n", styles: [".glb-max-height-350px{max-height:350px!important}\n"] }]
|
|
162
156
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { comboboxList: [{
|
|
163
157
|
type: Input,
|
|
164
158
|
args: [{ required: true }]
|
|
@@ -173,6 +167,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
173
167
|
type: Input
|
|
174
168
|
}], searchInputPlaceholder: [{
|
|
175
169
|
type: Input
|
|
170
|
+
}], disabled: [{
|
|
171
|
+
type: Input
|
|
176
172
|
}], onReloadList: [{
|
|
177
173
|
type: Output
|
|
178
174
|
}], onSelectItem: [{
|
|
@@ -184,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
184
180
|
type: ViewChild,
|
|
185
181
|
args: ['dropdownMenu']
|
|
186
182
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3dpZGdldHMvc2VhcmNoLWNvbWJvYm94L3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3NlYXJjaC1jb21ib2JveC9zZWFyY2gtY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0ksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9ERztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxZQUF5QjtRQUF6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQXdDbkMsd0VBQXdFO1FBQ3hELGVBQVUsR0FBMkYsU0FBUyxDQUFDO1FBRS9ILDBDQUEwQztRQUMxQix5QkFBb0IsR0FBVyx3QkFBd0IsQ0FBQztRQUV4RSw0Q0FBNEM7UUFDNUIsMkJBQXNCLEdBQVcsYUFBYSxDQUFDO1FBRy9EOzs7V0FHRztRQUNjLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFakYsbURBQW1EO1FBQ2xDLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUF4RHhFLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixPQUFP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QUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFHUyxTQUFTO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFHVCxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFHVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBR1Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQU9XLFlBQVk7c0JBQTVCLE1BQU07Z0JBR1UsWUFBWTtzQkFBNUIsTUFBTTtnQkFHeUIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxXQUFXO2dCQUNhLGFBQWE7c0JBQS9DLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgRm9ybVV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm0tdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7IFJlY29yZENvbWJvYm94IH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb21ib2JveC9yZWNvcmQtY29tYm9ib3hcIjtcclxuXHJcblxyXG4vKipcclxuICogQGZpbGUgc2VhcmNoLWNvbWJvYm94LmNvbXBvbmVudC50c1xyXG4gKiBAZGVzY3JpcHRpb24gRXN0ZSBhcnF1aXZvIGNvbnTDqW0gYSBpbXBsZW1lbnRhw6fDo28gZG8gY29tcG9uZW50ZSBTZWFyY2hDb21ib2JveENvbXBvbmVudCwgcXVlIMOpIHVtIGNvbXBvbmVudGUgZGUgaW50ZXJmYWNlIGRvIHVzdcOhcmlvXHJcbiAqIHBhcmEgcmVhbGl6YXIgcGVzcXVpc2FzIGUgc2VsZcOnw7VlcyBlbSB1bWEgbGlzdGEgZGUgb3DDp8O1ZXMgYXByZXNlbnRhZGEgZW0gdW0gY29tYm9ib3guXHJcbiAqIFxyXG4gKiBAY29tcG9uZW50IFNlYXJjaENvbWJvYm94Q29tcG9uZW50XHJcbiAqIEBzZWxlY3RvciBsaWItc2VhcmNoLWNvbWJvYm94XHJcbiAqIEB0ZW1wbGF0ZVVybCAuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuaHRtbFxyXG4gKiBAc3R5bGVVcmwgLi9zZWFyY2gtY29tYm9ib3guY29tcG9uZW50LnNjc3NcclxuICogXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBPIGNvbXBvbmVudGUgU2VhcmNoQ29tYm9ib3hDb21wb25lbnQgw6kgcHJvamV0YWRvIHBhcmEgZm9ybmVjZXIgYW9zIHVzdcOhcmlvcyB1bWEgaW50ZXJmYWNlIHBhcmEgcGVzcXVpc2FyIGUgc2VsZWNpb25hciBpdGVucyBkZSB1bWEgbGlzdGEuXHJcbiAqIEVsZSBzdXBvcnRhIGEgZmlsdHJhZ2VtIGRlIGl0ZW5zIGNvbSBiYXNlIG5hIGVudHJhZGEgZG8gdXN1w6FyaW8sIHBlcm1pdGluZG8gdW1hIHNlbGXDp8OjbyBtYWlzIGbDoWNpbCBlbSBsaXN0YXMgZXh0ZW5zYXMuXHJcbiAqIFxyXG4gKiAjIyBGdW5jaW9uYWxpZGFkZXM6XHJcbiAqIC0gUGVzcXVpc2EgZSBmaWx0cmFnZW0gZGUgaXRlbnMgbmEgbGlzdGEgZG8gY29tYm9ib3guXHJcbiAqIC0gU2VsZcOnw6NvIGRlIGl0ZW5zIGNvbSBmZWVkYmFjayB2aXN1YWwuXHJcbiAqIC0gRW1pc3PDo28gZGUgZXZlbnRvcyBwZXJzb25hbGl6YWRvcyBwYXJhIGludGVyYcOnw7VlcyBkbyB1c3XDoXJpbywgY29tbyByZWNhcnJlZ2FyIGEgbGlzdGEgb3Ugc2VsZWNpb25hciB1bSBpdGVtLlxyXG4gKiAtIEFqdXN0ZSBkaW7Dom1pY28gZGEgbGFyZ3VyYSBkbyBkcm9wZG93biBwYXJhIGNvcnJlc3BvbmRlciBhbyBpbnB1dCBwcmluY2lwYWwuXHJcbiAqIC0gSW5pY2lhbGl6YcOnw6NvIGRlIHVtIHZhbG9yIHNlbGVjaW9uYWRvLCBzZSBmb3JuZWNpZG8uXHJcbiAqIFxyXG4gKiAjIyBJbnB1dHM6XHJcbiAqIC0gYGNvbWJvYm94TGlzdGAgKFJlY29yZENvbWJvYm94W10pOiBBcnJheSBkZSBvYmpldG9zIHJlcHJlc2VudGFuZG8gb3MgaXRlbnMgZGlzcG9uw612ZWlzIHBhcmEgc2VsZcOnw6NvLlxyXG4gKiAtIGBsYWJlbFRleHRgIChzdHJpbmcpOiBUZXh0byBkZSBldGlxdWV0YSBhc3NvY2lhZG8gYW8gY29tYm9ib3guXHJcbiAqIC0gYGluaXRpYWxpemVkVmFsdWVJRGAgKHN0cmluZyB8IG51bWJlcik6IElEIGRlIHVtIGl0ZW0gaW5pY2lhbG1lbnRlIHNlbGVjaW9uYWRvIG5vIGNvbWJvYm94LlxyXG4gKiAtIGBjb2xvclRoZW1lYCAoXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiIHwgXCJzdWNjZXNzXCIgfCBcImRhbmdlclwiIHwgXCJ3YXJuaW5nXCIgfCBcImluZm9cIiB8IFwibGlnaHRcIiB8IFwiZGFya1wiKTogVGVtYSBkZSBjb3JlcyBwYXJhIG8gY29tcG9uZW50ZS5cclxuICogLSBgbWFpbklucHV0UGxhY2Vob2xkZXJgIChzdHJpbmcpOiBUZXh0byBkZSBlc3Bhw6dvIHJlc2VydmFkbyBwYXJhIG8gaW5wdXQgcHJpbmNpcGFsLlxyXG4gKiAtIGBzZWFyY2hJbnB1dFBsYWNlaG9sZGVyYCAoc3RyaW5nKTogVGV4dG8gZGUgZXNwYcOnbyByZXNlcnZhZG8gcGFyYSBvIGlucHV0IGRlIHBlc3F1aXNhLlxyXG4gKiBcclxuICogIyMgT3V0cHV0czpcclxuICogLSBgb25SZWxvYWRMaXN0YCAoRXZlbnRFbWl0dGVyPHN0cmluZz4pOiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gYSBsaXN0YSBwcmVjaXNhIHNlciByZWNhcnJlZ2FkYS5cclxuICogLSBgb25TZWxlY3RJdGVtYCAoRXZlbnRFbWl0dGVyPGFueT4pOiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gdW0gaXRlbSDDqSBzZWxlY2lvbmFkby5cclxuICogXHJcbiAqICMjIFByb3ByaWVkYWRlczpcclxuICogLSBgc2VsZWN0ZWRJdGVtYCAoUmVjb3JkQ29tYm9ib3gpOiBHZXR0ZXIgZSBTZXR0ZXIgcGFyYSBvIGl0ZW0gc2VsZWNpb25hZG8gYXR1YWxtZW50ZS5cclxuICogLSBgRm9ybVV0aWxzYCAodHlwZW9mIEZvcm1VdGlscyk6IEdldHRlciBwYXJhIHV0aWxpdMOhcmlvcyBkZSBmb3JtdWzDoXJpby5cclxuICogLSBgX3NlYXJjaElucHV0YCAoc3RyaW5nKTogR2V0dGVyIHBhcmEgbyB2YWxvciBkbyBpbnB1dCBkZSBwZXNxdWlzYS5cclxuICogLSBgZmlsdGVyRm9ybWAgKEZvcm1Hcm91cCk6IEdydXBvIGRlIGZvcm11bMOhcmlvIHBhcmEgbyBmaWx0cm8gZGUgcGVzcXVpc2EuXHJcbiAqIFxyXG4gKiAjIyBNw6l0b2RvcyBQw7pibGljb3M6XHJcbiAqIC0gYHJlbG9hZExpc3Qoc2VhcmNoOiBzdHJpbmcpYDogTcOpdG9kbyBwYXJhIHJlY2FycmVnYXIgYSBsaXN0YSBkZSBpdGVucyBjb20gYmFzZSBuYSBwZXNxdWlzYSBmb3JuZWNpZGEuXHJcbiAqIC0gYHNldEZpbHRlclZhbHVlKGl0ZW0/OiBSZWNvcmRDb21ib2JveClgOiBNw6l0b2RvIHBhcmEgZGVmaW5pciBvIHZhbG9yIGRvIGZpbHRybyBjb20gYmFzZSBubyBpdGVtIHNlbGVjaW9uYWRvLlxyXG4gKiBcclxuICogIyMgRXZlbnRvczpcclxuICogLSBgbmdPbkluaXQoKWA6IEluaWNpYWxpemEgbyBjb21wb25lbnRlLlxyXG4gKiAtIGBuZ0FmdGVyVmlld0luaXQoKWA6IEFqdXN0YSBhIGxhcmd1cmEgZG8gZHJvcGRvd24gYXDDs3MgYSB2aXN1YWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxyXG4gKiAtIGBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKWA6IFJlc3BvbmRlIGEgbXVkYW7Dp2FzIG5hcyBwcm9wcmllZGFkZXMgZGUgZW50cmFkYS5cclxuICogXHJcbiAqICMjIFV0aWxpdMOhcmlvczpcclxuICogLSBgY3JlYXRlRmlsdGVyRm9ybSgpYDogQ3JpYSBvIGZvcm11bMOhcmlvIGRlIGZpbHRybyBwYXJhIGEgcGVzcXVpc2EuXHJcbiAqIC0gYGluaXRpYWxpemVTZWxlY3RlZFZhbHVlKClgOiBJbmljaWFsaXphIG8gdmFsb3Igc2VsZWNpb25hZG8gbm8gY29tYm9ib3gsIHNlIGZvcm5lY2lkby5cclxuICogLSBgYWRqdXN0RHJvcGRvd25XaWR0aCgpYDogQWp1c3RhIGEgbGFyZ3VyYSBkbyBkcm9wZG93biBwYXJhIGNvcnJlc3BvbmRlciDDoCBsYXJndXJhIGRvIGlucHV0IHByaW5jaXBhbC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNlYXJjaC1jb21ib2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbWJvYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlRmlsdGVyRm9ybSgpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwibmdPbkluaXRcIik7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmluaXRpYWxpemVkVmFsdWVJRCk7XHJcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZFZhbHVlSUQpIHsgdGhpcy5pbml0aWFsaXplU2VsZWN0ZWRWYWx1ZSgpIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRqdXN0RHJvcGRvd25XaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJpbml0aWFsaXplZFZhbHVlSURcIl0gIT0gdW5kZWZpbmVkICYmIGNoYW5nZXNbXCJpbml0aWFsaXplZFZhbHVlSURcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIm5nT25DaGFuZ2VzXCIpO1xyXG4gICAgICBjb25zb2xlLmxvZyhjaGFuZ2VzW1wiaW5pdGlhbGl6ZWRWYWx1ZUlEXCJdLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uIFBSSVZBVEVcclxuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW06IFJlY29yZENvbWJvYm94O1xyXG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxyXG5cclxuICAvLyAjcmVnaW9uIFBVQkxJQ1xyXG5cclxuICAvKiogTGlzdGEgZGUgaXRlbnMgZGlzcG9uw612ZWlzIHBhcmEgc2VsZcOnw6NvIG5vIGNvbWJvYm94LiAqL1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb21ib2JveExpc3Q6IFJlY29yZENvbWJvYm94W107XHJcblxyXG4gIC8qKiBUZXh0byBkZSBsYWJlbCBhc3NvY2lhZG8gYW8gY29tYm9ib3guICovXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nO1xyXG5cclxuICAvKiogSUQgZGUgdW0gaXRlbSBpbmljaWFsbWVudGUgc2VsZWNpb25hZG8gbm8gY29tYm9ib3guICovXHJcbiAgQElucHV0KCkgcHVibGljIGluaXRpYWxpemVkVmFsdWVJRDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIFxyXG4gIC8qKiBUZW1hIGRlIGNvcmVzIHBhcmEgbyBjb21wb25lbnRlIChiYXNlYWRvIG5hcyBjb3JlcyBkbyBCb290c3RyYXApLiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xvclRoZW1lOiBcInByaW1hcnlcIiB8IFwic2Vjb25kYXJ5XCIgfCBcInN1Y2Nlc3NcIiB8IFwiZGFuZ2VyXCIgfCBcIndhcm5pbmdcIiB8IFwiaW5mb1wiIHwgXCJsaWdodFwiIHwgXCJkYXJrXCIgPSBcInByaW1hcnlcIjtcclxuICBcclxuICAvKiogUGxhY2Vob2xkZXIgcGFyYSBvIGlucHV0IHByaW5jaXBhbC4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbWFpbklucHV0UGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiU2VsZWNpb25lIHVtYSBvcMOnw6NvLi4uXCI7XHJcbiAgXHJcbiAgLyoqIFBsYWNlaG9sZGVyIHBhcmEgbyBpbnB1dCBkZSBwZXNxdWlzYS4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoSW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nID0gXCJQZXNxdWlzYS4uLlwiO1xyXG5cclxuICBcclxuICAvKipcclxuICAgKiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gYSBsaXN0YSBwcmVjaXNhIHNlciByZWNhcnJlZ2FkYS5cclxuICAgKiBMZXZhIHVtYSBzdHJpbmcgcXVlIMOpIHVzYWRhIHBhcmEgcGVzcXVpc2EuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvblJlbG9hZExpc3Q6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gdW0gaXRlbSDDqSBzZWxlY2lvbmFkby4gKi9cclxuICBAT3V0cHV0KCkgcHVibGljIG9uU2VsZWN0SXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21haW5JbnB1dCcpIHByaXZhdGUgX21haW5JbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25NZW51JykgcHJpdmF0ZSBfZHJvcGRvd25NZW51ITogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZFRleHQ/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtKCk6IFJlY29yZENvbWJvYm94IHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbTsgfVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRJdGVtKHZhbHVlOiBSZWNvcmRDb21ib2JveCkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gdmFsdWU7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJwdWJsaWMgc2V0IHNlbGVjdGVkSXRlbVwiKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaW5pdGlhbGl6ZWRWYWx1ZUlEKTtcclxuICAgIHRoaXMub25TZWxlY3RJdGVtLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gRk9STSBCVUlMREVSIDw9PT09PT09PT09XHJcbiAgcHVibGljIGZpbHRlckZvcm06IEZvcm1Hcm91cDtcclxuICBwdWJsaWMgZ2V0IEZvcm1VdGlscygpOiB0eXBlb2YgRm9ybVV0aWxzIHsgcmV0dXJuIEZvcm1VdGlsczsgfVxyXG5cclxuICAvLyAjcmVnaW9uIEZPUk0gREFUQVxyXG4gIHB1YmxpYyBnZXQgX3NlYXJjaElucHV0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmZpbHRlckZvcm0uZ2V0KFwiX3NlYXJjaElucHV0XCIpPy52YWx1ZTsgfVxyXG4gIC8vICNlbmRyZWdpb24gRk9STSBEQVRBXHJcblxyXG4gIC8vICNyZWdpb24gRk9STSBWQUxJREFUT1JTXHJcbiAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBfc2VhcmNoSW5wdXQ6IFsgXCJcIiBdXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBGT1JNIFZBTElEQVRPUlNcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTElUSUVTIDw9PT09PT09PT09XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIG8gdmFsb3IgZG8gZmlsdHJvIGNvbSBiYXNlIG5vIGl0ZW0gc2VsZWNpb25hZG8uXHJcbiAgICogQHBhcmFtIGl0ZW0gT2JqZXRvIGRlIGl0ZW0gc2VsZWNpb25hZG8uXHJcbiAgICovXHJcbiAgcHVibGljIHNldEZpbHRlclZhbHVlKGl0ZW0/OiBSZWNvcmRDb21ib2JveCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJwdWJsaWMgc2V0RmlsdGVyVmFsdWVcIik7XHJcbiAgICBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICB0aGlzLmZpbHRlckZvcm0uY29udHJvbHNbXCJfc2VhcmNoSW5wdXRcIl0uc2V0VmFsdWUoYCR7aXRlbS5JRCBhcyBzdHJpbmd9IC0gJHtpdGVtLkxBQkVMfWApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGV4dCA9IGl0ZW0uTEFCRUw7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IGl0ZW0uSUQsIExBQkVMOiBpdGVtLkxBQkVMLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBpdGVtLkFkZGl0aW9uYWxTdHJpbmdQcm9wZXJ0eTEsIElTX1NFTEVDVEVEOiBpdGVtLklTX1NFTEVDVEVEIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzW1wiX3NlYXJjaElucHV0XCJdLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZFRleHQ7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IFwiXCIsIExBQkVMOiBcIlwiLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBcIlwiLCBJU19TRUxFQ1RFRDogZmFsc2UgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBDaGFtYWRvIGNhc28gdW0gdmFsb3IgaW5pY2lhbCBzZWphIGZvcm5lY2lkbyBwYXJhIG8gY29tYm9ib3guICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplU2VsZWN0ZWRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGxldCBpbml0aWFsaXplZFZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbWJvYm94TGlzdCAmJiB0aGlzLmNvbWJvYm94TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGluaXRpYWxpemVkVmFsdWUgPSB0aGlzLmNvbWJvYm94TGlzdC5maW5kKGl0ZW0gPT4gaXRlbS5JRCA9PSB0aGlzLmluaXRpYWxpemVkVmFsdWVJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29tYm9ib3hMaXN0ICYmIGluaXRpYWxpemVkVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRleHQgPSBpbml0aWFsaXplZFZhbHVlLkxBQkVMO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IGluaXRpYWxpemVkVmFsdWUuSUQsIExBQkVMOiBpbml0aWFsaXplZFZhbHVlLkxBQkVMLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBcIlwiLCBJU19TRUxFQ1RFRDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEFqdXN0YSBhIGxhcmd1cmEgZG8gZHJvcGRvd24gcGFyYSBjb3JyZXNwb25kZXIgw6AgbGFyZ3VyYSBkbyBpbnB1dCBwcmluY2lwYWwuICovXHJcbiAgcHJpdmF0ZSBhZGp1c3REcm9wZG93bldpZHRoKCkge1xyXG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuX21haW5JbnB1dC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgdGhpcy5fZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtpbnB1dFdpZHRofXB4YDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBFbWl0ZSB1bSBldmVudG8gcGFyYSByZWNhcnJlZ2FyIGEgbGlzdGEgZGUgaXRlbnMgY29tIGJhc2UgbmEgcGVzcXVpc2EgZm9ybmVjaWRhLlxyXG4gICAqIEBwYXJhbSBzZWFyY2ggVGV4dG8gZGUgcGVzcXVpc2EgcGFyYSByZWNhcnJlZ2FyIGEgbGlzdGEuXHJcbiAgICovXHJcbiAgcHVibGljIHJlbG9hZExpc3Qoc2VhcmNoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub25SZWxvYWRMaXN0LmVtaXQoc2VhcmNoKTtcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBVVElMSVRJRVMgPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gTU9EQUxTIDw9PT09PT09PT09XHJcbiAgLy8gWy4uLl1cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxufVxyXG4iLCI8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGZ3LWJvbGRcIiBbaW5uZXJIVE1MXT1cImxhYmVsVGV4dFwiPjwvbGFiZWw+XHJcbjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkcm9wZG93biBmbGV4LWZpbGwgZ2xiLW1heC1oZWlnaHQtMzUwcHhcIj5cclxuXHJcbiAgIDwhLS0gRXN0ZSBlbGVtZW50byBuZy1jb250ZW50IGNvbSBvIGF0cmlidXRvIFtidG5MZWZ0XSBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGZpbmFsIGZvcm5lw6dhIGNvbnRlw7pkbyBwZXJzb25hbGl6YWRvIHBhcmEgc2VyIGV4aWJpZG8gbm8gbGFkbyBlc3F1ZXJkbyBkbyBjb21ib2JveCBkZSBwZXNxdWlzYS5cclxuICAgQW8gdXNhciBvIGF0cmlidXRvIFtidG5MZWZ0XSwgbyB1c3XDoXJpbyBwb2RlIGZhY2lsbWVudGUgYWRpY2lvbmFyIGJvdMO1ZXMgb3Ugb3V0cm9zIGVsZW1lbnRvcyBwYXJhIG1lbGhvcmFyIGEgZnVuY2lvbmFsaWRhZGUgb3UgYXBhcsOqbmNpYSBkbyBjb21ib2JveCBkZSBwZXNxdWlzYS4gLS0+XHJcbiAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltidG5MZWZ0XVwiPjwvbmctY29udGVudD5cclxuXHJcbiAgIDxpbnB1dCAgI21haW5JbnB1dCAgY2xhc3M9XCJmb3JtLXNlbGVjdCB0ZXh0LXN0YXJ0IHJvdW5kZWQtZW5kXCIgdHlwZT1cInRleHRcIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgW3BsYWNlaG9sZGVyXT1cIm1haW5JbnB1dFBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRleHRcIiBkYXRhLWJzLWF1dG8tY2xvc2U9XCJvdXRzaWRlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgcmVhZG9ubHk+XHJcbiAgIDx1bCAgI2Ryb3Bkb3duTWVudSAgY2xhc3M9XCJkcm9wZG93bi1tZW51IHAtMiBnbGItbWF4LWhlaWdodC0zNTBweCBvdmVyZmxvdy15LXNjcm9sbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICA8aW5wdXQgI3NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJzZWFyY2hJbnB1dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGdsYi1pbnB1dC1uby1nbG93XCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaElucHV0UGxhY2Vob2xkZXJcIiAoa2V5dXAuZW50ZXIpPVwicmVsb2FkTGlzdChzZWFyY2hJbnB1dC52YWx1ZSlcIj5cclxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4te3tjb2xvclRoZW1lfX1cIiAoY2xpY2spPVwicmVsb2FkTGlzdChzZWFyY2hJbnB1dC52YWx1ZSlcIj4gPGFwcC1zdmctc3RvcmFnZSBzdmdOYW1lPVwibHVwYVwiIHN2Z1NpemU9XCJtZWRpdW0tc21hbGxcIiAvPiA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3hMaXN0OyBlbHNlIGxvYWRpbmdMaXN0XCI+XHJcbiAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveExpc3QubGVuZ3RoID4gMDsgZWxzZSBlbXB0eUl0ZW1MaXN0XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cInNlbGVjdGVkSXRlbSAmJiBzZWxlY3RlZEl0ZW0uSUQgIT0gJydcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RmlsdGVyVmFsdWUoKVwiPiA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj5MaW1wYXIgb3DDp8OjbyBzZWxlY2lvbmFkYTwvc3Bhbj4gPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbWJvYm94TGlzdFwiIChjbGljayk9XCJzZXRGaWx0ZXJWYWx1ZShpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uQWRkaXRpb25hbFN0cmluZ1Byb3BlcnR5MSB8fCBpdGVtLkFkZGl0aW9uYWxTdHJpbmdQcm9wZXJ0eTEgIT0gJydcIiBjbGFzcz1cImdsYi1mcy0xMiBmdy1ib2xkIGQtaW5saW5lLWJsb2NrIHctMTI1XCI+e3sgaXRlbS5BZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxIH19PC9zcGFuPiB7eyBpdGVtLkxBQkVMIH19XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0xpc3Q+IDxsaSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1jZW50ZXJcIj4gPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPjxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+Q2FycmVnYW5kbyBkYWRvcy4uLjwvc3Bhbj48L2Rpdj4gPC9saT4gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUl0ZW1MaXN0PiA8bGkgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGZzdC1pdGFsaWNcIj5OZW5odW0gcmVnaXN0cm8gZW5jb250cmFkbyBjb20gZXN0YSBwZXNxdWlzYS4uLjwvbGk+IDwvbmctdGVtcGxhdGU+XHJcbiAgIDwvdWw+XHJcblxyXG4gICA8IS0tIEVzdGUgZWxlbWVudG8gbmctY29udGVudCBjb20gbyBhdHJpYnV0byBbYnRuUmlnaHRdIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZmluYWwgZm9ybmXDp2EgY29udGXDumRvIHBlcnNvbmFsaXphZG8gcGFyYSBzZXIgZXhpYmlkbyBubyBsYWRvIGRpcmVpdG8gZG8gY29tYm9ib3ggZGUgcGVzcXVpc2EuXHJcbiAgIEFvIHVzYXIgbyBhdHJpYnV0byBbYnRuUmlnaHRdLCBvIHVzdcOhcmlvIHBvZGUgZmFjaWxtZW50ZSBhZGljaW9uYXIgYm90w7VlcyBvdSBvdXRyb3MgZWxlbWVudG9zIHBhcmEgbWVsaG9yYXIgYSBmdW5jaW9uYWxpZGFkZSBvdSBhcGFyw6puY2lhIGRvIGNvbWJvYm94IGRlIHBlc3F1aXNhLiAtLT5cclxuICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J0blJpZ2h0XVwiPjwvbmctY29udGVudD5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3dpZGdldHMvc2VhcmNoLWNvbWJvYm94L3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3NlYXJjaC1jb21ib2JveC9zZWFyY2gtY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0ksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9ERztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxZQUF5QjtRQUF6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQW1DbkMsd0VBQXdFO1FBQ3hELGVBQVUsR0FBMkYsU0FBUyxDQUFDO1FBRS9ILDBDQUEwQztRQUMxQix5QkFBb0IsR0FBVyx3QkFBd0IsQ0FBQztRQUV4RSw0Q0FBNEM7UUFDNUIsMkJBQXNCLEdBQVcsYUFBYSxDQUFDO1FBRS9ELHlEQUF5RDtRQUN6QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFDOzs7V0FHRztRQUNjLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFakYsbURBQW1EO1FBQ2xDLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUF0RHhFLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxJ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ImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgRm9ybVV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm0tdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7IFJlY29yZENvbWJvYm94IH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb21ib2JveC9yZWNvcmQtY29tYm9ib3hcIjtcclxuXHJcblxyXG4vKipcclxuICogQGZpbGUgc2VhcmNoLWNvbWJvYm94LmNvbXBvbmVudC50c1xyXG4gKiBAZGVzY3JpcHRpb24gRXN0ZSBhcnF1aXZvIGNvbnTDqW0gYSBpbXBsZW1lbnRhw6fDo28gZG8gY29tcG9uZW50ZSBTZWFyY2hDb21ib2JveENvbXBvbmVudCwgcXVlIMOpIHVtIGNvbXBvbmVudGUgZGUgaW50ZXJmYWNlIGRvIHVzdcOhcmlvXHJcbiAqIHBhcmEgcmVhbGl6YXIgcGVzcXVpc2FzIGUgc2VsZcOnw7VlcyBlbSB1bWEgbGlzdGEgZGUgb3DDp8O1ZXMgYXByZXNlbnRhZGEgZW0gdW0gY29tYm9ib3guXHJcbiAqIFxyXG4gKiBAY29tcG9uZW50IFNlYXJjaENvbWJvYm94Q29tcG9uZW50XHJcbiAqIEBzZWxlY3RvciBsaWItc2VhcmNoLWNvbWJvYm94XHJcbiAqIEB0ZW1wbGF0ZVVybCAuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuaHRtbFxyXG4gKiBAc3R5bGVVcmwgLi9zZWFyY2gtY29tYm9ib3guY29tcG9uZW50LnNjc3NcclxuICogXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBPIGNvbXBvbmVudGUgU2VhcmNoQ29tYm9ib3hDb21wb25lbnQgw6kgcHJvamV0YWRvIHBhcmEgZm9ybmVjZXIgYW9zIHVzdcOhcmlvcyB1bWEgaW50ZXJmYWNlIHBhcmEgcGVzcXVpc2FyIGUgc2VsZWNpb25hciBpdGVucyBkZSB1bWEgbGlzdGEuXHJcbiAqIEVsZSBzdXBvcnRhIGEgZmlsdHJhZ2VtIGRlIGl0ZW5zIGNvbSBiYXNlIG5hIGVudHJhZGEgZG8gdXN1w6FyaW8sIHBlcm1pdGluZG8gdW1hIHNlbGXDp8OjbyBtYWlzIGbDoWNpbCBlbSBsaXN0YXMgZXh0ZW5zYXMuXHJcbiAqIFxyXG4gKiAjIyBGdW5jaW9uYWxpZGFkZXM6XHJcbiAqIC0gUGVzcXVpc2EgZSBmaWx0cmFnZW0gZGUgaXRlbnMgbmEgbGlzdGEgZG8gY29tYm9ib3guXHJcbiAqIC0gU2VsZcOnw6NvIGRlIGl0ZW5zIGNvbSBmZWVkYmFjayB2aXN1YWwuXHJcbiAqIC0gRW1pc3PDo28gZGUgZXZlbnRvcyBwZXJzb25hbGl6YWRvcyBwYXJhIGludGVyYcOnw7VlcyBkbyB1c3XDoXJpbywgY29tbyByZWNhcnJlZ2FyIGEgbGlzdGEgb3Ugc2VsZWNpb25hciB1bSBpdGVtLlxyXG4gKiAtIEFqdXN0ZSBkaW7Dom1pY28gZGEgbGFyZ3VyYSBkbyBkcm9wZG93biBwYXJhIGNvcnJlc3BvbmRlciBhbyBpbnB1dCBwcmluY2lwYWwuXHJcbiAqIC0gSW5pY2lhbGl6YcOnw6NvIGRlIHVtIHZhbG9yIHNlbGVjaW9uYWRvLCBzZSBmb3JuZWNpZG8uXHJcbiAqIFxyXG4gKiAjIyBJbnB1dHM6XHJcbiAqIC0gYGNvbWJvYm94TGlzdGAgKFJlY29yZENvbWJvYm94W10pOiBBcnJheSBkZSBvYmpldG9zIHJlcHJlc2VudGFuZG8gb3MgaXRlbnMgZGlzcG9uw612ZWlzIHBhcmEgc2VsZcOnw6NvLlxyXG4gKiAtIGBsYWJlbFRleHRgIChzdHJpbmcpOiBUZXh0byBkZSBldGlxdWV0YSBhc3NvY2lhZG8gYW8gY29tYm9ib3guXHJcbiAqIC0gYGluaXRpYWxpemVkVmFsdWVJRGAgKHN0cmluZyB8IG51bWJlcik6IElEIGRlIHVtIGl0ZW0gaW5pY2lhbG1lbnRlIHNlbGVjaW9uYWRvIG5vIGNvbWJvYm94LlxyXG4gKiAtIGBjb2xvclRoZW1lYCAoXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiIHwgXCJzdWNjZXNzXCIgfCBcImRhbmdlclwiIHwgXCJ3YXJuaW5nXCIgfCBcImluZm9cIiB8IFwibGlnaHRcIiB8IFwiZGFya1wiKTogVGVtYSBkZSBjb3JlcyBwYXJhIG8gY29tcG9uZW50ZS5cclxuICogLSBgbWFpbklucHV0UGxhY2Vob2xkZXJgIChzdHJpbmcpOiBUZXh0byBkZSBlc3Bhw6dvIHJlc2VydmFkbyBwYXJhIG8gaW5wdXQgcHJpbmNpcGFsLlxyXG4gKiAtIGBzZWFyY2hJbnB1dFBsYWNlaG9sZGVyYCAoc3RyaW5nKTogVGV4dG8gZGUgZXNwYcOnbyByZXNlcnZhZG8gcGFyYSBvIGlucHV0IGRlIHBlc3F1aXNhLlxyXG4gKiBcclxuICogIyMgT3V0cHV0czpcclxuICogLSBgb25SZWxvYWRMaXN0YCAoRXZlbnRFbWl0dGVyPHN0cmluZz4pOiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gYSBsaXN0YSBwcmVjaXNhIHNlciByZWNhcnJlZ2FkYS5cclxuICogLSBgb25TZWxlY3RJdGVtYCAoRXZlbnRFbWl0dGVyPGFueT4pOiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gdW0gaXRlbSDDqSBzZWxlY2lvbmFkby5cclxuICogXHJcbiAqICMjIFByb3ByaWVkYWRlczpcclxuICogLSBgc2VsZWN0ZWRJdGVtYCAoUmVjb3JkQ29tYm9ib3gpOiBHZXR0ZXIgZSBTZXR0ZXIgcGFyYSBvIGl0ZW0gc2VsZWNpb25hZG8gYXR1YWxtZW50ZS5cclxuICogLSBgRm9ybVV0aWxzYCAodHlwZW9mIEZvcm1VdGlscyk6IEdldHRlciBwYXJhIHV0aWxpdMOhcmlvcyBkZSBmb3JtdWzDoXJpby5cclxuICogLSBgX3NlYXJjaElucHV0YCAoc3RyaW5nKTogR2V0dGVyIHBhcmEgbyB2YWxvciBkbyBpbnB1dCBkZSBwZXNxdWlzYS5cclxuICogLSBgZmlsdGVyRm9ybWAgKEZvcm1Hcm91cCk6IEdydXBvIGRlIGZvcm11bMOhcmlvIHBhcmEgbyBmaWx0cm8gZGUgcGVzcXVpc2EuXHJcbiAqIFxyXG4gKiAjIyBNw6l0b2RvcyBQw7pibGljb3M6XHJcbiAqIC0gYHJlbG9hZExpc3Qoc2VhcmNoOiBzdHJpbmcpYDogTcOpdG9kbyBwYXJhIHJlY2FycmVnYXIgYSBsaXN0YSBkZSBpdGVucyBjb20gYmFzZSBuYSBwZXNxdWlzYSBmb3JuZWNpZGEuXHJcbiAqIC0gYHNldEZpbHRlclZhbHVlKGl0ZW0/OiBSZWNvcmRDb21ib2JveClgOiBNw6l0b2RvIHBhcmEgZGVmaW5pciBvIHZhbG9yIGRvIGZpbHRybyBjb20gYmFzZSBubyBpdGVtIHNlbGVjaW9uYWRvLlxyXG4gKiBcclxuICogIyMgRXZlbnRvczpcclxuICogLSBgbmdPbkluaXQoKWA6IEluaWNpYWxpemEgbyBjb21wb25lbnRlLlxyXG4gKiAtIGBuZ0FmdGVyVmlld0luaXQoKWA6IEFqdXN0YSBhIGxhcmd1cmEgZG8gZHJvcGRvd24gYXDDs3MgYSB2aXN1YWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxyXG4gKiAtIGBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKWA6IFJlc3BvbmRlIGEgbXVkYW7Dp2FzIG5hcyBwcm9wcmllZGFkZXMgZGUgZW50cmFkYS5cclxuICogXHJcbiAqICMjIFV0aWxpdMOhcmlvczpcclxuICogLSBgY3JlYXRlRmlsdGVyRm9ybSgpYDogQ3JpYSBvIGZvcm11bMOhcmlvIGRlIGZpbHRybyBwYXJhIGEgcGVzcXVpc2EuXHJcbiAqIC0gYGluaXRpYWxpemVTZWxlY3RlZFZhbHVlKClgOiBJbmljaWFsaXphIG8gdmFsb3Igc2VsZWNpb25hZG8gbm8gY29tYm9ib3gsIHNlIGZvcm5lY2lkby5cclxuICogLSBgYWRqdXN0RHJvcGRvd25XaWR0aCgpYDogQWp1c3RhIGEgbGFyZ3VyYSBkbyBkcm9wZG93biBwYXJhIGNvcnJlc3BvbmRlciDDoCBsYXJndXJhIGRvIGlucHV0IHByaW5jaXBhbC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNlYXJjaC1jb21ib2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NlYXJjaC1jb21ib2JveC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbWJvYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlRmlsdGVyRm9ybSgpO1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWRWYWx1ZUlEKSB7IHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGVkVmFsdWUoKSB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkanVzdERyb3Bkb3duV2lkdGgoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiaW5pdGlhbGl6ZWRWYWx1ZUlEXCJdICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wiaW5pdGlhbGl6ZWRWYWx1ZUlEXCJdLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG4gIC8vICNyZWdpb24gUFJJVkFURVxyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbTogUmVjb3JkQ29tYm9ib3g7XHJcbiAgLy8gI2VuZHJlZ2lvbiBQUklWQVRFXHJcblxyXG4gIC8vICNyZWdpb24gUFVCTElDXHJcblxyXG4gIC8qKiBMaXN0YSBkZSBpdGVucyBkaXNwb27DrXZlaXMgcGFyYSBzZWxlw6fDo28gbm8gY29tYm9ib3guICovXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvbWJvYm94TGlzdDogUmVjb3JkQ29tYm9ib3hbXTtcclxuXHJcbiAgLyoqIFRleHRvIGRlIGxhYmVsIGFzc29jaWFkbyBhbyBjb21ib2JveC4gKi9cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgbGFiZWxUZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBJRCBkZSB1bSBpdGVtIGluaWNpYWxtZW50ZSBzZWxlY2lvbmFkbyBubyBjb21ib2JveC4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaW5pdGlhbGl6ZWRWYWx1ZUlEOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgXHJcbiAgLyoqIFRlbWEgZGUgY29yZXMgcGFyYSBvIGNvbXBvbmVudGUgKGJhc2VhZG8gbmFzIGNvcmVzIGRvIEJvb3RzdHJhcCkuICovXHJcbiAgQElucHV0KCkgcHVibGljIGNvbG9yVGhlbWU6IFwicHJpbWFyeVwiIHwgXCJzZWNvbmRhcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJkYW5nZXJcIiB8IFwid2FybmluZ1wiIHwgXCJpbmZvXCIgfCBcImxpZ2h0XCIgfCBcImRhcmtcIiA9IFwicHJpbWFyeVwiO1xyXG4gIFxyXG4gIC8qKiBQbGFjZWhvbGRlciBwYXJhIG8gaW5wdXQgcHJpbmNpcGFsLiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYWluSW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nID0gXCJTZWxlY2lvbmUgdW1hIG9ww6fDo28uLi5cIjtcclxuICBcclxuICAvKiogUGxhY2Vob2xkZXIgcGFyYSBvIGlucHV0IGRlIHBlc3F1aXNhLiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hJbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlBlc3F1aXNhLi4uXCI7XHJcblxyXG4gIC8qKiBJbmZvcm1hIHNlIG8gaW5wdXQgc2Vyw6EgZXhpYmlkbyBjb21vIGRlc2FiaWxpdGFkby4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIGEgbGlzdGEgcHJlY2lzYSBzZXIgcmVjYXJyZWdhZGEuXHJcbiAgICogTGV2YSB1bWEgc3RyaW5nIHF1ZSDDqSB1c2FkYSBwYXJhIHBlc3F1aXNhLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25SZWxvYWRMaXN0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIHVtIGl0ZW0gw6kgc2VsZWNpb25hZG8uICovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvblNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdtYWluSW5wdXQnKSBwcml2YXRlIF9tYWluSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTWVudScpIHByaXZhdGUgX2Ryb3Bkb3duTWVudSE6IEVsZW1lbnRSZWY7XHJcblxyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWRUZXh0Pzogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSXRlbSgpOiBSZWNvcmRDb21ib2JveCB7IHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW07IH1cclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSXRlbSh2YWx1ZTogUmVjb3JkQ29tYm9ib3gpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblNlbGVjdEl0ZW0uZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gUFVCTElDXHJcblxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cclxuICBwdWJsaWMgZmlsdGVyRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBnZXQgRm9ybVV0aWxzKCk6IHR5cGVvZiBGb3JtVXRpbHMgeyByZXR1cm4gRm9ybVV0aWxzOyB9XHJcblxyXG4gIC8vICNyZWdpb24gRk9STSBEQVRBXHJcbiAgcHVibGljIGdldCBfc2VhcmNoSW5wdXQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybS5nZXQoXCJfc2VhcmNoSW5wdXRcIik/LnZhbHVlOyB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBGT1JNIERBVEFcclxuXHJcbiAgLy8gI3JlZ2lvbiBGT1JNIFZBTElEQVRPUlNcclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlckZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIF9zZWFyY2hJbnB1dDogWyBcIlwiIF1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uIEZPUk0gVkFMSURBVE9SU1xyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMSVRJRVMgPD09PT09PT09PT1cclxuXHJcbiAgLyoqXHJcbiAgICogQXR1YWxpemEgbyB2YWxvciBkbyBmaWx0cm8gY29tIGJhc2Ugbm8gaXRlbSBzZWxlY2lvbmFkby5cclxuICAgKiBAcGFyYW0gaXRlbSBPYmpldG8gZGUgaXRlbSBzZWxlY2lvbmFkby5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0RmlsdGVyVmFsdWUoaXRlbT86IFJlY29yZENvbWJvYm94KTogdm9pZCB7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICB0aGlzLmZpbHRlckZvcm0uY29udHJvbHNbXCJfc2VhcmNoSW5wdXRcIl0uc2V0VmFsdWUoYCR7aXRlbS5JRCBhcyBzdHJpbmd9IC0gJHtpdGVtLkxBQkVMfWApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGV4dCA9IGl0ZW0uTEFCRUw7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IGl0ZW0uSUQsIExBQkVMOiBpdGVtLkxBQkVMLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBpdGVtLkFkZGl0aW9uYWxTdHJpbmdQcm9wZXJ0eTEsIElTX1NFTEVDVEVEOiBpdGVtLklTX1NFTEVDVEVEIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzW1wiX3NlYXJjaElucHV0XCJdLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZFRleHQ7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IFwiXCIsIExBQkVMOiBcIlwiLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBcIlwiLCBJU19TRUxFQ1RFRDogZmFsc2UgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBDaGFtYWRvIGNhc28gdW0gdmFsb3IgaW5pY2lhbCBzZWphIGZvcm5lY2lkbyBwYXJhIG8gY29tYm9ib3guICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplU2VsZWN0ZWRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGxldCBpbml0aWFsaXplZFZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbWJvYm94TGlzdCAmJiB0aGlzLmNvbWJvYm94TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGluaXRpYWxpemVkVmFsdWUgPSB0aGlzLmNvbWJvYm94TGlzdC5maW5kKGl0ZW0gPT4gaXRlbS5JRCA9PSB0aGlzLmluaXRpYWxpemVkVmFsdWVJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29tYm9ib3hMaXN0ICYmIGluaXRpYWxpemVkVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRleHQgPSBpbml0aWFsaXplZFZhbHVlLkxBQkVMO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHsgSUQ6IGluaXRpYWxpemVkVmFsdWUuSUQsIExBQkVMOiBpbml0aWFsaXplZFZhbHVlLkxBQkVMLCBBZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxOiBcIlwiLCBJU19TRUxFQ1RFRDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEFqdXN0YSBhIGxhcmd1cmEgZG8gZHJvcGRvd24gcGFyYSBjb3JyZXNwb25kZXIgw6AgbGFyZ3VyYSBkbyBpbnB1dCBwcmluY2lwYWwuICovXHJcbiAgcHJpdmF0ZSBhZGp1c3REcm9wZG93bldpZHRoKCkge1xyXG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuX21haW5JbnB1dC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgdGhpcy5fZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtpbnB1dFdpZHRofXB4YDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBFbWl0ZSB1bSBldmVudG8gcGFyYSByZWNhcnJlZ2FyIGEgbGlzdGEgZGUgaXRlbnMgY29tIGJhc2UgbmEgcGVzcXVpc2EgZm9ybmVjaWRhLlxyXG4gICAqIEBwYXJhbSBzZWFyY2ggVGV4dG8gZGUgcGVzcXVpc2EgcGFyYSByZWNhcnJlZ2FyIGEgbGlzdGEuXHJcbiAgICovXHJcbiAgcHVibGljIHJlbG9hZExpc3Qoc2VhcmNoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub25SZWxvYWRMaXN0LmVtaXQoc2VhcmNoKTtcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBVVElMSVRJRVMgPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gTU9EQUxTIDw9PT09PT09PT09XHJcbiAgLy8gWy4uLl1cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxufVxyXG4iLCI8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGZ3LWJvbGRcIiBbaW5uZXJIVE1MXT1cImxhYmVsVGV4dFwiPjwvbGFiZWw+XHJcbjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkcm9wZG93biBmbGV4LWZpbGwgZ2xiLW1heC1oZWlnaHQtMzUwcHhcIj5cclxuXHJcbiAgIDwhLS0gRXN0ZSBlbGVtZW50byBuZy1jb250ZW50IGNvbSBvIGF0cmlidXRvIFtidG5MZWZ0XSBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGZpbmFsIGZvcm5lw6dhIGNvbnRlw7pkbyBwZXJzb25hbGl6YWRvIHBhcmEgc2VyIGV4aWJpZG8gbm8gbGFkbyBlc3F1ZXJkbyBkbyBjb21ib2JveCBkZSBwZXNxdWlzYS5cclxuICAgQW8gdXNhciBvIGF0cmlidXRvIFtidG5MZWZ0XSwgbyB1c3XDoXJpbyBwb2RlIGZhY2lsbWVudGUgYWRpY2lvbmFyIGJvdMO1ZXMgb3Ugb3V0cm9zIGVsZW1lbnRvcyBwYXJhIG1lbGhvcmFyIGEgZnVuY2lvbmFsaWRhZGUgb3UgYXBhcsOqbmNpYSBkbyBjb21ib2JveCBkZSBwZXNxdWlzYS4gLS0+XHJcbiAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltidG5MZWZ0XVwiPjwvbmctY29udGVudD5cclxuXHJcbiAgIDxpbnB1dCAgI21haW5JbnB1dCAgICpuZ0lmPVwiIWRpc2FibGVkOyBlbHNlIGRpc2FibGVkSW5wdXRcIiBjbGFzcz1cImZvcm0tc2VsZWN0IHRleHQtc3RhcnQgcm91bmRlZC1lbmRcIiB0eXBlPVwidGV4dFwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBbcGxhY2Vob2xkZXJdPVwibWFpbklucHV0UGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGV4dFwiIGRhdGEtYnMtYXV0by1jbG9zZT1cIm91dHNpZGVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiByZWFkb25seT5cclxuICAgPHVsICAjZHJvcGRvd25NZW51ICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgcC0yIGdsYi1tYXgtaGVpZ2h0LTM1MHB4IG92ZXJmbG93LXktc2Nyb2xsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgIDxpbnB1dCAjc2VhcmNoSW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInNlYXJjaElucHV0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZ2xiLWlucHV0LW5vLWdsb3dcIiBbcGxhY2Vob2xkZXJdPVwic2VhcmNoSW5wdXRQbGFjZWhvbGRlclwiIChrZXl1cC5lbnRlcik9XCJyZWxvYWRMaXN0KHNlYXJjaElucHV0LnZhbHVlKVwiPlxyXG4gICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi17e2NvbG9yVGhlbWV9fVwiIChjbGljayk9XCJyZWxvYWRMaXN0KHNlYXJjaElucHV0LnZhbHVlKVwiPiA8YXBwLXN2Zy1zdG9yYWdlIHN2Z05hbWU9XCJsdXBhXCIgc3ZnU2l6ZT1cIm1lZGl1bS1zbWFsbFwiIC8+IDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveExpc3Q7IGVsc2UgbG9hZGluZ0xpc3RcIj5cclxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94TGlzdC5sZW5ndGggPiAwOyBlbHNlIGVtcHR5SXRlbUxpc3RcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VsZWN0ZWRJdGVtICYmIHNlbGVjdGVkSXRlbS5JRCAhPSAnJ1wiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGaWx0ZXJWYWx1ZSgpXCI+IDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPkxpbXBhciBvcMOnw6NvIHNlbGVjaW9uYWRhPC9zcGFuPiA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29tYm9ib3hMaXN0XCIgKGNsaWNrKT1cInNldEZpbHRlclZhbHVlKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5BZGRpdGlvbmFsU3RyaW5nUHJvcGVydHkxIHx8IGl0ZW0uQWRkaXRpb25hbFN0cmluZ1Byb3BlcnR5MSAhPSAnJ1wiIGNsYXNzPVwiZ2xiLWZzLTEyIGZ3LWJvbGQgZC1pbmxpbmUtYmxvY2sgdy0xMjVcIj57eyBpdGVtLkFkZGl0aW9uYWxTdHJpbmdQcm9wZXJ0eTEgfX08L3NwYW4+IHt7IGl0ZW0uTEFCRUwgfX1cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nTGlzdD4gPGxpIGNsYXNzPVwiZHJvcGRvd24taXRlbSB0ZXh0LWNlbnRlclwiPiA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+PHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5DYXJyZWdhbmRvIGRhZG9zLi4uPC9zcGFuPjwvZGl2PiA8L2xpPiA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5SXRlbUxpc3Q+IDxsaSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZnN0LWl0YWxpY1wiPk5lbmh1bSByZWdpc3RybyBlbmNvbnRyYWRvIGNvbSBlc3RhIHBlc3F1aXNhLi4uPC9saT4gPC9uZy10ZW1wbGF0ZT5cclxuICAgPC91bD5cclxuXHJcbiAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRJbnB1dD5cclxuICAgICAgPGlucHV0ICAjbWFpbklucHV0ICBjbGFzcz1cImZvcm0tc2VsZWN0IHRleHQtc3RhcnQgcm91bmRlZC1lbmRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJtYWluSW5wdXRQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUZXh0XCIgcmVhZG9ubHkgZGlzYWJsZWQ+XHJcbiAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICA8IS0tIEVzdGUgZWxlbWVudG8gbmctY29udGVudCBjb20gbyBhdHJpYnV0byBbYnRuUmlnaHRdIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZmluYWwgZm9ybmXDp2EgY29udGXDumRvIHBlcnNvbmFsaXphZG8gcGFyYSBzZXIgZXhpYmlkbyBubyBsYWRvIGRpcmVpdG8gZG8gY29tYm9ib3ggZGUgcGVzcXVpc2EuXHJcbiAgIEFvIHVzYXIgbyBhdHJpYnV0byBbYnRuUmlnaHRdLCBvIHVzdcOhcmlvIHBvZGUgZmFjaWxtZW50ZSBhZGljaW9uYXIgYm90w7VlcyBvdSBvdXRyb3MgZWxlbWVudG9zIHBhcmEgbWVsaG9yYXIgYSBmdW5jaW9uYWxpZGFkZSBvdSBhcGFyw6puY2lhIGRvIGNvbWJvYm94IGRlIHBlc3F1aXNhLiAtLT5cclxuICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J0blJpZ2h0XVwiPjwvbmctY29udGVudD5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1528,6 +1528,8 @@ class SearchComboboxComponent {
|
|
|
1528
1528
|
this.mainInputPlaceholder = "Selecione uma opção...";
|
|
1529
1529
|
/** Placeholder para o input de pesquisa. */
|
|
1530
1530
|
this.searchInputPlaceholder = "Pesquisa...";
|
|
1531
|
+
/** Informa se o input será exibido como desabilitado. */
|
|
1532
|
+
this.disabled = false;
|
|
1531
1533
|
/**
|
|
1532
1534
|
* Evento emitido quando a lista precisa ser recarregada.
|
|
1533
1535
|
* Leva uma string que é usada para pesquisa.
|
|
@@ -1538,8 +1540,6 @@ class SearchComboboxComponent {
|
|
|
1538
1540
|
}
|
|
1539
1541
|
ngOnInit() {
|
|
1540
1542
|
this.createFilterForm();
|
|
1541
|
-
console.log("ngOnInit");
|
|
1542
|
-
console.log(this.initializedValueID);
|
|
1543
1543
|
if (this.initializedValueID) {
|
|
1544
1544
|
this.initializeSelectedValue();
|
|
1545
1545
|
}
|
|
@@ -1549,16 +1549,12 @@ class SearchComboboxComponent {
|
|
|
1549
1549
|
}
|
|
1550
1550
|
ngOnChanges(changes) {
|
|
1551
1551
|
if (changes["initializedValueID"] != undefined && changes["initializedValueID"].currentValue != undefined) {
|
|
1552
|
-
console.log("ngOnChanges");
|
|
1553
|
-
console.log(changes["initializedValueID"].currentValue);
|
|
1554
1552
|
this.initializeSelectedValue();
|
|
1555
1553
|
}
|
|
1556
1554
|
}
|
|
1557
1555
|
get selectedItem() { return this._selectedItem; }
|
|
1558
1556
|
set selectedItem(value) {
|
|
1559
1557
|
this._selectedItem = value;
|
|
1560
|
-
console.log("public set selectedItem");
|
|
1561
|
-
console.log(this.initializedValueID);
|
|
1562
1558
|
this.onSelectItem.emit(value);
|
|
1563
1559
|
}
|
|
1564
1560
|
get FormUtils() { return FormUtils; }
|
|
@@ -1579,8 +1575,6 @@ class SearchComboboxComponent {
|
|
|
1579
1575
|
* @param item Objeto de item selecionado.
|
|
1580
1576
|
*/
|
|
1581
1577
|
setFilterValue(item) {
|
|
1582
|
-
console.log("public setFilterValue");
|
|
1583
|
-
console.log(item);
|
|
1584
1578
|
if (item) {
|
|
1585
1579
|
this.filterForm.controls["_searchInput"].setValue(`${item.ID} - ${item.LABEL}`);
|
|
1586
1580
|
this.selectedText = item.LABEL;
|
|
@@ -1616,11 +1610,11 @@ class SearchComboboxComponent {
|
|
|
1616
1610
|
this.onReloadList.emit(search);
|
|
1617
1611
|
}
|
|
1618
1612
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SearchComboboxComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1619
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SearchComboboxComponent, selector: "lib-search-combobox", inputs: { comboboxList: "comboboxList", labelText: "labelText", initializedValueID: "initializedValueID", colorTheme: "colorTheme", mainInputPlaceholder: "mainInputPlaceholder", searchInputPlaceholder: "searchInputPlaceholder" }, outputs: { onReloadList: "onReloadList", onSelectItem: "onSelectItem" }, viewQueries: [{ propertyName: "_mainInput", first: true, predicate: ["mainInput"], descendants: true }, { propertyName: "_dropdownMenu", first: true, predicate: ["dropdownMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput
|
|
1613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SearchComboboxComponent, selector: "lib-search-combobox", inputs: { comboboxList: "comboboxList", labelText: "labelText", initializedValueID: "initializedValueID", colorTheme: "colorTheme", mainInputPlaceholder: "mainInputPlaceholder", searchInputPlaceholder: "searchInputPlaceholder", disabled: "disabled" }, outputs: { onReloadList: "onReloadList", onSelectItem: "onSelectItem" }, viewQueries: [{ propertyName: "_mainInput", first: true, predicate: ["mainInput"], descendants: true }, { propertyName: "_dropdownMenu", first: true, predicate: ["dropdownMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput *ngIf=\"!disabled; else disabledInput\" class=\"form-select text-start rounded-end\" type=\"text\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" data-bs-auto-close=\"outside\" aria-expanded=\"false\" readonly>\r\n <ul #dropdownMenu class=\"dropdown-menu p-2 glb-max-height-350px overflow-y-scroll\">\r\n <div class=\"input-group mb-2\">\r\n <input #searchInput type=\"text\" id=\"searchInput\" class=\"form-control glb-input-no-glow\" [placeholder]=\"searchInputPlaceholder\" (keyup.enter)=\"reloadList(searchInput.value)\">\r\n <button class=\"btn btn-{{colorTheme}}\" (click)=\"reloadList(searchInput.value)\"> <app-svg-storage svgName=\"lupa\" svgSize=\"medium-small\" /> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"comboboxList; else loadingList\">\r\n <ng-container *ngIf=\"comboboxList.length > 0; else emptyItemList\">\r\n <li *ngIf=\"selectedItem && selectedItem.ID != ''\" class=\"dropdown-item\" (click)=\"setFilterValue()\"> <span class=\"fw-bold\">Limpar op\u00E7\u00E3o selecionada</span> </li>\r\n <li class=\"dropdown-item\" *ngFor=\"let item of comboboxList\" (click)=\"setFilterValue(item)\">\r\n <span *ngIf=\"item.AdditionalStringProperty1 || item.AdditionalStringProperty1 != ''\" class=\"glb-fs-12 fw-bold d-inline-block w-125\">{{ item.AdditionalStringProperty1 }}</span> {{ item.LABEL }}\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loadingList> <li class=\"dropdown-item text-center\"> <div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Carregando dados...</span></div> </li> </ng-template>\r\n <ng-template #emptyItemList> <li class=\"dropdown-item fst-italic\">Nenhum registro encontrado com esta pesquisa...</li> </ng-template>\r\n </ul>\r\n\r\n <ng-template #disabledInput>\r\n <input #mainInput class=\"form-select text-start rounded-end\" type=\"text\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" readonly disabled>\r\n </ng-template>\r\n\r\n <!-- Este elemento ng-content com o atributo [btnRight] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado direito do combobox de pesquisa.\r\n Ao usar o atributo [btnRight], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnRight]\"></ng-content>\r\n\r\n</div>\r\n", styles: [".glb-max-height-350px{max-height:350px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SvgStorageComponent, selector: "app-svg-storage", inputs: ["svgName", "svgColor", "svgFill", "svgSize", "svgStrokeWidth"] }] }); }
|
|
1620
1614
|
}
|
|
1621
1615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SearchComboboxComponent, decorators: [{
|
|
1622
1616
|
type: Component,
|
|
1623
|
-
args: [{ selector: 'lib-search-combobox', template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput
|
|
1617
|
+
args: [{ selector: 'lib-search-combobox', template: "<label class=\"form-label fw-bold\" [innerHTML]=\"labelText\"></label>\r\n<div class=\"input-group dropdown flex-fill glb-max-height-350px\">\r\n\r\n <!-- Este elemento ng-content com o atributo [btnLeft] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado esquerdo do combobox de pesquisa.\r\n Ao usar o atributo [btnLeft], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnLeft]\"></ng-content>\r\n\r\n <input #mainInput *ngIf=\"!disabled; else disabledInput\" class=\"form-select text-start rounded-end\" type=\"text\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" data-bs-auto-close=\"outside\" aria-expanded=\"false\" readonly>\r\n <ul #dropdownMenu class=\"dropdown-menu p-2 glb-max-height-350px overflow-y-scroll\">\r\n <div class=\"input-group mb-2\">\r\n <input #searchInput type=\"text\" id=\"searchInput\" class=\"form-control glb-input-no-glow\" [placeholder]=\"searchInputPlaceholder\" (keyup.enter)=\"reloadList(searchInput.value)\">\r\n <button class=\"btn btn-{{colorTheme}}\" (click)=\"reloadList(searchInput.value)\"> <app-svg-storage svgName=\"lupa\" svgSize=\"medium-small\" /> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"comboboxList; else loadingList\">\r\n <ng-container *ngIf=\"comboboxList.length > 0; else emptyItemList\">\r\n <li *ngIf=\"selectedItem && selectedItem.ID != ''\" class=\"dropdown-item\" (click)=\"setFilterValue()\"> <span class=\"fw-bold\">Limpar op\u00E7\u00E3o selecionada</span> </li>\r\n <li class=\"dropdown-item\" *ngFor=\"let item of comboboxList\" (click)=\"setFilterValue(item)\">\r\n <span *ngIf=\"item.AdditionalStringProperty1 || item.AdditionalStringProperty1 != ''\" class=\"glb-fs-12 fw-bold d-inline-block w-125\">{{ item.AdditionalStringProperty1 }}</span> {{ item.LABEL }}\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loadingList> <li class=\"dropdown-item text-center\"> <div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Carregando dados...</span></div> </li> </ng-template>\r\n <ng-template #emptyItemList> <li class=\"dropdown-item fst-italic\">Nenhum registro encontrado com esta pesquisa...</li> </ng-template>\r\n </ul>\r\n\r\n <ng-template #disabledInput>\r\n <input #mainInput class=\"form-select text-start rounded-end\" type=\"text\" [placeholder]=\"mainInputPlaceholder\" [(ngModel)]=\"selectedText\" readonly disabled>\r\n </ng-template>\r\n\r\n <!-- Este elemento ng-content com o atributo [btnRight] permite que o usu\u00E1rio final forne\u00E7a conte\u00FAdo personalizado para ser exibido no lado direito do combobox de pesquisa.\r\n Ao usar o atributo [btnRight], o usu\u00E1rio pode facilmente adicionar bot\u00F5es ou outros elementos para melhorar a funcionalidade ou apar\u00EAncia do combobox de pesquisa. -->\r\n <ng-content select=\"[btnRight]\"></ng-content>\r\n\r\n</div>\r\n", styles: [".glb-max-height-350px{max-height:350px!important}\n"] }]
|
|
1624
1618
|
}], ctorParameters: () => [{ type: i2.FormBuilder }], propDecorators: { comboboxList: [{
|
|
1625
1619
|
type: Input,
|
|
1626
1620
|
args: [{ required: true }]
|
|
@@ -1635,6 +1629,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1635
1629
|
type: Input
|
|
1636
1630
|
}], searchInputPlaceholder: [{
|
|
1637
1631
|
type: Input
|
|
1632
|
+
}], disabled: [{
|
|
1633
|
+
type: Input
|
|
1638
1634
|
}], onReloadList: [{
|
|
1639
1635
|
type: Output
|
|
1640
1636
|
}], onSelectItem: [{
|