@ng-nest/ui 18.0.3 → 18.0.5

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.
Files changed (64) hide show
  1. package/auto-complete/auto-complete.component.d.ts +0 -2
  2. package/cascade/cascade.component.d.ts +0 -2
  3. package/checkbox/checkbox.component.d.ts +1 -3
  4. package/color-picker/color-picker.component.d.ts +0 -2
  5. package/esm2022/auto-complete/auto-complete.component.mjs +1 -10
  6. package/esm2022/cascade/cascade.component.mjs +1 -8
  7. package/esm2022/checkbox/checkbox.component.mjs +1 -7
  8. package/esm2022/color-picker/color-picker.component.mjs +1 -7
  9. package/esm2022/dialog/dialog.component.mjs +1 -3
  10. package/esm2022/find/find.component.mjs +1 -7
  11. package/esm2022/form/control.component.mjs +7 -4
  12. package/esm2022/input-number/input-number.component.mjs +1 -5
  13. package/esm2022/radio/radio.component.mjs +1 -7
  14. package/esm2022/resizable/resizable.directive.mjs +1 -2
  15. package/esm2022/select/select-portal.component.mjs +3 -3
  16. package/esm2022/select/select.component.mjs +48 -28
  17. package/esm2022/select/select.property.mjs +7 -2
  18. package/esm2022/slider-select/slider-select.component.mjs +6 -2
  19. package/esm2022/switch/switch.component.mjs +1 -5
  20. package/esm2022/table/table-body.component.mjs +1 -2
  21. package/esm2022/textarea/textarea.component.mjs +1 -5
  22. package/esm2022/tree-select/tree-select.component.mjs +1 -7
  23. package/fesm2022/ng-nest-ui-auto-complete.mjs +0 -9
  24. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  25. package/fesm2022/ng-nest-ui-cascade.mjs +0 -7
  26. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-checkbox.mjs +0 -6
  28. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-color-picker.mjs +0 -6
  30. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-dialog.mjs +0 -2
  32. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-find.mjs +0 -6
  34. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-form.mjs +6 -3
  36. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-input-number.mjs +0 -4
  38. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  39. package/fesm2022/ng-nest-ui-radio.mjs +0 -6
  40. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  41. package/fesm2022/ng-nest-ui-resizable.mjs +0 -1
  42. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  43. package/fesm2022/ng-nest-ui-select.mjs +55 -30
  44. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-slider-select.mjs +5 -1
  46. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-switch.mjs +0 -4
  48. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-table.mjs +0 -1
  50. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-textarea.mjs +0 -4
  52. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  53. package/fesm2022/ng-nest-ui-tree-select.mjs +0 -6
  54. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  55. package/find/find.component.d.ts +0 -2
  56. package/input-number/input-number.component.d.ts +0 -2
  57. package/package.json +47 -47
  58. package/radio/radio.component.d.ts +1 -3
  59. package/select/select.component.d.ts +1 -1
  60. package/select/select.property.d.ts +11 -6
  61. package/slider-select/slider-select.component.d.ts +1 -1
  62. package/switch/switch.component.d.ts +0 -2
  63. package/textarea/textarea.component.d.ts +0 -2
  64. package/tree-select/tree-select.component.d.ts +0 -1
@@ -87,9 +87,6 @@ export class XFindComponent extends XFindProperty {
87
87
  [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()
88
88
  }));
89
89
  }
90
- writeValue(value) {
91
- this.value.set(value);
92
- }
93
90
  ngOnChanges(simples) {
94
91
  const { tableData } = simples;
95
92
  XIsChange(tableData) && this.setTableCheckedRow();
@@ -278,9 +275,6 @@ export class XFindComponent extends XFindProperty {
278
275
  treeCheckboxChange(node) {
279
276
  this.treeMultiple(node);
280
277
  }
281
- formControlChanges() {
282
- this.treeCom()?.setData();
283
- }
284
278
  searchKeyDown(event) {
285
279
  if (event.key === 'Enter') {
286
280
  this.searchClick();
@@ -327,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
327
321
  XInputComponent
328
322
  ], 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]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\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]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\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]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\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 }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\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 (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 }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\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 @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\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: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-dialog-container .x-dialog-content{overflow:initial}.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"] }]
329
323
  }] });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2QixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0YsT0FBTyxFQUFnQixlQUFlLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8s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LEdBQUcsV0FBVyxFQUFFLGNBQ2QsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZUFBZTtxQkFDaEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBjb21wdXRlZCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhGaW5kUHJvcGVydHksIFhGaW5kUHJlZml4IH0gZnJvbSAnLi9maW5kLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWFJlc2l6ZSwgWElzVW5kZWZpbmVkLCBYSXNDaGFuZ2UsIFhSZXNpemVPYnNlcnZlciwgWElzRW1wdHkgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlQ29sdW1uLCBYVGFibGVDb21wb25lbnQsIFhUYWJsZVJvdyB9IGZyb20gJ0BuZy1uZXN0L3VpL3RhYmxlJztcclxuaW1wb3J0IHsgWERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2RpYWxvZyc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZSwgWFRyZWVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90cmVlJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYVGFnQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFnJztcclxuaW1wb3J0IHsgWEVtcHR5Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvZW1wdHknO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hGaW5kUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgWFRhZ0NvbXBvbmVudCxcclxuICAgIFhCdXR0b25Db21wb25lbnQsXHJcbiAgICBYRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgWFRhYmxlQ29tcG9uZW50LFxyXG4gICAgWFRyZWVDb21wb25lbnQsXHJcbiAgICBYSWNvbkNvbXBvbmVudCxcclxuICAgIFhFbXB0eUNvbXBvbmVudCxcclxuICAgIFhJbnB1dENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhGaW5kQ29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhGaW5kQ29tcG9uZW50IGV4dGVuZHMgWEZpbmRQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBmaW5kID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZmluZCcpO1xyXG4gIGRpYWxvZ0NvbSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxYRGlhbG9nQ29tcG9uZW50PignZGlhbG9nQ29tJyk7XHJcbiAgdGFibGVDb20gPSB2aWV3Q2hpbGQ8WFRhYmxlQ29tcG9uZW50PigndGFibGVDb20nKTtcclxuICB0cmVlQ29tID0gdmlld0NoaWxkPFhUcmVlQ29tcG9uZW50PigndHJlZUNvbScpO1xyXG4gIGJ1dHRvbkNvbSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxYQnV0dG9uQ29tcG9uZW50PignYnV0dG9uQ29tJyk7XHJcbiAgdGFibGVSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCd0YWJsZVJlZicpO1xyXG4gIHRyZWVSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCd0cmVlUmVmJyk7XHJcbiAgdGFibGVSZWZDaGFuZ2VkID0gdG9PYnNlcnZhYmxlKHRoaXMudGFibGVSZWYpXHJcbiAgICAucGlwZSh0YXAoKHgpID0+IHggJiYgdGhpcy5tdWx0aXBsZSgpICYmIHRoaXMuc2V0U3Vic2NyaWJlKCkpKVxyXG4gICAgLnN1YnNjcmliZSgpO1xyXG4gIHRyZWVSZWZDaGFuZ2VkID0gdG9PYnNlcnZhYmxlKHRoaXMudHJlZVJlZilcclxuICAgIC5waXBlKHRhcCgoeCkgPT4geCAmJiB0aGlzLm11bHRpcGxlKCkgJiYgdGhpcy5zZXRTdWJzY3JpYmUoKSkpXHJcbiAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gIHRhYmxlQ29sdW1uc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnMoKTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgaWYgKCF0aGlzLnRhYmxlQ29sdW1ucygpLmZpbmQoKHgpID0+IHgucm93Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogJyRjaGVja2VkJyxcclxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlhbG9nQ2hlY2tib3hMYWJlbCgpLFxyXG4gICAgICAgICAgICByb3dDaGVja2VkOiB0cnVlLFxyXG4gICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kaWFsb2dDaGVja2JveFdpZHRoKClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50aGlzLnRhYmxlQ29sdW1ucygpXHJcbiAgICAgICAgXSBhcyBYVGFibGVDb2x1bW5bXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGFibGVDb2x1bW5zKCk7XHJcbiAgfSk7XHJcblxyXG4gIGdldEVtcHR5ID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMudGVtcCgpIHx8IHRoaXMudGVtcCgpLmxlbmd0aCA9PT0gMCk7XHJcbiAgaGFzVGFibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhYmxlQ29sdW1ucygpLmxlbmd0aCA+IDApO1xyXG4gIGhhc1RyZWUgPSBjb21wdXRlZChcclxuICAgICgpID0+XHJcbiAgICAgIChBcnJheS5pc0FycmF5KHRoaXMudHJlZURhdGEoKSkgJiYgKHRoaXMudHJlZURhdGEoKSBhcyBBcnJheTxYVHJlZU5vZGU+KS5sZW5ndGggPiAwKSB8fFxyXG4gICAgICB0aGlzLnRyZWVEYXRhKCkgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fFxyXG4gICAgICB0aGlzLnRyZWVEYXRhKCkgaW5zdGFuY2VvZiBPYnNlcnZhYmxlXHJcbiAgKTtcclxuICBoYXNUcmVlVGFibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhhc1RhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpO1xyXG4gIGhhc1RyZWVNdWx0aXBsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGFzVHJlZSgpICYmICF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMubXVsdGlwbGUoKSk7XHJcbiAgaGFzU2VhcmNoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWFyY2goKSAmJiB0aGlzLmhhc1RhYmxlKCkpO1xyXG4gIGRpYWxvZ1dpZHRoU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKFhJc1VuZGVmaW5lZCh0aGlzLmRpYWxvZ1dpZHRoKCkpKSB7XHJcbiAgICAgIGlmICgodGhpcy5oYXNUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB8fCB0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgICByZXR1cm4gJzUwcmVtJztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSAmJiB0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICByZXR1cm4gJzMwcmVtJztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICAgIHJldHVybiAnMjByZW0nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dXaWR0aCgpO1xyXG4gIH0pO1xyXG5cclxuICB0ZW1wID0gc2lnbmFsPGFueT4odW5kZWZpbmVkKTtcclxuICBoZWlnaHQgPSBzaWduYWwoMTAwKTtcclxuXHJcbiAgcHJpdmF0ZSB1blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2xhc3NNYXAgPSBjb21wdXRlZCgoKSA9PiAoe1xyXG4gICAgW2Ake1hGaW5kUHJlZml4fS0ke3RoaXMuc2l6ZSgpfWBdOiAhIXRoaXMuc2l6ZSgpLFxyXG4gICAgW2B4LWp1c3RpZnktJHt0aGlzLmp1c3RpZnkoKX1gXTogISF0aGlzLmp1c3RpZnkoKSxcclxuICAgIFtgeC1hbGlnbi0ke3RoaXMuYWxpZ24oKX1gXTogISF0aGlzLmFsaWduKCksXHJcbiAgICBbYHgtZGlyZWN0aW9uLSR7dGhpcy5kaXJlY3Rpb24oKX1gXTogISF0aGlzLmRpcmVjdGlvbigpXHJcbiAgfSkpO1xyXG4gIGxhYmVsTWFwU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gKHtcclxuICAgIFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWduKCl9YF06ICEhdGhpcy5sYWJlbEFsaWduKClcclxuICB9KSk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgdGFibGVEYXRhIH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKHRhYmxlRGF0YSkgJiYgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YmplY3QuY29tcGxldGUoKTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIHNldFN1YnNjcmliZSgpIHtcclxuICAgIGxldCByZXNpemVSZWY6IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYgPSBbdGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50XTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc1RyZWUoKSAmJiAhdGhpcy5oYXNUcmVlVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYucHVzaCh0aGlzLnRyZWVSZWYoKSEubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICBpZiAocmVzaXplUmVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgWFJlc2l6ZSguLi5yZXNpemVSZWYpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICBpZiAodGhpcy50YWJsZVJlZigpKSB7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodC5zZXQodGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQuc2V0KHRoaXMudHJlZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNb2RhbCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkQ29tcHV0ZWQoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldCh0cnVlKTtcclxuICAgIGlmICh0aGlzLnZhbHVlKCkpIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHRoaXMudGVtcC5zZXQoKHRoaXMudmFsdWUoKSBhcyBBcnJheTxhbnk+KS5tYXAoKHgpID0+IE9iamVjdC5hc3NpZ24oe30sIHgpKSk7XHJcbiAgICAgICAgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICAgICAgICB0aGlzLnNldFRyZWVDaGVja2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdy5zZXQodGhpcy52YWx1ZSgpKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNldCh0aGlzLnZhbHVlKCkuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldCh0aGlzLm11bHRpcGxlKCkgPyBbXSA6IHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSgpKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKT8udmlydHVhbEJvZHkoKT8uc2Nyb2xsVG9JbmRleCgwKTtcclxuICAgICAgdGhpcy50YWJsZUNvbSgpPy52aXJ0dWFsQm9keSgpPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVDaGVja2VkUm93KCkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKCkgfHwgWElzVW5kZWZpbmVkKHRoaXMudGVtcCgpKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaWRzID0gKHRoaXMudGVtcCgpIGFzIEFycmF5PGFueT4pLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB0aGlzLnRhYmxlQ2hlY2tlZFJvdy51cGRhdGUoKHgpID0+ICh7XHJcbiAgICAgIC4uLngsXHJcbiAgICAgICRjaGVja2VkOiBpZHNcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHNldFRyZWVDaGVja2VkKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzVHJlZU11bHRpcGxlKCkpIHRoaXMudHJlZUNoZWNrZWQuc2V0KHRoaXMudGVtcCgpLm1hcCgoeDogYW55KSA9PiB4LmlkKSk7XHJcbiAgfVxyXG5cclxuICBzdXJlKCkge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodGhpcy50ZW1wKCkpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2dDbG9zZURvbmUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRlbXAuc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGVtcENsb3NlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy50ZW1wLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICB4LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgbGV0IGl0ID0gdGhpcy50YWJsZUNvbSgpIVxyXG4gICAgICAgIC50YWJsZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXRbJyRjaGVja2VkJ10gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICBsZXQgaXQgPSB0aGlzLnRyZWVDb20oKSFcclxuICAgICAgICAudHJlZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGl0LmNoYW5nZSAmJiBpdC5jaGFuZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFnQ2xvc2UoaW5kZXg6IG51bWJlciA9IC0xKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRhYmxlQWN0aXZhdGVkUm93LnNldChudWxsKTtcclxuICAgICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLnJvd011bHRpcGxlKGRhdGEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldChkYXRhKTtcclxuICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm93TXVsdGlwbGUoZGF0YTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAoZGF0YVsnJGNoZWNrZWQnXSkge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KHgpKSB4ID0gW107XHJcbiAgICAgICAgeC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LnNwbGljZShcclxuICAgICAgICAgIHguZmluZEluZGV4KCh4OiBhbnkpID0+IHguaWQgPT09IGRhdGEuaWQpLFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlTXVsdGlwbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAobm9kZS5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IFsuLi54LCBub2RlXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoXHJcbiAgICAgICAgICB4LmZpbmRJbmRleCgoeDogYW55KSA9PiB4LmlkID09PSBub2RlLmlkKSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlZUFjdGl2YXRlZENsaWNrKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wLnNldChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMudHJlZVRhYmxlQ29ubmVjdCgpKSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkoKTtcclxuICAgICAgaWYgKCF0YWJsZVF1ZXJ5LmZpbHRlcikgdGFibGVRdWVyeS5maWx0ZXIgPSBbXTtcclxuICAgICAgbGV0IGZpZWxkID0gdGFibGVRdWVyeS5maWx0ZXIuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gdGhpcy50cmVlVGFibGVDb25uZWN0KCkpO1xyXG4gICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmllbGQub3BlcmF0aW9uID0gJz0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRhYmxlUXVlcnkuZmlsdGVyLCB7IGZpZWxkOiB0aGlzLnRyZWVUYWJsZUNvbm5lY3QoKSwgdmFsdWU6IG5vZGUuaWQsIG9wZXJhdGlvbjogJz0nIH1dO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGFibGVRdWVyeS5zZXQodGFibGVRdWVyeSk7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKSEuY2hhbmdlKDEpO1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5zZXQobm9kZS5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlQ2hlY2tib3hDaGFuZ2Uobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVNdWx0aXBsZShub2RlKTtcclxuICB9XHJcblxyXG4gIGZvcm1Db250cm9sQ2hhbmdlcygpIHtcclxuICAgIHRoaXMudHJlZUNvbSgpPy5zZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2soKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xyXG4gICAgICB0aGlzLnNlYXJjaC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4IS52YWx1ZSA9ICcnO1xyXG4gICAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNTZWFyY2goKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZVF1ZXJ5ID0gdGhpcy50YWJsZVF1ZXJ5KCkgfHwge307XHJcbiAgICB0YWJsZVF1ZXJ5LmZpbHRlciA9IHRhYmxlUXVlcnkuZmlsdGVyIHx8IFtdO1xyXG4gICAgY29uc3QgZmllbGQgPSB0YWJsZVF1ZXJ5LmZpbHRlci5maW5kKCh4KSA9PiB4LmZpZWxkID09PSB0aGlzLnNlYXJjaCgpIS5maWVsZCk7XHJcblxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIGZpZWxkLnZhbHVlID0gdGhpcy5zZWFyY2goKSEudmFsdWUgfHwgJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YWJsZVF1ZXJ5LmZpbHRlciA9IFsuLi50YWJsZVF1ZXJ5LmZpbHRlciwgdGhpcy5zZWFyY2goKSFdO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVF1ZXJ5LnNldCh0YWJsZVF1ZXJ5KTtcclxuICAgIHRoaXMudGFibGVDb20oKSEuY2hhbmdlKDEpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI2ZpbmRcclxuICBjbGFzcz1cIngtZmluZFwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5KCkgfHwgYWxpZ24oKSB8fCBkaXJlY3Rpb24oKVwiXHJcbiAgW2NsYXNzLngtY2hlY2tlZF09XCJ2YWx1ZSgpXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eSgpXCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWQoKVwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXAoKVwiXHJcbj5cclxuICBAaWYgKGxhYmVsKCkpIHtcclxuICAgIDxsYWJlbFxyXG4gICAgICBbY2xhc3MueC1maW5kLWxhYmVsLXJlcXVpcmVkXT1cInJlcXVpcmVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJsYWJlbE1hcFNpZ25hbCgpXCJcclxuICAgICAgPnt7IGxhYmVsKCkgfX08L2xhYmVsXHJcbiAgICA+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtcm93XCI+XHJcbiAgICA8eC1idXR0b25cclxuICAgICAgI2J1dHRvbkNvbVxyXG4gICAgICBpY29uPVwiZnRvLXNlYXJjaFwiXHJcbiAgICAgIFtvbmx5SWNvbl09XCIhYm9yZGVyZWQoKVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gICAgICBhdHRyVHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJzaG93TW9kYWwoKVwiXHJcbiAgICAgIGZsYXRcclxuICAgICAgcGxhaW5cclxuICAgID48L3gtYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZmluZC10YWdzXCI+XHJcbiAgICAgIEBpZiAobXVsdGlwbGUoKSkge1xyXG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdmFsdWUoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDx4LXRhZ1xyXG4gICAgICAgICAgICBjbG9zYWJsZVxyXG4gICAgICAgICAgICBbc2l6ZV09XCJzaXplKClcIlxyXG4gICAgICAgICAgICBbYm9yZGVyZWRdPVwiYm9yZGVyZWQoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gICAgICAgICAgICAoY2xvc2UpPVwidGFnQ2xvc2UoaSlcIlxyXG4gICAgICAgICAgICA+e3sgaXRlbVtjb2x1bW5MYWJlbCgpXSB9fTwveC10YWdcclxuICAgICAgICAgID5cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2UgaWYgKHZhbHVlKCkpIHtcclxuICAgICAgICA8eC10YWcgY2xvc2FibGUgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCIgW3NpemVdPVwic2l6ZSgpXCIgKGNsb3NlKT1cInRhZ0Nsb3NlKClcIj57e1xyXG4gICAgICAgICAgdmFsdWUoKVtjb2x1bW5MYWJlbCgpXVxyXG4gICAgICAgIH19PC94LXRhZz5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHgtZGlhbG9nXHJcbiAgI2RpYWxvZ0NvbVxyXG4gIFt0aXRsZV09XCJkaWFsb2dUaXRsZSgpXCJcclxuICBbd2lkdGhdPVwiZGlhbG9nV2lkdGhTaWduYWwoKVwiXHJcbiAgW2hlaWdodF09XCJkaWFsb2dIZWlnaHQoKVwiXHJcbiAgW2J1dHRvbnNDZW50ZXJdPVwiZGlhbG9nQnV0dG9uc0NlbnRlcigpXCJcclxuICBbY2xhc3NOYW1lXT1cIid4LWZpbmQtZGlhbG9nLWNvbnRhaW5lcidcIlxyXG4gIFsodmlzaWJsZSldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgKGNsb3NlRG9uZSk9XCJkaWFsb2dDbG9zZURvbmUoKVwiXHJcbiAgKGNvbmZpcm0pPVwic3VyZSgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nXCIgW2NsYXNzLngtZmluZC1kaWFsb2ctdHJlZS10YWJsZV09XCJoYXNUYWJsZSgpICYmIGhhc1RyZWUoKVwiPlxyXG4gICAgQGlmIChoYXNUcmVlKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZVwiICN0cmVlUmVmIFtzdHlsZS5oZWlnaHQucHhdPVwiaGFzVHJlZVRhYmxlKCkgJiYgbXVsdGlwbGUoKSAmJiBoZWlnaHQoKVwiPlxyXG4gICAgICAgIDx4LXRyZWVcclxuICAgICAgICAgICN0cmVlQ29tXHJcbiAgICAgICAgICBbZGF0YV09XCJ0cmVlRGF0YSgpXCJcclxuICAgICAgICAgIFtub2RlSGVpZ2h0XT1cIicxLjhyZW0nXCJcclxuICAgICAgICAgIFsobWFudWFsKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAgICAgICAgIFthY3RpdmF0ZWRJZF09XCJ0cmVlQWN0aXZhdGVkSWQoKVwiXHJcbiAgICAgICAgICBbZXhwYW5kZWRMZXZlbF09XCJ0cmVlRXhwYW5kZWRMZXZlbCgpXCJcclxuICAgICAgICAgIChhY3RpdmF0ZWRDaGFuZ2UpPVwidHJlZUFjdGl2YXRlZENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgW2NoZWNrYm94XT1cImhhc1RyZWVNdWx0aXBsZSgpXCJcclxuICAgICAgICAgIFtjaGVja2VkXT1cInRyZWVDaGVja2VkKClcIlxyXG4gICAgICAgICAgKGNoZWNrYm94Q2hhbmdlKT1cInRyZWVDaGVja2JveENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtsZXZlbENoZWNrXT1cIiFoYXNUcmVlTXVsdGlwbGUoKVwiXHJcbiAgICAgICAgPjwveC10cmVlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoaGFzVGFibGUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10YWJsZVwiICN0YWJsZVJlZj5cclxuICAgICAgICBAaWYgKGhhc1NlYXJjaCgpKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8eC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJzZWFyY2goKSEubGFiZWwhXCJcclxuICAgICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxyXG4gICAgICAgICAgICAgICh4S2V5ZG93bik9XCJzZWFyY2hLZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoKCkhLnZhbHVlXCJcclxuICAgICAgICAgICAgPjwveC1pbnB1dD5cclxuICAgICAgICAgICAgPHgtYnV0dG9uIHBsYWluIHRleHQgKGNsaWNrKT1cInNlYXJjaENsaWNrKClcIj57eyBzZWFyY2goKSEuYnV0dG9uIHx8ICfmn6Xor6InIH19PC94LWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8eC10YWJsZVxyXG4gICAgICAgICAgI3RhYmxlQ29tXHJcbiAgICAgICAgICBbZGF0YV09XCJ0YWJsZURhdGEoKVwiXHJcbiAgICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbHVtbnNTaWduYWwoKVwiXHJcbiAgICAgICAgICBbKG1hbnVhbCldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICAgICAgICBbKGluZGV4KV09XCJ0YWJsZUluZGV4XCJcclxuICAgICAgICAgIFsoc2l6ZSldPVwidGFibGVTaXplXCJcclxuICAgICAgICAgIFsocXVlcnkpXT1cInRhYmxlUXVlcnlcIlxyXG4gICAgICAgICAgWyh0b3RhbCldPVwidGFibGVUb3RhbFwiXHJcbiAgICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwiIW11bHRpcGxlKClcIlxyXG4gICAgICAgICAgW2FsbG93Q2hlY2tSb3ddPVwibXVsdGlwbGUoKVwiXHJcbiAgICAgICAgICBbY2hlY2tlZFJvd109XCJ0YWJsZUNoZWNrZWRSb3coKVwiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJ0YWJsZUxvYWRpbmcoKVwiXHJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJ0YWJsZVNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZUFjdGl2YXRlZFJvd1wiXHJcbiAgICAgICAgICAoYWN0aXZhdGVkUm93Q2hhbmdlKT1cInRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgIFtyb3dIZWlnaHRdPVwidGFibGVSb3dIZWlnaHQoKVwiXHJcbiAgICAgICAgICBbYm9keUhlaWdodF09XCJ0YWJsZUJvZHlIZWlnaHQoKSFcIlxyXG4gICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidGFibGVWaXJ0dWFsU2Nyb2xsKClcIlxyXG4gICAgICAgICAgW21pbkJ1ZmZlclB4XT1cInRhYmxlTWluQnVmZmVyUHgoKVwiXHJcbiAgICAgICAgICBbbWF4QnVmZmVyUHhdPVwidGFibGVNYXhCdWZmZXJQeCgpXCJcclxuICAgICAgICAgIFthZGFwdGlvbkhlaWdodF09XCJ0YWJsZUFkYXB0aW9uSGVpZ2h0KCkhXCJcclxuICAgICAgICAgIFtkb2NQZXJjZW50XT1cInRhYmxlRG9jUGVyY2VudCgpXCJcclxuICAgICAgICA+PC94LXRhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAobXVsdGlwbGUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy1jaGVja2VkXCIgW2NsYXNzLngtZmluZC1lbXB0eV09XCJnZXRFbXB0eSgpXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHQoKVwiPlxyXG4gICAgICAgIEBpZiAoZ2V0RW1wdHkoKSkge1xyXG4gICAgICAgICAgPHgtZW1wdHkgW2NvbnRlbnRdPVwiZGlhbG9nRW1wdHlDb250ZW50KClcIj48L3gtZW1wdHk+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRhZ3NcIj5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdGVtcCgpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICA8eC10YWcgY2xvc2FibGUgKGNsb3NlKT1cInRlbXBDbG9zZShpLCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW1bY29sdW1uTGFiZWwoKV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwveC10YWc+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3gtZGlhbG9nPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0cmVlTGFiZWxUcGwgbGV0LW5vZGU9XCIkbm9kZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRyZWUtbm9kZVwiPlxyXG4gICAgPHNwYW4+e3sgbm9kZS5sYWJlbCB9fSA8L3NwYW4+XHJcbiAgICBAaWYgKG5vZGUuJGNoZWNrZWQpIHtcclxuICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWNoZWNrXCI+PC94LWljb24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2QixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0YsT0FBTyxFQUFnQixlQUFlLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8s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QkFDZixlQUFlO3FCQUNoQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIGNvbXB1dGVkLFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWEZpbmRQcm9wZXJ0eSwgWEZpbmRQcmVmaXggfSBmcm9tICcuL2ZpbmQucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYUmVzaXplLCBYSXNVbmRlZmluZWQsIFhJc0NoYW5nZSwgWFJlc2l6ZU9ic2VydmVyLCBYSXNFbXB0eSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGFibGVDb2x1bW4sIFhUYWJsZUNvbXBvbmVudCwgWFRhYmxlUm93IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFibGUnO1xyXG5pbXBvcnQgeyBYRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvZGlhbG9nJztcclxuaW1wb3J0IHsgWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlLCBYVHJlZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RyZWUnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhUYWdDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90YWcnO1xyXG5pbXBvcnQgeyBYRW1wdHlDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9lbXB0eSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEZpbmRQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBYVGFnQ29tcG9uZW50LFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhEaWFsb2dDb21wb25lbnQsXHJcbiAgICBYVGFibGVDb21wb25lbnQsXHJcbiAgICBYVHJlZUNvbXBvbmVudCxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWEVtcHR5Q29tcG9uZW50LFxyXG4gICAgWElucHV0Q29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWEZpbmRDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb21wb25lbnQgZXh0ZW5kcyBYRmluZFByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIGZpbmQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdmaW5kJyk7XHJcbiAgZGlhbG9nQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhEaWFsb2dDb21wb25lbnQ+KCdkaWFsb2dDb20nKTtcclxuICB0YWJsZUNvbSA9IHZpZXdDaGlsZDxYVGFibGVDb21wb25lbnQ+KCd0YWJsZUNvbScpO1xyXG4gIHRyZWVDb20gPSB2aWV3Q2hpbGQ8WFRyZWVDb21wb25lbnQ+KCd0cmVlQ29tJyk7XHJcbiAgYnV0dG9uQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhCdXR0b25Db21wb25lbnQ+KCdidXR0b25Db20nKTtcclxuICB0YWJsZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RhYmxlUmVmJyk7XHJcbiAgdHJlZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RyZWVSZWYnKTtcclxuICB0YWJsZVJlZkNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy50YWJsZVJlZilcclxuICAgIC5waXBlKHRhcCgoeCkgPT4geCAmJiB0aGlzLm11bHRpcGxlKCkgJiYgdGhpcy5zZXRTdWJzY3JpYmUoKSkpXHJcbiAgICAuc3Vic2NyaWJlKCk7XHJcbiAgdHJlZVJlZkNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy50cmVlUmVmKVxyXG4gICAgLnBpcGUodGFwKCh4KSA9PiB4ICYmIHRoaXMubXVsdGlwbGUoKSAmJiB0aGlzLnNldFN1YnNjcmliZSgpKSlcclxuICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgdGFibGVDb2x1bW5zU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKCkpIHJldHVybiB0aGlzLnRhYmxlQ29sdW1ucygpO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICBpZiAoIXRoaXMudGFibGVDb2x1bW5zKCkuZmluZCgoeCkgPT4geC5yb3dDaGVja2VkKSkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAnJGNoZWNrZWQnLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5kaWFsb2dDaGVja2JveExhYmVsKCksXHJcbiAgICAgICAgICAgIHJvd0NoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmRpYWxvZ0NoZWNrYm94V2lkdGgoKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRoaXMudGFibGVDb2x1bW5zKClcclxuICAgICAgICBdIGFzIFhUYWJsZUNvbHVtbltdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnMoKTtcclxuICB9KTtcclxuXHJcbiAgZ2V0RW1wdHkgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50ZW1wKCkgfHwgdGhpcy50ZW1wKCkubGVuZ3RoID09PSAwKTtcclxuICBoYXNUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFibGVDb2x1bW5zKCkubGVuZ3RoID4gMCk7XHJcbiAgaGFzVHJlZSA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy50cmVlRGF0YSgpKSAmJiAodGhpcy50cmVlRGF0YSgpIGFzIEFycmF5PFhUcmVlTm9kZT4pLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIE9ic2VydmFibGVcclxuICApO1xyXG4gIGhhc1RyZWVUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGFzVGFibGUoKSAmJiB0aGlzLmhhc1RyZWUoKSk7XHJcbiAgaGFzVHJlZU11bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oYXNUcmVlKCkgJiYgIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5tdWx0aXBsZSgpKTtcclxuICBoYXNTZWFyY2ggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlYXJjaCgpICYmIHRoaXMuaGFzVGFibGUoKSk7XHJcbiAgZGlhbG9nV2lkdGhTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMuZGlhbG9nV2lkdGgoKSkpIHtcclxuICAgICAgaWYgKCh0aGlzLmhhc1RhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHx8IHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnNTByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnMzByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuICcyMHJlbSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRpYWxvZ1dpZHRoKCk7XHJcbiAgfSk7XHJcblxyXG4gIHRlbXAgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIGhlaWdodCA9IHNpZ25hbCgxMDApO1xyXG5cclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFhSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgY2xhc3NNYXAgPSBjb21wdXRlZCgoKSA9PiAoe1xyXG4gICAgW2Ake1hGaW5kUHJlZml4fS0ke3RoaXMuc2l6ZSgpfWBdOiAhIXRoaXMuc2l6ZSgpLFxyXG4gICAgW2B4LWp1c3RpZnktJHt0aGlzLmp1c3RpZnkoKX1gXTogISF0aGlzLmp1c3RpZnkoKSxcclxuICAgIFtgeC1hbGlnbi0ke3RoaXMuYWxpZ24oKX1gXTogISF0aGlzLmFsaWduKCksXHJcbiAgICBbYHgtZGlyZWN0aW9uLSR7dGhpcy5kaXJlY3Rpb24oKX1gXTogISF0aGlzLmRpcmVjdGlvbigpXHJcbiAgfSkpO1xyXG4gIGxhYmVsTWFwU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gKHtcclxuICAgIFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWduKCl9YF06ICEhdGhpcy5sYWJlbEFsaWduKClcclxuICB9KSk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgdGFibGVEYXRhIH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKHRhYmxlRGF0YSkgJiYgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YmplY3QuY29tcGxldGUoKTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIHNldFN1YnNjcmliZSgpIHtcclxuICAgIGxldCByZXNpemVSZWY6IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYgPSBbdGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50XTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc1RyZWUoKSAmJiAhdGhpcy5oYXNUcmVlVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYucHVzaCh0aGlzLnRyZWVSZWYoKSEubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICBpZiAocmVzaXplUmVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgWFJlc2l6ZSguLi5yZXNpemVSZWYpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICBpZiAodGhpcy50YWJsZVJlZigpKSB7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodC5zZXQodGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQuc2V0KHRoaXMudHJlZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNb2RhbCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkQ29tcHV0ZWQoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldCh0cnVlKTtcclxuICAgIGlmICh0aGlzLnZhbHVlKCkpIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHRoaXMudGVtcC5zZXQoKHRoaXMudmFsdWUoKSBhcyBBcnJheTxhbnk+KS5tYXAoKHgpID0+IE9iamVjdC5hc3NpZ24oe30sIHgpKSk7XHJcbiAgICAgICAgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICAgICAgICB0aGlzLnNldFRyZWVDaGVja2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdy5zZXQodGhpcy52YWx1ZSgpKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNldCh0aGlzLnZhbHVlKCkuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldCh0aGlzLm11bHRpcGxlKCkgPyBbXSA6IHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSgpKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKT8udmlydHVhbEJvZHkoKT8uc2Nyb2xsVG9JbmRleCgwKTtcclxuICAgICAgdGhpcy50YWJsZUNvbSgpPy52aXJ0dWFsQm9keSgpPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVDaGVja2VkUm93KCkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKCkgfHwgWElzVW5kZWZpbmVkKHRoaXMudGVtcCgpKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaWRzID0gKHRoaXMudGVtcCgpIGFzIEFycmF5PGFueT4pLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB0aGlzLnRhYmxlQ2hlY2tlZFJvdy51cGRhdGUoKHgpID0+ICh7XHJcbiAgICAgIC4uLngsXHJcbiAgICAgICRjaGVja2VkOiBpZHNcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHNldFRyZWVDaGVja2VkKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzVHJlZU11bHRpcGxlKCkpIHRoaXMudHJlZUNoZWNrZWQuc2V0KHRoaXMudGVtcCgpLm1hcCgoeDogYW55KSA9PiB4LmlkKSk7XHJcbiAgfVxyXG5cclxuICBzdXJlKCkge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodGhpcy50ZW1wKCkpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2dDbG9zZURvbmUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRlbXAuc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGVtcENsb3NlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy50ZW1wLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICB4LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgbGV0IGl0ID0gdGhpcy50YWJsZUNvbSgpIVxyXG4gICAgICAgIC50YWJsZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXRbJyRjaGVja2VkJ10gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICBsZXQgaXQgPSB0aGlzLnRyZWVDb20oKSFcclxuICAgICAgICAudHJlZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGl0LmNoYW5nZSAmJiBpdC5jaGFuZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFnQ2xvc2UoaW5kZXg6IG51bWJlciA9IC0xKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRhYmxlQWN0aXZhdGVkUm93LnNldChudWxsKTtcclxuICAgICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLnJvd011bHRpcGxlKGRhdGEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldChkYXRhKTtcclxuICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm93TXVsdGlwbGUoZGF0YTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAoZGF0YVsnJGNoZWNrZWQnXSkge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KHgpKSB4ID0gW107XHJcbiAgICAgICAgeC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LnNwbGljZShcclxuICAgICAgICAgIHguZmluZEluZGV4KCh4OiBhbnkpID0+IHguaWQgPT09IGRhdGEuaWQpLFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlTXVsdGlwbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAobm9kZS5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IFsuLi54LCBub2RlXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoXHJcbiAgICAgICAgICB4LmZpbmRJbmRleCgoeDogYW55KSA9PiB4LmlkID09PSBub2RlLmlkKSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlZUFjdGl2YXRlZENsaWNrKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wLnNldChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMudHJlZVRhYmxlQ29ubmVjdCgpKSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkoKTtcclxuICAgICAgaWYgKCF0YWJsZVF1ZXJ5LmZpbHRlcikgdGFibGVRdWVyeS5maWx0ZXIgPSBbXTtcclxuICAgICAgbGV0IGZpZWxkID0gdGFibGVRdWVyeS5maWx0ZXIuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gdGhpcy50cmVlVGFibGVDb25uZWN0KCkpO1xyXG4gICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmllbGQub3BlcmF0aW9uID0gJz0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRhYmxlUXVlcnkuZmlsdGVyLCB7IGZpZWxkOiB0aGlzLnRyZWVUYWJsZUNvbm5lY3QoKSwgdmFsdWU6IG5vZGUuaWQsIG9wZXJhdGlvbjogJz0nIH1dO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGFibGVRdWVyeS5zZXQodGFibGVRdWVyeSk7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKSEuY2hhbmdlKDEpO1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5zZXQobm9kZS5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlQ2hlY2tib3hDaGFuZ2Uobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVNdWx0aXBsZShub2RlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5zZWFyY2hDbGljaygpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHghLnZhbHVlID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4ueCB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc1NlYXJjaCgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkoKSB8fCB7fTtcclxuICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gdGFibGVRdWVyeS5maWx0ZXIgfHwgW107XHJcbiAgICBjb25zdCBmaWVsZCA9IHRhYmxlUXVlcnkuZmlsdGVyLmZpbmQoKHgpID0+IHguZmllbGQgPT09IHRoaXMuc2VhcmNoKCkhLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgZmllbGQudmFsdWUgPSB0aGlzLnNlYXJjaCgpIS52YWx1ZSB8fCAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRhYmxlUXVlcnkuZmlsdGVyLCB0aGlzLnNlYXJjaCgpIV07XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlUXVlcnkuc2V0KHRhYmxlUXVlcnkpO1xyXG4gICAgdGhpcy50YWJsZUNvbSgpIS5jaGFuZ2UoMSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjZmluZFxyXG4gIGNsYXNzPVwieC1maW5kXCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkoKSB8fCBhbGlnbigpIHx8IGRpcmVjdGlvbigpXCJcclxuICBbY2xhc3MueC1jaGVja2VkXT1cInZhbHVlKClcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5KClcIlxyXG4gIFtjbGFzcy54LWludmFsaWRdPVwiaW52YWxpZCgpXCJcclxuICBbbmdDbGFzc109XCJjbGFzc01hcCgpXCJcclxuPlxyXG4gIEBpZiAobGFiZWwoKSkge1xyXG4gICAgPGxhYmVsXHJcbiAgICAgIFtjbGFzcy54LWZpbmQtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWRDb21wdXRlZCgpXCJcclxuICAgICAgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGgoKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImxhYmVsTWFwU2lnbmFsKClcIlxyXG4gICAgICA+e3sgbGFiZWwoKSB9fTwvbGFiZWxcclxuICAgID5cclxuICB9XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1yb3dcIj5cclxuICAgIDx4LWJ1dHRvblxyXG4gICAgICAjYnV0dG9uQ29tXHJcbiAgICAgIGljb249XCJmdG8tc2VhcmNoXCJcclxuICAgICAgW29ubHlJY29uXT1cIiFib3JkZXJlZCgpXCJcclxuICAgICAgW3NpemVdPVwic2l6ZSgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIGF0dHJUeXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cInNob3dNb2RhbCgpXCJcclxuICAgICAgZmxhdFxyXG4gICAgICBwbGFpblxyXG4gICAgPjwveC1idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1maW5kLXRhZ3NcIj5cclxuICAgICAgQGlmIChtdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiB2YWx1ZSgpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgPHgtdGFnXHJcbiAgICAgICAgICAgIGNsb3NhYmxlXHJcbiAgICAgICAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgICAgICAgIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgICAgICAgIChjbG9zZSk9XCJ0YWdDbG9zZShpKVwiXHJcbiAgICAgICAgICAgID57eyBpdGVtW2NvbHVtbkxhYmVsKCldIH19PC94LXRhZ1xyXG4gICAgICAgICAgPlxyXG4gICAgICAgIH1cclxuICAgICAgfSBAZWxzZSBpZiAodmFsdWUoKSkge1xyXG4gICAgICAgIDx4LXRhZyBjbG9zYWJsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDb21wdXRlZCgpXCIgW2JvcmRlcmVkXT1cImJvcmRlcmVkKClcIiBbc2l6ZV09XCJzaXplKClcIiAoY2xvc2UpPVwidGFnQ2xvc2UoKVwiPnt7XHJcbiAgICAgICAgICB2YWx1ZSgpW2NvbHVtbkxhYmVsKCldXHJcbiAgICAgICAgfX08L3gtdGFnPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48eC1kaWFsb2dcclxuICAjZGlhbG9nQ29tXHJcbiAgW3RpdGxlXT1cImRpYWxvZ1RpdGxlKClcIlxyXG4gIFt3aWR0aF09XCJkaWFsb2dXaWR0aFNpZ25hbCgpXCJcclxuICBbaGVpZ2h0XT1cImRpYWxvZ0hlaWdodCgpXCJcclxuICBbYnV0dG9uc0NlbnRlcl09XCJkaWFsb2dCdXR0b25zQ2VudGVyKClcIlxyXG4gIFtjbGFzc05hbWVdPVwiJ3gtZmluZC1kaWFsb2ctY29udGFpbmVyJ1wiXHJcbiAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAoY2xvc2VEb25lKT1cImRpYWxvZ0Nsb3NlRG9uZSgpXCJcclxuICAoY29uZmlybSk9XCJzdXJlKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2dcIiBbY2xhc3MueC1maW5kLWRpYWxvZy10cmVlLXRhYmxlXT1cImhhc1RhYmxlKCkgJiYgaGFzVHJlZSgpXCI+XHJcbiAgICBAaWYgKGhhc1RyZWUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10cmVlXCIgI3RyZWVSZWYgW3N0eWxlLmhlaWdodC5weF09XCJoYXNUcmVlVGFibGUoKSAmJiBtdWx0aXBsZSgpICYmIGhlaWdodCgpXCI+XHJcbiAgICAgICAgPHgtdHJlZVxyXG4gICAgICAgICAgI3RyZWVDb21cclxuICAgICAgICAgIFtkYXRhXT1cInRyZWVEYXRhKClcIlxyXG4gICAgICAgICAgW25vZGVIZWlnaHRdPVwiJzEuOHJlbSdcIlxyXG4gICAgICAgICAgWyhtYW51YWwpXT1cImRpYWxvZ1Zpc2libGVcIlxyXG4gICAgICAgICAgW2FjdGl2YXRlZElkXT1cInRyZWVBY3RpdmF0ZWRJZCgpXCJcclxuICAgICAgICAgIFtleHBhbmRlZExldmVsXT1cInRyZWVFeHBhbmRlZExldmVsKClcIlxyXG4gICAgICAgICAgKGFjdGl2YXRlZENoYW5nZSk9XCJ0cmVlQWN0aXZhdGVkQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY2hlY2tib3hdPVwiaGFzVHJlZU11bHRpcGxlKClcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwidHJlZUNoZWNrZWQoKVwiXHJcbiAgICAgICAgICAoY2hlY2tib3hDaGFuZ2UpPVwidHJlZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgW2xldmVsQ2hlY2tdPVwiIWhhc1RyZWVNdWx0aXBsZSgpXCJcclxuICAgICAgICA+PC94LXRyZWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChoYXNUYWJsZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRhYmxlXCIgI3RhYmxlUmVmPlxyXG4gICAgICAgIEBpZiAoaGFzU2VhcmNoKCkpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInNlYXJjaCgpIS5sYWJlbCFcIlxyXG4gICAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXHJcbiAgICAgICAgICAgICAgKHhLZXlkb3duKT1cInNlYXJjaEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2goKSEudmFsdWVcIlxyXG4gICAgICAgICAgICA+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1idXR0b24gcGxhaW4gdGV4dCAoY2xpY2spPVwic2VhcmNoQ2xpY2soKVwiPnt7IHNlYXJjaCgpIS5idXR0b24gfHwgJ+afpeivoicgfX08L3gtYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDx4LXRhYmxlXHJcbiAgICAgICAgICAjdGFibGVDb21cclxuICAgICAgICAgIFtkYXRhXT1cInRhYmxlRGF0YSgpXCJcclxuICAgICAgICAgIFtjb2x1bW5zXT1cInRhYmxlQ29sdW1uc1NpZ25hbCgpXCJcclxuICAgICAgICAgIFsobWFudWFsKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAgICAgICAgIFsoaW5kZXgpXT1cInRhYmxlSW5kZXhcIlxyXG4gICAgICAgICAgWyhzaXplKV09XCJ0YWJsZVNpemVcIlxyXG4gICAgICAgICAgWyhxdWVyeSldPVwidGFibGVRdWVyeVwiXHJcbiAgICAgICAgICBbKHRvdGFsKV09XCJ0YWJsZVRvdGFsXCJcclxuICAgICAgICAgIFthbGxvd1NlbGVjdFJvd109XCIhbXVsdGlwbGUoKVwiXHJcbiAgICAgICAgICBbYWxsb3dDaGVja1Jvd109XCJtdWx0aXBsZSgpXCJcclxuICAgICAgICAgIFtjaGVja2VkUm93XT1cInRhYmxlQ2hlY2tlZFJvdygpXCJcclxuICAgICAgICAgIFtsb2FkaW5nXT1cInRhYmxlTG9hZGluZygpXCJcclxuICAgICAgICAgIChzb3J0Q2hhbmdlKT1cInRhYmxlU29ydENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgWyhhY3RpdmF0ZWRSb3cpXT1cInRhYmxlQWN0aXZhdGVkUm93XCJcclxuICAgICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwidGFibGVBY3RpdmF0ZWRSb3dDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgW3Jvd0hlaWdodF09XCJ0YWJsZVJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIFtib2R5SGVpZ2h0XT1cInRhYmxlQm9keUhlaWdodCgpIVwiXHJcbiAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ0YWJsZVZpcnR1YWxTY3JvbGwoKVwiXHJcbiAgICAgICAgICBbbWluQnVmZmVyUHhdPVwidGFibGVNaW5CdWZmZXJQeCgpXCJcclxuICAgICAgICAgIFttYXhCdWZmZXJQeF09XCJ0YWJsZU1heEJ1ZmZlclB4KClcIlxyXG4gICAgICAgICAgW2FkYXB0aW9uSGVpZ2h0XT1cInRhYmxlQWRhcHRpb25IZWlnaHQoKSFcIlxyXG4gICAgICAgICAgW2RvY1BlcmNlbnRdPVwidGFibGVEb2NQZXJjZW50KClcIlxyXG4gICAgICAgID48L3gtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChtdWx0aXBsZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLWNoZWNrZWRcIiBbY2xhc3MueC1maW5kLWVtcHR5XT1cImdldEVtcHR5KClcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodCgpXCI+XHJcbiAgICAgICAgQGlmIChnZXRFbXB0eSgpKSB7XHJcbiAgICAgICAgICA8eC1lbXB0eSBbY29udGVudF09XCJkaWFsb2dFbXB0eUNvbnRlbnQoKVwiPjwveC1lbXB0eT5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdGFnc1wiPlxyXG4gICAgICAgICAgQGZvciAoaXRlbSBvZiB0ZW1wKCk7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDx4LXRhZyBjbG9zYWJsZSAoY2xvc2UpPVwidGVtcENsb3NlKGksIGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtjb2x1bW5MYWJlbCgpXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC94LXRhZz5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwveC1kaWFsb2c+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyZWVMYWJlbFRwbCBsZXQtbm9kZT1cIiRub2RlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZS1ub2RlXCI+XHJcbiAgICA8c3Bhbj57eyBub2RlLmxhYmVsIH19IDwvc3Bhbj5cclxuICAgIEBpZiAobm9kZS4kY2hlY2tlZCkge1xyXG4gICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hlY2tcIj48L3gtaWNvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -42,7 +42,7 @@ export class XControlComponent extends XControlProperty {
42
42
  this.portal = signal(null);
43
43
  this.portalOutlet = viewChild.required(CdkPortalOutlet);
44
44
  effect(() => {
45
- this.formControl()?.setValue(this.value());
45
+ this.formControl().patchValue(this.value());
46
46
  }, { allowSignalWrites: true });
47
47
  }
48
48
  ngOnInit() {
@@ -59,7 +59,7 @@ export class XControlComponent extends XControlProperty {
59
59
  this.formControl()
60
60
  .valueChanges.pipe(takeUntil(this._unSubject))
61
61
  .subscribe((x) => {
62
- this.value.set(x);
62
+ this.componentRef.instance.writeValue(x);
63
63
  });
64
64
  this.option().setValidators = () => this.setValidators();
65
65
  this.form.formGroup().addControl(this.option().id, this.formControl());
@@ -91,7 +91,10 @@ export class XControlComponent extends XControlProperty {
91
91
  }
92
92
  }
93
93
  // value
94
- this.value = this.componentRef.instance['value'];
94
+ if (this.option().value !== undefined) {
95
+ this.componentRef.instance.writeValue(this.option().value);
96
+ }
97
+ this.value = this.componentRef.instance.value;
95
98
  this.form.controlTypes[this.option().id] = this.option();
96
99
  this.form.controlComponents[this.option().id] = this.componentRef.instance;
97
100
  }
@@ -243,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
243
246
  XAutoCompleteComponent
244
247
  ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n <ng-template cdkPortalOutlet></ng-template>\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"] }]
245
248
  }], ctorParameters: () => [] });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2NvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQTJELE1BQU0saUJBQWlCLENBQUM7QUFDNUcsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFHbEIsV0FBVyxFQUNYLG1CQUFtQixFQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBVSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1C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c0I7cUJBQ3ZCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPbkluaXQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgaW5qZWN0LFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgT3V0cHV0RW1pdHRlclJlZixcclxuICBlZmZlY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENvbnRyb2xQcm9wZXJ0eSwgWEZvcm1Db250cm9sT3B0aW9uLCBYRm9ybUNvbnRyb2xDb21wb25lbnQsIFhGb3JtQ29udHJvbCB9IGZyb20gJy4vZm9ybS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgVmFsaWRhdG9ycyxcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgRm9ybUNvbnRyb2xTdGF0dXMsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhJc0Z1bmN0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhJMThuRm9ybSwgWEkxOG5TZXJ2aWNlLCB6aF9DTiB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBYRm9ybUlucHV0VmFsaWRhdG9yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2Zvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IFhBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9hdXRvLWNvbXBsZXRlJztcclxuaW1wb3J0IHsgWENhc2NhZGVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jYXNjYWRlJztcclxuaW1wb3J0IHsgWENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBYQ29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jb2xvci1waWNrZXInO1xyXG5pbXBvcnQgeyBYRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2RhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgWEZpbmRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9maW5kJztcclxuaW1wb3J0IHsgWElucHV0TnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQtbnVtYmVyJztcclxuaW1wb3J0IHsgWFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvcmFkaW8nO1xyXG5pbXBvcnQgeyBYUmF0ZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3JhdGUnO1xyXG5pbXBvcnQgeyBYU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc2VsZWN0JztcclxuaW1wb3J0IHsgWFNsaWRlclNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3NsaWRlci1zZWxlY3QnO1xyXG5pbXBvcnQgeyBYU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc3dpdGNoJztcclxuaW1wb3J0IHsgWFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGV4dGFyZWEnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckNvbXBvbmVudCwgWFRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3gtY29udHJvbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBQb3J0YWxNb2R1bGUsXHJcblxyXG4gICAgWElucHV0Q29tcG9uZW50LFxyXG4gICAgWFNlbGVjdENvbXBvbmVudCxcclxuICAgIFhDYXNjYWRlQ29tcG9uZW50LFxyXG4gICAgWENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWENvbG9yUGlja2VyQ29tcG9uZW50LFxyXG4gICAgWERhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBYSW5wdXROdW1iZXJDb21wb25lbnQsXHJcbiAgICBYUmFkaW9Db21wb25lbnQsXHJcbiAgICBYUmF0ZUNvbXBvbmVudCxcclxuICAgIFhTbGlkZXJTZWxlY3RDb21wb25lbnQsXHJcbiAgICBYU3dpdGNoQ29tcG9uZW50LFxyXG4gICAgWFRpbWVQaWNrZXJNb2R1bGUsXHJcbiAgICBYVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBYRmluZENvbXBvbmVudCxcclxuICAgIFhBdXRvQ29tcGxldGVDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250cm9sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBYQ29udHJvbFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICBwcml2YXRlIF9zaGFyZWRQcm9wcyA9IHNpZ25hbChbJ3NwYW4nLCAnZGlyZWN0aW9uJywgJ2p1c3RpZnknLCAnYWxpZ24nLCAnbGFiZWxXaWR0aCcsICdsYWJlbEFsaWduJ10pO1xyXG4gIHByaXZhdGUgdmFsaWRhdG9yRm5zID0gc2lnbmFsPFZhbGlkYXRvckZuW10+KFtdKTtcclxuICBwcml2YXRlIGZvcm1Db250cm9sID0gc2lnbmFsPFVudHlwZWRGb3JtQ29udHJvbCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgdmFsdWUgPSBzaWduYWw8YW55PihudWxsKTtcclxuXHJcbiAgZm9ybSA9IGluamVjdChYRm9ybUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KSE7XHJcbiAgbG9jYWxlID0gdG9TaWduYWwodGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKG1hcCgoeCkgPT4geC5mb3JtIGFzIFhJMThuRm9ybSkpLCB7IGluaXRpYWxWYWx1ZTogemhfQ04uZm9ybSB9KTtcclxuICBwb3J0YWwgPSBzaWduYWw8UG9ydGFsPGFueT4gfCBudWxsPihudWxsKTtcclxuICBjb21wb25lbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8WEZvcm1Db250cm9sQ29tcG9uZW50PjtcclxuICBjb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8WEZvcm1Db250cm9sQ29tcG9uZW50PjtcclxuICBwb3J0YWxPdXRsZXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoQ2RrUG9ydGFsT3V0bGV0KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbCgpPy5zZXRWYWx1ZSh0aGlzLnZhbHVlKCkpO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0T3B0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXQoXHJcbiAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5vcHRpb24oKS52YWx1ZSwge1xyXG4gICAgICAgIG5vbk51bGxhYmxlOiB0aGlzLm9wdGlvbigpLm5vbk51bGxhYmxlXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sKCkhXHJcbiAgICAgIC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnNldE1lc3NhZ2VzKHgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSFcclxuICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy52YWx1ZS5zZXQoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5vcHRpb24oKS5zZXRWYWxpZGF0b3JzID0gKCkgPT4gdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmZvcm0uZm9ybUdyb3VwKCkuYWRkQ29udHJvbCh0aGlzLm9wdGlvbigpLmlkLCB0aGlzLmZvcm1Db250cm9sKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRQb3J0YWwgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudFBvcnRhbCh0aGlzLm9wdGlvbigpKTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb3J0YWxPdXRsZXQoKS5hdHRhY2hDb21wb25lbnRQb3J0YWwodGhpcy5jb21wb25lbnRQb3J0YWwpO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLm9wdGlvbigpKSB7XHJcbiAgICAgIGlmIChrZXkgaW4gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KVtrZXldO1xyXG4gICAgICAgIGlmIChYSXNGdW5jdGlvbih2YWwpKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWxTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh2YWwpO1xyXG4gICAgICAgICAgaWYgKHZhbFN5bWJvbHMubGVuZ3RoICE9PSAxKSBicmVhaztcclxuICAgICAgICAgIGNvbnN0IHZhbFN5bWJvbCA9IHZhbFt2YWxTeW1ib2xzWzBdXTtcclxuICAgICAgICAgIGlmICh2YWxTeW1ib2wuaGFzT3duUHJvcGVydHkoJ3RyYW5zZm9ybUZuJykpIHtcclxuICAgICAgICAgICAgLy8gaW5wdXRcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB0aGlzLm9wdGlvbigpW2tleV0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gc2lnbmFsXHJcbiAgICAgICAgICAgIHZhbC5zZXQodGhpcy5vcHRpb24oKVtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIE91dHB1dEVtaXR0ZXJSZWYpIHtcclxuICAgICAgICAgIC8vIG91dHB1dFxyXG4gICAgICAgICAgdmFsLnN1YnNjcmliZSgoeCkgPT4gdGhpcy5vcHRpb24oKVtrZXldKHgpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB2YWx1ZVxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlWyd2YWx1ZSddO1xyXG5cclxuICAgIHRoaXMuZm9ybS5jb250cm9sVHlwZXNbdGhpcy5vcHRpb24oKS5pZF0gPSB0aGlzLm9wdGlvbigpO1xyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xDb21wb25lbnRzW3RoaXMub3B0aW9uKCkuaWRdID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvckZucy5zZXQoW10pO1xyXG4gICAgaWYgKHRoaXMub3B0aW9uKCkuZGlzYWJsZWQgfHwgdGhpcy5mb3JtLmRpc2FibGVkKCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbCgpIS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sKCkhLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9uKCkucmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5kaXNhYmxlZCgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9yRm5zLnVwZGF0ZSgoeCkgPT4gWy4uLngsIFZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbigpLnBhdHRlcm4pIHtcclxuICAgICAgdGhpcy5zZXRQYXR0ZXJuKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5vcHRpb24oKS5pbnB1dFZhbGlkYXRvcikpIHtcclxuICAgICAgdGhpcy52YWxpZGF0b3JGbnMudXBkYXRlKCh4KSA9PiBbLi4ueCwgWEZvcm1JbnB1dFZhbGlkYXRvcih0aGlzLm9wdGlvbigpLmlucHV0VmFsaWRhdG9yISldKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSEuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvckZucygpKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uKCkge1xyXG4gICAgZm9yIChsZXQgcHJvcCBvZiB0aGlzLl9zaGFyZWRQcm9wcygpKSB7XHJcbiAgICAgIGlmIChYSXNFbXB0eSh0aGlzLm9wdGlvbigpW3Byb3BdKSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9uLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeFtwcm9wXSA9ICh0aGlzLmZvcm0gYXMgYW55KVtwcm9wXSgpO1xyXG4gICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLm9wdGlvbigpLmxhYmVsKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbi51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LmxhYmVsID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb24udXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgIHgubGFiZWwgPSBgJHt0aGlzLm9wdGlvbigpLmxhYmVsfSR7dGhpcy5mb3JtLmxhYmVsU3VmZml4KCl9YDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBhdHRlcm4oKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5vcHRpb24oKS5wYXR0ZXJuO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF0dGVybikpIHtcclxuICAgICAgZm9yIChjb25zdCBwdCBvZiBwYXR0ZXJuKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0b3JGbnMudXBkYXRlKCh4KSA9PiBbLi4ueCwgVmFsaWRhdG9ycy5wYXR0ZXJuKHB0KV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbGlkYXRvckZucy51cGRhdGUoKHgpID0+IFsuLi54LCBWYWxpZGF0b3JzLnBhdHRlcm4ocGF0dGVybiBhcyBSZWdFeHApXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXR0ZXJuTXNnKHBhdHRlcm46IHN0cmluZykge1xyXG4gICAgY29uc3QgY29udHJvbFBhdHRlcm4gPSB0aGlzLm9wdGlvbigpLnBhdHRlcm47XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb250cm9sUGF0dGVybikpIHtcclxuICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbigpLm1lc3NhZ2UgYXMgQXJyYXk8YW55PilbY29udHJvbFBhdHRlcm4uZmluZEluZGV4KCh4KSA9PiBTdHJpbmcoeCkgPT09IHBhdHRlcm4pXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbigpLm1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNZXNzYWdlcyhzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMpIHtcclxuICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtQ29udHJvbCgpISBhcyBYRm9ybUNvbnRyb2w7XHJcbiAgICBpZiAoc3RhdGUgPT09ICdJTlZBTElEJyAmJiB0aGlzLmZvcm1Db250cm9sKCkhLmVycm9ycyAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLm9wdGlvbigpLmxhYmVsIHx8IHRoaXMub3B0aW9uKCkuaWQ7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykge1xyXG4gICAgICAgICAgbWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMsIGAke2xhYmVsfSAke3RoaXMubG9jYWxlKCkucmVxdWlyZWQgfHwgJ3JlcXVpcmVkJ31gXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3BhdHRlcm4nKSB7XHJcbiAgICAgICAgICBtZXNzYWdlcyA9IFsuLi5tZXNzYWdlcywgYCR7bGFiZWx9ICR7dGhpcy5nZXRQYXR0ZXJuTXNnKGNvbnRyb2wuZXJyb3JzW2tleV0ucmVxdWlyZWRQYXR0ZXJuKX1gXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2lucHV0VmFsaWRhdG9yJykge1xyXG4gICAgICAgICAgbWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMsIGAke2xhYmVsfSAke3RoaXMub3B0aW9uKCkubWVzc2FnZX1gXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udHJvbC5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xyXG4gICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ1ZBTElEJykge1xyXG4gICAgICBjb250cm9sLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb21wb25lbnRQb3J0YWwob3B0aW9uOiBYRm9ybUNvbnRyb2xPcHRpb24pIHtcclxuICAgIHN3aXRjaCAob3B0aW9uLmNvbnRyb2wpIHtcclxuICAgICAgY2FzZSAnaW5wdXQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhJbnB1dENvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYU2VsZWN0Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWENoZWNrYm94Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWFJhZGlvQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdzd2l0Y2gnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhTd2l0Y2hDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3JhdGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhSYXRlQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdkYXRlLXBpY2tlcic6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWERhdGVQaWNrZXJDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3RpbWUtcGlja2VyJzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYVGltZVBpY2tlckNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnaW5wdXQtbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYSW5wdXROdW1iZXJDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3NsaWRlci1zZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhTbGlkZXJTZWxlY3RDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ2Nhc2NhZGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhDYXNjYWRlQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdjb2xvci1waWNrZXInOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhDb2xvclBpY2tlckNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAndGV4dGFyZWEnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhUZXh0YXJlYUNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnZmluZCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWEZpbmRDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ2F1dG8tY29tcGxldGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWElucHV0Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1jb250cm9sXCIgW2Zvcm1Hcm91cF09XCJmb3JtLmZvcm1Hcm91cCgpXCI+XHJcbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2NvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQTJELE1BQU0saUJBQWlCLENBQUM7QUFDNUcsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFHbEIsV0FBVyxFQUNYLG1CQUFtQixFQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBVSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1C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QkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxzQkFBc0I7cUJBQ3ZCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPbkluaXQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgaW5qZWN0LFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgT3V0cHV0RW1pdHRlclJlZixcclxuICBlZmZlY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENvbnRyb2xQcm9wZXJ0eSwgWEZvcm1Db250cm9sT3B0aW9uLCBYRm9ybUNvbnRyb2xDb21wb25lbnQsIFhGb3JtQ29udHJvbCB9IGZyb20gJy4vZm9ybS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgVmFsaWRhdG9ycyxcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgRm9ybUNvbnRyb2xTdGF0dXMsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhJc0Z1bmN0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhJMThuRm9ybSwgWEkxOG5TZXJ2aWNlLCB6aF9DTiB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBYRm9ybUlucHV0VmFsaWRhdG9yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2Zvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IFhBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9hdXRvLWNvbXBsZXRlJztcclxuaW1wb3J0IHsgWENhc2NhZGVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jYXNjYWRlJztcclxuaW1wb3J0IHsgWENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBYQ29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jb2xvci1waWNrZXInO1xyXG5pbXBvcnQgeyBYRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2RhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgWEZpbmRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9maW5kJztcclxuaW1wb3J0IHsgWElucHV0TnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQtbnVtYmVyJztcclxuaW1wb3J0IHsgWFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvcmFkaW8nO1xyXG5pbXBvcnQgeyBYUmF0ZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3JhdGUnO1xyXG5pbXBvcnQgeyBYU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc2VsZWN0JztcclxuaW1wb3J0IHsgWFNsaWRlclNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3NsaWRlci1zZWxlY3QnO1xyXG5pbXBvcnQgeyBYU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc3dpdGNoJztcclxuaW1wb3J0IHsgWFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGV4dGFyZWEnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckNvbXBvbmVudCwgWFRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3gtY29udHJvbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBQb3J0YWxNb2R1bGUsXHJcblxyXG4gICAgWElucHV0Q29tcG9uZW50LFxyXG4gICAgWFNlbGVjdENvbXBvbmVudCxcclxuICAgIFhDYXNjYWRlQ29tcG9uZW50LFxyXG4gICAgWENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWENvbG9yUGlja2VyQ29tcG9uZW50LFxyXG4gICAgWERhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBYSW5wdXROdW1iZXJDb21wb25lbnQsXHJcbiAgICBYUmFkaW9Db21wb25lbnQsXHJcbiAgICBYUmF0ZUNvbXBvbmVudCxcclxuICAgIFhTbGlkZXJTZWxlY3RDb21wb25lbnQsXHJcbiAgICBYU3dpdGNoQ29tcG9uZW50LFxyXG4gICAgWFRpbWVQaWNrZXJNb2R1bGUsXHJcbiAgICBYVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBYRmluZENvbXBvbmVudCxcclxuICAgIFhBdXRvQ29tcGxldGVDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250cm9sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBYQ29udHJvbFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICBwcml2YXRlIF9zaGFyZWRQcm9wcyA9IHNpZ25hbChbJ3NwYW4nLCAnZGlyZWN0aW9uJywgJ2p1c3RpZnknLCAnYWxpZ24nLCAnbGFiZWxXaWR0aCcsICdsYWJlbEFsaWduJ10pO1xyXG4gIHByaXZhdGUgdmFsaWRhdG9yRm5zID0gc2lnbmFsPFZhbGlkYXRvckZuW10+KFtdKTtcclxuICBwcml2YXRlIGZvcm1Db250cm9sID0gc2lnbmFsPFVudHlwZWRGb3JtQ29udHJvbCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgdmFsdWUgPSBzaWduYWw8YW55PihudWxsKTtcclxuXHJcbiAgZm9ybSA9IGluamVjdChYRm9ybUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KSE7XHJcbiAgbG9jYWxlID0gdG9TaWduYWwodGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKG1hcCgoeCkgPT4geC5mb3JtIGFzIFhJMThuRm9ybSkpLCB7IGluaXRpYWxWYWx1ZTogemhfQ04uZm9ybSB9KTtcclxuICBwb3J0YWwgPSBzaWduYWw8UG9ydGFsPGFueT4gfCBudWxsPihudWxsKTtcclxuICBjb21wb25lbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8WEZvcm1Db250cm9sQ29tcG9uZW50PjtcclxuICBjb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8WEZvcm1Db250cm9sQ29tcG9uZW50PjtcclxuICBwb3J0YWxPdXRsZXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoQ2RrUG9ydGFsT3V0bGV0KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2woKSEucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlKCkpO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0T3B0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXQoXHJcbiAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5vcHRpb24oKS52YWx1ZSwge1xyXG4gICAgICAgIG5vbk51bGxhYmxlOiB0aGlzLm9wdGlvbigpLm5vbk51bGxhYmxlXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sKCkhXHJcbiAgICAgIC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnNldE1lc3NhZ2VzKHgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSFcclxuICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uud3JpdGVWYWx1ZSh4KTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm9wdGlvbigpLnNldFZhbGlkYXRvcnMgPSAoKSA9PiB0aGlzLnNldFZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybS5mb3JtR3JvdXAoKS5hZGRDb250cm9sKHRoaXMub3B0aW9uKCkuaWQsIHRoaXMuZm9ybUNvbnRyb2woKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFBvcnRhbCA9IHRoaXMuY3JlYXRlQ29tcG9uZW50UG9ydGFsKHRoaXMub3B0aW9uKCkpO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnBvcnRhbE91dGxldCgpLmF0dGFjaENvbXBvbmVudFBvcnRhbCh0aGlzLmNvbXBvbmVudFBvcnRhbCk7XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMub3B0aW9uKCkpIHtcclxuICAgICAgaWYgKGtleSBpbiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9ICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnkpW2tleV07XHJcbiAgICAgICAgaWYgKFhJc0Z1bmN0aW9uKHZhbCkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHZhbCk7XHJcbiAgICAgICAgICBpZiAodmFsU3ltYm9scy5sZW5ndGggIT09IDEpIGJyZWFrO1xyXG4gICAgICAgICAgY29uc3QgdmFsU3ltYm9sID0gdmFsW3ZhbFN5bWJvbHNbMF1dO1xyXG4gICAgICAgICAgaWYgKHZhbFN5bWJvbC5oYXNPd25Qcm9wZXJ0eSgndHJhbnNmb3JtRm4nKSkge1xyXG4gICAgICAgICAgICAvLyBpbnB1dFxyXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHRoaXMub3B0aW9uKClba2V5XSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzaWduYWxcclxuICAgICAgICAgICAgdmFsLnNldCh0aGlzLm9wdGlvbigpW2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgT3V0cHV0RW1pdHRlclJlZikge1xyXG4gICAgICAgICAgLy8gb3V0cHV0XHJcbiAgICAgICAgICB2YWwuc3Vic2NyaWJlKCh4KSA9PiB0aGlzLm9wdGlvbigpW2tleV0oeCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHZhbHVlXHJcbiAgICBpZiAodGhpcy5vcHRpb24oKS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLndyaXRlVmFsdWUodGhpcy5vcHRpb24oKS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlO1xyXG5cclxuICAgIHRoaXMuZm9ybS5jb250cm9sVHlwZXNbdGhpcy5vcHRpb24oKS5pZF0gPSB0aGlzLm9wdGlvbigpO1xyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xDb21wb25lbnRzW3RoaXMub3B0aW9uKCkuaWRdID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvckZucy5zZXQoW10pO1xyXG4gICAgaWYgKHRoaXMub3B0aW9uKCkuZGlzYWJsZWQgfHwgdGhpcy5mb3JtLmRpc2FibGVkKCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbCgpIS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sKCkhLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9uKCkucmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5kaXNhYmxlZCgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9yRm5zLnVwZGF0ZSgoeCkgPT4gWy4uLngsIFZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbigpLnBhdHRlcm4pIHtcclxuICAgICAgdGhpcy5zZXRQYXR0ZXJuKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5vcHRpb24oKS5pbnB1dFZhbGlkYXRvcikpIHtcclxuICAgICAgdGhpcy52YWxpZGF0b3JGbnMudXBkYXRlKCh4KSA9PiBbLi4ueCwgWEZvcm1JbnB1dFZhbGlkYXRvcih0aGlzLm9wdGlvbigpLmlucHV0VmFsaWRhdG9yISldKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSEuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvckZucygpKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2woKSEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uKCkge1xyXG4gICAgZm9yIChsZXQgcHJvcCBvZiB0aGlzLl9zaGFyZWRQcm9wcygpKSB7XHJcbiAgICAgIGlmIChYSXNFbXB0eSh0aGlzLm9wdGlvbigpW3Byb3BdKSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9uLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeFtwcm9wXSA9ICh0aGlzLmZvcm0gYXMgYW55KVtwcm9wXSgpO1xyXG4gICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLm9wdGlvbigpLmxhYmVsKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbi51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LmxhYmVsID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb24udXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgIHgubGFiZWwgPSBgJHt0aGlzLm9wdGlvbigpLmxhYmVsfSR7dGhpcy5mb3JtLmxhYmVsU3VmZml4KCl9YDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBhdHRlcm4oKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5vcHRpb24oKS5wYXR0ZXJuO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF0dGVybikpIHtcclxuICAgICAgZm9yIChjb25zdCBwdCBvZiBwYXR0ZXJuKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0b3JGbnMudXBkYXRlKCh4KSA9PiBbLi4ueCwgVmFsaWRhdG9ycy5wYXR0ZXJuKHB0KV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbGlkYXRvckZucy51cGRhdGUoKHgpID0+IFsuLi54LCBWYWxpZGF0b3JzLnBhdHRlcm4ocGF0dGVybiBhcyBSZWdFeHApXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXR0ZXJuTXNnKHBhdHRlcm46IHN0cmluZykge1xyXG4gICAgY29uc3QgY29udHJvbFBhdHRlcm4gPSB0aGlzLm9wdGlvbigpLnBhdHRlcm47XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb250cm9sUGF0dGVybikpIHtcclxuICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbigpLm1lc3NhZ2UgYXMgQXJyYXk8YW55PilbY29udHJvbFBhdHRlcm4uZmluZEluZGV4KCh4KSA9PiBTdHJpbmcoeCkgPT09IHBhdHRlcm4pXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbigpLm1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNZXNzYWdlcyhzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMpIHtcclxuICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtQ29udHJvbCgpISBhcyBYRm9ybUNvbnRyb2w7XHJcbiAgICBpZiAoc3RhdGUgPT09ICdJTlZBTElEJyAmJiB0aGlzLmZvcm1Db250cm9sKCkhLmVycm9ycyAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLm9wdGlvbigpLmxhYmVsIHx8IHRoaXMub3B0aW9uKCkuaWQ7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykge1xyXG4gICAgICAgICAgbWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMsIGAke2xhYmVsfSAke3RoaXMubG9jYWxlKCkucmVxdWlyZWQgfHwgJ3JlcXVpcmVkJ31gXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3BhdHRlcm4nKSB7XHJcbiAgICAgICAgICBtZXNzYWdlcyA9IFsuLi5tZXNzYWdlcywgYCR7bGFiZWx9ICR7dGhpcy5nZXRQYXR0ZXJuTXNnKGNvbnRyb2wuZXJyb3JzW2tleV0ucmVxdWlyZWRQYXR0ZXJuKX1gXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2lucHV0VmFsaWRhdG9yJykge1xyXG4gICAgICAgICAgbWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMsIGAke2xhYmVsfSAke3RoaXMub3B0aW9uKCkubWVzc2FnZX1gXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udHJvbC5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xyXG4gICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ1ZBTElEJykge1xyXG4gICAgICBjb250cm9sLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb21wb25lbnRQb3J0YWwob3B0aW9uOiBYRm9ybUNvbnRyb2xPcHRpb24pIHtcclxuICAgIHN3aXRjaCAob3B0aW9uLmNvbnRyb2wpIHtcclxuICAgICAgY2FzZSAnaW5wdXQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhJbnB1dENvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYU2VsZWN0Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWENoZWNrYm94Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWFJhZGlvQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdzd2l0Y2gnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhTd2l0Y2hDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3JhdGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhSYXRlQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdkYXRlLXBpY2tlcic6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWERhdGVQaWNrZXJDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3RpbWUtcGlja2VyJzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYVGltZVBpY2tlckNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnaW5wdXQtbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChYSW5wdXROdW1iZXJDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ3NsaWRlci1zZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhTbGlkZXJTZWxlY3RDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ2Nhc2NhZGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhDYXNjYWRlQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICBjYXNlICdjb2xvci1waWNrZXInOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhDb2xvclBpY2tlckNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAndGV4dGFyZWEnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhUZXh0YXJlYUNvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgY2FzZSAnZmluZCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWEZpbmRDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGNhc2UgJ2F1dG8tY29tcGxldGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKFhBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoWElucHV0Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1jb250cm9sXCIgW2Zvcm1Hcm91cF09XCJmb3JtLmZvcm1Hcm91cCgpXCI+XHJcbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -10,9 +10,6 @@ import { DOCUMENT } from '@angular/common';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/forms";
12
12
  export class XInputNumberComponent extends XInputNumberProperty {
13
- writeValue(value) {
14
- this.value.set(value);
15
- }
16
13
  constructor() {
17
14
  super();
18
15
  this.inputNumber = viewChild.required('inputNumber');
@@ -124,7 +121,6 @@ export class XInputNumberComponent extends XInputNumberProperty {
124
121
  this.inputEleRef().inputRef().nativeElement.value = this.displayValue();
125
122
  this.valueChange.next(this.value());
126
123
  }
127
- formControlChanges() { }
128
124
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
129
125
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: XInputNumberComponent, isStandalone: true, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, isSignal: true }, { propertyName: "inputEleRef", first: true, predicate: ["inputEleRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0;width:100%}.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
130
126
  }
@@ -132,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
132
128
  type: Component,
133
129
  args: [{ selector: `${XInputNumberPrefix}`, standalone: true, imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XInputNumberComponent)], template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0;width:100%}.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"] }]
134
130
  }], ctorParameters: () => [] });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFFdkIsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQVcsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVkzQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBSXBELFVBQVUsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFD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Qiw2REFGckIsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQywwUkMzQnBELGdtRkFxRUEscVVEL0NZLFdBQVcsb3RCQUFFLG1CQUFtQiwrQkFBRSxlQUFlLG9EQUFFLGdCQUFnQjs7MkZBT2xFLHFCQUFxQjtrQkFWakMsU0FBUzsrQkFDRSxHQUFHLGtCQUFrQixFQUFFLGNBQ3JCLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsaUJBRy9ELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgY29tcHV0ZWRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhOdW1iZXIsIFhJc05vdE5pbCwgWElzRnVuY3Rpb24sIFhJc1N0cmluZyB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXROdW1iZXJQcmVmaXgsIFhJbnB1dE51bWJlclByb3BlcnR5IH0gZnJvbSAnLi9pbnB1dC1udW1iZXIucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WElucHV0TnVtYmVyUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFhJbnB1dENvbXBvbmVudCwgWEJ1dHRvbkNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUvaW5kZXguc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWElucHV0TnVtYmVyQ29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhJbnB1dE51bWJlckNvbXBvbmVudCBleHRlbmRzIFhJbnB1dE51bWJlclByb3BlcnR5IHtcclxuICBpbnB1dE51bWJlciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2lucHV0TnVtYmVyJyk7XHJcbiAgaW5wdXRFbGVSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8WElucHV0Q29tcG9uZW50PignaW5wdXRFbGVSZWYnKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVyKCk7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHZhbHVlKSAmJiAhZm9ybWF0dGVyKSB7XHJcbiAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpLnRvRml4ZWQodGhpcy5wcmVjaXNpb24oKSk7XHJcbiAgICB9IGVsc2UgaWYgKGZvcm1hdHRlcikge1xyXG4gICAgICBjb25zdCB2YWx1ZUZvcm1hdHRlciA9IGZvcm1hdHRlcihOdW1iZXIodGhpcy52YWx1ZSgpKSk7XHJcbiAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IFhJc05vdE5pbCh2YWx1ZUZvcm1hdHRlcikgPyB2YWx1ZUZvcm1hdHRlciA6ICcnO1xyXG4gICAgICBpZiAoWElzTm90TmlsKGRpc3BsYXlWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH0pO1xyXG4gIG1pbkRpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcclxuICBtYXhEaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XHJcbiAgbW91c2Vkb3duJCE6IFN1YnNjcmlwdGlvbjtcclxuICBtb3VzZXVwJCE6IFN1YnNjcmlwdGlvbjtcclxuICB0aW1lcjogYW55O1xyXG4gIGljb24gPSBzaWduYWwoJycpO1xyXG4gIGljb25TcGluID0gc2lnbmFsKGZhbHNlKTtcclxuICBjbGVhcmFibGUgPSBzaWduYWwoZmFsc2UpO1xyXG4gIGlzRG93biA9IHNpZ25hbChmYWxzZSk7XHJcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2UodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52ZXJpZnkodmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMudmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICBkb3duKGV2ZW50OiBFdmVudCwgbGltaXQ6IFhOdW1iZXIsIGluY3JlYXNlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRDb21wdXRlZCgpKSByZXR1cm47XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlzRG93bi5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubW91c2Vkb3duJCA9IGludGVydmFsKE51bWJlcih0aGlzLmRlYm91bmNlKCkpKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdXMoZXZlbnQsIGxpbWl0LCBpbmNyZWFzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMubW91c2V1cCQgPSBmcm9tRXZlbnQodGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdtb3VzZXVwJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cChldmVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCAxNTApO1xyXG4gIH1cclxuXHJcbiAgdXAoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbXB1dGVkKCkpIHJldHVybjtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaXNEb3duLnNldChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5tb3VzZWRvd24kKSB0aGlzLm1vdXNlZG93biQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLm1vdXNldXAkKSB0aGlzLm1vdXNldXAkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwbHVzKGV2ZW50OiBFdmVudCwgbGltaXQ6IFhOdW1iZXIsIGluY3JlYXNlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRDb21wdXRlZCgpKSByZXR1cm47XHJcbiAgICBsaW1pdCA9IE51bWJlcihsaW1pdCk7XHJcbiAgICBpZiAoIWluY3JlYXNlKSBsaW1pdCA9IC1saW1pdDtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt0aGlzLnZhbHVlKCkpKSB0aGlzLnZhbHVlLnNldCgwKTtcclxuICAgIGxldCB2YWx1ZSA9IE51bWJlcih0aGlzLnZhbHVlKCkpICsgbGltaXQ7XHJcbiAgICB0aGlzLnZlcmlmeSh2YWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy52YWx1ZSgpKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICBpZiAoWElzU3RyaW5nKHZhbHVlKSAmJiBOdW1iZXIodmFsdWUpLnRvU3RyaW5nKCkgIT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHZhbHVlID0gTnVtYmVyKE51bWJlcih2YWx1ZSkudG9GaXhlZChOdW1iZXIodGhpcy5wcmVjaXNpb24oKSkpKTtcclxuICAgIGNvbnN0IG9sZFZhbHVlOiBudW1iZXIgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG9sZFZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWF4RGlzYWJsZWQuc2V0KHZhbHVlID49IHRoaXMubWF4KCkpO1xyXG4gICAgICB0aGlzLm1pbkRpc2FibGVkLnNldCh2YWx1ZSA8PSB0aGlzLm1pbigpKTtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQodGhpcy5tYXhEaXNhYmxlZCgpID8gdGhpcy5tYXgoKSA6IHRoaXMubWluRGlzYWJsZWQoKSA/IHRoaXMubWluKCkgOiB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHg6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHgudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBsZXQgdmFsdWUgPSBpbnB1dC52YWx1ZTtcclxuICAgIGlmIChYSXNGdW5jdGlvbih0aGlzLmZvcm1hdHRlcikpIHtcclxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXjAtOV0vZywgJycpO1xyXG4gICAgfVxyXG4gICAgdGhpcy52ZXJpZnkodmFsdWUpO1xyXG4gICAgdGhpcy5pbnB1dEVsZVJlZigpLmlucHV0UmVmKCkubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlKCk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy52YWx1ZSgpKTtcclxuICB9XHJcblxyXG4gIGZvcm1Db250cm9sQ2hhbmdlcygpIHt9XHJcbn1cclxuIiwiPGRpdiAjaW5wdXROdW1iZXIgY2xhc3M9XCJ4LWlucHV0LW51bWJlclwiIFtjbGFzcy54LWlucHV0LW51bWJlci1oaWRkZW4tYnV0dG9uXT1cImhpZGRlbkJ1dHRvbigpXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtaW5wdXQtbnVtYmVyLXJvd1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNiZWZvcmVCdXR0b25UcGw+XHJcbiAgICAgIDx4LWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwieC1pbnB1dC1udW1iZXItcmVkdWNlXCJcclxuICAgICAgICBpY29uPVwiZnRvLW1pbnVzXCJcclxuICAgICAgICBbc2l6ZV09XCJzaXplKClcIlxyXG4gICAgICAgIFtvbmx5SWNvbl09XCIhYm9yZGVyZWQoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKSB8fCBtaW5EaXNhYmxlZCgpXCJcclxuICAgICAgICAoY2xpY2spPVwiIW1pbkRpc2FibGVkKCkgJiYgcGx1cygkZXZlbnQsIHN0ZXAoKSwgZmFsc2UpOyBmb3JtQ29udHJvbFZhbGlkYXRvcigpXCJcclxuICAgICAgICBhdHRyVHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKG1vdXNlZG93bik9XCIhbWluRGlzYWJsZWQoKSAmJiBkb3duKCRldmVudCwgc3RlcCgpLCBmYWxzZSlcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cInVwKCRldmVudClcIlxyXG4gICAgICAgIHBsYWluXHJcbiAgICAgICAgZmxhdFxyXG4gICAgICA+PC94LWJ1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8eC1pbnB1dFxyXG4gICAgICAjaW5wdXRFbGVSZWZcclxuICAgICAgY2xhc3M9XCJ4LWlucHV0LW51bWJlci1pbnB1dFwiXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcclxuICAgICAgW2xhYmVsV2lkdGhdPVwibGFiZWxXaWR0aCgpXCJcclxuICAgICAgW2xhYmVsQWxpZ25dPVwibGFiZWxBbGlnbigpXCJcclxuICAgICAgW2p1c3RpZnldPVwianVzdGlmeSgpXCJcclxuICAgICAgW2FsaWduXT1cImFsaWduKClcIlxyXG4gICAgICBbZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZENvbXB1dGVkKClcIlxyXG4gICAgICBbdmFsaWRhdG9yXT1cInZhbGlkYXRvckNvbXB1dGVkKClcIlxyXG4gICAgICBbaWNvbl09XCJpY29uKClcIlxyXG4gICAgICBbaWNvblNwaW5dPVwiaWNvblNwaW4oKVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxyXG4gICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZSgpXCJcclxuICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlKClcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIFt2YWx1ZVRwbF09XCJ2YWx1ZVRwbCgpXCJcclxuICAgICAgW3ZhbHVlVHBsQ29udGV4dF09XCJ2YWx1ZVRwbENvbnRleHQoKVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCJcclxuICAgICAgW2JlZm9yZV09XCJoaWRkZW5CdXR0b24oKSA/ICcnIDogYmVmb3JlQnV0dG9uVHBsXCJcclxuICAgICAgW2FmdGVyXT1cImhpZGRlbkJ1dHRvbigpID8gJycgOiBhZnRlckJ1dHRvblRwbFwiXHJcbiAgICAgIFtwYXR0ZXJuXT1cInBhdHRlcm5Db21wdXRlZCgpXCJcclxuICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUNvbXB1dGVkKClcIlxyXG4gICAgICAoeElucHV0KT1cIm9uSW5wdXQoJGV2ZW50KTsgZm9ybUNvbnRyb2xWYWxpZGF0b3IoKVwiXHJcbiAgICA+PC94LWlucHV0PlxyXG4gICAgPG5nLXRlbXBsYXRlICNhZnRlckJ1dHRvblRwbD5cclxuICAgICAgPHgtYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJ4LWlucHV0LW51bWJlci1wbHVzXCJcclxuICAgICAgICBpY29uPVwiZnRvLXBsdXNcIlxyXG4gICAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgICAgW29ubHlJY29uXT1cIiFib3JkZXJlZCgpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDb21wdXRlZCgpIHx8IG1heERpc2FibGVkKClcIlxyXG4gICAgICAgIChjbGljayk9XCIhbWF4RGlzYWJsZWQoKSAmJiBwbHVzKCRldmVudCwgc3RlcCgpKTsgZm9ybUNvbnRyb2xWYWxpZGF0b3IoKVwiXHJcbiAgICAgICAgYXR0clR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChtb3VzZWRvd24pPVwiIW1heERpc2FibGVkKCkgJiYgZG93bigkZXZlbnQsIHN0ZXAoKSlcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cInVwKCRldmVudClcIlxyXG4gICAgICAgIHBsYWluXHJcbiAgICAgICAgZmxhdFxyXG4gICAgICA+PC94LWJ1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBAaWYgKGludmFsaWQoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtbGVmdFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFFdkIsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQVcsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVkzQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBa0M3RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBbENWLGdCQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBMEIsYUFBYSxD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Z0I7OzJGQU9sRSxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsR0FBRyxrQkFBa0IsRUFBRSxjQUNyQixJQUFJLFdBQ1AsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGlCQUcvRCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgaW50ZXJ2YWwsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgc2lnbmFsLFxyXG4gIGNvbXB1dGVkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYTnVtYmVyLCBYSXNOb3ROaWwsIFhJc0Z1bmN0aW9uLCBYSXNTdHJpbmcgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWElucHV0TnVtYmVyUHJlZml4LCBYSW5wdXROdW1iZXJQcm9wZXJ0eSB9IGZyb20gJy4vaW5wdXQtbnVtYmVyLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hJbnB1dE51bWJlclByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBYSW5wdXRDb21wb25lbnQsIFhCdXR0b25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0eWxlL2luZGV4LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhJbnB1dE51bWJlckNvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYSW5wdXROdW1iZXJDb21wb25lbnQgZXh0ZW5kcyBYSW5wdXROdW1iZXJQcm9wZXJ0eSB7XHJcbiAgaW5wdXROdW1iZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdpbnB1dE51bWJlcicpO1xyXG4gIGlucHV0RWxlUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPFhJbnB1dENvbXBvbmVudD4oJ2lucHV0RWxlUmVmJyk7XHJcblxyXG4gIGRpc3BsYXlWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSgpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZXIoKTtcclxuICAgIGlmICghWElzRW1wdHkodmFsdWUpICYmICFmb3JtYXR0ZXIpIHtcclxuICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkudG9GaXhlZCh0aGlzLnByZWNpc2lvbigpKTtcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0dGVyKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlRm9ybWF0dGVyID0gZm9ybWF0dGVyKE51bWJlcih0aGlzLnZhbHVlKCkpKTtcclxuICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gWElzTm90TmlsKHZhbHVlRm9ybWF0dGVyKSA/IHZhbHVlRm9ybWF0dGVyIDogJyc7XHJcbiAgICAgIGlmIChYSXNOb3ROaWwoZGlzcGxheVZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfSk7XHJcbiAgbWluRGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gIG1heERpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcclxuICBtb3VzZWRvd24kITogU3Vic2NyaXB0aW9uO1xyXG4gIG1vdXNldXAkITogU3Vic2NyaXB0aW9uO1xyXG4gIHRpbWVyOiBhbnk7XHJcbiAgaWNvbiA9IHNpZ25hbCgnJyk7XHJcbiAgaWNvblNwaW4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIGNsZWFyYWJsZSA9IHNpZ25hbChmYWxzZSk7XHJcbiAgaXNEb3duID0gc2lnbmFsKGZhbHNlKTtcclxuICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnZlcmlmeSh2YWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy52YWx1ZSgpKTtcclxuICB9XHJcblxyXG4gIGRvd24oZXZlbnQ6IEV2ZW50LCBsaW1pdDogWE51bWJlciwgaW5jcmVhc2U6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbXB1dGVkKCkpIHJldHVybjtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaXNEb3duLnNldCh0cnVlKTtcclxuICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5tb3VzZWRvd24kID0gaW50ZXJ2YWwoTnVtYmVyKHRoaXMuZGVib3VuY2UoKSkpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1cyhldmVudCwgbGltaXQsIGluY3JlYXNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5tb3VzZXVwJCA9IGZyb21FdmVudCh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ21vdXNldXAnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwKGV2ZW50KTtcclxuICAgICAgICB9KTtcclxuICAgIH0sIDE1MCk7XHJcbiAgfVxyXG5cclxuICB1cChldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkQ29tcHV0ZWQoKSkgcmV0dXJuO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pc0Rvd24uc2V0KGZhbHNlKTtcclxuICAgIGlmICh0aGlzLm1vdXNlZG93biQpIHRoaXMubW91c2Vkb3duJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMubW91c2V1cCQpIHRoaXMubW91c2V1cCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHBsdXMoZXZlbnQ6IEV2ZW50LCBsaW1pdDogWE51bWJlciwgaW5jcmVhc2U6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbXB1dGVkKCkpIHJldHVybjtcclxuICAgIGxpbWl0ID0gTnVtYmVyKGxpbWl0KTtcclxuICAgIGlmICghaW5jcmVhc2UpIGxpbWl0ID0gLWxpbWl0O1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMudGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgIGlmIChOdW1iZXIuaXNOYU4oK3RoaXMudmFsdWUoKSkpIHRoaXMudmFsdWUuc2V0KDApO1xyXG4gICAgbGV0IHZhbHVlID0gTnVtYmVyKHRoaXMudmFsdWUoKSkgKyBsaW1pdDtcclxuICAgIHRoaXMudmVyaWZ5KHZhbHVlKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgdmVyaWZ5KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIGlmIChYSXNTdHJpbmcodmFsdWUpICYmIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKSAhPT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFsdWUgPSBOdW1iZXIoTnVtYmVyKHZhbHVlKS50b0ZpeGVkKE51bWJlcih0aGlzLnByZWNpc2lvbigpKSkpO1xyXG4gICAgY29uc3Qgb2xkVmFsdWU6IG51bWJlciA9IHRoaXMudmFsdWUoKTtcclxuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgIGlmIChOdW1iZXIuaXNOYU4oK3RoaXMudmFsdWUoKSkpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQob2xkVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tYXhEaXNhYmxlZC5zZXQodmFsdWUgPj0gdGhpcy5tYXgoKSk7XHJcbiAgICAgIHRoaXMubWluRGlzYWJsZWQuc2V0KHZhbHVlIDw9IHRoaXMubWluKCkpO1xyXG4gICAgICB0aGlzLnZhbHVlLnNldCh0aGlzLm1heERpc2FibGVkKCkgPyB0aGlzLm1heCgpIDogdGhpcy5taW5EaXNhYmxlZCgpID8gdGhpcy5taW4oKSA6IHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoeDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0ID0geC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG4gICAgaWYgKFhJc0Z1bmN0aW9uKHRoaXMuZm9ybWF0dGVyKSkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teMC05XS9nLCAnJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZlcmlmeSh2YWx1ZSk7XHJcbiAgICB0aGlzLmlucHV0RWxlUmVmKCkuaW5wdXRSZWYoKS5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5kaXNwbGF5VmFsdWUoKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNpbnB1dE51bWJlciBjbGFzcz1cIngtaW5wdXQtbnVtYmVyXCIgW2NsYXNzLngtaW5wdXQtbnVtYmVyLWhpZGRlbi1idXR0b25dPVwiaGlkZGVuQnV0dG9uKClcIj5cclxuICA8ZGl2IGNsYXNzPVwieC1pbnB1dC1udW1iZXItcm93XCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2JlZm9yZUJ1dHRvblRwbD5cclxuICAgICAgPHgtYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJ4LWlucHV0LW51bWJlci1yZWR1Y2VcIlxyXG4gICAgICAgIGljb249XCJmdG8tbWludXNcIlxyXG4gICAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgICAgW29ubHlJY29uXT1cIiFib3JkZXJlZCgpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDb21wdXRlZCgpIHx8IG1pbkRpc2FibGVkKClcIlxyXG4gICAgICAgIChjbGljayk9XCIhbWluRGlzYWJsZWQoKSAmJiBwbHVzKCRldmVudCwgc3RlcCgpLCBmYWxzZSk7IGZvcm1Db250cm9sVmFsaWRhdG9yKClcIlxyXG4gICAgICAgIGF0dHJUeXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiFtaW5EaXNhYmxlZCgpICYmIGRvd24oJGV2ZW50LCBzdGVwKCksIGZhbHNlKVwiXHJcbiAgICAgICAgKG1vdXNldXApPVwidXAoJGV2ZW50KVwiXHJcbiAgICAgICAgcGxhaW5cclxuICAgICAgICBmbGF0XHJcbiAgICAgID48L3gtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDx4LWlucHV0XHJcbiAgICAgICNpbnB1dEVsZVJlZlxyXG4gICAgICBjbGFzcz1cIngtaW5wdXQtbnVtYmVyLWlucHV0XCJcclxuICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxyXG4gICAgICBbbGFiZWxXaWR0aF09XCJsYWJlbFdpZHRoKClcIlxyXG4gICAgICBbbGFiZWxBbGlnbl09XCJsYWJlbEFsaWduKClcIlxyXG4gICAgICBbanVzdGlmeV09XCJqdXN0aWZ5KClcIlxyXG4gICAgICBbYWxpZ25dPVwiYWxpZ24oKVwiXHJcbiAgICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDb21wdXRlZCgpXCJcclxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFt2YWxpZGF0b3JdPVwidmFsaWRhdG9yQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFtpY29uXT1cImljb24oKVwiXHJcbiAgICAgIFtpY29uU3Bpbl09XCJpY29uU3BpbigpXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXHJcbiAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlKClcIlxyXG4gICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWUoKVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgW3ZhbHVlVHBsXT1cInZhbHVlVHBsKClcIlxyXG4gICAgICBbdmFsdWVUcGxDb250ZXh0XT1cInZhbHVlVHBsQ29udGV4dCgpXCJcclxuICAgICAgW3NpemVdPVwic2l6ZSgpXCJcclxuICAgICAgW2JvcmRlcmVkXT1cImJvcmRlcmVkKClcIlxyXG4gICAgICBbYmVmb3JlXT1cImhpZGRlbkJ1dHRvbigpID8gJycgOiBiZWZvcmVCdXR0b25UcGxcIlxyXG4gICAgICBbYWZ0ZXJdPVwiaGlkZGVuQnV0dG9uKCkgPyAnJyA6IGFmdGVyQnV0dG9uVHBsXCJcclxuICAgICAgW3BhdHRlcm5dPVwicGF0dGVybkNvbXB1dGVkKClcIlxyXG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlQ29tcHV0ZWQoKVwiXHJcbiAgICAgICh4SW5wdXQpPVwib25JbnB1dCgkZXZlbnQpOyBmb3JtQ29udHJvbFZhbGlkYXRvcigpXCJcclxuICAgID48L3gtaW5wdXQ+XHJcbiAgICA8bmctdGVtcGxhdGUgI2FmdGVyQnV0dG9uVHBsPlxyXG4gICAgICA8eC1idXR0b25cclxuICAgICAgICBjbGFzcz1cIngtaW5wdXQtbnVtYmVyLXBsdXNcIlxyXG4gICAgICAgIGljb249XCJmdG8tcGx1c1wiXHJcbiAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcclxuICAgICAgICBbb25seUljb25dPVwiIWJvcmRlcmVkKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKCkgfHwgbWF4RGlzYWJsZWQoKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiFtYXhEaXNhYmxlZCgpICYmIHBsdXMoJGV2ZW50LCBzdGVwKCkpOyBmb3JtQ29udHJvbFZhbGlkYXRvcigpXCJcclxuICAgICAgICBhdHRyVHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKG1vdXNlZG93bik9XCIhbWF4RGlzYWJsZWQoKSAmJiBkb3duKCRldmVudCwgc3RlcCgpKVwiXHJcbiAgICAgICAgKG1vdXNldXApPVwidXAoJGV2ZW50KVwiXHJcbiAgICAgICAgcGxhaW5cclxuICAgICAgICBmbGF0XHJcbiAgICAgID48L3gtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIEBpZiAoaW52YWxpZCgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LXRvcC1sZWZ0XCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LXRvcC1yaWdodFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC1ib3R0b20tbGVmdFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC1ib3R0b20tcmlnaHRcIj48L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==