@ng-nest/ui 14.0.1 → 14.0.4
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/auto-complete/auto-complete.component.d.ts +2 -2
- package/base-form/base-form.component.d.ts +6 -3
- package/button/button.property.d.ts +11 -1
- package/cascade/cascade.component.d.ts +1 -1
- package/color-picker/color-picker.component.d.ts +1 -1
- package/core/config/config.d.ts +5 -0
- package/date-picker/date-picker.component.d.ts +1 -1
- package/date-picker/date-range.component.d.ts +1 -1
- package/dialog/dialog.module.d.ts +2 -1
- package/dialog/dialog.property.d.ts +2 -0
- package/esm2020/auto-complete/auto-complete.component.mjs +5 -3
- package/esm2020/base-form/base-form.component.mjs +11 -3
- package/esm2020/button/button.component.mjs +3 -3
- package/esm2020/button/button.property.mjs +7 -2
- package/esm2020/cascade/cascade.component.mjs +4 -3
- package/esm2020/checkbox/checkbox.component.mjs +4 -3
- package/esm2020/color-picker/color-picker-portal.component.mjs +3 -3
- package/esm2020/color-picker/color-picker.component.mjs +4 -3
- package/esm2020/core/config/config.mjs +1 -1
- package/esm2020/date-picker/date-picker.component.mjs +4 -3
- package/esm2020/date-picker/date-range.component.mjs +1 -1
- package/esm2020/dialog/dialog.module.mjs +8 -4
- package/esm2020/dialog/dialog.property.mjs +1 -1
- package/esm2020/find/find.component.mjs +7 -4
- package/esm2020/form/control.component.mjs +37 -25
- package/esm2020/form/form.component.mjs +15 -3
- package/esm2020/form/form.module.mjs +6 -3
- package/esm2020/form/form.property.mjs +10 -3
- package/esm2020/i18n/i18n.property.mjs +1 -1
- package/esm2020/i18n/languages/en_US.mjs +6 -2
- package/esm2020/i18n/languages/zh_CN.mjs +6 -2
- package/esm2020/i18n/languages/zh_TW.mjs +6 -2
- package/esm2020/icon/icon.component.mjs +6 -2
- package/esm2020/input/input.component.mjs +23 -10
- package/esm2020/input/input.property.mjs +31 -2
- package/esm2020/input-number/input-number.component.mjs +3 -3
- package/esm2020/list/list.component.mjs +13 -13
- package/esm2020/radio/radio.component.mjs +4 -3
- package/esm2020/rate/rate.component.mjs +8 -3
- package/esm2020/select/select-portal.component.mjs +13 -19
- package/esm2020/select/select.component.mjs +299 -52
- package/esm2020/select/select.module.mjs +35 -4
- package/esm2020/select/select.property.mjs +19 -3
- package/esm2020/slider-select/slider-select.component.mjs +6 -5
- package/esm2020/switch/switch.component.mjs +1 -1
- package/esm2020/table/table-body.component.mjs +16 -8
- package/esm2020/table/table-foot.component.mjs +7 -3
- package/esm2020/table/table-head.component.mjs +23 -7
- package/esm2020/table/table.component.mjs +55 -8
- package/esm2020/table/table.property.mjs +26 -5
- package/esm2020/tabs/tabs.component.mjs +45 -15
- package/esm2020/tabs/tabs.module.mjs +5 -4
- package/esm2020/tabs/tabs.property.mjs +4 -2
- package/esm2020/tag/tag.component.mjs +5 -5
- package/esm2020/tag/tag.property.mjs +1 -1
- package/esm2020/textarea/textarea.component.mjs +3 -3
- package/esm2020/textarea/textarea.property.mjs +1 -6
- package/esm2020/theme/theme.component.mjs +1 -1
- package/esm2020/time-picker/time-picker.component.mjs +4 -3
- package/esm2020/timeline/timeline.component.mjs +11 -5
- package/esm2020/timeline/timeline.property.mjs +7 -2
- package/esm2020/transfer/transfer.component.mjs +1 -1
- package/esm2020/tree/tree-node.component.mjs +4 -70
- package/esm2020/tree/tree.component.mjs +123 -23
- package/esm2020/tree/tree.property.mjs +1 -1
- package/esm2020/upload/upload.component.mjs +1 -1
- package/fesm2015/ng-nest-ui-auto-complete.mjs +4 -2
- package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-base-form.mjs +10 -2
- package/fesm2015/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-button.mjs +8 -3
- package/fesm2015/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-cascade.mjs +3 -2
- package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-checkbox.mjs +3 -2
- package/fesm2015/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-color-picker.mjs +5 -4
- package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.mjs +3 -2
- package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-dialog.mjs +7 -3
- package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-find.mjs +6 -3
- package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-form.mjs +65 -30
- package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-i18n.mjs +15 -3
- package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-icon.mjs +5 -1
- package/fesm2015/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-input-number.mjs +2 -2
- package/fesm2015/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-input.mjs +52 -10
- package/fesm2015/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-list.mjs +12 -12
- package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-radio.mjs +3 -2
- package/fesm2015/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-rate.mjs +7 -2
- package/fesm2015/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-select.mjs +363 -73
- package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-slider-select.mjs +5 -4
- package/fesm2015/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-table.mjs +120 -25
- package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tabs.mjs +52 -18
- package/fesm2015/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tag.mjs +4 -4
- package/fesm2015/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-textarea.mjs +2 -7
- package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-time-picker.mjs +3 -2
- package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-timeline.mjs +16 -5
- package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree.mjs +125 -91
- package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-auto-complete.mjs +4 -2
- package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-base-form.mjs +10 -2
- package/fesm2020/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-button.mjs +8 -3
- package/fesm2020/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-cascade.mjs +3 -2
- package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-checkbox.mjs +3 -2
- package/fesm2020/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-color-picker.mjs +5 -4
- package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-date-picker.mjs +3 -2
- package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-dialog.mjs +7 -3
- package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-find.mjs +6 -3
- package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-form.mjs +64 -30
- package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-i18n.mjs +15 -3
- package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-icon.mjs +5 -1
- package/fesm2020/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-input-number.mjs +2 -2
- package/fesm2020/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-input.mjs +52 -10
- package/fesm2020/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-list.mjs +12 -12
- package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-radio.mjs +3 -2
- package/fesm2020/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-rate.mjs +7 -2
- package/fesm2020/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-select.mjs +360 -73
- package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-slider-select.mjs +5 -4
- package/fesm2020/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-table.mjs +119 -25
- package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tabs.mjs +51 -18
- package/fesm2020/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tag.mjs +4 -4
- package/fesm2020/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-textarea.mjs +2 -7
- package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-time-picker.mjs +3 -2
- package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-timeline.mjs +16 -5
- package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree.mjs +125 -91
- package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.component.d.ts +1 -1
- package/form/control.component.d.ts +6 -3
- package/form/examples/en_US/default/form-vaild/README.md +8 -0
- package/form/examples/zh_CN/default/form-vaild/README.md +8 -0
- package/form/form.component.d.ts +3 -1
- package/form/form.module.d.ts +2 -1
- package/form/form.property.d.ts +7 -2
- package/i18n/i18n.property.d.ts +6 -0
- package/i18n/languages/en_US.d.ts +4 -0
- package/i18n/languages/zh_CN.d.ts +4 -0
- package/i18n/languages/zh_TW.d.ts +4 -0
- package/input/input.component.d.ts +3 -0
- package/input/input.property.d.ts +31 -1
- package/input-number/input-number.component.d.ts +1 -1
- package/package.json +1 -1
- package/rate/rate.component.d.ts +1 -0
- package/select/select-portal.component.d.ts +1 -1
- package/select/select.component.d.ts +34 -9
- package/select/select.module.d.ts +4 -2
- package/select/select.property.d.ts +18 -2
- package/slider-select/slider-select.component.d.ts +1 -1
- package/switch/switch.component.d.ts +1 -1
- package/table/examples/en_US/default/fix/README.md +6 -0
- package/table/examples/en_US/default/head/README.md +6 -0
- package/table/examples/en_US/default/header/README.md +6 -0
- package/table/examples/zh_CN/default/fix/README.md +6 -0
- package/table/examples/zh_CN/default/head/README.md +6 -0
- package/table/examples/zh_CN/default/header/README.md +6 -0
- package/table/table-body.component.d.ts +1 -1
- package/table/table-foot.component.d.ts +1 -0
- package/table/table-head.component.d.ts +2 -1
- package/table/table.component.d.ts +14 -2
- package/table/table.property.d.ts +54 -4
- package/tabs/examples/en_US/default/action/README.md +6 -0
- package/tabs/examples/zh_CN/default/action/README.md +6 -0
- package/tabs/tabs.component.d.ts +9 -2
- package/tabs/tabs.module.d.ts +3 -2
- package/tabs/tabs.property.d.ts +8 -3
- package/tag/tag.component.d.ts +1 -1
- package/tag/tag.property.d.ts +1 -1
- package/time-picker/time-picker.component.d.ts +1 -1
- package/timeline/examples/en_US/default/mode/README.md +6 -0
- package/timeline/examples/zh_CN/default/mode/README.md +6 -0
- package/timeline/timeline.component.d.ts +1 -0
- package/timeline/timeline.property.d.ts +11 -1
- package/tree/tree-node.component.d.ts +0 -3
- package/tree/tree.component.d.ts +3 -0
- package/tree/tree.property.d.ts +5 -0
|
@@ -184,6 +184,7 @@ export class XFindComponent extends XFindProperty {
|
|
|
184
184
|
sure() {
|
|
185
185
|
this.value = this.temp;
|
|
186
186
|
this.onChange(this.value);
|
|
187
|
+
this.formControlValidator();
|
|
187
188
|
this.cdr.detectChanges();
|
|
188
189
|
}
|
|
189
190
|
closeModal() {
|
|
@@ -226,6 +227,7 @@ export class XFindComponent extends XFindProperty {
|
|
|
226
227
|
}
|
|
227
228
|
}
|
|
228
229
|
this.onChange(this.value);
|
|
230
|
+
this.formControlValidator();
|
|
229
231
|
this.cdr.detectChanges();
|
|
230
232
|
}
|
|
231
233
|
tableActivatedRowChange(data) {
|
|
@@ -234,13 +236,14 @@ export class XFindComponent extends XFindProperty {
|
|
|
234
236
|
}
|
|
235
237
|
else {
|
|
236
238
|
this.temp = data;
|
|
237
|
-
this.sure();
|
|
238
239
|
this.dialogVisible = false;
|
|
240
|
+
this.sure();
|
|
239
241
|
}
|
|
240
242
|
}
|
|
241
243
|
rowMultiple(data) {
|
|
242
244
|
if (typeof this.temp === 'undefined')
|
|
243
245
|
this.temp = [];
|
|
246
|
+
// data['$checked'] = !data['$checked'];
|
|
244
247
|
if (data['$checked']) {
|
|
245
248
|
this.temp = [...this.temp, data];
|
|
246
249
|
}
|
|
@@ -327,10 +330,10 @@ export class XFindComponent extends XFindProperty {
|
|
|
327
330
|
}
|
|
328
331
|
}
|
|
329
332
|
/** @nocollapse */ XFindComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XFindComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
330
|
-
/** @nocollapse */ XFindComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XFindComponent, selector: "x-find", providers: [XValueAccessor(XFindComponent)], viewQueries: [{ propertyName: "find", first: true, predicate: ["find"], descendants: true, static: true }, { propertyName: "dialogCom", first: true, predicate: ["dialogCom"], descendants: true }, { propertyName: "tableCom", first: true, predicate: ["tableCom"], descendants: true }, { propertyName: "treeCom", first: true, predicate: ["treeCom"], descendants: true }, { propertyName: "buttonCom", first: true, predicate: ["buttonCom"], descendants: true }, { propertyName: "tableRef", first: true, predicate: ["tableRef"], descendants: true }, { propertyName: "treeRef", first: true, predicate: ["treeRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-find-row\">\r\n <x-button #buttonCom icon=\"fto-search\" [onlyIcon]=\"!bordered\" [size]=\"size\" [disabled]=\"disabled\" (click)=\"showModal()\"></x-button>\r\n <div class=\"x-find-tags\">\r\n <ng-container *ngIf=\"multiple; else singleTpl\">\r\n <x-tag\r\n *ngFor=\"let item of value; index as i; trackBy: trackByItem\"\r\n closable\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [disabled]=\"disabled\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel] }}</x-tag\r\n >\r\n </ng-container>\r\n <ng-template #singleTpl>\r\n <x-tag *ngIf=\"value\" closable [disabled]=\"disabled\" [bordered]=\"bordered\" [size]=\"size\" (close)=\"tagClose()\">{{\r\n value[columnLabel]\r\n }}</x-tag>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle\"\r\n [width]=\"dialogWidth\"\r\n [height]=\"dialogHeight\"\r\n [buttonsCenter]=\"dialogButtonsCenter\"\r\n [(visible)]=\"dialogVisible\"\r\n (visibleChange)=\"dialogVisibleChange.emit($event)\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (cancel)=\"closeModal()\"\r\n (close)=\"closeModal()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable && hasTree\">\r\n <div class=\"x-find-dialog-tree\" *ngIf=\"hasTree\" #treeRef [style.height.px]=\"hasTreeTable && multiple && height\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData\"\r\n nodeHeight=\"1.8\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId\"\r\n [expandedLevel]=\"treeExpandedLevel\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple\"\r\n [checked]=\"treeChecked\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-find-dialog-table\" *ngIf=\"hasTable\" #tableRef>\r\n <div class=\"x-find-search\" *ngIf=\"hasSearch\">\r\n <x-input [label]=\"search.label\" direction=\"row\" (xKeydown)=\"searchKeyDown($event)\" [(ngModel)]=\"search.value\"></x-input>\r\n <x-button type=\"primary\" plain (click)=\"searchClick()\">{{ search.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple\"\r\n [checkedRow]=\"tableCheckedRow\"\r\n [loading]=\"tableLoading\"\r\n (indexChange)=\"tableIndexChange.emit($event)\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event)\"\r\n [rowHeight]=\"tableRowHeight\"\r\n [bodyHeight]=\"tableBodyHeight\"\r\n [virtualScroll]=\"tableVirtualScroll\"\r\n [minBufferPx]=\"tableMinBufferPx\"\r\n [maxBufferPx]=\"tableMaxBufferPx\"\r\n [adaptionHeight]=\"tableAdaptionHeight\"\r\n [docPercent]=\"tableDocPercent\"\r\n ></x-table>\r\n </div>\r\n <div *ngIf=\"multiple\" class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty\" [style.height.px]=\"height\">\r\n <x-empty *ngIf=\"getEmpty\" [content]=\"dialogEmptyContent\"></x-empty>\r\n <div class=\"x-find-dialog-tags\">\r\n <x-tag *ngFor=\"let item of temp; index as i; trackBy: trackByItem\" closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel] }}</span>\r\n </x-tag>\r\n </div>\r\n </div>\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n <x-icon type=\"fto-check\" *ngIf=\"node.$checked\"></x-icon>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0;width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:-moz-fit-content;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XTagComponent, selector: "x-tag" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "component", type: i6.XDialogComponent, selector: "x-dialog" }, { kind: "component", type: i7.XTableComponent, selector: "x-table" }, { kind: "component", type: i8.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i9.XIconComponent, selector: "x-icon" }, { kind: "component", type: i10.XEmptyComponent, selector: "x-empty" }, { kind: "component", type: i11.XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
333
|
+
/** @nocollapse */ XFindComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XFindComponent, selector: "x-find", providers: [XValueAccessor(XFindComponent)], viewQueries: [{ propertyName: "find", first: true, predicate: ["find"], descendants: true, static: true }, { propertyName: "dialogCom", first: true, predicate: ["dialogCom"], descendants: true }, { propertyName: "tableCom", first: true, predicate: ["tableCom"], descendants: true }, { propertyName: "treeCom", first: true, predicate: ["treeCom"], descendants: true }, { propertyName: "buttonCom", first: true, predicate: ["buttonCom"], descendants: true }, { propertyName: "tableRef", first: true, predicate: ["tableRef"], descendants: true }, { propertyName: "treeRef", first: true, predicate: ["treeRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-find-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n <ng-container *ngIf=\"multiple; else singleTpl\">\r\n <x-tag\r\n *ngFor=\"let item of value; index as i; trackBy: trackByItem\"\r\n closable\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [disabled]=\"disabled\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel] }}</x-tag\r\n >\r\n </ng-container>\r\n <ng-template #singleTpl>\r\n <x-tag *ngIf=\"value\" closable [disabled]=\"disabled\" [bordered]=\"bordered\" [size]=\"size\" (close)=\"tagClose()\">{{\r\n value[columnLabel]\r\n }}</x-tag>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle\"\r\n [width]=\"dialogWidth\"\r\n [height]=\"dialogHeight\"\r\n [buttonsCenter]=\"dialogButtonsCenter\"\r\n [(visible)]=\"dialogVisible\"\r\n (visibleChange)=\"dialogVisibleChange.emit($event)\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (cancel)=\"closeModal()\"\r\n (close)=\"closeModal()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable && hasTree\">\r\n <div class=\"x-find-dialog-tree\" *ngIf=\"hasTree\" #treeRef [style.height.px]=\"hasTreeTable && multiple && height\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData\"\r\n nodeHeight=\"1.8\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId\"\r\n [expandedLevel]=\"treeExpandedLevel\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple\"\r\n [checked]=\"treeChecked\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-find-dialog-table\" *ngIf=\"hasTable\" #tableRef>\r\n <div class=\"x-find-search\" *ngIf=\"hasSearch\">\r\n <x-input [label]=\"search.label\" direction=\"row\" (xKeydown)=\"searchKeyDown($event)\" [(ngModel)]=\"search.value\"></x-input>\r\n <x-button type=\"primary\" plain (click)=\"searchClick()\">{{ search.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple\"\r\n [allowCheckRow]=\"multiple\"\r\n [checkedRow]=\"tableCheckedRow\"\r\n [loading]=\"tableLoading\"\r\n (indexChange)=\"tableIndexChange.emit($event)\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event)\"\r\n [rowHeight]=\"tableRowHeight\"\r\n [bodyHeight]=\"tableBodyHeight\"\r\n [virtualScroll]=\"tableVirtualScroll\"\r\n [minBufferPx]=\"tableMinBufferPx\"\r\n [maxBufferPx]=\"tableMaxBufferPx\"\r\n [adaptionHeight]=\"tableAdaptionHeight\"\r\n [docPercent]=\"tableDocPercent\"\r\n ></x-table>\r\n </div>\r\n <div *ngIf=\"multiple\" class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty\" [style.height.px]=\"height\">\r\n <x-empty *ngIf=\"getEmpty\" [content]=\"dialogEmptyContent\"></x-empty>\r\n <div class=\"x-find-dialog-tags\">\r\n <x-tag *ngFor=\"let item of temp; index as i; trackBy: trackByItem\" closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel] }}</span>\r\n </x-tag>\r\n </div>\r\n </div>\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n <x-icon type=\"fto-check\" *ngIf=\"node.$checked\"></x-icon>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0;width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:-moz-fit-content;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XTagComponent, selector: "x-tag" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "component", type: i6.XDialogComponent, selector: "x-dialog" }, { kind: "component", type: i7.XTableComponent, selector: "x-table" }, { kind: "component", type: i8.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i9.XIconComponent, selector: "x-icon" }, { kind: "component", type: i10.XEmptyComponent, selector: "x-empty" }, { kind: "component", type: i11.XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
331
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XFindComponent, decorators: [{
|
|
332
335
|
type: Component,
|
|
333
|
-
args: [{ selector: `${XFindPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XFindComponent)], template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-find-row\">\r\n <x-button
|
|
336
|
+
args: [{ selector: `${XFindPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XFindComponent)], template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-find-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n <ng-container *ngIf=\"multiple; else singleTpl\">\r\n <x-tag\r\n *ngFor=\"let item of value; index as i; trackBy: trackByItem\"\r\n closable\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [disabled]=\"disabled\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel] }}</x-tag\r\n >\r\n </ng-container>\r\n <ng-template #singleTpl>\r\n <x-tag *ngIf=\"value\" closable [disabled]=\"disabled\" [bordered]=\"bordered\" [size]=\"size\" (close)=\"tagClose()\">{{\r\n value[columnLabel]\r\n }}</x-tag>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle\"\r\n [width]=\"dialogWidth\"\r\n [height]=\"dialogHeight\"\r\n [buttonsCenter]=\"dialogButtonsCenter\"\r\n [(visible)]=\"dialogVisible\"\r\n (visibleChange)=\"dialogVisibleChange.emit($event)\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (cancel)=\"closeModal()\"\r\n (close)=\"closeModal()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable && hasTree\">\r\n <div class=\"x-find-dialog-tree\" *ngIf=\"hasTree\" #treeRef [style.height.px]=\"hasTreeTable && multiple && height\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData\"\r\n nodeHeight=\"1.8\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId\"\r\n [expandedLevel]=\"treeExpandedLevel\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple\"\r\n [checked]=\"treeChecked\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-find-dialog-table\" *ngIf=\"hasTable\" #tableRef>\r\n <div class=\"x-find-search\" *ngIf=\"hasSearch\">\r\n <x-input [label]=\"search.label\" direction=\"row\" (xKeydown)=\"searchKeyDown($event)\" [(ngModel)]=\"search.value\"></x-input>\r\n <x-button type=\"primary\" plain (click)=\"searchClick()\">{{ search.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple\"\r\n [allowCheckRow]=\"multiple\"\r\n [checkedRow]=\"tableCheckedRow\"\r\n [loading]=\"tableLoading\"\r\n (indexChange)=\"tableIndexChange.emit($event)\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event)\"\r\n [rowHeight]=\"tableRowHeight\"\r\n [bodyHeight]=\"tableBodyHeight\"\r\n [virtualScroll]=\"tableVirtualScroll\"\r\n [minBufferPx]=\"tableMinBufferPx\"\r\n [maxBufferPx]=\"tableMaxBufferPx\"\r\n [adaptionHeight]=\"tableAdaptionHeight\"\r\n [docPercent]=\"tableDocPercent\"\r\n ></x-table>\r\n </div>\r\n <div *ngIf=\"multiple\" class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty\" [style.height.px]=\"height\">\r\n <x-empty *ngIf=\"getEmpty\" [content]=\"dialogEmptyContent\"></x-empty>\r\n <div class=\"x-find-dialog-tags\">\r\n <x-tag *ngFor=\"let item of temp; index as i; trackBy: trackByItem\" closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel] }}</span>\r\n </x-tag>\r\n </div>\r\n </div>\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n <x-icon type=\"fto-check\" *ngIf=\"node.$checked\"></x-icon>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0;width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:-moz-fit-content;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"] }]
|
|
334
337
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { find: [{
|
|
335
338
|
type: ViewChild,
|
|
336
339
|
args: ['find', { static: true }]
|
|
@@ -353,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
353
356
|
type: ViewChild,
|
|
354
357
|
args: ['treeRef']
|
|
355
358
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFrQixRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUkzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVV2RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFvRS9DLFlBQW1CLFFBQW1CLEVBQVUsR0FBc0IsRUFBUyxhQUE2QjtRQUMxRyxLQUFLLEVBQUUsQ0FBQztRQURTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQVY1RyxXQUFNLEdBQUcsR0FBRyxDQUFDO1FBRUwsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFVekMsQ0FBQztJQTlERCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUNXLFFBQVEsQ0FBQyxLQUFp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QUMsV0FBVztnQkFDQyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0MsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNJLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFPWCxRQUFRO3NCQURsQixTQUFTO3VCQUFDLFVBQVU7Z0JBYVYsT0FBTztzQkFEakIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhGaW5kUHJvcGVydHksIFhGaW5kUHJlZml4IH0gZnJvbSAnLi9maW5kLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWENsZWFyQ2xhc3MsIFhSZXNpemUsIFhJc1VuZGVmaW5lZCwgWElzQ2hhbmdlLCBYQ29uZmlnU2VydmljZSwgWElzRW1wdHkgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlQ29tcG9uZW50LCBYVGFibGVSb3cgfSBmcm9tICdAbmctbmVzdC91aS90YWJsZSc7XHJcbmltcG9ydCB7IFhEaWFsb2dDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9kaWFsb2cnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlLCBYVHJlZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RyZWUnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEZpbmRQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWEZpbmRDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb21wb25lbnQgZXh0ZW5kcyBYRmluZFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaW5kJywgeyBzdGF0aWM6IHRydWUgfSkgZmluZCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29tJykgZGlhbG9nQ29tITogWERpYWxvZ0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbScpIHRhYmxlQ29tITogWFRhYmxlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWVDb20nKSB0cmVlQ29tITogWFRyZWVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYnV0dG9uQ29tJykgYnV0dG9uQ29tITogWEJ1dHRvbkNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBfdGFibGVSZWYhOiBFbGVtZW50UmVmO1xyXG4gIHB1YmxpYyBnZXQgdGFibGVSZWYoKTogRWxlbWVudFJlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVSZWY7XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlUmVmJylcclxuICBwdWJsaWMgc2V0IHRhYmxlUmVmKHZhbHVlOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLl90YWJsZVJlZiA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlICYmIHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZXRTdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyZWVSZWYhOiBFbGVtZW50UmVmO1xyXG4gIHB1YmxpYyBnZXQgdHJlZVJlZigpOiBFbGVtZW50UmVmIHtcclxuICAgIHJldHVybiB0aGlzLl90cmVlUmVmO1xyXG4gIH1cclxuICBAVmlld0NoaWxkKCd0cmVlUmVmJylcclxuICBwdWJsaWMgc2V0IHRyZWVSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuX3RyZWVSZWYgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RW1wdHkoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMudGVtcCB8fCB0aGlzLnRlbXAubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1RhYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVDb2x1bW5zPy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1RyZWUoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoQXJyYXkuaXNBcnJheSh0aGlzLnRyZWVEYXRhKSAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA+IDApIHx8IHRoaXMudHJlZURhdGEgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCB0aGlzLnRyZWVEYXRhIGluc3RhbmNlb2YgT2JzZXJ2YWJsZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNUcmVlVGFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNUYWJsZSAmJiB0aGlzLmhhc1RyZWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzVHJlZU11bHRpcGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzVHJlZSAmJiAhdGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy5tdWx0aXBsZTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNTZWFyY2goKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2ggJiYgdGhpcy5oYXNUYWJsZTtcclxuICB9XHJcblxyXG4gIHRlbXA6IGFueTtcclxuICBoZWlnaHQgPSAxMDA7XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlRGF0YSwgbGFiZWxBbGlnbiwgc2l6ZSB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZSh0YWJsZURhdGEpICYmIHRoaXMuc2V0VGFibGVDaGVja2VkUm93KCk7XHJcbiAgICBYSXNDaGFuZ2UobGFiZWxBbGlnbiwgc2l6ZSkgJiYgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZsZXgodGhpcy5maW5kLm5hdGl2ZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIsIHRoaXMuanVzdGlmeSwgdGhpcy5hbGlnbiwgdGhpcy5kaXJlY3Rpb24pO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gICAgdGhpcy5zZXRNdWx0aXBsZSgpO1xyXG4gICAgdGhpcy5zZXRXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMudmFsdWUpIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgWENsZWFyQ2xhc3ModGhpcy5sYWJlbE1hcCwgdGhpcy5jbGFzc01hcCk7XHJcbiAgICB0aGlzLmxhYmVsTWFwW2B4LXRleHQtYWxpZ24tJHt0aGlzLmxhYmVsQWxpZ259YF0gPSB0aGlzLmxhYmVsQWxpZ24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLmNsYXNzTWFwW2B4LWZpbmQtJHt0aGlzLnNpemV9YF0gPSAhWElzRW1wdHkodGhpcy5zaXplKTtcclxuICB9XHJcblxyXG4gIHNldFN1YnNjcmliZSgpIHtcclxuICAgIGxldCByZXNpemVSZWY6IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUpIHtcclxuICAgICAgcmVzaXplUmVmID0gW3RoaXMudGFibGVSZWY/Lm5hdGl2ZUVsZW1lbnRdO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGFzVHJlZSAmJiAhdGhpcy5oYXNUcmVlVGFibGUpIHtcclxuICAgICAgcmVzaXplUmVmLnB1c2godGhpcy50cmVlUmVmPy5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICBYUmVzaXplKC4uLnJlc2l6ZVJlZilcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IHgucmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVSZWYpIHtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy50YWJsZVJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnRyZWVSZWY/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TXVsdGlwbGUoKSB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKSB7XHJcbiAgICAgIGlmICghdGhpcy50YWJsZUNvbHVtbnMuZmluZCgoeCkgPT4geC5yb3dDaGVja2VkKSkge1xyXG4gICAgICAgIHRoaXMudGFibGVDb2x1bW5zID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogJyRjaGVja2VkJyxcclxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlhbG9nQ2hlY2tib3hMYWJlbCxcclxuICAgICAgICAgICAgcm93Q2hlY2tlZDogdHJ1ZSxcclxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZGlhbG9nQ2hlY2tib3hXaWR0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRoaXMudGFibGVDb2x1bW5zXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0V2lkdGgoKSB7XHJcbiAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMuZGlhbG9nV2lkdGgpKSB7XHJcbiAgICAgIGlmICgodGhpcy5oYXNUYWJsZSAmJiB0aGlzLmhhc1RyZWUpIHx8IHRoaXMuaGFzVGFibGUpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1dpZHRoID0gJzUwcmVtJztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUgJiYgdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nV2lkdGggPSAnMzByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nV2lkdGggPSAnMjByZW0nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93TW9kYWwoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuZGlhbG9nVmlzaWJsZSk7XHJcbiAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMudGVtcCA9ICh0aGlzLnZhbHVlIGFzIEFycmF5PGFueT4pLm1hcCgoeCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgeCkpO1xyXG4gICAgICAgIHRoaXMuc2V0VGFibGVDaGVja2VkUm93KCk7XHJcbiAgICAgICAgdGhpcy5zZXRUcmVlQ2hlY2tlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFibGVBY3RpdmF0ZWRSb3cgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZCA9IHRoaXMudmFsdWUuaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAgPSB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUpIHtcclxuICAgICAgdGhpcy50YWJsZUNvbS52aXJ0dWFsQm9keT8uc2Nyb2xsVG9JbmRleCgwKTtcclxuICAgICAgdGhpcy50YWJsZUNvbS52aXJ0dWFsQm9keT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFRhYmxlQ2hlY2tlZFJvdygpIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCBYSXNVbmRlZmluZWQodGhpcy50ZW1wKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaWRzID0gKHRoaXMudGVtcCBhcyBBcnJheTxhbnk+KS5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgdGhpcy50YWJsZUNoZWNrZWRSb3cgPSB7XHJcbiAgICAgIC4uLnRoaXMudGFibGVDaGVja2VkUm93LFxyXG4gICAgICAkY2hlY2tlZDogaWRzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2V0VHJlZUNoZWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlTXVsdGlwbGUpIHRoaXMudHJlZUNoZWNrZWQgPSB0aGlzLnRlbXAubWFwKCh4OiBhbnkpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc3VyZSgpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRlbXA7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VNb2RhbCgpIHtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGRpYWxvZ0Nsb3NlRG9uZSgpIHtcclxuICAgIGlmICh0aGlzLmhhc1RyZWUpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlbXAgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGVtcENsb3NlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy50ZW1wLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSkge1xyXG4gICAgICBsZXQgaXQgPSB0aGlzLnRhYmxlQ29tPy50YWJsZURhdGEuZmluZCgoeCkgPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0WyckY2hlY2tlZCddID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbT8uYm9keUNoYW5nZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICBsZXQgaXQgPSB0aGlzLnRyZWVDb20/LnRyZWVEYXRhLmZpbmQoKHgpID0+IGl0ZW0uaWQgPT09IHguaWQpO1xyXG4gICAgICBpZiAoaXQpIHtcclxuICAgICAgICBpdC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgaXQuY2hhbmdlICYmIGl0LmNoYW5nZSgpO1xyXG4gICAgICAgIHRoaXMudHJlZUNvbT8uY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRhZ0Nsb3NlKGluZGV4OiBudW1iZXIgPSAtMSkge1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGFibGVBY3RpdmF0ZWRSb3cgPSBudWxsO1xyXG4gICAgICBpZiAoIXRoaXMuaGFzVHJlZVRhYmxlICYmIHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5yb3dNdWx0aXBsZShkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcCA9IGRhdGE7XHJcbiAgICAgIHRoaXMuc3VyZSgpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvd011bHRpcGxlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRlbXAgPT09ICd1bmRlZmluZWQnKSB0aGlzLnRlbXAgPSBbXTtcclxuICAgIGlmIChkYXRhWyckY2hlY2tlZCddKSB7XHJcbiAgICAgIHRoaXMudGVtcCA9IFsuLi50aGlzLnRlbXAsIGRhdGFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNwbGljZShcclxuICAgICAgICAodGhpcy50ZW1wIGFzIEFycmF5PGFueT4pLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gZGF0YS5pZCksXHJcbiAgICAgICAgMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHJlZU11bHRpcGxlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRlbXAgPT09ICd1bmRlZmluZWQnKSB0aGlzLnRlbXAgPSBbXTtcclxuICAgIC8vIG5vZGUuJGNoZWNrZWQgPSAhbm9kZS4kY2hlY2tlZDtcclxuICAgIGlmIChub2RlLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy50ZW1wID0gWy4uLnRoaXMudGVtcCwgbm9kZV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAuc3BsaWNlKFxyXG4gICAgICAgICh0aGlzLnRlbXAgYXMgQXJyYXk8YW55PikuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBub2RlLmlkKSxcclxuICAgICAgICAxXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0cmVlQWN0aXZhdGVkQ2xpY2sobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAoIXRoaXMuaGFzVHJlZVRhYmxlICYmIHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIC8vIHRoaXMudHJlZU11bHRpcGxlKG5vZGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGVtcCA9IG5vZGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy50cmVlVGFibGVDb25uZWN0KSB7XHJcbiAgICAgIGlmICghdGhpcy50YWJsZVF1ZXJ5KSB0aGlzLnRhYmxlUXVlcnkgPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLnRhYmxlUXVlcnkuZmlsdGVyKSB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyID0gW107XHJcbiAgICAgIGxldCBmaWVsZCA9IHRoaXMudGFibGVRdWVyeS5maWx0ZXIuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gdGhpcy50cmVlVGFibGVDb25uZWN0KTtcclxuICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgZmllbGQudmFsdWUgPSBub2RlLmlkO1xyXG4gICAgICAgIGZpZWxkLm9wZXJhdGlvbiA9ICc9JztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRoaXMudGFibGVRdWVyeS5maWx0ZXIsIHsgZmllbGQ6IHRoaXMudHJlZVRhYmxlQ29ubmVjdCwgdmFsdWU6IG5vZGUuaWQsIG9wZXJhdGlvbjogJz0nIH1dO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGFibGVDb20uY2hhbmdlKDEpO1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZCA9IG5vZGUuaWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyZWVBY3RpdmF0ZWRDaGFuZ2UuZW1pdChub2RlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRyZWVDaGVja2JveENoYW5nZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIHRoaXMudHJlZU11bHRpcGxlKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICBmb3JtQ29udHJvbENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgdGhpcy50cmVlQ29tPy5zZXREYXRhKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2soKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xyXG4gICAgICB0aGlzLnNlYXJjaC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaGFzU2VhcmNoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkgfHwgW107XHJcbiAgICB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyID0gdGhpcy50YWJsZVF1ZXJ5LmZpbHRlciB8fCBbXTtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy50YWJsZVF1ZXJ5LmZpbHRlci5maW5kKCh4KSA9PiB4LmZpZWxkID09PSB0aGlzLnNlYXJjaC5maWVsZCk7XHJcblxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIGZpZWxkLnZhbHVlID0gdGhpcy5zZWFyY2gudmFsdWUgfHwgJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRoaXMudGFibGVRdWVyeT8uZmlsdGVyLCB0aGlzLnNlYXJjaF07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50YWJsZUNvbS5jaGFuZ2UoMSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjZmluZFxyXG4gIGNsYXNzPVwieC1maW5kXCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1jaGVja2VkXT1cInZhbHVlXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcclxuPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIiBbbmdDbGFzc109XCJsYWJlbE1hcFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwieC1maW5kLXJvd1wiPlxyXG4gICAgPHgtYnV0dG9uICNidXR0b25Db20gaWNvbj1cImZ0by1zZWFyY2hcIiBbb25seUljb25dPVwiIWJvcmRlcmVkXCIgW3NpemVdPVwic2l6ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJzaG93TW9kYWwoKVwiPjwveC1idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1maW5kLXRhZ3NcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlOyBlbHNlIHNpbmdsZVRwbFwiPlxyXG4gICAgICAgIDx4LXRhZ1xyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCJcclxuICAgICAgICAgIGNsb3NhYmxlXHJcbiAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICAgIFtib3JkZXJlZF09XCJib3JkZXJlZFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNsb3NlKT1cInRhZ0Nsb3NlKGkpXCJcclxuICAgICAgICAgID57eyBpdGVtW2NvbHVtbkxhYmVsXSB9fTwveC10YWdcclxuICAgICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVRwbD5cclxuICAgICAgICA8eC10YWcgKm5nSWY9XCJ2YWx1ZVwiIGNsb3NhYmxlIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtib3JkZXJlZF09XCJib3JkZXJlZFwiIFtzaXplXT1cInNpemVcIiAoY2xvc2UpPVwidGFnQ2xvc2UoKVwiPnt7XHJcbiAgICAgICAgICB2YWx1ZVtjb2x1bW5MYWJlbF1cclxuICAgICAgICB9fTwveC10YWc+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48eC1kaWFsb2dcclxuICAjZGlhbG9nQ29tXHJcbiAgW3RpdGxlXT1cImRpYWxvZ1RpdGxlXCJcclxuICBbd2lkdGhdPVwiZGlhbG9nV2lkdGhcIlxyXG4gIFtoZWlnaHRdPVwiZGlhbG9nSGVpZ2h0XCJcclxuICBbYnV0dG9uc0NlbnRlcl09XCJkaWFsb2dCdXR0b25zQ2VudGVyXCJcclxuICBbKHZpc2libGUpXT1cImRpYWxvZ1Zpc2libGVcIlxyXG4gICh2aXNpYmxlQ2hhbmdlKT1cImRpYWxvZ1Zpc2libGVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAoY2xvc2VEb25lKT1cImRpYWxvZ0Nsb3NlRG9uZSgpXCJcclxuICAoY2FuY2VsKT1cImNsb3NlTW9kYWwoKVwiXHJcbiAgKGNsb3NlKT1cImNsb3NlTW9kYWwoKVwiXHJcbiAgKGNvbmZpcm0pPVwic3VyZSgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nXCIgW2NsYXNzLngtZmluZC1kaWFsb2ctdHJlZS10YWJsZV09XCJoYXNUYWJsZSAmJiBoYXNUcmVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10cmVlXCIgKm5nSWY9XCJoYXNUcmVlXCIgI3RyZWVSZWYgW3N0eWxlLmhlaWdodC5weF09XCJoYXNUcmVlVGFibGUgJiYgbXVsdGlwbGUgJiYgaGVpZ2h0XCI+XHJcbiAgICAgIDx4LXRyZWVcclxuICAgICAgICAjdHJlZUNvbVxyXG4gICAgICAgIFtkYXRhXT1cInRyZWVEYXRhXCJcclxuICAgICAgICBub2RlSGVpZ2h0PVwiMS44XCJcclxuICAgICAgICBbKG1hbnVhbCldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICAgICAgW2FjdGl2YXRlZElkXT1cInRyZWVBY3RpdmF0ZWRJZFwiXHJcbiAgICAgICAgW2V4cGFuZGVkTGV2ZWxdPVwidHJlZUV4cGFuZGVkTGV2ZWxcIlxyXG4gICAgICAgIChhY3RpdmF0ZWRDaGFuZ2UpPVwidHJlZUFjdGl2YXRlZENsaWNrKCRldmVudClcIlxyXG4gICAgICAgIFtjaGVja2JveF09XCJoYXNUcmVlTXVsdGlwbGVcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInRyZWVDaGVja2VkXCJcclxuICAgICAgICAoY2hlY2tib3hDaGFuZ2UpPVwidHJlZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtsZXZlbENoZWNrXT1cIiFoYXNUcmVlTXVsdGlwbGVcIlxyXG4gICAgICA+PC94LXRyZWU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRhYmxlXCIgKm5nSWY9XCJoYXNUYWJsZVwiICN0YWJsZVJlZj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1zZWFyY2hcIiAqbmdJZj1cImhhc1NlYXJjaFwiPlxyXG4gICAgICAgIDx4LWlucHV0IFtsYWJlbF09XCJzZWFyY2gubGFiZWxcIiBkaXJlY3Rpb249XCJyb3dcIiAoeEtleWRvd24pPVwic2VhcmNoS2V5RG93bigkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2gudmFsdWVcIj48L3gtaW5wdXQ+XHJcbiAgICAgICAgPHgtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgcGxhaW4gKGNsaWNrKT1cInNlYXJjaENsaWNrKClcIj57eyBzZWFyY2guYnV0dG9uIHx8ICfmn6Xor6InIH19PC94LWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx4LXRhYmxlXHJcbiAgICAgICAgI3RhYmxlQ29tXHJcbiAgICAgICAgW2RhdGFdPVwidGFibGVEYXRhXCJcclxuICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgIFsobWFudWFsKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAgICAgICBbKGluZGV4KV09XCJ0YWJsZUluZGV4XCJcclxuICAgICAgICBbKHNpemUpXT1cInRhYmxlU2l6ZVwiXHJcbiAgICAgICAgW3F1ZXJ5XT1cInRhYmxlUXVlcnlcIlxyXG4gICAgICAgIFt0b3RhbF09XCJ0YWJsZVRvdGFsXCJcclxuICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwiIW11bHRpcGxlXCJcclxuICAgICAgICBbY2hlY2tlZFJvd109XCJ0YWJsZUNoZWNrZWRSb3dcIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cInRhYmxlTG9hZGluZ1wiXHJcbiAgICAgICAgKGluZGV4Q2hhbmdlKT1cInRhYmxlSW5kZXhDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc29ydENoYW5nZSk9XCJ0YWJsZVNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICBbKGFjdGl2YXRlZFJvdyldPVwidGFibGVBY3RpdmF0ZWRSb3dcIlxyXG4gICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwidGFibGVBY3RpdmF0ZWRSb3dDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3Jvd0hlaWdodF09XCJ0YWJsZVJvd0hlaWdodFwiXHJcbiAgICAgICAgW2JvZHlIZWlnaHRdPVwidGFibGVCb2R5SGVpZ2h0XCJcclxuICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ0YWJsZVZpcnR1YWxTY3JvbGxcIlxyXG4gICAgICAgIFttaW5CdWZmZXJQeF09XCJ0YWJsZU1pbkJ1ZmZlclB4XCJcclxuICAgICAgICBbbWF4QnVmZmVyUHhdPVwidGFibGVNYXhCdWZmZXJQeFwiXHJcbiAgICAgICAgW2FkYXB0aW9uSGVpZ2h0XT1cInRhYmxlQWRhcHRpb25IZWlnaHRcIlxyXG4gICAgICAgIFtkb2NQZXJjZW50XT1cInRhYmxlRG9jUGVyY2VudFwiXHJcbiAgICAgID48L3gtdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZVwiIGNsYXNzPVwieC1maW5kLWRpYWxvZy1jaGVja2VkXCIgW2NsYXNzLngtZmluZC1lbXB0eV09XCJnZXRFbXB0eVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCI+XHJcbiAgICAgIDx4LWVtcHR5ICpuZ0lmPVwiZ2V0RW1wdHlcIiBbY29udGVudF09XCJkaWFsb2dFbXB0eUNvbnRlbnRcIj48L3gtZW1wdHk+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRhZ3NcIj5cclxuICAgICAgICA8eC10YWcgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGVtcDsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIiBjbG9zYWJsZSAoY2xvc2UpPVwidGVtcENsb3NlKGksIGl0ZW0pXCI+XHJcbiAgICAgICAgICA8c3Bhbj57eyBpdGVtW2NvbHVtbkxhYmVsXSB9fTwvc3Bhbj5cclxuICAgICAgICA8L3gtdGFnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3gtZGlhbG9nPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0cmVlTGFiZWxUcGwgbGV0LW5vZGU9XCIkbm9kZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRyZWUtbm9kZVwiPlxyXG4gICAgPHNwYW4+e3sgbm9kZS5sYWJlbCB9fSA8L3NwYW4+XHJcbiAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hlY2tcIiAqbmdJZj1cIm5vZGUuJGNoZWNrZWRcIj48L3gtaWNvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
359
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFrQixRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUkzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVV2RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFvRS9DLFlBQW1CLFFBQW1CLEVBQWtCLEdBQXNCLEVBQVMsYUFBNkI7UUFDbEgsS0FBSyxFQUFFLENBQUM7UUFEUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQWtCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBVnBILFdBQU0sR0FBRyxHQUFHLENBQUM7UUFFTCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVV6QyxDQUFDO0lBOURELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQ1csUUFBUSxDQUFDLEtB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STtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNYLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0MsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNJLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFPWCxRQUFRO3NCQURsQixTQUFTO3VCQUFDLFVBQVU7Z0JBYVYsT0FBTztzQkFEakIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhGaW5kUHJvcGVydHksIFhGaW5kUHJlZml4IH0gZnJvbSAnLi9maW5kLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWENsZWFyQ2xhc3MsIFhSZXNpemUsIFhJc1VuZGVmaW5lZCwgWElzQ2hhbmdlLCBYQ29uZmlnU2VydmljZSwgWElzRW1wdHkgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlQ29tcG9uZW50LCBYVGFibGVSb3cgfSBmcm9tICdAbmctbmVzdC91aS90YWJsZSc7XHJcbmltcG9ydCB7IFhEaWFsb2dDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9kaWFsb2cnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlLCBYVHJlZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RyZWUnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEZpbmRQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWEZpbmRDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb21wb25lbnQgZXh0ZW5kcyBYRmluZFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaW5kJywgeyBzdGF0aWM6IHRydWUgfSkgZmluZCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29tJykgZGlhbG9nQ29tITogWERpYWxvZ0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbScpIHRhYmxlQ29tITogWFRhYmxlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWVDb20nKSB0cmVlQ29tITogWFRyZWVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYnV0dG9uQ29tJykgYnV0dG9uQ29tITogWEJ1dHRvbkNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBfdGFibGVSZWYhOiBFbGVtZW50UmVmO1xyXG4gIHB1YmxpYyBnZXQgdGFibGVSZWYoKTogRWxlbWVudFJlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVSZWY7XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlUmVmJylcclxuICBwdWJsaWMgc2V0IHRhYmxlUmVmKHZhbHVlOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLl90YWJsZVJlZiA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlICYmIHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZXRTdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyZWVSZWYhOiBFbGVtZW50UmVmO1xyXG4gIHB1YmxpYyBnZXQgdHJlZVJlZigpOiBFbGVtZW50UmVmIHtcclxuICAgIHJldHVybiB0aGlzLl90cmVlUmVmO1xyXG4gIH1cclxuICBAVmlld0NoaWxkKCd0cmVlUmVmJylcclxuICBwdWJsaWMgc2V0IHRyZWVSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuX3RyZWVSZWYgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RW1wdHkoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMudGVtcCB8fCB0aGlzLnRlbXAubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1RhYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVDb2x1bW5zPy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1RyZWUoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoQXJyYXkuaXNBcnJheSh0aGlzLnRyZWVEYXRhKSAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA+IDApIHx8IHRoaXMudHJlZURhdGEgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCB0aGlzLnRyZWVEYXRhIGluc3RhbmNlb2YgT2JzZXJ2YWJsZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNUcmVlVGFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNUYWJsZSAmJiB0aGlzLmhhc1RyZWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzVHJlZU11bHRpcGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzVHJlZSAmJiAhdGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy5tdWx0aXBsZTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNTZWFyY2goKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2ggJiYgdGhpcy5oYXNUYWJsZTtcclxuICB9XHJcblxyXG4gIHRlbXA6IGFueTtcclxuICBoZWlnaHQgPSAxMDA7XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgdGFibGVEYXRhLCBsYWJlbEFsaWduLCBzaXplIH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKHRhYmxlRGF0YSkgJiYgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICAgIFhJc0NoYW5nZShsYWJlbEFsaWduLCBzaXplKSAmJiB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RmxleCh0aGlzLmZpbmQubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldE11bHRpcGxlKCk7XHJcbiAgICB0aGlzLnNldFdpZHRoKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZSkgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmxhYmVsTWFwLCB0aGlzLmNsYXNzTWFwKTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuY2xhc3NNYXBbYHgtZmluZC0ke3RoaXMuc2l6ZX1gXSA9ICFYSXNFbXB0eSh0aGlzLnNpemUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3Vic2NyaWJlKCkge1xyXG4gICAgbGV0IHJlc2l6ZVJlZjogRWxlbWVudFtdID0gW107XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSkge1xyXG4gICAgICByZXNpemVSZWYgPSBbdGhpcy50YWJsZVJlZj8ubmF0aXZlRWxlbWVudF07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlICYmICF0aGlzLmhhc1RyZWVUYWJsZSkge1xyXG4gICAgICByZXNpemVSZWYucHVzaCh0aGlzLnRyZWVSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIFhSZXNpemUoLi4ucmVzaXplUmVmKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICBpZiAodGhpcy50YWJsZVJlZikge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnRhYmxlUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMudHJlZVJlZj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNdWx0aXBsZSgpIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUpIHtcclxuICAgICAgaWYgKCF0aGlzLnRhYmxlQ29sdW1ucy5maW5kKCh4KSA9PiB4LnJvd0NoZWNrZWQpKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbHVtbnMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAnJGNoZWNrZWQnLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5kaWFsb2dDaGVja2JveExhYmVsLFxyXG4gICAgICAgICAgICByb3dDaGVja2VkOiB0cnVlLFxyXG4gICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kaWFsb2dDaGVja2JveFdpZHRoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGhpcy50YWJsZUNvbHVtbnNcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRXaWR0aCgpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodGhpcy5kaWFsb2dXaWR0aCkpIHtcclxuICAgICAgaWYgKCh0aGlzLmhhc1RhYmxlICYmIHRoaXMuaGFzVHJlZSkgfHwgdGhpcy5oYXNUYWJsZSkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nV2lkdGggPSAnNTByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSAmJiB0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dXaWR0aCA9ICczMHJlbSc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dXaWR0aCA9ICcyMHJlbSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNb2RhbCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5kaWFsb2dWaXNpYmxlKTtcclxuICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wID0gKHRoaXMudmFsdWUgYXMgQXJyYXk8YW55PikubWFwKCh4KSA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSk7XHJcbiAgICAgICAgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICAgICAgICB0aGlzLnNldFRyZWVDaGVja2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSAmJiB0aGlzLmhhc1RyZWUpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkID0gdGhpcy52YWx1ZS5pZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcCA9IHRoaXMubXVsdGlwbGUgPyBbXSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29tLnZpcnR1YWxCb2R5Py5zY3JvbGxUb0luZGV4KDApO1xyXG4gICAgICB0aGlzLnRhYmxlQ29tLnZpcnR1YWxCb2R5Py5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVDaGVja2VkUm93KCkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IFhJc1VuZGVmaW5lZCh0aGlzLnRlbXApKSByZXR1cm47XHJcbiAgICBjb25zdCBpZHMgPSAodGhpcy50ZW1wIGFzIEFycmF5PGFueT4pLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB0aGlzLnRhYmxlQ2hlY2tlZFJvdyA9IHtcclxuICAgICAgLi4udGhpcy50YWJsZUNoZWNrZWRSb3csXHJcbiAgICAgICRjaGVja2VkOiBpZHNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRUcmVlQ2hlY2tlZCgpIHtcclxuICAgIGlmICh0aGlzLmhhc1RyZWVNdWx0aXBsZSkgdGhpcy50cmVlQ2hlY2tlZCA9IHRoaXMudGVtcC5tYXAoKHg6IGFueSkgPT4geC5pZCk7XHJcbiAgfVxyXG5cclxuICBzdXJlKCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudGVtcDtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1vZGFsKCkge1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9nQ2xvc2VEb25lKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzVHJlZSkge1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZCA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVtcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0ZW1wQ2xvc2UoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLnRlbXAuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKSB7XHJcbiAgICAgIGxldCBpdCA9IHRoaXMudGFibGVDb20/LnRhYmxlRGF0YS5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXRbJyRjaGVja2VkJ10gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlQ29tPy5ib2R5Q2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgIGxldCBpdCA9IHRoaXMudHJlZUNvbT8udHJlZURhdGEuZmluZCgoeCkgPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICBpdC5jaGFuZ2UgJiYgaXQuY2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy50cmVlQ29tPy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdGFnQ2xvc2UoaW5kZXg6IG51bWJlciA9IC0xKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdyA9IG51bGw7XHJcbiAgICAgIGlmICghdGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdGFibGVBY3RpdmF0ZWRSb3dDaGFuZ2UoZGF0YTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnJvd011bHRpcGxlKGRhdGEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wID0gZGF0YTtcclxuICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm93TXVsdGlwbGUoZGF0YTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCA9PT0gJ3VuZGVmaW5lZCcpIHRoaXMudGVtcCA9IFtdO1xyXG4gICAgLy8gZGF0YVsnJGNoZWNrZWQnXSA9ICFkYXRhWyckY2hlY2tlZCddO1xyXG4gICAgaWYgKGRhdGFbJyRjaGVja2VkJ10pIHtcclxuICAgICAgdGhpcy50ZW1wID0gWy4uLnRoaXMudGVtcCwgZGF0YV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAuc3BsaWNlKFxyXG4gICAgICAgICh0aGlzLnRlbXAgYXMgQXJyYXk8YW55PikuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBkYXRhLmlkKSxcclxuICAgICAgICAxXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0cmVlTXVsdGlwbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCA9PT0gJ3VuZGVmaW5lZCcpIHRoaXMudGVtcCA9IFtdO1xyXG4gICAgLy8gbm9kZS4kY2hlY2tlZCA9ICFub2RlLiRjaGVja2VkO1xyXG4gICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnRlbXAgPSBbLi4udGhpcy50ZW1wLCBub2RlXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC5zcGxpY2UoXHJcbiAgICAgICAgKHRoaXMudGVtcCBhcyBBcnJheTxhbnk+KS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG5vZGUuaWQpLFxyXG4gICAgICAgIDFcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRyZWVBY3RpdmF0ZWRDbGljayhub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGlmICghdGhpcy5oYXNUcmVlVGFibGUgJiYgdGhpcy5oYXNUcmVlKSB7XHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgLy8gdGhpcy50cmVlTXVsdGlwbGUobm9kZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZW1wID0gbm9kZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWVUYWJsZSAmJiB0aGlzLnRyZWVUYWJsZUNvbm5lY3QpIHtcclxuICAgICAgaWYgKCF0aGlzLnRhYmxlUXVlcnkpIHRoaXMudGFibGVRdWVyeSA9IHt9O1xyXG4gICAgICBpZiAoIXRoaXMudGFibGVRdWVyeS5maWx0ZXIpIHRoaXMudGFibGVRdWVyeS5maWx0ZXIgPSBbXTtcclxuICAgICAgbGV0IGZpZWxkID0gdGhpcy50YWJsZVF1ZXJ5LmZpbHRlci5maW5kKCh4KSA9PiB4LmZpZWxkID09PSB0aGlzLnRyZWVUYWJsZUNvbm5lY3QpO1xyXG4gICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmllbGQub3BlcmF0aW9uID0gJz0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFibGVRdWVyeS5maWx0ZXIgPSBbLi4udGhpcy50YWJsZVF1ZXJ5LmZpbHRlciwgeyBmaWVsZDogdGhpcy50cmVlVGFibGVDb25uZWN0LCB2YWx1ZTogbm9kZS5pZCwgb3BlcmF0aW9uOiAnPScgfV07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWJsZUNvbS5jaGFuZ2UoMSk7XHJcbiAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkID0gbm9kZS5pZDtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZUFjdGl2YXRlZENoYW5nZS5lbWl0KG5vZGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHJlZUNoZWNrYm94Q2hhbmdlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgdGhpcy50cmVlTXVsdGlwbGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcblxyXG4gIGZvcm1Db250cm9sQ2hhbmdlcygpIHtcclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIHRoaXMubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICB0aGlzLnRyZWVDb20/LnNldERhdGEoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5zZWFyY2hDbGljaygpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGFibGVRdWVyeSA9IHRoaXMudGFibGVRdWVyeSB8fCBbXTtcclxuICAgIHRoaXMudGFibGVRdWVyeS5maWx0ZXIgPSB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyIHx8IFtdO1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnRhYmxlUXVlcnkuZmlsdGVyLmZpbmQoKHgpID0+IHguZmllbGQgPT09IHRoaXMuc2VhcmNoLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgZmllbGQudmFsdWUgPSB0aGlzLnNlYXJjaC52YWx1ZSB8fCAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVRdWVyeS5maWx0ZXIgPSBbLi4udGhpcy50YWJsZVF1ZXJ5Py5maWx0ZXIsIHRoaXMuc2VhcmNoXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmxlQ29tLmNoYW5nZSgxKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICNmaW5kXHJcbiAgY2xhc3M9XCJ4LWZpbmRcIlxyXG4gIFtjbGFzcy54LWZsZXhdPVwianVzdGlmeSB8fCBhbGlnbiB8fCBkaXJlY3Rpb25cIlxyXG4gIFtjbGFzcy54LWNoZWNrZWRdPVwidmFsdWVcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MueC1yZXF1aXJlZF09XCJyZXF1aXJlZElzRW1wdHlcIlxyXG4gIFtjbGFzcy54LWludmFsaWRdPVwiaW52YWxpZFwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbY2xhc3MueC1maW5kLWxhYmVsLXJlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIiBbbmdDbGFzc109XCJsYWJlbE1hcFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwieC1maW5kLXJvd1wiPlxyXG4gICAgPHgtYnV0dG9uXHJcbiAgICAgICNidXR0b25Db21cclxuICAgICAgaWNvbj1cImZ0by1zZWFyY2hcIlxyXG4gICAgICBbb25seUljb25dPVwiIWJvcmRlcmVkXCJcclxuICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIGF0dHJUeXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cInNob3dNb2RhbCgpXCJcclxuICAgID48L3gtYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZmluZC10YWdzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZTsgZWxzZSBzaW5nbGVUcGxcIj5cclxuICAgICAgICA8eC10YWdcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgICAgICBjbG9zYWJsZVxyXG4gICAgICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgICBbYm9yZGVyZWRdPVwiYm9yZGVyZWRcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChjbG9zZSk9XCJ0YWdDbG9zZShpKVwiXHJcbiAgICAgICAgICA+e3sgaXRlbVtjb2x1bW5MYWJlbF0gfX08L3gtdGFnXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVUcGw+XHJcbiAgICAgICAgPHgtdGFnICpuZ0lmPVwidmFsdWVcIiBjbG9zYWJsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYm9yZGVyZWRdPVwiYm9yZGVyZWRcIiBbc2l6ZV09XCJzaXplXCIgKGNsb3NlKT1cInRhZ0Nsb3NlKClcIj57e1xyXG4gICAgICAgICAgdmFsdWVbY29sdW1uTGFiZWxdXHJcbiAgICAgICAgfX08L3gtdGFnPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHgtZGlhbG9nXHJcbiAgI2RpYWxvZ0NvbVxyXG4gIFt0aXRsZV09XCJkaWFsb2dUaXRsZVwiXHJcbiAgW3dpZHRoXT1cImRpYWxvZ1dpZHRoXCJcclxuICBbaGVpZ2h0XT1cImRpYWxvZ0hlaWdodFwiXHJcbiAgW2J1dHRvbnNDZW50ZXJdPVwiZGlhbG9nQnV0dG9uc0NlbnRlclwiXHJcbiAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAodmlzaWJsZUNoYW5nZSk9XCJkaWFsb2dWaXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgKGNsb3NlRG9uZSk9XCJkaWFsb2dDbG9zZURvbmUoKVwiXHJcbiAgKGNhbmNlbCk9XCJjbG9zZU1vZGFsKClcIlxyXG4gIChjbG9zZSk9XCJjbG9zZU1vZGFsKClcIlxyXG4gIChjb25maXJtKT1cInN1cmUoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZ1wiIFtjbGFzcy54LWZpbmQtZGlhbG9nLXRyZWUtdGFibGVdPVwiaGFzVGFibGUgJiYgaGFzVHJlZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZVwiICpuZ0lmPVwiaGFzVHJlZVwiICN0cmVlUmVmIFtzdHlsZS5oZWlnaHQucHhdPVwiaGFzVHJlZVRhYmxlICYmIG11bHRpcGxlICYmIGhlaWdodFwiPlxyXG4gICAgICA8eC10cmVlXHJcbiAgICAgICAgI3RyZWVDb21cclxuICAgICAgICBbZGF0YV09XCJ0cmVlRGF0YVwiXHJcbiAgICAgICAgbm9kZUhlaWdodD1cIjEuOFwiXHJcbiAgICAgICAgWyhtYW51YWwpXT1cImRpYWxvZ1Zpc2libGVcIlxyXG4gICAgICAgIFthY3RpdmF0ZWRJZF09XCJ0cmVlQWN0aXZhdGVkSWRcIlxyXG4gICAgICAgIFtleHBhbmRlZExldmVsXT1cInRyZWVFeHBhbmRlZExldmVsXCJcclxuICAgICAgICAoYWN0aXZhdGVkQ2hhbmdlKT1cInRyZWVBY3RpdmF0ZWRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICBbY2hlY2tib3hdPVwiaGFzVHJlZU11bHRpcGxlXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJ0cmVlQ2hlY2tlZFwiXHJcbiAgICAgICAgKGNoZWNrYm94Q2hhbmdlKT1cInRyZWVDaGVja2JveENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICBbbGV2ZWxDaGVja109XCIhaGFzVHJlZU11bHRpcGxlXCJcclxuICAgICAgPjwveC10cmVlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10YWJsZVwiICpuZ0lmPVwiaGFzVGFibGVcIiAjdGFibGVSZWY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtc2VhcmNoXCIgKm5nSWY9XCJoYXNTZWFyY2hcIj5cclxuICAgICAgICA8eC1pbnB1dCBbbGFiZWxdPVwic2VhcmNoLmxhYmVsXCIgZGlyZWN0aW9uPVwicm93XCIgKHhLZXlkb3duKT1cInNlYXJjaEtleURvd24oJGV2ZW50KVwiIFsobmdNb2RlbCldPVwic2VhcmNoLnZhbHVlXCI+PC94LWlucHV0PlxyXG4gICAgICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHBsYWluIChjbGljayk9XCJzZWFyY2hDbGljaygpXCI+e3sgc2VhcmNoLmJ1dHRvbiB8fCAn5p+l6K+iJyB9fTwveC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8eC10YWJsZVxyXG4gICAgICAgICN0YWJsZUNvbVxyXG4gICAgICAgIFtkYXRhXT1cInRhYmxlRGF0YVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwidGFibGVDb2x1bW5zXCJcclxuICAgICAgICBbKG1hbnVhbCldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICAgICAgWyhpbmRleCldPVwidGFibGVJbmRleFwiXHJcbiAgICAgICAgWyhzaXplKV09XCJ0YWJsZVNpemVcIlxyXG4gICAgICAgIFtxdWVyeV09XCJ0YWJsZVF1ZXJ5XCJcclxuICAgICAgICBbdG90YWxdPVwidGFibGVUb3RhbFwiXHJcbiAgICAgICAgW2FsbG93U2VsZWN0Um93XT1cIiFtdWx0aXBsZVwiXHJcbiAgICAgICAgW2FsbG93Q2hlY2tSb3ddPVwibXVsdGlwbGVcIlxyXG4gICAgICAgIFtjaGVja2VkUm93XT1cInRhYmxlQ2hlY2tlZFJvd1wiXHJcbiAgICAgICAgW2xvYWRpbmddPVwidGFibGVMb2FkaW5nXCJcclxuICAgICAgICAoaW5kZXhDaGFuZ2UpPVwidGFibGVJbmRleENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChzb3J0Q2hhbmdlKT1cInRhYmxlU29ydENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZUFjdGl2YXRlZFJvd1wiXHJcbiAgICAgICAgKGFjdGl2YXRlZFJvd0NoYW5nZSk9XCJ0YWJsZUFjdGl2YXRlZFJvd0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICBbcm93SGVpZ2h0XT1cInRhYmxlUm93SGVpZ2h0XCJcclxuICAgICAgICBbYm9keUhlaWdodF09XCJ0YWJsZUJvZHlIZWlnaHRcIlxyXG4gICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInRhYmxlVmlydHVhbFNjcm9sbFwiXHJcbiAgICAgICAgW21pbkJ1ZmZlclB4XT1cInRhYmxlTWluQnVmZmVyUHhcIlxyXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJ0YWJsZU1heEJ1ZmZlclB4XCJcclxuICAgICAgICBbYWRhcHRpb25IZWlnaHRdPVwidGFibGVBZGFwdGlvbkhlaWdodFwiXHJcbiAgICAgICAgW2RvY1BlcmNlbnRdPVwidGFibGVEb2NQZXJjZW50XCJcclxuICAgICAgPjwveC10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlXCIgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLWNoZWNrZWRcIiBbY2xhc3MueC1maW5kLWVtcHR5XT1cImdldEVtcHR5XCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj5cclxuICAgICAgPHgtZW1wdHkgKm5nSWY9XCJnZXRFbXB0eVwiIFtjb250ZW50XT1cImRpYWxvZ0VtcHR5Q29udGVudFwiPjwveC1lbXB0eT5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdGFnc1wiPlxyXG4gICAgICAgIDx4LXRhZyAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0ZW1wOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiIGNsb3NhYmxlIChjbG9zZSk9XCJ0ZW1wQ2xvc2UoaSwgaXRlbSlcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW1bY29sdW1uTGFiZWxdIH19PC9zcGFuPlxyXG4gICAgICAgIDwveC10YWc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwveC1kaWFsb2c+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyZWVMYWJlbFRwbCBsZXQtbm9kZT1cIiRub2RlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZS1ub2RlXCI+XHJcbiAgICA8c3Bhbj57eyBub2RlLmxhYmVsIH19IDwvc3Bhbj5cclxuICAgIDx4LWljb24gdHlwZT1cImZ0by1jaGVja1wiICpuZ0lmPVwibm9kZS4kY2hlY2tlZFwiPjwveC1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -3,33 +3,36 @@ import { XControlProperty, XCascadeControl, XInputControl, XSelectControl, XChec
|
|
|
3
3
|
import { FormControlName, Validators, UntypedFormControl } from '@angular/forms';
|
|
4
4
|
import { XIsEmpty } from '@ng-nest/ui/core';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
|
-
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { map, takeUntil } from 'rxjs/operators';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@ng-nest/ui/core";
|
|
9
|
-
import * as i2 from "@
|
|
10
|
-
import * as i3 from "@angular/
|
|
11
|
-
import * as i4 from "@
|
|
12
|
-
import * as i5 from "@ng-nest/ui/
|
|
13
|
-
import * as i6 from "@ng-nest/ui/
|
|
14
|
-
import * as i7 from "@ng-nest/ui/
|
|
15
|
-
import * as i8 from "@ng-nest/ui/
|
|
16
|
-
import * as i9 from "@ng-nest/ui/
|
|
17
|
-
import * as i10 from "@ng-nest/ui/
|
|
18
|
-
import * as i11 from "@ng-nest/ui/
|
|
19
|
-
import * as i12 from "@ng-nest/ui/
|
|
20
|
-
import * as i13 from "@ng-nest/ui/
|
|
21
|
-
import * as i14 from "@ng-nest/ui/
|
|
22
|
-
import * as i15 from "@ng-nest/ui/
|
|
23
|
-
import * as i16 from "@ng-nest/ui/
|
|
24
|
-
import * as i17 from "@ng-nest/ui/
|
|
25
|
-
import * as i18 from "@ng-nest/ui/
|
|
9
|
+
import * as i2 from "@ng-nest/ui/i18n";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/forms";
|
|
12
|
+
import * as i5 from "@ng-nest/ui/input";
|
|
13
|
+
import * as i6 from "@ng-nest/ui/select";
|
|
14
|
+
import * as i7 from "@ng-nest/ui/cascade";
|
|
15
|
+
import * as i8 from "@ng-nest/ui/checkbox";
|
|
16
|
+
import * as i9 from "@ng-nest/ui/color-picker";
|
|
17
|
+
import * as i10 from "@ng-nest/ui/date-picker";
|
|
18
|
+
import * as i11 from "@ng-nest/ui/input-number";
|
|
19
|
+
import * as i12 from "@ng-nest/ui/radio";
|
|
20
|
+
import * as i13 from "@ng-nest/ui/rate";
|
|
21
|
+
import * as i14 from "@ng-nest/ui/slider-select";
|
|
22
|
+
import * as i15 from "@ng-nest/ui/switch";
|
|
23
|
+
import * as i16 from "@ng-nest/ui/time-picker";
|
|
24
|
+
import * as i17 from "@ng-nest/ui/textarea";
|
|
25
|
+
import * as i18 from "@ng-nest/ui/find";
|
|
26
|
+
import * as i19 from "@ng-nest/ui/auto-complete";
|
|
26
27
|
export class XControlComponent extends XControlProperty {
|
|
27
28
|
constructor(
|
|
28
29
|
// @Host() @Optional() public form: XFormComponent,
|
|
29
|
-
cdr, configService) {
|
|
30
|
+
cdr, configService, i18n) {
|
|
30
31
|
super();
|
|
31
32
|
this.cdr = cdr;
|
|
32
33
|
this.configService = configService;
|
|
34
|
+
this.i18n = i18n;
|
|
35
|
+
this.locale = {};
|
|
33
36
|
this._sharedProps = ['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign'];
|
|
34
37
|
this._changeProps = ['label', ...this._sharedProps];
|
|
35
38
|
this._validatorFns = [];
|
|
@@ -38,6 +41,8 @@ export class XControlComponent extends XControlProperty {
|
|
|
38
41
|
ngOnInit() {
|
|
39
42
|
this.option = { ...this.option };
|
|
40
43
|
this.setProps();
|
|
44
|
+
if (XIsEmpty(this.option.label))
|
|
45
|
+
this.option.label = '';
|
|
41
46
|
this.option.label = `${this.option.label}${this.form.labelSuffix}`;
|
|
42
47
|
this._control = this.createControl(this.option);
|
|
43
48
|
this._formControl = new UntypedFormControl(this._control.value);
|
|
@@ -55,6 +60,12 @@ export class XControlComponent extends XControlProperty {
|
|
|
55
60
|
});
|
|
56
61
|
this.form.controlComponents[this._control.id].formControlChanges();
|
|
57
62
|
};
|
|
63
|
+
this.i18n.localeChange
|
|
64
|
+
.pipe(map((x) => x.form), takeUntil(this._unSubject))
|
|
65
|
+
.subscribe((x) => {
|
|
66
|
+
this.locale = x;
|
|
67
|
+
this.cdr.markForCheck();
|
|
68
|
+
});
|
|
58
69
|
}
|
|
59
70
|
ngAfterViewInit() {
|
|
60
71
|
Object.assign(this.control.valueAccessor, this._control);
|
|
@@ -111,11 +122,12 @@ export class XControlComponent extends XControlProperty {
|
|
|
111
122
|
let control = this._formControl;
|
|
112
123
|
if (state === 'INVALID' && this._formControl.errors !== null) {
|
|
113
124
|
for (const key in control.errors) {
|
|
125
|
+
const label = this._control.label || this._control.id;
|
|
114
126
|
if (key === 'required') {
|
|
115
|
-
control.messages = [`${this.
|
|
127
|
+
control.messages = [`${label} ${this.locale?.required || 'required'}`];
|
|
116
128
|
}
|
|
117
129
|
else if (key === 'pattern') {
|
|
118
|
-
control.messages = [`${
|
|
130
|
+
control.messages = [`${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];
|
|
119
131
|
}
|
|
120
132
|
}
|
|
121
133
|
}
|
|
@@ -160,12 +172,12 @@ export class XControlComponent extends XControlProperty {
|
|
|
160
172
|
}
|
|
161
173
|
}
|
|
162
174
|
}
|
|
163
|
-
/** @nocollapse */ XControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XControlComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
/** @nocollapse */ XControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XControlComponent, selector: "x-control", inputs: { option: "option", form: "form" }, viewQueries: [{ propertyName: "control", first: true, predicate: FormControlName, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"x-control\" [formGroup]=\"form.formGroup\">\r\n <ng-container [ngSwitch]=\"option.control\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <x-input [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-input>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <x-select [formControlName]=\"option.id\"></x-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascade'\">\r\n <x-cascade [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-cascade>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox [formControlName]=\"option.id\"></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <x-color-picker [formControlName]=\"option.id\"></x-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-picker'\">\r\n <x-date-picker [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-date-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input-number'\">\r\n <x-input-number [formControlName]=\"option.id\"></x-input-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <x-radio [formControlName]=\"option.id\"></x-radio>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <x-rate [formControlName]=\"option.id\"></x-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slider-select'\">\r\n <x-slider-select [formControlName]=\"option.id\"></x-slider-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <x-switch [formControlName]=\"option.id\"></x-switch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'time-picker'\">\r\n <x-time-picker [formControlName]=\"option.id\"></x-time-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <x-textarea [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'auto-complete'\">\r\n <x-auto-complete [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-auto-complete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'find'\">\r\n <x-find [formControlName]=\"option.id\"></x-find>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", styles: [".x-control{margin:0;padding:0}.x-control x-input,.x-control x-select,.x-control x-date-picker,.x-control x-time-picker,.x-control x-input-number,.x-control x-slider-select,.x-control x-cascade,.x-control x-color-picker,.x-control x-textarea,.x-control x-auto-complete{width:100%}\n"], dependencies: [{ kind: "directive", type:
|
|
175
|
+
/** @nocollapse */ XControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XControlComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.XConfigService }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
+
/** @nocollapse */ XControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XControlComponent, selector: "x-control", inputs: { option: "option", form: "form" }, viewQueries: [{ propertyName: "control", first: true, predicate: FormControlName, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"x-control\" [formGroup]=\"form.formGroup\">\r\n <ng-container [ngSwitch]=\"option.control\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <x-input [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-input>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <x-select [formControlName]=\"option.id\"></x-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascade'\">\r\n <x-cascade [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-cascade>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox [formControlName]=\"option.id\"></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <x-color-picker [formControlName]=\"option.id\"></x-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-picker'\">\r\n <x-date-picker [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-date-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input-number'\">\r\n <x-input-number [formControlName]=\"option.id\"></x-input-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <x-radio [formControlName]=\"option.id\"></x-radio>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <x-rate [formControlName]=\"option.id\"></x-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slider-select'\">\r\n <x-slider-select [formControlName]=\"option.id\"></x-slider-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <x-switch [formControlName]=\"option.id\"></x-switch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'time-picker'\">\r\n <x-time-picker [formControlName]=\"option.id\"></x-time-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <x-textarea [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'auto-complete'\">\r\n <x-auto-complete [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-auto-complete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'find'\">\r\n <x-find [formControlName]=\"option.id\"></x-find>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", styles: [".x-control{margin:0;padding:0}.x-control x-input,.x-control x-select,.x-control x-date-picker,.x-control x-time-picker,.x-control x-input-number,.x-control x-slider-select,.x-control x-cascade,.x-control x-color-picker,.x-control x-textarea,.x-control x-auto-complete{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.XInputComponent, selector: "x-input" }, { kind: "component", type: i6.XSelectComponent, selector: "x-select" }, { kind: "component", type: i7.XCascadeComponent, selector: "x-cascade" }, { kind: "component", type: i8.XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: i9.XColorPickerComponent, selector: "x-color-picker" }, { kind: "component", type: i10.XDatePickerComponent, selector: "x-date-picker" }, { kind: "component", type: i11.XInputNumberComponent, selector: "x-input-number" }, { kind: "component", type: i12.XRadioComponent, selector: "x-radio" }, { kind: "component", type: i13.XRateComponent, selector: "x-rate" }, { kind: "component", type: i14.XSliderSelectComponent, selector: "x-slider-select" }, { kind: "component", type: i15.XSwitchComponent, selector: "x-switch" }, { kind: "component", type: i16.XTimePickerComponent, selector: "x-time-picker" }, { kind: "component", type: i17.XTextareaComponent, selector: "x-textarea" }, { kind: "component", type: i18.XFindComponent, selector: "x-find" }, { kind: "component", type: i19.XAutoCompleteComponent, selector: "x-auto-complete" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
165
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XControlComponent, decorators: [{
|
|
166
178
|
type: Component,
|
|
167
179
|
args: [{ selector: 'x-control', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-control\" [formGroup]=\"form.formGroup\">\r\n <ng-container [ngSwitch]=\"option.control\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <x-input [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-input>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <x-select [formControlName]=\"option.id\"></x-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascade'\">\r\n <x-cascade [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-cascade>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox [formControlName]=\"option.id\"></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <x-color-picker [formControlName]=\"option.id\"></x-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-picker'\">\r\n <x-date-picker [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-date-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input-number'\">\r\n <x-input-number [formControlName]=\"option.id\"></x-input-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <x-radio [formControlName]=\"option.id\"></x-radio>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <x-rate [formControlName]=\"option.id\"></x-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slider-select'\">\r\n <x-slider-select [formControlName]=\"option.id\"></x-slider-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <x-switch [formControlName]=\"option.id\"></x-switch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'time-picker'\">\r\n <x-time-picker [formControlName]=\"option.id\"></x-time-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <x-textarea [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'auto-complete'\">\r\n <x-auto-complete [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-auto-complete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'find'\">\r\n <x-find [formControlName]=\"option.id\"></x-find>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", styles: [".x-control{margin:0;padding:0}.x-control x-input,.x-control x-select,.x-control x-date-picker,.x-control x-time-picker,.x-control x-input-number,.x-control x-slider-select,.x-control x-cascade,.x-control x-color-picker,.x-control x-textarea,.x-control x-auto-complete{width:100%}\n"] }]
|
|
168
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { option: [{
|
|
180
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.XConfigService }, { type: i2.XI18nService }]; }, propDecorators: { option: [{
|
|
169
181
|
type: Input
|
|
170
182
|
}], form: [{
|
|
171
183
|
type: Input
|
|
@@ -173,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
173
185
|
type: ViewChild,
|
|
174
186
|
args: [FormControlName, { static: false }]
|
|
175
187
|
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2NvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsU0FBUyxFQUtWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFJaEIsZUFBZSxFQUVmLGFBQWEsRUFFYixjQUFjLEVBRWQsZ0JBQWdCLEVBRWhCLGFBQWEsRUFHYixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBRW5CLGNBQWMsRUFFZCxZQUFZLEVBRVosb0JBQW9CLEVBRXBCLGtCQUFrQixFQUVsQixtQkFBbUIsRUFHbkIsWUFBWSxFQUdaLGdCQUFnQixFQUNoQixvQkFBb0IsRUFFckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVMzQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBV3JEO0lBQ0UsbURBQW1EO0lBQzVDLEdBQXNCLEVBQ3RCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBSEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBVjlCLGlCQUFZLEdBQUcs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TUFBb0MsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksZUFBZSxDQUFDLE1BQStCLENBQUMsQ0FBQztZQUM5RCxLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxNQUFtQyxDQUFDLENBQUM7WUFDdEUsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFnQyxDQUFDLENBQUM7WUFDaEUsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBNEIsQ0FBQyxDQUFDO1lBQ3hELEtBQUssZUFBZTtnQkFDbEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE1BQW9DLENBQUMsQ0FBQztZQUN4RTtnQkFDRSxPQUFPLElBQUksYUFBYSxDQUFDLE1BQTZCLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7O2lJQWhKVSxpQkFBaUI7cUhBQWpCLGlCQUFpQixzSUFHakIsZUFBZSx1RUMvRDVCLG1oRkFpREE7MkZEV2EsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtxSUFHN0IsTUFBTTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ3lDLE9BQU87c0JBQXJELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYQ29udHJvbFByb3BlcnR5LFxyXG4gIFhGb3JtQ29udHJvbE9wdGlvbixcclxuICBYRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgWEZvcm1Db250cm9sVHlwZSxcclxuICBYQ2FzY2FkZUNvbnRyb2wsXHJcbiAgWENhc2NhZGVDb250cm9sT3B0aW9uLFxyXG4gIFhJbnB1dENvbnRyb2wsXHJcbiAgWElucHV0Q29udHJvbE9wdGlvbixcclxuICBYU2VsZWN0Q29udHJvbCxcclxuICBYU2VsZWN0Q29udHJvbE9wdGlvbixcclxuICBYQ2hlY2tib3hDb250cm9sLFxyXG4gIFhDaGVja2JveENvbnRyb2xPcHRpb24sXHJcbiAgWFJhZGlvQ29udHJvbCxcclxuICBYUmFkaW9Db250cm9sT3B0aW9uLFxyXG4gIFhEYXRlUGlja2VyQ29udHJvbE9wdGlvbixcclxuICBYRGF0ZVBpY2tlckNvbnRyb2wsXHJcbiAgWElucHV0TnVtYmVyQ29udHJvbCxcclxuICBYSW5wdXROdW1iZXJDb250cm9sT3B0aW9uLFxyXG4gIFhTd2l0Y2hDb250cm9sLFxyXG4gIFhTd2l0Y2hDb250cm9sT3B0aW9uLFxyXG4gIFhSYXRlQ29udHJvbCxcclxuICBYUmF0ZUNvbnRyb2xPcHRpb24sXHJcbiAgWFNsaWRlclNlbGVjdENvbnRyb2wsXHJcbiAgWFNsaWRlclNlbGVjdENvbnRyb2xPcHRpb24sXHJcbiAgWFRpbWVQaWNrZXJDb250cm9sLFxyXG4gIFhUaW1lUGlja2VyQ29udHJvbE9wdGlvbixcclxuICBYQ29sb3JQaWNrZXJDb250cm9sLFxyXG4gIFhDb2xvclBpY2tlckNvbnRyb2xPcHRpb24sXHJcbiAgWEZvcm1Db250cm9sLFxyXG4gIFhGaW5kQ29udHJvbCxcclxuICBYRmluZENvbnRyb2xPcHRpb24sXHJcbiAgWFRleHRhcmVhQ29udHJvbE9wdGlvbixcclxuICBYVGV4dGFyZWFDb250cm9sLFxyXG4gIFhBdXRvQ29tcGxldGVDb250cm9sLFxyXG4gIFhBdXRvQ29tcGxldGVDb250cm9sT3B0aW9uXHJcbn0gZnJvbSAnLi9mb3JtLnByb3BlcnR5JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBWYWxpZGF0b3JzLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd4LWNvbnRyb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250cm9sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBYQ29udHJvbFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIG9wdGlvbiE6IFhGb3JtQ29udHJvbE9wdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChGb3JtQ29udHJvbE5hbWUsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250cm9sITogRm9ybUNvbnRyb2xOYW1lO1xyXG4gIHByaXZhdGUgX3NoYXJlZFByb3BzID0gWydzcGFuJywgJ2RpcmVjdGlvbicsICdqdXN0aWZ5JywgJ2FsaWduJywgJ2xhYmVsV2lkdGgnLCAnbGFiZWxBbGlnbiddO1xyXG4gIHByaXZhdGUgX2NoYW5nZVByb3BzID0gWydsYWJlbCcsIC4uLnRoaXMuX3NoYXJlZFByb3BzXTtcclxuICBwcml2YXRlIF9jb250cm9sITogWEZvcm1Db250cm9sVHlwZTtcclxuICBwcml2YXRlIF92YWxpZGF0b3JGbnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIEBIb3N0KCkgQE9wdGlvbmFsKCkgcHVibGljIGZvcm06IFhGb3JtQ29tcG9uZW50LFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3B0aW9uID0geyAuLi50aGlzLm9wdGlvbiB9O1xyXG4gICAgdGhpcy5zZXRQcm9wcygpO1xyXG4gICAgdGhpcy5vcHRpb24ubGFiZWwgPSBgJHt0aGlzLm9wdGlvbi5sYWJlbH0ke3RoaXMuZm9ybS5sYWJlbFN1ZmZpeH1gO1xyXG4gICAgdGhpcy5fY29udHJvbCA9IHRoaXMuY3JlYXRlQ29udHJvbCh0aGlzLm9wdGlvbik7XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5fY29udHJvbC52YWx1ZSk7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuX2Zvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0TWVzc2FnZXMoeCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2NvbnRyb2wuc2V0VmFsaWRhdG9ycyA9ICgpID0+IHRoaXMuc2V0VmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy5mb3JtLmZvcm1Hcm91cC5hZGRDb250cm9sKHRoaXMuX2NvbnRyb2wuaWQsIHRoaXMuX2Zvcm1Db250cm9sKTtcclxuICAgIHRoaXMub3B0aW9uLmNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlUHJvcHMuZm9yRWFjaCgoeDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yICYmIHRoaXMub3B0aW9uW3hdKSB7XHJcbiAgICAgICAgICAodGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgYXMgYW55KVt4XSA9IHRoaXMub3B0aW9uW3hdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sQ29tcG9uZW50c1t0aGlzLl9jb250cm9sLmlkXS5mb3JtQ29udHJvbENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yISwgdGhpcy5fY29udHJvbCBhcyBDb250cm9sVmFsdWVBY2Nlc3Nvcik7XHJcbiAgICB0aGlzLmZvcm0uY29udHJvbFR5cGVzW3RoaXMuX2NvbnRyb2wuaWRdID0gdGhpcy5fY29udHJvbDtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sQ29tcG9uZW50c1t0aGlzLl9jb250cm9sLmlkXSA9IHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yIGFzIFhGb3JtQ29udHJvbENvbXBvbmVudDtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sQ29tcG9uZW50c1t0aGlzLl9jb250cm9sLmlkXS5mb3JtQ29udHJvbENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsaWRhdG9ycygpIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRvckZucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2wuZGlzYWJsZWQgfHwgdGhpcy5mb3JtLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2wucmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLl92YWxpZGF0b3JGbnMgPSBbLi4udGhpcy5fdmFsaWRhdG9yRm5zLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9jb250cm9sLnBhdHRlcm4pIHtcclxuICAgICAgdGhpcy5zZXRQYXR0ZXJuKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvckZucyk7XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzZXRQcm9wcygpIHtcclxuICAgIGZvciAobGV0IHByb3Agb2YgdGhpcy5fc2hhcmVkUHJvcHMpIHtcclxuICAgICAgaWYgKFhJc0VtcHR5KHRoaXMub3B0aW9uW3Byb3BdKSkgdGhpcy5vcHRpb25bcHJvcF0gPSAodGhpcy5mb3JtIGFzIGFueSlbcHJvcF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYXR0ZXJuKCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fY29udHJvbC5wYXR0ZXJuKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHB0IG9mIHRoaXMuX2NvbnRyb2wucGF0dGVybikge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckZucyA9IFsuLi50aGlzLl92YWxpZGF0b3JGbnMsIFZhbGlkYXRvcnMucGF0dGVybihwdCldO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWxpZGF0b3JGbnMgPSBbLi4udGhpcy5fdmFsaWRhdG9yRm5zLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5fY29udHJvbC5wYXR0ZXJuIGFzIFJlZ0V4cCldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGF0dGVybk1zZyhwYXR0ZXJuOiBzdHJpbmcpIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2NvbnRyb2wucGF0dGVybikpIHtcclxuICAgICAgcmV0dXJuICh0aGlzLl9jb250cm9sLm1lc3NhZ2UgYXMgQXJyYXk8YW55PilbdGhpcy5fY29udHJvbC5wYXR0ZXJuLmZpbmRJbmRleCgoeCkgPT4gU3RyaW5nKHgpID09PSBwYXR0ZXJuKV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbC5tZXNzYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWVzc2FnZXMoc3RhdGU6ICdWQUxJRCcgfCAnSU5WQUxJRCcgfCAnUEVORElORycgfCAnRElTQUJMRUQnKSB7XHJcbiAgICBsZXQgY29udHJvbDogWEZvcm1Db250cm9sID0gdGhpcy5fZm9ybUNvbnRyb2w7XHJcbiAgICBpZiAoc3RhdGUgPT09ICdJTlZBTElEJyAmJiB0aGlzLl9mb3JtQ29udHJvbC5lcnJvcnMgIT09IG51bGwpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSB7XHJcbiAgICAgICAgICBjb250cm9sLm1lc3NhZ2VzID0gW2Ake3RoaXMuX2NvbnRyb2wubGFiZWx9IOW/heWhq2BdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGF0dGVybicpIHtcclxuICAgICAgICAgIGNvbnRyb2wubWVzc2FnZXMgPSBbYCR7dGhpcy5fY29udHJvbC5sYWJlbH0gJHt0aGlzLmdldFBhdHRlcm5Nc2coY29udHJvbC5lcnJvcnNba2V5XS5yZXF1aXJlZFBhdHRlcm4pfWBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ1ZBTElEJykge1xyXG4gICAgICBjb250cm9sLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb250cm9sKG9wdGlvbjogWEZvcm1Db250cm9sT3B0aW9uKSB7XHJcbiAgICBzd2l0Y2ggKG9wdGlvbi5jb250cm9sKSB7XHJcbiAgICAgIGNhc2UgJ2lucHV0JzpcclxuICAgICAgICByZXR1cm4gbmV3IFhJbnB1dENvbnRyb2wob3B0aW9uIGFzIFhJbnB1dENvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFNlbGVjdENvbnRyb2wob3B0aW9uIGFzIFhTZWxlY3RDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWENoZWNrYm94Q29udHJvbChvcHRpb24gYXMgWENoZWNrYm94Q29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhSYWRpb0NvbnRyb2wob3B0aW9uIGFzIFhSYWRpb0NvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdzd2l0Y2gnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFN3aXRjaENvbnRyb2wob3B0aW9uIGFzIFhTd2l0Y2hDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAncmF0ZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYUmF0ZUNvbnRyb2wob3B0aW9uIGFzIFhSYXRlQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ2RhdGUtcGlja2VyJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhEYXRlUGlja2VyQ29udHJvbChvcHRpb24gYXMgWERhdGVQaWNrZXJDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAndGltZS1waWNrZXInOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFRpbWVQaWNrZXJDb250cm9sKG9wdGlvbiBhcyBYVGltZVBpY2tlckNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdpbnB1dC1udW1iZXInOlxyXG4gICAgICAgIHJldHVybiBuZXcgWElucHV0TnVtYmVyQ29udHJvbChvcHRpb24gYXMgWElucHV0TnVtYmVyQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ3NsaWRlci1zZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFNsaWRlclNlbGVjdENvbnRyb2wob3B0aW9uIGFzIFhTbGlkZXJTZWxlY3RDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnY2FzY2FkZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYQ2FzY2FkZUNvbnRyb2wob3B0aW9uIGFzIFhDYXNjYWRlQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ2NvbG9yLXBpY2tlcic6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYQ29sb3JQaWNrZXJDb250cm9sKG9wdGlvbiBhcyBYQ29sb3JQaWNrZXJDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAndGV4dGFyZWEnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFRleHRhcmVhQ29udHJvbChvcHRpb24gYXMgWFRleHRhcmVhQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ2ZpbmQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWEZpbmRDb250cm9sKG9wdGlvbiBhcyBYRmluZENvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdhdXRvLWNvbXBsZXRlJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhBdXRvQ29tcGxldGVDb250cm9sKG9wdGlvbiBhcyBYQXV0b0NvbXBsZXRlQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYSW5wdXRDb250cm9sKG9wdGlvbiBhcyBYSW5wdXRDb250cm9sT3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtY29udHJvbFwiIFtmb3JtR3JvdXBdPVwiZm9ybS5mb3JtR3JvdXBcIj5cclxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJvcHRpb24uY29udHJvbFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiPlxyXG4gICAgICA8eC1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiIChjbGVhckVtaXQpPVwib3B0aW9uLmNsZWFyQ2xpY2sgJiYgb3B0aW9uLmNsZWFyQ2xpY2soJGV2ZW50KVwiPjwveC1pbnB1dD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cclxuICAgICAgPHgtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LXNlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Nhc2NhZGUnXCI+XHJcbiAgICAgIDx4LWNhc2NhZGUgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIiAobm9kZUVtaXQpPVwib3B0aW9uLm5vZGVDbGljayAmJiBvcHRpb24ubm9kZUNsaWNrKCRldmVudClcIj48L3gtY2FzY2FkZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICA8eC1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yLXBpY2tlcidcIj5cclxuICAgICAgPHgtY29sb3ItcGlja2VyIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LWNvbG9yLXBpY2tlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUtcGlja2VyJ1wiPlxyXG4gICAgICA8eC1kYXRlLXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiIChub2RlRW1pdCk9XCJvcHRpb24ubm9kZUNsaWNrICYmIG9wdGlvbi5ub2RlQ2xpY2soJGV2ZW50KVwiPjwveC1kYXRlLXBpY2tlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LW51bWJlcidcIj5cclxuICAgICAgPHgtaW5wdXQtbnVtYmVyIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LWlucHV0LW51bWJlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiPlxyXG4gICAgICA8eC1yYWRpbyBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1yYWRpbz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhdGUnXCI+XHJcbiAgICAgIDx4LXJhdGUgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtcmF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NsaWRlci1zZWxlY3QnXCI+XHJcbiAgICAgIDx4LXNsaWRlci1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtc2xpZGVyLXNlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N3aXRjaCdcIj5cclxuICAgICAgPHgtc3dpdGNoIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LXN3aXRjaD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUtcGlja2VyJ1wiPlxyXG4gICAgICA8eC10aW1lLXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC10aW1lLXBpY2tlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRhcmVhJ1wiPlxyXG4gICAgICA8eC10ZXh0YXJlYSBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiIChjbGVhckVtaXQpPVwib3B0aW9uLmNsZWFyQ2xpY2sgJiYgb3B0aW9uLmNsZWFyQ2xpY2soJGV2ZW50KVwiPjwveC10ZXh0YXJlYT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2F1dG8tY29tcGxldGUnXCI+XHJcbiAgICAgIDx4LWF1dG8tY29tcGxldGUgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIiAobm9kZUVtaXQpPVwib3B0aW9uLm5vZGVDbGljayAmJiBvcHRpb24ubm9kZUNsaWNrKCRldmVudClcIj48L3gtYXV0by1jb21wbGV0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbmQnXCI+XHJcbiAgICAgIDx4LWZpbmQgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtZmluZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2NvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsU0FBUyxFQUtWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFJaEIsZUFBZSxFQUVmLGFBQWEsRUFFYixjQUFjLEVBRWQsZ0JBQWdCLEVBRWhCLGFBQWEsRUFHYixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBRW5CLGNBQWMsRUFFZCxZQUFZLEVBRVosb0JBQW9CLEVBRXBCLGtCQUFrQixFQUVsQixtQkFBbUIsRUFHbkIsWUFBWSxFQUdaLGdCQUFnQixFQUNoQixvQkFBb0IsRUFFckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBd0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2SSxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxnQkFBZ0I7SUFZckQ7SUFDRSxtREFBbUQ7SUFDNUMsR0FBc0IsRUFDdEIsYUFBNkIsRUFDN0IsSUFBa0I7UUFFekIsS0FBSyxFQUFFLENBQUM7UUFKRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEs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LENBQUM7O2lJQTdKVSxpQkFBaUI7cUhBQWpCLGlCQUFpQixzSUFHakIsZUFBZSx1RUNoRTVCLG1oRkFpREE7MkZEWWEsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtnS0FHN0IsTUFBTTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ3lDLE9BQU87c0JBQXJELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYQ29udHJvbFByb3BlcnR5LFxyXG4gIFhGb3JtQ29udHJvbE9wdGlvbixcclxuICBYRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgWEZvcm1Db250cm9sVHlwZSxcclxuICBYQ2FzY2FkZUNvbnRyb2wsXHJcbiAgWENhc2NhZGVDb250cm9sT3B0aW9uLFxyXG4gIFhJbnB1dENvbnRyb2wsXHJcbiAgWElucHV0Q29udHJvbE9wdGlvbixcclxuICBYU2VsZWN0Q29udHJvbCxcclxuICBYU2VsZWN0Q29udHJvbE9wdGlvbixcclxuICBYQ2hlY2tib3hDb250cm9sLFxyXG4gIFhDaGVja2JveENvbnRyb2xPcHRpb24sXHJcbiAgWFJhZGlvQ29udHJvbCxcclxuICBYUmFkaW9Db250cm9sT3B0aW9uLFxyXG4gIFhEYXRlUGlja2VyQ29udHJvbE9wdGlvbixcclxuICBYRGF0ZVBpY2tlckNvbnRyb2wsXHJcbiAgWElucHV0TnVtYmVyQ29udHJvbCxcclxuICBYSW5wdXROdW1iZXJDb250cm9sT3B0aW9uLFxyXG4gIFhTd2l0Y2hDb250cm9sLFxyXG4gIFhTd2l0Y2hDb250cm9sT3B0aW9uLFxyXG4gIFhSYXRlQ29udHJvbCxcclxuICBYUmF0ZUNvbnRyb2xPcHRpb24sXHJcbiAgWFNsaWRlclNlbGVjdENvbnRyb2wsXHJcbiAgWFNsaWRlclNlbGVjdENvbnRyb2xPcHRpb24sXHJcbiAgWFRpbWVQaWNrZXJDb250cm9sLFxyXG4gIFhUaW1lUGlja2VyQ29udHJvbE9wdGlvbixcclxuICBYQ29sb3JQaWNrZXJDb250cm9sLFxyXG4gIFhDb2xvclBpY2tlckNvbnRyb2xPcHRpb24sXHJcbiAgWEZvcm1Db250cm9sLFxyXG4gIFhGaW5kQ29udHJvbCxcclxuICBYRmluZENvbnRyb2xPcHRpb24sXHJcbiAgWFRleHRhcmVhQ29udHJvbE9wdGlvbixcclxuICBYVGV4dGFyZWFDb250cm9sLFxyXG4gIFhBdXRvQ29tcGxldGVDb250cm9sLFxyXG4gIFhBdXRvQ29tcGxldGVDb250cm9sT3B0aW9uXHJcbn0gZnJvbSAnLi9mb3JtLnByb3BlcnR5JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBWYWxpZGF0b3JzLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYQ29uZmlnU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBYSTE4bkZvcm0sIFhJMThuU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd4LWNvbnRyb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250cm9sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBYQ29udHJvbFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIG9wdGlvbiE6IFhGb3JtQ29udHJvbE9wdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChGb3JtQ29udHJvbE5hbWUsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250cm9sITogRm9ybUNvbnRyb2xOYW1lO1xyXG4gIGxvY2FsZTogWEkxOG5Gb3JtID0ge307XHJcbiAgcHJpdmF0ZSBfc2hhcmVkUHJvcHMgPSBbJ3NwYW4nLCAnZGlyZWN0aW9uJywgJ2p1c3RpZnknLCAnYWxpZ24nLCAnbGFiZWxXaWR0aCcsICdsYWJlbEFsaWduJ107XHJcbiAgcHJpdmF0ZSBfY2hhbmdlUHJvcHMgPSBbJ2xhYmVsJywgLi4udGhpcy5fc2hhcmVkUHJvcHNdO1xyXG4gIHByaXZhdGUgX2NvbnRyb2whOiBYRm9ybUNvbnRyb2xUeXBlO1xyXG4gIHByaXZhdGUgX3ZhbGlkYXRvckZuczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2whOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gQEhvc3QoKSBAT3B0aW9uYWwoKSBwdWJsaWMgZm9ybTogWEZvcm1Db21wb25lbnQsXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3B0aW9uID0geyAuLi50aGlzLm9wdGlvbiB9O1xyXG4gICAgdGhpcy5zZXRQcm9wcygpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMub3B0aW9uLmxhYmVsKSkgdGhpcy5vcHRpb24ubGFiZWwgPSAnJztcclxuICAgIHRoaXMub3B0aW9uLmxhYmVsID0gYCR7dGhpcy5vcHRpb24ubGFiZWx9JHt0aGlzLmZvcm0ubGFiZWxTdWZmaXh9YDtcclxuICAgIHRoaXMuX2NvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2wodGhpcy5vcHRpb24pO1xyXG4gICAgdGhpcy5fZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHRoaXMuX2NvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldE1lc3NhZ2VzKHgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9jb250cm9sLnNldFZhbGlkYXRvcnMgPSAoKSA9PiB0aGlzLnNldFZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybS5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLl9jb250cm9sLmlkLCB0aGlzLl9mb3JtQ29udHJvbCk7XHJcbiAgICB0aGlzLm9wdGlvbi5jaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZVByb3BzLmZvckVhY2goKHg6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciAmJiB0aGlzLm9wdGlvblt4XSkge1xyXG4gICAgICAgICAgKHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yIGFzIGFueSlbeF0gPSB0aGlzLm9wdGlvblt4XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbENvbXBvbmVudHNbdGhpcy5fY29udHJvbC5pZF0uZm9ybUNvbnRyb2xDaGFuZ2VzKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZm9ybSBhcyBYSTE4bkZvcm0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yISwgdGhpcy5fY29udHJvbCBhcyBDb250cm9sVmFsdWVBY2Nlc3Nvcik7XHJcbiAgICB0aGlzLmZvcm0uY29udHJvbFR5cGVzW3RoaXMuX2NvbnRyb2wuaWRdID0gdGhpcy5fY29udHJvbDtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sQ29tcG9uZW50c1t0aGlzLl9jb250cm9sLmlkXSA9IHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yIGFzIFhGb3JtQ29udHJvbENvbXBvbmVudDtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sQ29tcG9uZW50c1t0aGlzLl9jb250cm9sLmlkXS5mb3JtQ29udHJvbENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsaWRhdG9ycygpIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRvckZucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2wuZGlzYWJsZWQgfHwgdGhpcy5mb3JtLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2wucmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLl92YWxpZGF0b3JGbnMgPSBbLi4udGhpcy5fdmFsaWRhdG9yRm5zLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9jb250cm9sLnBhdHRlcm4pIHtcclxuICAgICAgdGhpcy5zZXRQYXR0ZXJuKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvckZucyk7XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzZXRQcm9wcygpIHtcclxuICAgIGZvciAobGV0IHByb3Agb2YgdGhpcy5fc2hhcmVkUHJvcHMpIHtcclxuICAgICAgaWYgKFhJc0VtcHR5KHRoaXMub3B0aW9uW3Byb3BdKSkgdGhpcy5vcHRpb25bcHJvcF0gPSAodGhpcy5mb3JtIGFzIGFueSlbcHJvcF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYXR0ZXJuKCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fY29udHJvbC5wYXR0ZXJuKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHB0IG9mIHRoaXMuX2NvbnRyb2wucGF0dGVybikge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckZucyA9IFsuLi50aGlzLl92YWxpZGF0b3JGbnMsIFZhbGlkYXRvcnMucGF0dGVybihwdCldO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWxpZGF0b3JGbnMgPSBbLi4udGhpcy5fdmFsaWRhdG9yRm5zLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5fY29udHJvbC5wYXR0ZXJuIGFzIFJlZ0V4cCldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGF0dGVybk1zZyhwYXR0ZXJuOiBzdHJpbmcpIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2NvbnRyb2wucGF0dGVybikpIHtcclxuICAgICAgcmV0dXJuICh0aGlzLl9jb250cm9sLm1lc3NhZ2UgYXMgQXJyYXk8YW55PilbdGhpcy5fY29udHJvbC5wYXR0ZXJuLmZpbmRJbmRleCgoeCkgPT4gU3RyaW5nKHgpID09PSBwYXR0ZXJuKV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbC5tZXNzYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWVzc2FnZXMoc3RhdGU6IEZvcm1Db250cm9sU3RhdHVzKSB7XHJcbiAgICBsZXQgY29udHJvbDogWEZvcm1Db250cm9sID0gdGhpcy5fZm9ybUNvbnRyb2w7XHJcbiAgICBpZiAoc3RhdGUgPT09ICdJTlZBTElEJyAmJiB0aGlzLl9mb3JtQ29udHJvbC5lcnJvcnMgIT09IG51bGwpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuX2NvbnRyb2wubGFiZWwgfHwgdGhpcy5fY29udHJvbC5pZDtcclxuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSB7XHJcbiAgICAgICAgICBjb250cm9sLm1lc3NhZ2VzID0gW2Ake2xhYmVsfSAke3RoaXMubG9jYWxlPy5yZXF1aXJlZCB8fCAncmVxdWlyZWQnfWBdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGF0dGVybicpIHtcclxuICAgICAgICAgIGNvbnRyb2wubWVzc2FnZXMgPSBbYCR7bGFiZWx9ICR7dGhpcy5nZXRQYXR0ZXJuTXNnKGNvbnRyb2wuZXJyb3JzW2tleV0ucmVxdWlyZWRQYXR0ZXJuKX1gXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdWQUxJRCcpIHtcclxuICAgICAgY29udHJvbC5tZXNzYWdlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29udHJvbChvcHRpb246IFhGb3JtQ29udHJvbE9wdGlvbikge1xyXG4gICAgc3dpdGNoIChvcHRpb24uY29udHJvbCkge1xyXG4gICAgICBjYXNlICdpbnB1dCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYSW5wdXRDb250cm9sKG9wdGlvbiBhcyBYSW5wdXRDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICByZXR1cm4gbmV3IFhTZWxlY3RDb250cm9sKG9wdGlvbiBhcyBYU2VsZWN0Q29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgICByZXR1cm4gbmV3IFhDaGVja2JveENvbnRyb2wob3B0aW9uIGFzIFhDaGVja2JveENvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYUmFkaW9Db250cm9sKG9wdGlvbiBhcyBYUmFkaW9Db250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnc3dpdGNoJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhTd2l0Y2hDb250cm9sKG9wdGlvbiBhcyBYU3dpdGNoQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ3JhdGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWFJhdGVDb250cm9sKG9wdGlvbiBhcyBYUmF0ZUNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdkYXRlLXBpY2tlcic6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYRGF0ZVBpY2tlckNvbnRyb2wob3B0aW9uIGFzIFhEYXRlUGlja2VyQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ3RpbWUtcGlja2VyJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhUaW1lUGlja2VyQ29udHJvbChvcHRpb24gYXMgWFRpbWVQaWNrZXJDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnaW5wdXQtbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhJbnB1dE51bWJlckNvbnRyb2wob3B0aW9uIGFzIFhJbnB1dE51bWJlckNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdzbGlkZXItc2VsZWN0JzpcclxuICAgICAgICByZXR1cm4gbmV3IFhTbGlkZXJTZWxlY3RDb250cm9sKG9wdGlvbiBhcyBYU2xpZGVyU2VsZWN0Q29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ2Nhc2NhZGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgWENhc2NhZGVDb250cm9sKG9wdGlvbiBhcyBYQ2FzY2FkZUNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdjb2xvci1waWNrZXInOlxyXG4gICAgICAgIHJldHVybiBuZXcgWENvbG9yUGlja2VyQ29udHJvbChvcHRpb24gYXMgWENvbG9yUGlja2VyQ29udHJvbE9wdGlvbik7XHJcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhUZXh0YXJlYUNvbnRyb2wob3B0aW9uIGFzIFhUZXh0YXJlYUNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBjYXNlICdmaW5kJzpcclxuICAgICAgICByZXR1cm4gbmV3IFhGaW5kQ29udHJvbChvcHRpb24gYXMgWEZpbmRDb250cm9sT3B0aW9uKTtcclxuICAgICAgY2FzZSAnYXV0by1jb21wbGV0ZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBYQXV0b0NvbXBsZXRlQ29udHJvbChvcHRpb24gYXMgWEF1dG9Db21wbGV0ZUNvbnRyb2xPcHRpb24pO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBuZXcgWElucHV0Q29udHJvbChvcHRpb24gYXMgWElucHV0Q29udHJvbE9wdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LWNvbnRyb2xcIiBbZm9ybUdyb3VwXT1cImZvcm0uZm9ybUdyb3VwXCI+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uLmNvbnRyb2xcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dCdcIj5cclxuICAgICAgPHgtaW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIiAoY2xlYXJFbWl0KT1cIm9wdGlvbi5jbGVhckNsaWNrICYmIG9wdGlvbi5jbGVhckNsaWNrKCRldmVudClcIj48L3gtaW5wdXQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3QnXCI+XHJcbiAgICAgIDx4LXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1zZWxlY3Q+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjYXNjYWRlJ1wiPlxyXG4gICAgICA8eC1jYXNjYWRlIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCIgKG5vZGVFbWl0KT1cIm9wdGlvbi5ub2RlQ2xpY2sgJiYgb3B0aW9uLm5vZGVDbGljaygkZXZlbnQpXCI+PC94LWNhc2NhZGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgPHgtY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtY2hlY2tib3g+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb2xvci1waWNrZXInXCI+XHJcbiAgICAgIDx4LWNvbG9yLXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1jb2xvci1waWNrZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLXBpY2tlcidcIj5cclxuICAgICAgPHgtZGF0ZS1waWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIiAobm9kZUVtaXQpPVwib3B0aW9uLm5vZGVDbGljayAmJiBvcHRpb24ubm9kZUNsaWNrKCRldmVudClcIj48L3gtZGF0ZS1waWNrZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC1udW1iZXInXCI+XHJcbiAgICAgIDx4LWlucHV0LW51bWJlciBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1pbnB1dC1udW1iZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIj5cclxuICAgICAgPHgtcmFkaW8gW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtcmFkaW8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYXRlJ1wiPlxyXG4gICAgICA8eC1yYXRlIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LXJhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzbGlkZXItc2VsZWN0J1wiPlxyXG4gICAgICA8eC1zbGlkZXItc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LXNsaWRlci1zZWxlY3Q+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzd2l0Y2gnXCI+XHJcbiAgICAgIDx4LXN3aXRjaCBbZm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbi5pZFwiPjwveC1zd2l0Y2g+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aW1lLXBpY2tlcidcIj5cclxuICAgICAgPHgtdGltZS1waWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIj48L3gtdGltZS1waWNrZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgPHgtdGV4dGFyZWEgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24uaWRcIiAoY2xlYXJFbWl0KT1cIm9wdGlvbi5jbGVhckNsaWNrICYmIG9wdGlvbi5jbGVhckNsaWNrKCRldmVudClcIj48L3gtdGV4dGFyZWE+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhdXRvLWNvbXBsZXRlJ1wiPlxyXG4gICAgICA8eC1hdXRvLWNvbXBsZXRlIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCIgKG5vZGVFbWl0KT1cIm9wdGlvbi5ub2RlQ2xpY2sgJiYgb3B0aW9uLm5vZGVDbGljaygkZXZlbnQpXCI+PC94LWF1dG8tY29tcGxldGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmaW5kJ1wiPlxyXG4gICAgICA8eC1maW5kIFtmb3JtQ29udHJvbE5hbWVdPVwib3B0aW9uLmlkXCI+PC94LWZpbmQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
|