@festo-ui/angular 5.0.0 → 5.1.0-dev.162

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 (157) hide show
  1. package/esm2020/lib/components/accordion/accordion-header/accordion-header.component.mjs +5 -5
  2. package/esm2020/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +5 -5
  3. package/esm2020/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +10 -10
  4. package/esm2020/lib/components/accordion/accordion-item/accordion-item.component.mjs +15 -15
  5. package/esm2020/lib/components/accordion/accordion.component.mjs +16 -16
  6. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +5 -5
  7. package/esm2020/lib/components/buttons/button/button.component.mjs +5 -5
  8. package/esm2020/lib/components/buttons/link-button/link-button.component.mjs +5 -5
  9. package/esm2020/lib/components/chips/chip/chip.component.mjs +5 -5
  10. package/esm2020/lib/components/chips/chip-container/chip-container.component.mjs +5 -5
  11. package/esm2020/lib/components/components.module.mjs +204 -201
  12. package/esm2020/lib/components/loading-indicator/loading-indicator.component.mjs +5 -5
  13. package/esm2020/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +5 -5
  14. package/esm2020/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +7 -7
  15. package/esm2020/lib/components/mobile-flyout/mobile-flyout.component.mjs +9 -8
  16. package/esm2020/lib/components/pagination/pagination.component.mjs +12 -12
  17. package/esm2020/lib/components/popovers/legend/legend.component.mjs +6 -6
  18. package/esm2020/lib/components/popovers/legend/legend.directive.mjs +5 -5
  19. package/esm2020/lib/components/popovers/popover/popover.component.mjs +9 -9
  20. package/esm2020/lib/components/popovers/popover-content/popover-content.component.mjs +6 -6
  21. package/esm2020/lib/components/popovers/popover-content/popover-content.directive.mjs +5 -5
  22. package/esm2020/lib/components/popovers/popover-menu/popover-menu.component.mjs +6 -6
  23. package/esm2020/lib/components/popovers/popover-ref.mjs +1 -1
  24. package/esm2020/lib/components/popovers/popover.models.mjs +7 -7
  25. package/esm2020/lib/components/popovers/popover.service.mjs +7 -7
  26. package/esm2020/lib/components/popovers/tooltip/tooltip.directive.mjs +8 -7
  27. package/esm2020/lib/components/progress/progress.component.mjs +5 -5
  28. package/esm2020/lib/components/scroll/scrollable.directive.mjs +5 -5
  29. package/esm2020/lib/components/search-input/search-input.component.mjs +8 -8
  30. package/esm2020/lib/components/sidebar-overlay/sidebar-overlay.component.mjs +59 -0
  31. package/esm2020/lib/components/snackbar/snackbar-container.component.mjs +7 -7
  32. package/esm2020/lib/components/snackbar/snackbar-container.directive.mjs +8 -8
  33. package/esm2020/lib/components/snackbar/snackbar.component.mjs +5 -5
  34. package/esm2020/lib/components/snackbar/snackbar.models.mjs +1 -1
  35. package/esm2020/lib/components/snackbar/snackbar.module.mjs +9 -10
  36. package/esm2020/lib/components/snackbar/snackbar.service.mjs +5 -5
  37. package/esm2020/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +5 -5
  38. package/esm2020/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +7 -7
  39. package/esm2020/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +5 -5
  40. package/esm2020/lib/components/stepper-vertical/stepper-vertical.component.mjs +7 -7
  41. package/esm2020/lib/components/table-header-cell/table-header-cell.directive.mjs +5 -5
  42. package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +7 -7
  43. package/esm2020/lib/components/tabs/tabs.component.mjs +10 -10
  44. package/esm2020/lib/directives/click-outside.directive.mjs +5 -5
  45. package/esm2020/lib/festo-angular.module.mjs +5 -5
  46. package/esm2020/lib/forms/checkbox/checkbox.component.mjs +7 -7
  47. package/esm2020/lib/forms/color-indicator/color-indicator.component.mjs +5 -5
  48. package/esm2020/lib/forms/color-picker/color-picker.component.mjs +7 -7
  49. package/esm2020/lib/forms/date-picker/date-picker.component.mjs +10 -10
  50. package/esm2020/lib/forms/date-range-picker/date-range-picker.component.mjs +9 -9
  51. package/esm2020/lib/forms/flatpickr/flatpickr.component.mjs +5 -5
  52. package/esm2020/lib/forms/forms.module.mjs +107 -127
  53. package/esm2020/lib/forms/radio/radio.component.mjs +18 -18
  54. package/esm2020/lib/forms/segment/segment-control/segment-control.component.mjs +13 -8
  55. package/esm2020/lib/forms/segment/segment.component.mjs +39 -14
  56. package/esm2020/lib/forms/select/chip-text.pipe.mjs +5 -5
  57. package/esm2020/lib/forms/select/select-option/select-option.component.mjs +5 -5
  58. package/esm2020/lib/forms/select/select.component.mjs +31 -23
  59. package/esm2020/lib/forms/slider/slider.component.mjs +7 -7
  60. package/esm2020/lib/forms/switch/switch.component.mjs +7 -7
  61. package/esm2020/lib/forms/text-area/text-area.component.mjs +7 -7
  62. package/esm2020/lib/forms/text-editor/text-editor.component.mjs +25 -27
  63. package/esm2020/lib/forms/text-input/text-input.component.mjs +13 -13
  64. package/esm2020/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +5 -5
  65. package/esm2020/lib/forms/time-picker/time-picker.component.mjs +9 -9
  66. package/esm2020/lib/forms/unique-selection-dispatcher.mjs +5 -5
  67. package/esm2020/lib/forms/value-accessor-base.mjs +5 -5
  68. package/esm2020/lib/modals/alert/alert.component.mjs +8 -7
  69. package/esm2020/lib/modals/confirm/confirm.component.mjs +8 -7
  70. package/esm2020/lib/modals/custom-modal/custom-modal.component.mjs +16 -7
  71. package/esm2020/lib/modals/image-gallery/image-gallery.component.mjs +7 -7
  72. package/esm2020/lib/modals/modal.service.mjs +13 -13
  73. package/esm2020/lib/modals/modals.module.mjs +11 -12
  74. package/esm2020/lib/modals/prompt/prompt.component.mjs +16 -8
  75. package/esm2020/lib/pipes/safe-html.pipe.mjs +6 -6
  76. package/esm2020/public-api.mjs +2 -1
  77. package/fesm2015/festo-ui-angular.mjs +1070 -972
  78. package/fesm2015/festo-ui-angular.mjs.map +1 -1
  79. package/fesm2020/festo-ui-angular.mjs +1067 -972
  80. package/fesm2020/festo-ui-angular.mjs.map +1 -1
  81. package/lib/components/accordion/accordion-header/accordion-header.component.d.ts +3 -3
  82. package/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.d.ts +3 -3
  83. package/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.d.ts +5 -5
  84. package/lib/components/accordion/accordion-item/accordion-item.component.d.ts +7 -7
  85. package/lib/components/accordion/accordion.component.d.ts +7 -7
  86. package/lib/components/breadcrumb/breadcrumb.component.d.ts +3 -3
  87. package/lib/components/buttons/button/button.component.d.ts +3 -3
  88. package/lib/components/buttons/link-button/link-button.component.d.ts +3 -3
  89. package/lib/components/chips/chip/chip.component.d.ts +3 -3
  90. package/lib/components/chips/chip-container/chip-container.component.d.ts +3 -3
  91. package/lib/components/components.module.d.ts +36 -36
  92. package/lib/components/loading-indicator/loading-indicator.component.d.ts +3 -3
  93. package/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.d.ts +3 -3
  94. package/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.d.ts +5 -5
  95. package/lib/components/mobile-flyout/mobile-flyout.component.d.ts +5 -5
  96. package/lib/components/pagination/pagination.component.d.ts +6 -6
  97. package/lib/components/popovers/legend/legend.component.d.ts +9 -9
  98. package/lib/components/popovers/legend/legend.directive.d.ts +5 -5
  99. package/lib/components/popovers/popover/popover.component.d.ts +5 -5
  100. package/lib/components/popovers/popover-content/popover-content.component.d.ts +12 -12
  101. package/lib/components/popovers/popover-content/popover-content.directive.d.ts +5 -5
  102. package/lib/components/popovers/popover-menu/popover-menu.component.d.ts +11 -11
  103. package/lib/components/popovers/popover-ref.d.ts +4 -4
  104. package/lib/components/popovers/popover.models.d.ts +15 -15
  105. package/lib/components/popovers/popover.service.d.ts +7 -7
  106. package/lib/components/popovers/tooltip/tooltip.directive.d.ts +9 -9
  107. package/lib/components/progress/progress.component.d.ts +3 -3
  108. package/lib/components/scroll/scrollable.directive.d.ts +4 -4
  109. package/lib/components/search-input/search-input.component.d.ts +9 -9
  110. package/lib/components/sidebar-overlay/sidebar-overlay.component.d.ts +25 -0
  111. package/lib/components/snackbar/snackbar-container.component.d.ts +5 -5
  112. package/lib/components/snackbar/snackbar-container.directive.d.ts +7 -7
  113. package/lib/components/snackbar/snackbar.component.d.ts +5 -5
  114. package/lib/components/snackbar/snackbar.models.d.ts +2 -2
  115. package/lib/components/snackbar/snackbar.module.d.ts +4 -5
  116. package/lib/components/snackbar/snackbar.service.d.ts +8 -8
  117. package/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.d.ts +3 -3
  118. package/lib/components/stepper-horizontal/stepper-horizontal.component.d.ts +5 -5
  119. package/lib/components/stepper-vertical/step-vertical/step-vertical.component.d.ts +3 -3
  120. package/lib/components/stepper-vertical/stepper-vertical.component.d.ts +5 -5
  121. package/lib/components/table-header-cell/table-header-cell.directive.d.ts +5 -5
  122. package/lib/components/tabs/tab-pane/tab-pane.component.d.ts +3 -3
  123. package/lib/components/tabs/tabs.component.d.ts +18 -18
  124. package/lib/directives/click-outside.directive.d.ts +3 -3
  125. package/lib/festo-angular.module.d.ts +1 -1
  126. package/lib/forms/checkbox/checkbox.component.d.ts +3 -3
  127. package/lib/forms/color-indicator/color-indicator.component.d.ts +3 -3
  128. package/lib/forms/color-picker/color-picker.component.d.ts +3 -3
  129. package/lib/forms/date-picker/date-picker.component.d.ts +5 -5
  130. package/lib/forms/date-range-picker/date-range-picker.component.d.ts +5 -5
  131. package/lib/forms/flatpickr/flatpickr.component.d.ts +3 -3
  132. package/lib/forms/forms.module.d.ts +18 -23
  133. package/lib/forms/radio/radio.component.d.ts +15 -15
  134. package/lib/forms/segment/segment-control/segment-control.component.d.ts +5 -4
  135. package/lib/forms/segment/segment.component.d.ts +19 -10
  136. package/lib/forms/select/chip-text.pipe.d.ts +3 -3
  137. package/lib/forms/select/select-option/select-option.component.d.ts +3 -3
  138. package/lib/forms/select/select.component.d.ts +10 -8
  139. package/lib/forms/slider/slider.component.d.ts +3 -3
  140. package/lib/forms/switch/switch.component.d.ts +3 -3
  141. package/lib/forms/text-area/text-area.component.d.ts +3 -3
  142. package/lib/forms/text-editor/text-editor.component.d.ts +10 -9
  143. package/lib/forms/text-input/text-input.component.d.ts +9 -9
  144. package/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.d.ts +3 -3
  145. package/lib/forms/time-picker/time-picker.component.d.ts +5 -5
  146. package/lib/forms/unique-selection-dispatcher.d.ts +3 -3
  147. package/lib/forms/value-accessor-base.d.ts +3 -3
  148. package/lib/modals/alert/alert.component.d.ts +5 -5
  149. package/lib/modals/confirm/confirm.component.d.ts +5 -5
  150. package/lib/modals/custom-modal/custom-modal.component.d.ts +5 -3
  151. package/lib/modals/image-gallery/image-gallery.component.d.ts +9 -7
  152. package/lib/modals/modal.service.d.ts +11 -11
  153. package/lib/modals/modals.module.d.ts +7 -8
  154. package/lib/modals/prompt/prompt.component.d.ts +8 -5
  155. package/lib/pipes/safe-html.pipe.d.ts +3 -3
  156. package/package.json +1 -1
  157. package/public-api.d.ts +1 -0
@@ -7,7 +7,7 @@ import * as i1 from "@angular/common";
7
7
  /**
8
8
  * A custom form element for text inputs.
9
9
  */
10
- export class TextAreaComponent {
10
+ export class FngTextAreaComponent {
11
11
  constructor() {
12
12
  this.innerReadonly = false;
13
13
  this.tabindex = 0;
@@ -139,20 +139,20 @@ export class TextAreaComponent {
139
139
  this.disabled = isDisabled;
140
140
  }
141
141
  }
142
- TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
143
- TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: TextAreaComponent, isStandalone: true, selector: "fng-text-area", inputs: { label: "label", readonly: "readonly", placeholder: "placeholder", tabindex: "tabindex", name: "name", disabled: "disabled", value: "value", required: "required", error: "error", hint: "hint", rows: "rows", maxlength: "maxlength" }, providers: [
142
+ FngTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngTextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
143
+ FngTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: FngTextAreaComponent, isStandalone: true, selector: "fng-text-area", inputs: { label: "label", readonly: "readonly", placeholder: "placeholder", tabindex: "tabindex", name: "name", disabled: "disabled", value: "value", required: "required", error: "error", hint: "hint", rows: "rows", maxlength: "maxlength" }, providers: [
144
144
  {
145
145
  provide: NG_VALUE_ACCESSOR,
146
- useExisting: forwardRef(() => TextAreaComponent),
146
+ useExisting: forwardRef(() => FngTextAreaComponent),
147
147
  multi: true
148
148
  }
149
149
  ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<label class=\"fwe-input-text\">\n <textarea\n #inputElement\n [class]=\"'fwe-row-' + rows\"\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value }}</textarea\n >\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n <span *ngIf=\"maxlength > 0 && value != null\" class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n</label>\n", styles: ["fng-text-area.ng-invalid label.fwe-input-text textarea{border:1px solid var(--fwe-red)!important;box-shadow:none;outline:none}fng-text-area.ng-invalid label.fwe-input-text textarea:focus{border:1px solid var(--fwe-red)!important}fng-text-area.ng-invalid label.fwe-input-text textarea:disabled{border:1px solid var(--fwe-control-disabled)!important}fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-label,fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-invalid,fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-info{color:var(--fwe-text-disabled)}fng-text-area.ng-invalid label.fwe-input-text .fwe-input-text-info{display:none!important}fng-text-area.ng-invalid label.fwe-input-text .fwe-input-text-invalid{display:block!important}label.fwe-input-text .fwe-input-text-count{display:block;line-height:var(--fwe-line-height-base);position:absolute;right:0;bottom:0;color:var(--fwe-text-disabled);font-size:var(--fwe-font-size-small)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TextAreaComponent, decorators: [{
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngTextAreaComponent, decorators: [{
151
151
  type: Component,
152
152
  args: [{ standalone: true, imports: [CommonModule], selector: 'fng-text-area', providers: [
153
153
  {
154
154
  provide: NG_VALUE_ACCESSOR,
155
- useExisting: forwardRef(() => TextAreaComponent),
155
+ useExisting: forwardRef(() => FngTextAreaComponent),
156
156
  multi: true
157
157
  }
158
158
  ], encapsulation: ViewEncapsulation.None, template: "<label class=\"fwe-input-text\">\n <textarea\n #inputElement\n [class]=\"'fwe-row-' + rows\"\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value }}</textarea\n >\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n <span *ngIf=\"maxlength > 0 && value != null\" class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n</label>\n", styles: ["fng-text-area.ng-invalid label.fwe-input-text textarea{border:1px solid var(--fwe-red)!important;box-shadow:none;outline:none}fng-text-area.ng-invalid label.fwe-input-text textarea:focus{border:1px solid var(--fwe-red)!important}fng-text-area.ng-invalid label.fwe-input-text textarea:disabled{border:1px solid var(--fwe-control-disabled)!important}fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-label,fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-invalid,fng-text-area.ng-invalid label.fwe-input-text textarea:disabled~.fwe-input-text-info{color:var(--fwe-text-disabled)}fng-text-area.ng-invalid label.fwe-input-text .fwe-input-text-info{display:none!important}fng-text-area.ng-invalid label.fwe-input-text .fwe-input-text-invalid{display:block!important}label.fwe-input-text .fwe-input-text-count{display:block;line-height:var(--fwe-line-height-base);position:absolute;right:0;bottom:0;color:var(--fwe-text-disabled);font-size:var(--fwe-font-size-small)}\n"] }]
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
184
184
  type: ViewChild,
185
185
  args: ['inputElement']
186
186
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DOztHQUVHO0FBZ0JILE1BQU0sT0FBTyxpQkFBaUI7SUFmOUI7UUE0QlUsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHckIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQWtCcEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUF1Q3RCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBdUJ0QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWYsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUkvQjs7V0FFRztRQUNILFlBQU8sR0FBWSxLQUFLLENBQUM7S0FpRjFCO0lBcExDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFPRDs7O09BR0c7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QkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQSBjdXN0b20gZm9ybSBlbGVtZW50IGZvciB0ZXh0IGlucHV0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy10ZXh0LWFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dEFyZWFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGV4dEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGlucHV0IGxhYmVsLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlubmVyUmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgaW5uZXJSZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgY29udHJvbCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBzZXRcbiAgICogYW5kIGl0IGdldHMgYWRkZWVkIHRoZSAuZGlzYWJsZWQgY3NzIGNsYXNzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lckRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaW5uZXJEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5uZXIgdmFsdWUuXG4gICAqL1xuICBpbm5lclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBnZXR0ZXIgZm9yIHZhbHVlLlxuICAgKi9cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGVyIGZvciB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mb2N1c2VkID0gISF2YWx1ZTtcbiAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lclJlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgaW5uZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFcnJvciBkZXNjcmlwdGlvbiB3aGVuIGludmFsaWQuXG4gICAqL1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIaW50IGRlc2NyaXB0aW9uIHdoZW4gdmFsaWQuXG4gICAqL1xuICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIHRoZSBoZWlnaHQgaXMgbWFuYWdlZCBieSBjbGFzc2VzLiB0aGUgbGFzdCBvbmUgaXMgXCJmd2Utcm93LTEwXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSb3dzO1xuICB9XG4gIHNldCByb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCB2ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuaW5uZXJSb3dzID0gdiA+IDEwID8gMTAgOiB2O1xuICB9XG4gIHByb3RlY3RlZCBpbm5lclJvd3MgPSAzO1xuXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgdGV4dCBpbnB1dCBoYXMgZm9jdXMuXG4gICAqL1xuICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBvbiBjaGFuZ2UuXG4gICAqL1xuICBvbkNoYW5nZTogKCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVHJpZ2dlcmVkIG9uIHRvdWNoLlxuICAgKi9cbiAgb25Ub3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSAnJyArIHZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvY3VzZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIG9uQ2hhbmdlLlxuICAgKiBAcGFyYW0gZm4gVGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb24uXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gb25Ub3VjaGVkLlxuICAgKiBAcGFyYW0gZm4gVGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb24uXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdGV4dCBpbnB1dCBpcyBpbiBmb2N1cy5cbiAgICovXG4gIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAvLyBUaGUgaGVpZ2h0IGlzIGFkanVzdGVkIHRvIHRoZSBjb250ZW50IG9uIFwicm93cyA9IDBcIlxuICAgIGlmICh0aGlzLnJvd3MgPT09IDApIHtcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnMXB4JzsgLy8gdHJpZ2dlciBjYWxjdWxhdGlvbiBvZiB0aGUgdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAyNSArIHRleHRhcmVhLnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSB0ZXh0IGlucHV0IGJsdXJzLlxuICAgKi9cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZS5cbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hlbiB0cnVlIHRoZSBjb250cm9sIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwiZndlLWlucHV0LXRleHRcIj5cbiAgPHRleHRhcmVhXG4gICAgI2lucHV0RWxlbWVudFxuICAgIFtjbGFzc109XCInZndlLXJvdy0nICsgcm93c1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWQgPT09IHRydWUgfHwgbnVsbFwiXG4gICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgfHwgbnVsbFwiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgbnVsbFwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lIHx8IG51bGxcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICBbY2xhc3MuZm5nLWhhcy12YWx1ZV09XCJ2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSAnJ1wiXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgPnt7IHZhbHVlIH19PC90ZXh0YXJlYVxuICA+XG4gIDxzcGFuIGNsYXNzPVwiZndlLWlucHV0LXRleHQtbGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJoaW50XCIgY2xhc3M9XCJmd2UtaW5wdXQtdGV4dC1pbmZvXCI+e3sgaGludCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZndlLWlucHV0LXRleHQtaW52YWxpZFwiPnt7IGVycm9yIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cIm1heGxlbmd0aCA+IDAgJiYgdmFsdWUgIT0gbnVsbFwiIGNsYXNzPVwiZndlLWlucHV0LXRleHQtY291bnRcIj57eyB2YWx1ZS5sZW5ndGggfX0gLyB7eyBtYXhsZW5ndGggfX08L3NwYW4+XG48L2xhYmVsPlxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DOztHQUVHO0FBZ0JILE1BQU0sT0FBTyxvQkFBb0I7SUFmakM7UUE0QlUsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHckIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQWtCcEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUF1Q3RCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBdUJ0QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWYsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUkvQjs7V0FFRztRQUNILFlBQU8sR0FBWSxLQUFLLENBQUM7S0FpRjFCO0lBcExDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFPRDs7O09BR0c7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QkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQSBjdXN0b20gZm9ybSBlbGVtZW50IGZvciB0ZXh0IGlucHV0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy10ZXh0LWFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm5nVGV4dEFyZWFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm5nVGV4dEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGlucHV0IGxhYmVsLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlubmVyUmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgaW5uZXJSZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgY29udHJvbCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBzZXRcbiAgICogYW5kIGl0IGdldHMgYWRkZWVkIHRoZSAuZGlzYWJsZWQgY3NzIGNsYXNzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lckRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaW5uZXJEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5uZXIgdmFsdWUuXG4gICAqL1xuICBpbm5lclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBnZXR0ZXIgZm9yIHZhbHVlLlxuICAgKi9cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGVyIGZvciB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mb2N1c2VkID0gISF2YWx1ZTtcbiAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lclJlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgaW5uZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFcnJvciBkZXNjcmlwdGlvbiB3aGVuIGludmFsaWQuXG4gICAqL1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIaW50IGRlc2NyaXB0aW9uIHdoZW4gdmFsaWQuXG4gICAqL1xuICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIHRoZSBoZWlnaHQgaXMgbWFuYWdlZCBieSBjbGFzc2VzLiB0aGUgbGFzdCBvbmUgaXMgXCJmd2Utcm93LTEwXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSb3dzO1xuICB9XG4gIHNldCByb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCB2ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuaW5uZXJSb3dzID0gdiA+IDEwID8gMTAgOiB2O1xuICB9XG4gIHByb3RlY3RlZCBpbm5lclJvd3MgPSAzO1xuXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgdGV4dCBpbnB1dCBoYXMgZm9jdXMuXG4gICAqL1xuICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBvbiBjaGFuZ2UuXG4gICAqL1xuICBvbkNoYW5nZTogKCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVHJpZ2dlcmVkIG9uIHRvdWNoLlxuICAgKi9cbiAgb25Ub3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSAnJyArIHZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvY3VzZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIG9uQ2hhbmdlLlxuICAgKiBAcGFyYW0gZm4gVGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb24uXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gb25Ub3VjaGVkLlxuICAgKiBAcGFyYW0gZm4gVGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb24uXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdGV4dCBpbnB1dCBpcyBpbiBmb2N1cy5cbiAgICovXG4gIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAvLyBUaGUgaGVpZ2h0IGlzIGFkanVzdGVkIHRvIHRoZSBjb250ZW50IG9uIFwicm93cyA9IDBcIlxuICAgIGlmICh0aGlzLnJvd3MgPT09IDApIHtcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnMXB4JzsgLy8gdHJpZ2dlciBjYWxjdWxhdGlvbiBvZiB0aGUgdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAyNSArIHRleHRhcmVhLnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSB0ZXh0IGlucHV0IGJsdXJzLlxuICAgKi9cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZS5cbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hlbiB0cnVlIHRoZSBjb250cm9sIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwiZndlLWlucHV0LXRleHRcIj5cbiAgPHRleHRhcmVhXG4gICAgI2lucHV0RWxlbWVudFxuICAgIFtjbGFzc109XCInZndlLXJvdy0nICsgcm93c1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWQgPT09IHRydWUgfHwgbnVsbFwiXG4gICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgfHwgbnVsbFwiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgbnVsbFwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lIHx8IG51bGxcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICBbY2xhc3MuZm5nLWhhcy12YWx1ZV09XCJ2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSAnJ1wiXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgPnt7IHZhbHVlIH19PC90ZXh0YXJlYVxuICA+XG4gIDxzcGFuIGNsYXNzPVwiZndlLWlucHV0LXRleHQtbGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJoaW50XCIgY2xhc3M9XCJmd2UtaW5wdXQtdGV4dC1pbmZvXCI+e3sgaGludCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZndlLWlucHV0LXRleHQtaW52YWxpZFwiPnt7IGVycm9yIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cIm1heGxlbmd0aCA+IDAgJiYgdmFsdWUgIT0gbnVsbFwiIGNsYXNzPVwiZndlLWlucHV0LXRleHQtY291bnRcIj57eyB2YWx1ZS5sZW5ndGggfX0gLyB7eyBtYXhsZW5ndGggfX08L3NwYW4+XG48L2xhYmVsPlxuIl19