@ajf/material 13.2.14 → 15.0.1

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 (179) hide show
  1. package/barcode/barcode.d.ts +1 -1
  2. package/calendar/calendar.d.ts +1 -1
  3. package/checkbox-group/checkbox-group-item.d.ts +1 -1
  4. package/esm2020/barcode/barcode-module.mjs +10 -12
  5. package/esm2020/barcode/barcode.mjs +9 -9
  6. package/esm2020/calendar/calendar-module.mjs +5 -5
  7. package/esm2020/calendar/calendar.mjs +6 -6
  8. package/esm2020/checkbox-group/checkbox-group-item.mjs +4 -4
  9. package/esm2020/checkbox-group/checkbox-group-module.mjs +5 -5
  10. package/esm2020/form-builder/branch-line.mjs +3 -3
  11. package/esm2020/form-builder/choices-origin-editor-dialog.mjs +6 -6
  12. package/esm2020/form-builder/choices-origin-editor.mjs +10 -10
  13. package/esm2020/form-builder/condition-editor-dialog.mjs +6 -6
  14. package/esm2020/form-builder/condition-editor.mjs +6 -6
  15. package/esm2020/form-builder/form-builder-module.mjs +30 -32
  16. package/esm2020/form-builder/form-builder-service.mjs +3 -3
  17. package/esm2020/form-builder/form-builder.mjs +13 -13
  18. package/esm2020/form-builder/node-entry.mjs +12 -12
  19. package/esm2020/form-builder/node-properties.mjs +15 -15
  20. package/esm2020/form-builder/node-type-entry.mjs +5 -5
  21. package/esm2020/form-builder/string-identifier-dialog.mjs +16 -16
  22. package/esm2020/form-builder/validation-condition-editor-dialog.mjs +9 -9
  23. package/esm2020/form-builder/warning-condition-editor-dialog.mjs +9 -9
  24. package/esm2020/forms/barcode-field.mjs +4 -4
  25. package/esm2020/forms/boolean-field.mjs +6 -6
  26. package/esm2020/forms/date-field.mjs +4 -4
  27. package/esm2020/forms/date-input-field.mjs +12 -11
  28. package/esm2020/forms/empty-field.mjs +4 -4
  29. package/esm2020/forms/field-service.mjs +3 -3
  30. package/esm2020/forms/field-warning-dialog.mjs +3 -3
  31. package/esm2020/forms/field.mjs +4 -4
  32. package/esm2020/forms/form.mjs +14 -14
  33. package/esm2020/forms/forms-module.mjs +37 -46
  34. package/esm2020/forms/input-field.mjs +6 -6
  35. package/esm2020/forms/multiple-choice-field.mjs +10 -10
  36. package/esm2020/forms/range-field.mjs +8 -8
  37. package/esm2020/forms/single-choice-field.mjs +8 -8
  38. package/esm2020/forms/table-field.mjs +3 -3
  39. package/esm2020/forms/text-field.mjs +6 -6
  40. package/esm2020/forms/time-field.mjs +4 -4
  41. package/esm2020/forms/video-url-field.mjs +5 -5
  42. package/esm2020/forms/warning-alert-service.mjs +3 -3
  43. package/esm2020/image/image-module.mjs +5 -5
  44. package/esm2020/image/image.mjs +5 -5
  45. package/esm2020/monaco-editor/monaco-editor-module.mjs +4 -4
  46. package/esm2020/monaco-editor/monaco-editor.mjs +3 -3
  47. package/esm2020/node-icon/node-icon-module.mjs +5 -5
  48. package/esm2020/node-icon/node-icon.mjs +6 -6
  49. package/esm2020/page-slider/page-slider-module.mjs +5 -5
  50. package/esm2020/page-slider/page-slider.mjs +5 -5
  51. package/esm2020/reports/chart-widget.mjs +7 -7
  52. package/esm2020/reports/filter-widget.mjs +5 -5
  53. package/esm2020/reports/formula-widget.mjs +4 -4
  54. package/esm2020/reports/graph-widget.mjs +3 -3
  55. package/esm2020/reports/heat-map-widget.mjs +3 -3
  56. package/esm2020/reports/image-container-widget.mjs +6 -6
  57. package/esm2020/reports/image-widget.mjs +4 -4
  58. package/esm2020/reports/map-widget.mjs +4 -4
  59. package/esm2020/reports/page-break-widget.mjs +4 -4
  60. package/esm2020/reports/report.mjs +6 -6
  61. package/esm2020/reports/reports-module.mjs +19 -21
  62. package/esm2020/reports/table-widget.mjs +6 -6
  63. package/esm2020/reports/text-widget.mjs +4 -4
  64. package/esm2020/reports/widget.mjs +30 -30
  65. package/esm2020/time/time-module.mjs +5 -5
  66. package/esm2020/time/time.mjs +7 -7
  67. package/fesm2015/ajf-material-barcode.mjs +20 -22
  68. package/fesm2015/ajf-material-barcode.mjs.map +1 -1
  69. package/fesm2015/ajf-material-calendar.mjs +11 -11
  70. package/fesm2015/ajf-material-calendar.mjs.map +1 -1
  71. package/fesm2015/ajf-material-checkbox-group.mjs +8 -8
  72. package/fesm2015/ajf-material-checkbox-group.mjs.map +1 -1
  73. package/fesm2015/ajf-material-form-builder.mjs +326 -328
  74. package/fesm2015/ajf-material-form-builder.mjs.map +1 -1
  75. package/fesm2015/ajf-material-forms.mjs +151 -159
  76. package/fesm2015/ajf-material-forms.mjs.map +1 -1
  77. package/fesm2015/ajf-material-image.mjs +9 -9
  78. package/fesm2015/ajf-material-image.mjs.map +1 -1
  79. package/fesm2015/ajf-material-monaco-editor.mjs +7 -7
  80. package/fesm2015/ajf-material-node-icon.mjs +10 -10
  81. package/fesm2015/ajf-material-node-icon.mjs.map +1 -1
  82. package/fesm2015/ajf-material-page-slider.mjs +11 -11
  83. package/fesm2015/ajf-material-page-slider.mjs.map +1 -1
  84. package/fesm2015/ajf-material-reports.mjs +104 -106
  85. package/fesm2015/ajf-material-reports.mjs.map +1 -1
  86. package/fesm2015/ajf-material-time.mjs +11 -11
  87. package/fesm2015/ajf-material-time.mjs.map +1 -1
  88. package/fesm2020/ajf-material-barcode.mjs +20 -22
  89. package/fesm2020/ajf-material-barcode.mjs.map +1 -1
  90. package/fesm2020/ajf-material-calendar.mjs +11 -11
  91. package/fesm2020/ajf-material-calendar.mjs.map +1 -1
  92. package/fesm2020/ajf-material-checkbox-group.mjs +8 -8
  93. package/fesm2020/ajf-material-checkbox-group.mjs.map +1 -1
  94. package/fesm2020/ajf-material-form-builder.mjs +326 -328
  95. package/fesm2020/ajf-material-form-builder.mjs.map +1 -1
  96. package/fesm2020/ajf-material-forms.mjs +151 -159
  97. package/fesm2020/ajf-material-forms.mjs.map +1 -1
  98. package/fesm2020/ajf-material-image.mjs +9 -9
  99. package/fesm2020/ajf-material-image.mjs.map +1 -1
  100. package/fesm2020/ajf-material-monaco-editor.mjs +7 -7
  101. package/fesm2020/ajf-material-node-icon.mjs +10 -10
  102. package/fesm2020/ajf-material-node-icon.mjs.map +1 -1
  103. package/fesm2020/ajf-material-page-slider.mjs +11 -11
  104. package/fesm2020/ajf-material-page-slider.mjs.map +1 -1
  105. package/fesm2020/ajf-material-reports.mjs +104 -106
  106. package/fesm2020/ajf-material-reports.mjs.map +1 -1
  107. package/fesm2020/ajf-material-time.mjs +11 -11
  108. package/fesm2020/ajf-material-time.mjs.map +1 -1
  109. package/form-builder/branch-line.d.ts +1 -1
  110. package/form-builder/choices-origin-editor-dialog.d.ts +1 -1
  111. package/form-builder/choices-origin-editor.d.ts +1 -1
  112. package/form-builder/condition-editor-dialog.d.ts +1 -1
  113. package/form-builder/condition-editor.d.ts +1 -1
  114. package/form-builder/form-builder.d.ts +1 -1
  115. package/form-builder/node-entry.d.ts +1 -1
  116. package/form-builder/node-properties.d.ts +4 -4
  117. package/form-builder/node-type-entry.d.ts +1 -1
  118. package/form-builder/string-identifier-dialog.d.ts +1 -1
  119. package/form-builder/validation-condition-editor-dialog.d.ts +1 -1
  120. package/form-builder/warning-condition-editor-dialog.d.ts +1 -1
  121. package/forms/barcode-field.d.ts +1 -1
  122. package/forms/boolean-field.d.ts +1 -1
  123. package/forms/date-field.d.ts +1 -1
  124. package/forms/date-input-field.d.ts +1 -1
  125. package/forms/empty-field.d.ts +1 -1
  126. package/forms/field-warning-dialog.d.ts +1 -1
  127. package/forms/field.d.ts +1 -1
  128. package/forms/form.d.ts +1 -1
  129. package/forms/forms-module.d.ts +15 -13
  130. package/forms/input-field.d.ts +1 -1
  131. package/forms/multiple-choice-field.d.ts +1 -1
  132. package/forms/range-field.d.ts +1 -1
  133. package/forms/single-choice-field.d.ts +1 -1
  134. package/forms/table-field.d.ts +1 -1
  135. package/forms/text-field.d.ts +1 -1
  136. package/forms/time-field.d.ts +1 -1
  137. package/forms/video-url-field.d.ts +1 -1
  138. package/image/image.d.ts +1 -1
  139. package/monaco-editor/monaco-editor.d.ts +1 -1
  140. package/node-icon/node-icon.d.ts +1 -1
  141. package/package.json +22 -22
  142. package/page-slider/page-slider.d.ts +1 -1
  143. package/reports/chart-widget.d.ts +1 -1
  144. package/reports/filter-widget.d.ts +1 -1
  145. package/reports/formula-widget.d.ts +1 -1
  146. package/reports/graph-widget.d.ts +1 -1
  147. package/reports/heat-map-widget.d.ts +1 -1
  148. package/reports/image-container-widget.d.ts +1 -1
  149. package/reports/image-widget.d.ts +1 -1
  150. package/reports/map-widget.d.ts +1 -1
  151. package/reports/page-break-widget.d.ts +1 -1
  152. package/reports/report.d.ts +1 -1
  153. package/reports/table-widget.d.ts +1 -1
  154. package/reports/text-widget.d.ts +1 -1
  155. package/reports/widget.d.ts +6 -6
  156. package/time/time.d.ts +1 -1
  157. package/barcode/package.json +0 -10
  158. package/calendar/package.json +0 -10
  159. package/checkbox-group/package.json +0 -10
  160. package/form-builder/package.json +0 -10
  161. package/forms/package.json +0 -10
  162. package/image/package.json +0 -10
  163. package/monaco-editor/package.json +0 -10
  164. package/node-icon/package.json +0 -10
  165. package/page-slider/package.json +0 -10
  166. package/reports/package.json +0 -10
  167. package/time/package.json +0 -10
  168. /package/barcode/{ajf-material-barcode.d.ts → index.d.ts} +0 -0
  169. /package/calendar/{ajf-material-calendar.d.ts → index.d.ts} +0 -0
  170. /package/checkbox-group/{ajf-material-checkbox-group.d.ts → index.d.ts} +0 -0
  171. /package/form-builder/{ajf-material-form-builder.d.ts → index.d.ts} +0 -0
  172. /package/forms/{ajf-material-forms.d.ts → index.d.ts} +0 -0
  173. /package/image/{ajf-material-image.d.ts → index.d.ts} +0 -0
  174. /package/{ajf-material.d.ts → index.d.ts} +0 -0
  175. /package/monaco-editor/{ajf-material-monaco-editor.d.ts → index.d.ts} +0 -0
  176. /package/node-icon/{ajf-material-node-icon.d.ts → index.d.ts} +0 -0
  177. /package/page-slider/{ajf-material-page-slider.d.ts → index.d.ts} +0 -0
  178. /package/reports/{ajf-material-reports.d.ts → index.d.ts} +0 -0
  179. /package/time/{ajf-material-time.d.ts → index.d.ts} +0 -0
@@ -33,14 +33,14 @@ import { AjfPageBreakWidgetComponent } from './page-break-widget';
33
33
  import { AjfTableWidgetComponent } from './table-widget';
34
34
  import { AjfTextWidgetComponent } from './text-widget';
35
35
  import * as i0 from "@angular/core";
36
- import * as i1 from "./filter-widget";
37
- import * as i2 from "@angular/common";
38
- import * as i3 from "@ajf/core/reports";
36
+ import * as i1 from "@angular/common";
37
+ import * as i2 from "@ajf/core/reports";
38
+ import * as i3 from "./filter-widget";
39
39
  import * as i4 from "@angular/material/dialog";
40
- import * as i5 from "@angular/material/select";
41
- import * as i6 from "@angular/material/core";
42
- import * as i7 from "@ajf/core/table";
43
- import * as i8 from "@angular/material/form-field";
40
+ import * as i5 from "@ajf/core/table";
41
+ import * as i6 from "@angular/material/form-field";
42
+ import * as i7 from "@angular/material/select";
43
+ import * as i8 from "@angular/material/core";
44
44
  import * as i9 from "@ngneat/transloco";
45
45
  const defaultWidgetsFactory = () => {
46
46
  const defaultWidgets = {};
@@ -67,9 +67,9 @@ export class AjfWidgetService extends CoreService {
67
67
  super(defaultWidgetsFactory());
68
68
  }
69
69
  }
70
- AjfWidgetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
71
- AjfWidgetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfWidgetService, providedIn: 'root' });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfWidgetService, decorators: [{
70
+ AjfWidgetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
71
+ AjfWidgetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfWidgetService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfWidgetService, decorators: [{
73
73
  type: Injectable,
74
74
  args: [{ providedIn: 'root' }]
75
75
  }], ctorParameters: function () { return []; } });
@@ -79,9 +79,9 @@ export class AjfReportWidget extends CoreComponent {
79
79
  this.widgetsMap = widgetService.componentsMap;
80
80
  }
81
81
  }
82
- AjfReportWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfReportWidget, deps: [{ token: i0.Renderer2 }, { token: AjfWidgetService }], target: i0.ɵɵFactoryTarget.Component });
83
- AjfReportWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfReportWidget, selector: "ajf-widget", usesInheritance: true, ngImport: i0, template: "<ajf-filter-widget\n *ngIf=\"instance && instance.filter\"\n [instance]=\"instance\"\n (filteredInstance)=\"instance = $event\"\n>\n</ajf-filter-widget>\n<ng-template ajf-widget-host></ng-template>\n", styles: ["ajf-widget{display:flex;flex:1 1 auto;box-sizing:border-box;flex-direction:column}ajf-widget>ng-component{flex:1 1 auto;display:flex;align-items:center;box-sizing:border-box;background-color:transparent}\n"], components: [{ type: i1.AjfFilterWidgetComponent, selector: "ajf-filter-widget", outputs: ["filteredInstance"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.AjfWidgetHost, selector: "[ajf-widget-host]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfReportWidget, decorators: [{
82
+ AjfReportWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfReportWidget, deps: [{ token: i0.Renderer2 }, { token: AjfWidgetService }], target: i0.ɵɵFactoryTarget.Component });
83
+ AjfReportWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfReportWidget, selector: "ajf-widget", usesInheritance: true, ngImport: i0, template: "<ajf-filter-widget\n *ngIf=\"instance && instance.filter\"\n [instance]=\"instance\"\n (filteredInstance)=\"instance = $event\"\n>\n</ajf-filter-widget>\n<ng-template ajf-widget-host></ng-template>\n", styles: ["ajf-widget{display:flex;flex:1 1 auto;box-sizing:border-box;flex-direction:column}ajf-widget>ng-component{flex:1 1 auto;display:flex;align-items:center;box-sizing:border-box;background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AjfWidgetHost, selector: "[ajf-widget-host]" }, { kind: "component", type: i3.AjfFilterWidgetComponent, selector: "ajf-filter-widget", outputs: ["filteredInstance"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfReportWidget, decorators: [{
85
85
  type: Component,
86
86
  args: [{ selector: 'ajf-widget', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ajf-filter-widget\n *ngIf=\"instance && instance.filter\"\n [instance]=\"instance\"\n (filteredInstance)=\"instance = $event\"\n>\n</ajf-filter-widget>\n<ng-template ajf-widget-host></ng-template>\n", styles: ["ajf-widget{display:flex;flex:1 1 auto;box-sizing:border-box;flex-direction:column}ajf-widget>ng-component{flex:1 1 auto;display:flex;align-items:center;box-sizing:border-box;background-color:transparent}\n"] }]
87
87
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: AjfWidgetService }]; } });
@@ -90,9 +90,9 @@ export class AjfColumnWidgetComponent extends AjfBaseWidgetComponent {
90
90
  super(cdr, el);
91
91
  }
92
92
  }
93
- AjfColumnWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfColumnWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
94
- AjfColumnWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfColumnWidgetComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"instance\" class=\"ajf-column-container\">\n <ng-container *ngFor=\"let w of instance.content\">\n <ajf-widget [instance]=\"w\">\n </ajf-widget>\n </ng-container>\n</div>\n", styles: [".ajf-column-container{flex:1 1 auto}\n"], components: [{ type: AjfReportWidget, selector: "ajf-widget" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfColumnWidgetComponent, decorators: [{
93
+ AjfColumnWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfColumnWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
94
+ AjfColumnWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfColumnWidgetComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"instance\" class=\"ajf-column-container\">\n <ng-container *ngFor=\"let w of instance.content\">\n <ajf-widget [instance]=\"w\">\n </ajf-widget>\n </ng-container>\n</div>\n", styles: [".ajf-column-container{flex:1 1 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AjfReportWidget, selector: "ajf-widget" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfColumnWidgetComponent, decorators: [{
96
96
  type: Component,
97
97
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"instance\" class=\"ajf-column-container\">\n <ng-container *ngFor=\"let w of instance.content\">\n <ajf-widget [instance]=\"w\">\n </ajf-widget>\n </ng-container>\n</div>\n", styles: [".ajf-column-container{flex:1 1 auto}\n"] }]
98
98
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; } });
@@ -107,9 +107,9 @@ export class AjfLayoutWidgetComponent extends AjfBaseWidgetComponent {
107
107
  this._allcolumnsRendered$.next(true);
108
108
  }
109
109
  }
110
- AjfLayoutWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfLayoutWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
111
- AjfLayoutWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfLayoutWidgetComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"instance\" class=\"ajf-columns\">\n <div\n *ngFor=\"let column of instance.widget.columns; let idx = index\"\n [ngStyle]=\"{'flex-grow': column > -1 ? 1 : null, 'flex-basis' : column > -1 ? (column * 100) + '%' : null}\"\n class=\"ajf-column\"\n >\n <ng-container *ngIf=\"allcolumnsRendered$|async\">\n <ajf-widget *ngIf=\"(instance|ajfGetColumnContent:idx) as cc\" [instance]=\"cc!\">\n </ajf-widget>\n </ng-container>\n </div>\n</div>\n", styles: [".ajf-columns{flex:1 1 auto;display:flex;align-items:inherit;box-sizing:border-box}.ajf-columns>.ajf-column{box-sizing:border-box;display:flex;align-items:inherit;flex-shrink:1}\n"], components: [{ type: AjfReportWidget, selector: "ajf-widget" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i2.AsyncPipe, "ajfGetColumnContent": i3.AjfGetColumnContentPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfLayoutWidgetComponent, decorators: [{
110
+ AjfLayoutWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfLayoutWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
111
+ AjfLayoutWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfLayoutWidgetComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"instance\" class=\"ajf-columns\">\n <div\n *ngFor=\"let column of instance.widget.columns; let idx = index\"\n [ngStyle]=\"{'flex-grow': column > -1 ? 1 : null, 'flex-basis' : column > -1 ? (column * 100) + '%' : null}\"\n class=\"ajf-column\"\n >\n <ng-container *ngIf=\"allcolumnsRendered$|async\">\n <ajf-widget *ngIf=\"(instance|ajfGetColumnContent:idx) as cc\" [instance]=\"cc!\">\n </ajf-widget>\n </ng-container>\n </div>\n</div>\n", styles: [".ajf-columns{flex:1 1 auto;display:flex;align-items:inherit;box-sizing:border-box}.ajf-columns>.ajf-column{box-sizing:border-box;display:flex;align-items:inherit;flex-shrink:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AjfReportWidget, selector: "ajf-widget" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AjfGetColumnContentPipe, name: "ajfGetColumnContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfLayoutWidgetComponent, decorators: [{
113
113
  type: Component,
114
114
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"instance\" class=\"ajf-columns\">\n <div\n *ngFor=\"let column of instance.widget.columns; let idx = index\"\n [ngStyle]=\"{'flex-grow': column > -1 ? 1 : null, 'flex-basis' : column > -1 ? (column * 100) + '%' : null}\"\n class=\"ajf-column\"\n >\n <ng-container *ngIf=\"allcolumnsRendered$|async\">\n <ajf-widget *ngIf=\"(instance|ajfGetColumnContent:idx) as cc\" [instance]=\"cc!\">\n </ajf-widget>\n </ng-container>\n </div>\n</div>\n", styles: [".ajf-columns{flex:1 1 auto;display:flex;align-items:inherit;box-sizing:border-box}.ajf-columns>.ajf-column{box-sizing:border-box;display:flex;align-items:inherit;flex-shrink:1}\n"] }]
115
115
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; } });
@@ -122,9 +122,9 @@ export class AjfDialogWidgetComponent extends AjfBaseWidgetComponent {
122
122
  this._dialog.open(this.dialogContent);
123
123
  }
124
124
  }
125
- AjfDialogWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfDialogWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
126
- AjfDialogWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfDialogWidgetComponent, selector: "ng-component", viewQueries: [{ propertyName: "dialogContent", first: true, predicate: ["dialogContent"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"instance\" class=\"ajf-dialog-toggle\" (click)=\"openDialog()\">\n <ajf-widget [instance]=\"instance.toggle\"></ajf-widget>\n</a>\n<ng-template #dialogContent>\n <ng-container *ngIf=\"instance\">\n <ng-container *ngFor=\"let item of instance.content\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".ajf-dialog-toggle{display:block;cursor:pointer}\n"], components: [{ type: AjfReportWidget, selector: "ajf-widget" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfDialogWidgetComponent, decorators: [{
125
+ AjfDialogWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfDialogWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
126
+ AjfDialogWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfDialogWidgetComponent, selector: "ng-component", viewQueries: [{ propertyName: "dialogContent", first: true, predicate: ["dialogContent"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"instance\" class=\"ajf-dialog-toggle\" (click)=\"openDialog()\">\n <ajf-widget [instance]=\"instance.toggle\"></ajf-widget>\n</a>\n<ng-template #dialogContent>\n <ng-container *ngIf=\"instance\">\n <ng-container *ngFor=\"let item of instance.content\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".ajf-dialog-toggle{display:block;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AjfReportWidget, selector: "ajf-widget" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfDialogWidgetComponent, decorators: [{
128
128
  type: Component,
129
129
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<a *ngIf=\"instance\" class=\"ajf-dialog-toggle\" (click)=\"openDialog()\">\n <ajf-widget [instance]=\"instance.toggle\"></ajf-widget>\n</a>\n<ng-template #dialogContent>\n <ng-container *ngIf=\"instance\">\n <ng-container *ngFor=\"let item of instance.content\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".ajf-dialog-toggle{display:block;cursor:pointer}\n"] }]
130
130
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i4.MatDialog }]; }, propDecorators: { dialogContent: [{
@@ -201,9 +201,9 @@ export class AjfPaginatedListWidgetComponent extends AjfBaseWidgetComponent {
201
201
  this._cdr.markForCheck();
202
202
  }
203
203
  }
204
- AjfPaginatedListWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfPaginatedListWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
205
- AjfPaginatedListWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfPaginatedListWidgetComponent, selector: "ng-component", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"ajf-paginated-list\" *ngIf=\"instance && pages > 0\">\n <div class=\"ajf-paginated-list-title-container\">\n <div class=\"ajf-paginated-list-title\">{{ instance.widget.title }}</div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-list-paginator\">\n <a (click)=\"goToPage('previous')\" class=\"ajf-paginated-list-btn ajf-paginated-list-back-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoBackward === false\"></a>\n <div class=\"ajf-paginated-list-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-list-paginator-separator\"></div>\n <div class=\"ajf-paginated-list-paginator-pages\">{{ pages }}</div>\n <a (click)=\"goToPage('next')\" class=\"ajf-paginated-list-btn ajf-paginated-list-forward-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoForward === false\"></a>\n </div>\n </div>\n <div class=\"ajf-paginated-list-item\" *ngFor=\"let item of currentContent\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </div>\n</div>\n", styles: [".ajf-paginated-list-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-list-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-list-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-list-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-list-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-list-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-list-back-btn:after{content:\"<\"}.ajf-paginated-list-forward-btn:after{content:\">\"}.ajf-paginated-list-paginator{display:flex;align-items:center}.ajf-paginated-list-paginator>*{margin:0 .5em}\n"], components: [{ type: AjfReportWidget, selector: "ajf-widget" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfPaginatedListWidgetComponent, decorators: [{
204
+ AjfPaginatedListWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfPaginatedListWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
205
+ AjfPaginatedListWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfPaginatedListWidgetComponent, selector: "ng-component", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"ajf-paginated-list\" *ngIf=\"instance && pages > 0\">\n <div class=\"ajf-paginated-list-title-container\">\n <div class=\"ajf-paginated-list-title\">{{ instance.widget.title }}</div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-list-paginator\">\n <a (click)=\"goToPage('previous')\" class=\"ajf-paginated-list-btn ajf-paginated-list-back-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoBackward === false\"></a>\n <div class=\"ajf-paginated-list-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-list-paginator-separator\"></div>\n <div class=\"ajf-paginated-list-paginator-pages\">{{ pages }}</div>\n <a (click)=\"goToPage('next')\" class=\"ajf-paginated-list-btn ajf-paginated-list-forward-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoForward === false\"></a>\n </div>\n </div>\n <div class=\"ajf-paginated-list-item\" *ngFor=\"let item of currentContent\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </div>\n</div>\n", styles: [".ajf-paginated-list-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-list-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-list-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-list-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-list-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-list-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-list-back-btn:after{content:\"<\"}.ajf-paginated-list-forward-btn:after{content:\">\"}.ajf-paginated-list-paginator{display:flex;align-items:center}.ajf-paginated-list-paginator>*{margin:0 .5em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AjfReportWidget, selector: "ajf-widget" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfPaginatedListWidgetComponent, decorators: [{
207
207
  type: Component,
208
208
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ajf-paginated-list\" *ngIf=\"instance && pages > 0\">\n <div class=\"ajf-paginated-list-title-container\">\n <div class=\"ajf-paginated-list-title\">{{ instance.widget.title }}</div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-list-paginator\">\n <a (click)=\"goToPage('previous')\" class=\"ajf-paginated-list-btn ajf-paginated-list-back-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoBackward === false\"></a>\n <div class=\"ajf-paginated-list-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-list-paginator-separator\"></div>\n <div class=\"ajf-paginated-list-paginator-pages\">{{ pages }}</div>\n <a (click)=\"goToPage('next')\" class=\"ajf-paginated-list-btn ajf-paginated-list-forward-btn\"\n [class.ajf-paginated-list-btn-disabled]=\"canGoForward === false\"></a>\n </div>\n </div>\n <div class=\"ajf-paginated-list-item\" *ngFor=\"let item of currentContent\">\n <ajf-widget [instance]=\"item\"></ajf-widget>\n </div>\n</div>\n", styles: [".ajf-paginated-list-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-list-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-list-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-list-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-list-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-list-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-list-back-btn:after{content:\"<\"}.ajf-paginated-list-forward-btn:after{content:\">\"}.ajf-paginated-list-paginator{display:flex;align-items:center}.ajf-paginated-list-paginator>*{margin:0 .5em}\n"] }]
209
209
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; } });
@@ -359,10 +359,10 @@ export class AjfPaginatedTableWidgetComponent extends AjfBaseWidgetComponent {
359
359
  this._cdr.markForCheck();
360
360
  }
361
361
  }
362
- AjfPaginatedTableWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfPaginatedTableWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
363
- AjfPaginatedTableWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfPaginatedTableWidgetComponent, selector: "ng-component", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"ajf-paginated-table\" *ngIf=\"instance\">\n <div class=\"ajf-paginated-table-title-container\" *ngIf=\"pages > 0\">\n <div class=\"ajf-paginated-table-page-selector\">\n <mat-label class=\"ajf-paginated-table-page-selector-label\"\n >{{'Items per page:'|transloco}}</mat-label\n >\n <mat-select\n [value]=\"paginatorConfig.pageSize\"\n (selectionChange)=\"onPageSizeChange($event.value)\"\n >\n <mat-option\n [value]=\"pageSizeOpt\"\n *ngFor=\"let pageSizeOpt of paginatorConfig.pageSizeOptions\"\n >\n {{ pageSizeOpt }}\n </mat-option>\n </mat-select>\n </div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-table-paginator\">\n <a\n (click)=\"goToPage('previous')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-back-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoBackward === false\"\n ></a>\n <div class=\"ajf-paginated-table-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-table-paginator-separator\"></div>\n <div class=\"ajf-paginated-table-paginator-pages\">{{ pages }}</div>\n <a\n (click)=\"goToPage('next')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-forward-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoForward === false\"\n ></a>\n </div>\n </div>\n <div class=\"ajf-paginated-table-item\">\n <ajf-widget-export\n *ngIf=\"instance\"\n [widgetType]=\"instance.widgetType\"\n [data]=\"currentContent\"\n [enable]=\"instance.exportable\"\n >\n <ajf-table [data]=\"currentContent\" (sortSelected)=\"sortPaginatedData($event)\"></ajf-table>\n </ajf-widget-export>\n </div>\n</div>\n", styles: ["table{border-spacing:0}table td{padding:10px}.ajf-paginated-table,.ajf-paginated-table table{width:100%}.ajf-paginated-table-page-selector{display:flex;align-items:baseline}.ajf-paginated-table-page-selector .ajf-paginated-table-page-selector-label{white-space:nowrap;margin-right:4px;font-size:.9em}.ajf-paginated-table-page-selector mat-select{width:50px;font-size:.9em}.ajf-paginated-table-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-table-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-table-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-table-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-table-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-table-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-table-back-btn:after{content:\"<\"}.ajf-paginated-table-forward-btn:after{content:\">\"}.ajf-paginated-table-paginator{display:flex;align-items:center;font-size:.9em}.ajf-paginated-table-paginator>*{margin:0 .5em}\n"], components: [{ type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3.AjfWidgetExport, selector: "ajf-widget-export", inputs: ["widgetType", "data", "overlay", "enable"] }, { type: i7.AjfTable, selector: "ajf-table", inputs: ["data", "cellpadding"], outputs: ["sortSelected"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.MatLabel, selector: "mat-label" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "transloco": i9.TranslocoPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfPaginatedTableWidgetComponent, decorators: [{
362
+ AjfPaginatedTableWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfPaginatedTableWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
363
+ AjfPaginatedTableWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfPaginatedTableWidgetComponent, selector: "ng-component", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"ajf-paginated-table\" *ngIf=\"instance\">\n <div class=\"ajf-paginated-table-title-container\" *ngIf=\"pages > 0\">\n <div class=\"ajf-paginated-table-page-selector\">\n <mat-label class=\"ajf-paginated-table-page-selector-label\"\n >{{'Items per page:'|transloco}}</mat-label\n >\n <mat-select\n [value]=\"paginatorConfig.pageSize\"\n (selectionChange)=\"onPageSizeChange($event.value)\"\n >\n <mat-option\n [value]=\"pageSizeOpt\"\n *ngFor=\"let pageSizeOpt of paginatorConfig.pageSizeOptions\"\n >\n {{ pageSizeOpt }}\n </mat-option>\n </mat-select>\n </div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-table-paginator\">\n <a\n (click)=\"goToPage('previous')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-back-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoBackward === false\"\n ></a>\n <div class=\"ajf-paginated-table-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-table-paginator-separator\"></div>\n <div class=\"ajf-paginated-table-paginator-pages\">{{ pages }}</div>\n <a\n (click)=\"goToPage('next')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-forward-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoForward === false\"\n ></a>\n </div>\n </div>\n <div class=\"ajf-paginated-table-item\">\n <ajf-widget-export\n *ngIf=\"instance\"\n [widgetType]=\"instance.widgetType\"\n [data]=\"currentContent\"\n [enable]=\"instance.exportable\"\n >\n <ajf-table [data]=\"currentContent\" (sortSelected)=\"sortPaginatedData($event)\"></ajf-table>\n </ajf-widget-export>\n </div>\n</div>\n", styles: ["table{border-spacing:0}table td{padding:10px}.ajf-paginated-table,.ajf-paginated-table table{width:100%}.ajf-paginated-table-page-selector{display:flex;align-items:baseline}.ajf-paginated-table-page-selector .ajf-paginated-table-page-selector-label{white-space:nowrap;margin-right:4px;font-size:.9em}.ajf-paginated-table-page-selector .mat-mdc-select{width:50px;font-size:.9em}.ajf-paginated-table-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-table-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-table-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-table-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-table-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-table-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-table-back-btn:after{content:\"<\"}.ajf-paginated-table-forward-btn:after{content:\">\"}.ajf-paginated-table-paginator{display:flex;align-items:center;font-size:.9em}.ajf-paginated-table-paginator>*{margin:0 .5em}\n"], dependencies: [{ kind: "component", type: i5.AjfTable, selector: "ajf-table", inputs: ["data", "cellpadding"], outputs: ["sortSelected"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AjfWidgetExport, selector: "ajf-widget-export", inputs: ["widgetType", "data", "overlay", "enable"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfPaginatedTableWidgetComponent, decorators: [{
365
365
  type: Component,
366
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ajf-paginated-table\" *ngIf=\"instance\">\n <div class=\"ajf-paginated-table-title-container\" *ngIf=\"pages > 0\">\n <div class=\"ajf-paginated-table-page-selector\">\n <mat-label class=\"ajf-paginated-table-page-selector-label\"\n >{{'Items per page:'|transloco}}</mat-label\n >\n <mat-select\n [value]=\"paginatorConfig.pageSize\"\n (selectionChange)=\"onPageSizeChange($event.value)\"\n >\n <mat-option\n [value]=\"pageSizeOpt\"\n *ngFor=\"let pageSizeOpt of paginatorConfig.pageSizeOptions\"\n >\n {{ pageSizeOpt }}\n </mat-option>\n </mat-select>\n </div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-table-paginator\">\n <a\n (click)=\"goToPage('previous')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-back-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoBackward === false\"\n ></a>\n <div class=\"ajf-paginated-table-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-table-paginator-separator\"></div>\n <div class=\"ajf-paginated-table-paginator-pages\">{{ pages }}</div>\n <a\n (click)=\"goToPage('next')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-forward-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoForward === false\"\n ></a>\n </div>\n </div>\n <div class=\"ajf-paginated-table-item\">\n <ajf-widget-export\n *ngIf=\"instance\"\n [widgetType]=\"instance.widgetType\"\n [data]=\"currentContent\"\n [enable]=\"instance.exportable\"\n >\n <ajf-table [data]=\"currentContent\" (sortSelected)=\"sortPaginatedData($event)\"></ajf-table>\n </ajf-widget-export>\n </div>\n</div>\n", styles: ["table{border-spacing:0}table td{padding:10px}.ajf-paginated-table,.ajf-paginated-table table{width:100%}.ajf-paginated-table-page-selector{display:flex;align-items:baseline}.ajf-paginated-table-page-selector .ajf-paginated-table-page-selector-label{white-space:nowrap;margin-right:4px;font-size:.9em}.ajf-paginated-table-page-selector mat-select{width:50px;font-size:.9em}.ajf-paginated-table-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-table-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-table-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-table-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-table-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-table-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-table-back-btn:after{content:\"<\"}.ajf-paginated-table-forward-btn:after{content:\">\"}.ajf-paginated-table-paginator{display:flex;align-items:center;font-size:.9em}.ajf-paginated-table-paginator>*{margin:0 .5em}\n"] }]
366
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ajf-paginated-table\" *ngIf=\"instance\">\n <div class=\"ajf-paginated-table-title-container\" *ngIf=\"pages > 0\">\n <div class=\"ajf-paginated-table-page-selector\">\n <mat-label class=\"ajf-paginated-table-page-selector-label\"\n >{{'Items per page:'|transloco}}</mat-label\n >\n <mat-select\n [value]=\"paginatorConfig.pageSize\"\n (selectionChange)=\"onPageSizeChange($event.value)\"\n >\n <mat-option\n [value]=\"pageSizeOpt\"\n *ngFor=\"let pageSizeOpt of paginatorConfig.pageSizeOptions\"\n >\n {{ pageSizeOpt }}\n </mat-option>\n </mat-select>\n </div>\n <div class=\"ajf-spacer\"></div>\n <div class=\"ajf-paginated-table-paginator\">\n <a\n (click)=\"goToPage('previous')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-back-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoBackward === false\"\n ></a>\n <div class=\"ajf-paginated-table-paginator-page\">{{ currentPage }}</div>\n <div class=\"ajf-paginated-table-paginator-separator\"></div>\n <div class=\"ajf-paginated-table-paginator-pages\">{{ pages }}</div>\n <a\n (click)=\"goToPage('next')\"\n class=\"ajf-paginated-table-btn ajf-paginated-table-forward-btn\"\n [class.ajf-paginated-table-btn-disabled]=\"canGoForward === false\"\n ></a>\n </div>\n </div>\n <div class=\"ajf-paginated-table-item\">\n <ajf-widget-export\n *ngIf=\"instance\"\n [widgetType]=\"instance.widgetType\"\n [data]=\"currentContent\"\n [enable]=\"instance.exportable\"\n >\n <ajf-table [data]=\"currentContent\" (sortSelected)=\"sortPaginatedData($event)\"></ajf-table>\n </ajf-widget-export>\n </div>\n</div>\n", styles: ["table{border-spacing:0}table td{padding:10px}.ajf-paginated-table,.ajf-paginated-table table{width:100%}.ajf-paginated-table-page-selector{display:flex;align-items:baseline}.ajf-paginated-table-page-selector .ajf-paginated-table-page-selector-label{white-space:nowrap;margin-right:4px;font-size:.9em}.ajf-paginated-table-page-selector .mat-mdc-select{width:50px;font-size:.9em}.ajf-paginated-table-title-container{display:flex;align-items:center}.ajf-spacer{flex:1 0 auto}.ajf-paginated-table-btn{cursor:pointer;display:block;width:32px;height:32px;position:relative}.ajf-paginated-table-btn:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ajf-paginated-table-paginator-separator{width:16px;height:32px;position:relative}.ajf-paginated-table-paginator-separator:after{width:100%;height:100%;display:flex;justify-content:center;align-items:center;content:\"/\"}.ajf-paginated-table-btn-disabled{opacity:.5;cursor:default}.ajf-paginated-table-back-btn:after{content:\"<\"}.ajf-paginated-table-forward-btn:after{content:\">\"}.ajf-paginated-table-paginator{display:flex;align-items:center;font-size:.9em}.ajf-paginated-table-paginator>*{margin:0 .5em}\n"] }]
367
367
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvcmVwb3J0cy9zcmMvd2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvcmVwb3J0cy9zcmMvd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9jb2x1bW4td2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9sYXlvdXQtd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9kaWFsb2ctd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9wYWdpbmF0ZWQtbGlzdC13aWRnZXQuaHRtbCIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL3JlcG9ydHMvc3JjL3BhZ2luYXRlZC10YWJsZS13aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQ0wsc0JBQXNCLEVBTXRCLGVBQWUsSUFBSSxhQUFhLEVBR2hDLGdCQUFnQixJQUFJLFdBQVcsRUFDL0IsYUFBYSxJQUFJLEVBQUUsR0FDcEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBS1YsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxP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QyxnR01sUTdDLGd4REE4Q0E7MkZOb05hLGdDQUFnQztrQkFONUMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge1xuICBBamZCYXNlV2lkZ2V0Q29tcG9uZW50LFxuICBBamZDb2x1bW5XaWRnZXRJbnN0YW5jZSxcbiAgQWpmRGlhbG9nV2lkZ2V0SW5zdGFuY2UsXG4gIEFqZkxheW91dFdpZGdldEluc3RhbmNlLFxuICBBamZQYWdpbmF0ZWRMaXN0V2lkZ2V0SW5zdGFuY2UsXG4gIEFqZlBhZ2luYXRlZFRhYmxlV2lkZ2V0SW5zdGFuY2UsXG4gIEFqZlJlcG9ydFdpZGdldCBhcyBDb3JlQ29tcG9uZW50LFxuICBBamZXaWRnZXRDb21wb25lbnRzTWFwLFxuICBBamZXaWRnZXRJbnN0YW5jZSxcbiAgQWpmV2lkZ2V0U2VydmljZSBhcyBDb3JlU2VydmljZSxcbiAgQWpmV2lkZ2V0VHlwZSBhcyB3dCxcbn0gZnJvbSAnQGFqZi9jb3JlL3JlcG9ydHMnO1xuaW1wb3J0IHtBamZUYWJsZUNlbGx9IGZyb20gJ0BhamYvY29yZS90YWJsZSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge1NvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FqZkNoYXJ0V2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LXdpZGdldCc7XG5pbXBvcnQge0FqZkZvcm11bGFXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXVsYS13aWRnZXQnO1xuaW1wb3J0IHtBamZHcmFwaFdpZGdldENvbXBvbmVudH0gZnJvbSAnLi9ncmFwaC13aWRnZXQnO1xuaW1wb3J0IHtBamZIZWF0TWFwV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL2hlYXQtbWFwLXdpZGdldCc7XG5pbXBvcnQge0FqZkltYWdlQ29udGFpbmVyV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL2ltYWdlLWNvbnRhaW5lci13aWRnZXQnO1xuaW1wb3J0IHtBamZJbWFnZVdpZGdldENvbXBvbmVudH0gZnJvbSAnLi9pbWFnZS13aWRnZXQnO1xuaW1wb3J0IHtBamZNYXBXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vbWFwLXdpZGdldCc7XG5pbXBvcnQge0FqZlBhZ2VCcmVha1dpZGdldENvbXBvbmVudH0gZnJvbSAnLi9wYWdlLWJyZWFrLXdpZGdldCc7XG5pbXBvcnQge0FqZlRhYmxlV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL3RhYmxlLXdpZGdldCc7XG5pbXBvcnQge0FqZlRleHRXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vdGV4dC13aWRnZXQnO1xuXG5jb25zdCBkZWZhdWx0V2lkZ2V0c0ZhY3RvcnkgPSAoKTogQWpmV2lkZ2V0Q29tcG9uZW50c01hcCA9PiB7XG4gIGNvbnN0IGRlZmF1bHRXaWRnZXRzOiBBamZXaWRnZXRDb21wb25lbnRzTWFwID0ge307XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkxheW91dF0gPSB7Y29tcG9uZW50OiBBamZMYXlvdXRXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5QYWdlQnJlYWtdID0ge2NvbXBvbmVudDogQWpmUGFnZUJyZWFrV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuSW1hZ2VdID0ge2NvbXBvbmVudDogQWpmSW1hZ2VXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5UZXh0XSA9IHtjb21wb25lbnQ6IEFqZlRleHRXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5DaGFydF0gPSB7Y29tcG9uZW50OiBBamZDaGFydFdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LlRhYmxlXSA9IHtjb21wb25lbnQ6IEFqZlRhYmxlV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuRHluYW1pY1RhYmxlXSA9IHtjb21wb25lbnQ6IEFqZlRhYmxlV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuTWFwXSA9IHtjb21wb25lbnQ6IEFqZk1hcFdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkNvbHVtbl0gPSB7Y29tcG9uZW50OiBBamZDb2x1bW5XaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5Gb3JtdWxhXSA9IHtjb21wb25lbnQ6IEFqZkZvcm11bGFXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5JbWFnZUNvbnRhaW5lcl0gPSB7Y29tcG9uZW50OiBBamZJbWFnZUNvbnRhaW5lcldpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkdyYXBoXSA9IHtjb21wb25lbnQ6IEFqZkdyYXBoV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuUGFnaW5hdGVkTGlzdF0gPSB7Y29tcG9uZW50OiBBamZQYWdpbmF0ZWRMaXN0V2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuUGFnaW5hdGVkVGFibGVdID0ge2NvbXBvbmVudDogQWpmUGFnaW5hdGVkVGFibGVXaWRnZXRDb21wb25lbnR9O1xuXG4gIGRlZmF1bHRXaWRnZXRzW3d0LkRpYWxvZ10gPSB7Y29tcG9uZW50OiBBamZEaWFsb2dXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5IZWF0TWFwXSA9IHtjb21wb25lbnQ6IEFqZkhlYXRNYXBXaWRnZXRDb21wb25lbnR9O1xuICByZXR1cm4gZGVmYXVsdFdpZGdldHM7XG59O1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBamZXaWRnZXRTZXJ2aWNlIGV4dGVuZHMgQ29yZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZhdWx0V2lkZ2V0c0ZhY3RvcnkoKSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWpmLXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnd2lkZ2V0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnd2lkZ2V0LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFqZlJlcG9ydFdpZGdldCBleHRlbmRzIENvcmVDb21wb25lbnQge1xuICByZWFkb25seSB3aWRnZXRzTWFwOiBBamZXaWRnZXRDb21wb25lbnRzTWFwO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyOiBSZW5kZXJlcjIsIHdpZGdldFNlcnZpY2U6IEFqZldpZGdldFNlcnZpY2UpIHtcbiAgICBzdXBlcihyZW5kZXJlcik7XG4gICAgdGhpcy53aWRnZXRzTWFwID0gd2lkZ2V0U2VydmljZS5jb21wb25lbnRzTWFwO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2NvbHVtbi13aWRnZXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjb2x1bW4td2lkZ2V0LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFqZkNvbHVtbldpZGdldENvbXBvbmVudCBleHRlbmRzIEFqZkJhc2VXaWRnZXRDb21wb25lbnQ8QWpmQ29sdW1uV2lkZ2V0SW5zdGFuY2U+IHtcbiAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihjZHIsIGVsKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdsYXlvdXQtd2lkZ2V0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbGF5b3V0LXdpZGdldC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBamZMYXlvdXRXaWRnZXRDb21wb25lbnRcbiAgZXh0ZW5kcyBBamZCYXNlV2lkZ2V0Q29tcG9uZW50PEFqZkxheW91dFdpZGdldEluc3RhbmNlPlxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWRcbntcbiAgcHJpdmF0ZSBfYWxsY29sdW1uc1JlbmRlcmVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFsbGNvbHVtbnNSZW5kZXJlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzXG4gICAgLl9hbGxjb2x1bW5zUmVuZGVyZWQkIGFzIE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihjZHIsIGVsKTtcbiAgfVxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWxsY29sdW1uc1JlbmRlcmVkJC5uZXh0KHRydWUpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RpYWxvZy13aWRnZXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydkaWFsb2ctd2lkZ2V0LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFqZkRpYWxvZ1dpZGdldENvbXBvbmVudCBleHRlbmRzIEFqZkJhc2VXaWRnZXRDb21wb25lbnQ8QWpmRGlhbG9nV2lkZ2V0SW5zdGFuY2U+IHtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGVudCcsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pIGRpYWxvZ0NvbnRlbnQhOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nKSB7XG4gICAgc3VwZXIoY2RyLCBlbCk7XG4gIH1cblxuICBvcGVuRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQ29udGVudCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAncGFnaW5hdGVkLWxpc3Qtd2lkZ2V0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncGFnaW5hdGVkLWxpc3Qtd2lkZ2V0LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFqZlBhZ2luYXRlZExpc3RXaWRnZXRDb21wb25lbnRcbiAgZXh0ZW5kcyBBamZCYXNlV2lkZ2V0Q29tcG9uZW50PEFqZlBhZ2luYXRlZExpc3RXaWRnZXRJbnN0YW5jZT5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdFxue1xuICBnZXQgY3VycmVudFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7XG4gIH1cbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2UgPSAwO1xuXG4gIGdldCBwYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlcztcbiAgfVxuICBwcml2YXRlIF9wYWdlcyA9IDA7XG5cbiAgZ2V0IGN1cnJlbnRDb250ZW50KCk6IEFqZldpZGdldEluc3RhbmNlW10ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGVudDtcbiAgfVxuICBwcml2YXRlIF9jdXJyZW50Q29udGVudDogQWpmV2lkZ2V0SW5zdGFuY2VbXSA9IFtdO1xuXG4gIGdldCBjYW5Hb0ZvcndhcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbkdvRm9yd2FyZDtcbiAgfVxuICBwcml2YXRlIF9jYW5Hb0ZvcndhcmQgPSBmYWxzZTtcblxuICBnZXQgY2FuR29CYWNrd2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2FuR29CYWNrd2FyZDtcbiAgfVxuICBwcml2YXRlIF9jYW5Hb0JhY2t3YXJkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihjZHIsIGVsKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaW5zdGFuY2UnXSkge1xuICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudENvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVDdXJyZW50Q29udGVudCgpO1xuICB9XG5cbiAgZ29Ub1BhZ2UoZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldmlvdXMnKTogdm9pZCB7XG4gICAgY29uc3QgZGlmZiA9IGRpcmVjdGlvbiA9PT0gJ25leHQnID8gMSA6IC0xO1xuICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLl9jdXJyZW50UGFnZSArIGRpZmY7XG4gICAgaWYgKG5ld1BhZ2UgPD0gMCB8fCBuZXdQYWdlID4gdGhpcy5fcGFnZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY3VycmVudFBhZ2UgPSBuZXdQYWdlO1xuICAgIHRoaXMuX2NhbkdvRm9yd2FyZCA9IG5ld1BhZ2UgPCB0aGlzLl9wYWdlcztcbiAgICB0aGlzLl9jYW5Hb0JhY2t3YXJkID0gbmV3UGFnZSA+IDE7XG4gICAgdGhpcy5fZmlsbEN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDdXJyZW50Q29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jYW5Hb0JhY2t3YXJkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgPT0gbnVsbCB8fCB0aGlzLmluc3RhbmNlLmNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IDA7XG4gICAgICB0aGlzLl9wYWdlcyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICAgIGNvbnN0IHtjb250ZW50fSA9IHRoaXMuaW5zdGFuY2U7XG4gICAgICBjb25zdCB7cGFnZVNpemV9ID0gdGhpcy5pbnN0YW5jZS53aWRnZXQ7XG4gICAgICB0aGlzLl9wYWdlcyA9IE1hdGguY2VpbChjb250ZW50Lmxlbmd0aCAvIHBhZ2VTaXplKTtcbiAgICAgIHRoaXMuX2NhbkdvRm9yd2FyZCA9IHRoaXMuX3BhZ2VzID4gMTtcbiAgICB9XG4gICAgdGhpcy5fZmlsbEN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9maWxsQ3VycmVudENvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgPT0gbnVsbCB8fCB0aGlzLmluc3RhbmNlLmNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9jdXJyZW50Q29udGVudCA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7Y29udGVudH0gPSB0aGlzLmluc3RhbmNlO1xuICAgIGNvbnN0IHtwYWdlU2l6ZX0gPSB0aGlzLmluc3RhbmNlLndpZGdldDtcbiAgICBjb25zdCBzdGFydCA9ICh0aGlzLl9jdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemU7XG4gICAgdGhpcy5fY3VycmVudENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBzdGFydCArIHBhZ2VTaXplKTtcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAncGFnaW5hdGVkLXRhYmxlLXdpZGdldC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3BhZ2luYXRlZC10YWJsZS13aWRnZXQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmUGFnaW5hdGVkVGFibGVXaWRnZXRDb21wb25lbnRcbiAgZXh0ZW5kcyBBamZCYXNlV2lkZ2V0Q29tcG9uZW50PEFqZlBhZ2luYXRlZFRhYmxlV2lkZ2V0SW5zdGFuY2U+XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXRcbntcbiAgcmVhZG9ubHkgcGFnaW5hdG9yQ29uZmlnID0ge1xuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IFs1LCAxMCwgMTUsIDIwLCAyNSwgMzAsIDUwLCAxMDAsIDUwMF0sXG4gIH07XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlO1xuICB9XG4gIHByaXZhdGUgX2N1cnJlbnRQYWdlID0gMDtcblxuICBnZXQgcGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZXM7XG4gIH1cbiAgcHJpdmF0ZSBfcGFnZXMgPSAwO1xuXG4gIGdldCBvcmRlckJ5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29yZGVyQnk7XG4gIH1cbiAgcHJpdmF0ZSBfb3JkZXJCeSA9IDA7XG5cbiAgZ2V0IGN1cnJlbnRDb250ZW50KCk6IEFqZlRhYmxlQ2VsbFtdW10ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGVudDtcbiAgfVxuICBwcml2YXRlIF9jdXJyZW50Q29udGVudDogQWpmVGFibGVDZWxsW11bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBmdWxsIGRhdGEgdGFibGVcbiAgICovXG4gIHByaXZhdGUgX2FsbERhdGFDb250ZW50OiBBamZUYWJsZUNlbGxbXVtdID0gW107XG5cbiAgLyoqXG4gICAqIGZ1bGwgc29ydGVkIGRhdGEgdGFibGVcbiAgICovXG4gIHByaXZhdGUgX3NvcnRlZEFsbERhdGFDb250ZW50OiBBamZUYWJsZUNlbGxbXVtdID0gW107XG5cbiAgZ2V0IGhlYWRlckNvbnRlbnQoKTogQWpmVGFibGVDZWxsW10ge1xuICAgIHJldHVybiB0aGlzLl9oZWFkZXJDb250ZW50O1xuICB9XG4gIHByaXZhdGUgX2hlYWRlckNvbnRlbnQ6IEFqZlRhYmxlQ2VsbFtdID0gW107XG5cbiAgZ2V0IGNhbkdvRm9yd2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2FuR29Gb3J3YXJkO1xuICB9XG4gIHByaXZhdGUgX2NhbkdvRm9yd2FyZCA9IGZhbHNlO1xuXG4gIGdldCBjYW5Hb0JhY2t3YXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYW5Hb0JhY2t3YXJkO1xuICB9XG4gIHByaXZhdGUgX2NhbkdvQmFja3dhcmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGNkciwgZWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpbml0aWFsIGRhdGEgZm9yIHRoZSB0YWJsZSBvbiBpbnN0YW5jZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2luc3RhbmNlJ10pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pbnN0YW5jZSAhPSBudWxsICYmXG4gICAgICAgIHRoaXMuaW5zdGFuY2Uud2lkZ2V0LnBhZ2VTaXplICYmXG4gICAgICAgIHRoaXMuaW5zdGFuY2Uud2lkZ2V0LnBhZ2VTaXplID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplID0gdGhpcy5pbnN0YW5jZS53aWRnZXQucGFnZVNpemU7XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVDdXJyZW50Q29udGVudCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaW5zdGFuY2UgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5pbnN0YW5jZS53aWRnZXQucGFnZVNpemUgJiZcbiAgICAgIHRoaXMuaW5zdGFuY2Uud2lkZ2V0LnBhZ2VTaXplID4gMFxuICAgICkge1xuICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcucGFnZVNpemUgPSB0aGlzLmluc3RhbmNlLndpZGdldC5wYWdlU2l6ZTtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQ3VycmVudENvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHb3QgdG8gbmV4dCBvciBwcmV2aW91cyBwYWdlXG4gICAqIEBwYXJhbSBkaXJlY3Rpb25cbiAgICogQHJldHVybnNcbiAgICovXG4gIGdvVG9QYWdlKGRpcmVjdGlvbjogJ25leHQnIHwgJ3ByZXZpb3VzJyk6IHZvaWQge1xuICAgIGNvbnN0IGRpZmYgPSBkaXJlY3Rpb24gPT09ICduZXh0JyA/IDEgOiAtMTtcbiAgICBjb25zdCBuZXdQYWdlID0gdGhpcy5fY3VycmVudFBhZ2UgKyBkaWZmO1xuICAgIGlmIChuZXdQYWdlIDw9IDAgfHwgbmV3UGFnZSA+IHRoaXMuX3BhZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gbmV3UGFnZTtcbiAgICB0aGlzLl9jYW5Hb0ZvcndhcmQgPSBuZXdQYWdlIDwgdGhpcy5fcGFnZXM7XG4gICAgdGhpcy5fY2FuR29CYWNrd2FyZCA9IG5ld1BhZ2UgPiAxO1xuICAgIHRoaXMuX2ZpbGxDdXJyZW50Q29udGVudCgpO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShfcGFnZVNpemU6IG51bWJlcikge1xuICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplID0gX3BhZ2VTaXplO1xuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogU29ydCBhbGwgZGF0YSBmb3IgdGhlIHRhYmxlLCBub3Qgb25seSBjdXJyZW50IHBhZ2UgZGF0YVxuICAgKiBAcGFyYW0gc29ydFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc29ydFBhZ2luYXRlZERhdGEoc29ydDogU29ydCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hbGxEYXRhQ29udGVudC5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAoIXNvcnQuYWN0aXZlIHx8IHNvcnQuZGlyZWN0aW9uID09PSAnJykge1xuICAgICAgICB0aGlzLl9zb3J0ZWRBbGxEYXRhQ29udGVudCA9IHRoaXMuX2FsbERhdGFDb250ZW50LnNsaWNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMuX2NhbkdvRm9yd2FyZCA9IHRoaXMuX2N1cnJlbnRQYWdlIDwgdGhpcy5fcGFnZXM7XG4gICAgICAgIHRoaXMuX2NhbkdvQmFja3dhcmQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBjb2x1bW5JZHggPSBwYXJzZUludChzb3J0LmFjdGl2ZS5zbGljZSgtMSkpIHx8IDA7XG4gICAgICAgIHRoaXMuX3NvcnRlZEFsbERhdGFDb250ZW50ID0gdGhpcy5fYWxsRGF0YUNvbnRlbnQuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNBc2MgPSBzb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUoYVtjb2x1bW5JZHhdLCBiW2NvbHVtbklkeF0sIGlzQXNjKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9maWxsQ3VycmVudENvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb21wYXJlKGE6IEFqZlRhYmxlQ2VsbCwgYjogQWpmVGFibGVDZWxsLCBpc0FzYzogYm9vbGVhbikge1xuICAgIHJldHVybiAoYS52YWx1ZSA8IGIudmFsdWUgPyAtMSA6IDEpICogKGlzQXNjID8gMSA6IC0xKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY3VycmVudCBoZWFkZXIgYW5kIGRhdGEgZm9yIHRoZSB0YWJsZSwgc3RhcnRpbmcgZnJvbSBwYWdlIDFcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZUN1cnJlbnRDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2NhbkdvQmFja3dhcmQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSA9PSBudWxsIHx8IHRoaXMuaW5zdGFuY2UuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMDtcbiAgICAgIHRoaXMuX3BhZ2VzID0gMDtcbiAgICAgIHRoaXMuX2hlYWRlckNvbnRlbnQgPSBbXTtcbiAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50ID0gW107XG4gICAgICB0aGlzLl9hbGxEYXRhQ29udGVudCA9IFtdO1xuICAgICAgdGhpcy5fc29ydGVkQWxsRGF0YUNvbnRlbnQgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVyQ29udGVudCA9IHRoaXMuaW5zdGFuY2UuZGF0YVswXTtcbiAgICAgIHRoaXMuX2FsbERhdGFDb250ZW50ID0gdGhpcy5pbnN0YW5jZS5kYXRhLnNsaWNlKDEpO1xuICAgICAgdGhpcy5fc29ydGVkQWxsRGF0YUNvbnRlbnQgPSBbLi4udGhpcy5fYWxsRGF0YUNvbnRlbnRdO1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSAxO1xuXG4gICAgICB0aGlzLl9wYWdlcyA9IE1hdGguY2VpbCh0aGlzLl9hbGxEYXRhQ29udGVudC5sZW5ndGggLyB0aGlzLnBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZSk7XG4gICAgICB0aGlzLl9jYW5Hb0ZvcndhcmQgPSB0aGlzLl9wYWdlcyA+IDE7XG4gICAgfVxuICAgIHRoaXMuX2ZpbGxDdXJyZW50Q29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjdXJyZW50IGRhdGEgZm9yIHRoZSB0YWJsZSwgdXNpbmcgcGFnZSBhbmQgc29ydGVkIGRhdGFcbiAgICovXG4gIHByaXZhdGUgX2ZpbGxDdXJyZW50Q29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc29ydGVkQWxsRGF0YUNvbnRlbnQubGVuZ3RoID09PSAwICYmIHRoaXMuX2hlYWRlckNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fY3VycmVudENvbnRlbnQgPSBbdGhpcy5faGVhZGVyQ29udGVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMuX2N1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZTtcbiAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50ID0gW1xuICAgICAgICB0aGlzLl9oZWFkZXJDb250ZW50LFxuICAgICAgICAuLi50aGlzLl9zb3J0ZWRBbGxEYXRhQ29udGVudC5zbGljZShzdGFydCwgc3RhcnQgKyB0aGlzLnBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZSksXG4gICAgICBdO1xuICAgIH1cbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxhamYtZmlsdGVyLXdpZGdldFxuICAqbmdJZj1cImluc3RhbmNlICYmIGluc3RhbmNlLmZpbHRlclwiXG4gIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiXG4gIChmaWx0ZXJlZEluc3RhbmNlKT1cImluc3RhbmNlID0gJGV2ZW50XCJcbj5cbjwvYWpmLWZpbHRlci13aWRnZXQ+XG48bmctdGVtcGxhdGUgYWpmLXdpZGdldC1ob3N0PjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2ICpuZ0lmPVwiaW5zdGFuY2VcIiBjbGFzcz1cImFqZi1jb2x1bW4tY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHcgb2YgaW5zdGFuY2UuY29udGVudFwiPlxuICAgIDxhamYtd2lkZ2V0IFtpbnN0YW5jZV09XCJ3XCI+XG4gICAgPC9hamYtd2lkZ2V0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIiwiPGRpdiAqbmdJZj1cImluc3RhbmNlXCIgY2xhc3M9XCJhamYtY29sdW1uc1wiPlxuICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGluc3RhbmNlLndpZGdldC5jb2x1bW5zOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgW25nU3R5bGVdPVwieydmbGV4LWdyb3cnOiBjb2x1bW4gPiAtMSA/IDEgOiBudWxsLCAnZmxleC1iYXNpcycgOiBjb2x1bW4gPiAtMSA/IChjb2x1bW4gKiAxMDApICsgJyUnIDogbnVsbH1cIlxuICAgICAgY2xhc3M9XCJhamYtY29sdW1uXCJcbiAgPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsY29sdW1uc1JlbmRlcmVkJHxhc3luY1wiPlxuICAgIDxhamYtd2lkZ2V0ICpuZ0lmPVwiKGluc3RhbmNlfGFqZkdldENvbHVtbkNvbnRlbnQ6aWR4KSBhcyBjY1wiIFtpbnN0YW5jZV09XCJjYyFcIj5cbiAgICA8L2FqZi13aWRnZXQ+XG4gIDwvbmctY29udGFpbmVyPlxuIDwvZGl2PlxuPC9kaXY+XG4iLCI8YSAqbmdJZj1cImluc3RhbmNlXCIgY2xhc3M9XCJhamYtZGlhbG9nLXRvZ2dsZVwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5cbiAgPGFqZi13aWRnZXQgW2luc3RhbmNlXT1cImluc3RhbmNlLnRvZ2dsZVwiPjwvYWpmLXdpZGdldD5cbjwvYT5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluc3RhbmNlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnN0YW5jZS5jb250ZW50XCI+XG4gICAgICA8YWpmLXdpZGdldCBbaW5zdGFuY2VdPVwiaXRlbVwiPjwvYWpmLXdpZGdldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIiwiPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdFwiICpuZ0lmPVwiaW5zdGFuY2UgJiYgcGFnZXMgPiAwXCI+XG4gIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtdGl0bGUtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC10aXRsZVwiPnt7IGluc3RhbmNlLndpZGdldC50aXRsZSB9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhamYtc3BhY2VyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC1wYWdpbmF0b3JcIj5cbiAgICAgIDxhIChjbGljayk9XCJnb1RvUGFnZSgncHJldmlvdXMnKVwiIGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LWJ0biBhamYtcGFnaW5hdGVkLWxpc3QtYmFjay1idG5cIlxuICAgICAgICAgIFtjbGFzcy5hamYtcGFnaW5hdGVkLWxpc3QtYnRuLWRpc2FibGVkXT1cImNhbkdvQmFja3dhcmQgPT09IGZhbHNlXCI+PC9hPlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC1wYWdpbmF0b3ItcGFnZVwiPnt7IGN1cnJlbnRQYWdlIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LXBhZ2luYXRvci1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtcGFnaW5hdG9yLXBhZ2VzXCI+e3sgcGFnZXMgfX08L2Rpdj5cbiAgICAgIDxhIChjbGljayk9XCJnb1RvUGFnZSgnbmV4dCcpXCIgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtYnRuIGFqZi1wYWdpbmF0ZWQtbGlzdC1mb3J3YXJkLWJ0blwiXG4gICAgICAgIFtjbGFzcy5hamYtcGFnaW5hdGVkLWxpc3QtYnRuLWRpc2FibGVkXT1cImNhbkdvRm9yd2FyZCA9PT0gZmFsc2VcIj48L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXJyZW50Q29udGVudFwiPlxuICAgIDxhamYtd2lkZ2V0IFtpbnN0YW5jZV09XCJpdGVtXCI+PC9hamYtd2lkZ2V0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIiwiPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGVcIiAqbmdJZj1cImluc3RhbmNlXCI+XG4gIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLXRhYmxlLXRpdGxlLWNvbnRhaW5lclwiICpuZ0lmPVwicGFnZXMgPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtcGFnZS1zZWxlY3RvclwiPlxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtcGFnZS1zZWxlY3Rvci1sYWJlbFwiXG4gICAgICAgID57eydJdGVtcyBwZXIgcGFnZTonfHRyYW5zbG9jb319PC9tYXQtbGFiZWxcbiAgICAgID5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIFt2YWx1ZV09XCJwYWdpbmF0b3JDb25maWcucGFnZVNpemVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgW3ZhbHVlXT1cInBhZ2VTaXplT3B0XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZVNpemVPcHQgb2YgcGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYWdlU2l6ZU9wdCB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1zcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdpbmF0b3JcIj5cbiAgICAgIDxhXG4gICAgICAgIChjbGljayk9XCJnb1RvUGFnZSgncHJldmlvdXMnKVwiXG4gICAgICAgIGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1idG4gYWpmLXBhZ2luYXRlZC10YWJsZS1iYWNrLWJ0blwiXG4gICAgICAgIFtjbGFzcy5hamYtcGFnaW5hdGVkLXRhYmxlLWJ0bi1kaXNhYmxlZF09XCJjYW5Hb0JhY2t3YXJkID09PSBmYWxzZVwiXG4gICAgICA+PC9hPlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtcGFnaW5hdG9yLXBhZ2VcIj57eyBjdXJyZW50UGFnZSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtcGFnaW5hdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtcGFnaW5hdG9yLXBhZ2VzXCI+e3sgcGFnZXMgfX08L2Rpdj5cbiAgICAgIDxhXG4gICAgICAgIChjbGljayk9XCJnb1RvUGFnZSgnbmV4dCcpXCJcbiAgICAgICAgY2xhc3M9XCJhamYtcGFnaW5hdGVkLXRhYmxlLWJ0biBhamYtcGFnaW5hdGVkLXRhYmxlLWZvcndhcmQtYnRuXCJcbiAgICAgICAgW2NsYXNzLmFqZi1wYWdpbmF0ZWQtdGFibGUtYnRuLWRpc2FibGVkXT1cImNhbkdvRm9yd2FyZCA9PT0gZmFsc2VcIlxuICAgICAgPjwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLXRhYmxlLWl0ZW1cIj5cbiAgICA8YWpmLXdpZGdldC1leHBvcnRcbiAgICAgICpuZ0lmPVwiaW5zdGFuY2VcIlxuICAgICAgW3dpZGdldFR5cGVdPVwiaW5zdGFuY2Uud2lkZ2V0VHlwZVwiXG4gICAgICBbZGF0YV09XCJjdXJyZW50Q29udGVudFwiXG4gICAgICBbZW5hYmxlXT1cImluc3RhbmNlLmV4cG9ydGFibGVcIlxuICAgID5cbiAgICAgIDxhamYtdGFibGUgW2RhdGFdPVwiY3VycmVudENvbnRlbnRcIiAoc29ydFNlbGVjdGVkKT1cInNvcnRQYWdpbmF0ZWREYXRhKCRldmVudClcIj48L2FqZi10YWJsZT5cbiAgICA8L2FqZi13aWRnZXQtZXhwb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvcmVwb3J0cy9zcmMvd2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvcmVwb3J0cy9zcmMvd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9jb2x1bW4td2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9sYXlvdXQtd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9kaWFsb2ctd2lkZ2V0Lmh0bWwiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9yZXBvcnRzL3NyYy9wYWdpbmF0ZWQtbGlzdC13aWRnZXQuaHRtbCIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL3JlcG9ydHMvc3JjL3BhZ2luYXRlZC10YWJsZS13aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQ0wsc0JBQXNCLEVBTXRCLGVBQWUsSUFBSSxhQUFhLEVBR2hDLGdCQUFnQixJQUFJLFdBQVcsRUFDL0IsYUFBYSxJQUFJLEVBQUUsR0FDcEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBS1YsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQUVyRCxNQUFNLHFCQUFxQixHQUFHLEdBQTJCLEVBQUU7SUFDekQsTUFBTSxjQUFjLEdBQTJCLEVBQUUsQ0FBQztJQUNsRCxjQUFjLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLHdCQUF3QixFQUFDLENBQUM7SUFDbEUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSwyQkFBMkIsRUFBQyxDQUFDO0lBQ3hFLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUMsQ0FBQztJQUNoRSxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFDLENBQUM7SUFDOUQsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBQyxDQUFDO0lBQ2hFLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUMsQ0FBQztJQUNoRSxjQUFjLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFDLENBQUM7SUFDdkUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0lBQzVELGNBQWMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQztJQUNsRSxjQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLHlCQUF5QixFQUFDLENBQUM7SUFDcEUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQyxDQUFDO0lBQ2xGLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUMsQ0FBQztJQUNoRSxjQUFjLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLCtCQUErQixFQUFDLENBQUM7SUFDaEYsY0FBYyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQyxDQUFDO0lBRWxGLGNBQWMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQztJQUNsRSxjQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLHlCQUF5QixFQUFDLENBQUM7SUFDcEUsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDL0M7UUFDRSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OzZHQUhVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREosTUFBTTsyRkFDbEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUFjaEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQUdoRCxZQUFZLFFBQW1CLEVBQUUsYUFBK0I7UUFDOUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUNoRCxDQUFDOzs0R0FOVSxlQUFlO2dHQUFmLGVBQWUseUVDdEc1Qiw0TUFPQTsyRkQrRmEsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07O0FBaUJqRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsc0JBQStDO0lBQzNGLFlBQVksR0FBc0IsRUFBRSxFQUFjO1FBQ2hELEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakIsQ0FBQzs7cUhBSFUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsMkVFckhyQyxtTUFNQSxpVUZnR2EsZUFBZTsyRkFlZix3QkFBd0I7a0JBTnBDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7QUFjdkMsTUFBTSxPQUFPLHdCQUNYLFNBQVEsc0JBQStDO0lBT3ZELFlBQVksR0FBc0IsRUFBRSxFQUFjO1FBQ2hELEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFMVCx5QkFBb0IsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDcEYsd0JBQW1CLEdBQXdCLElBQUk7YUFDckQsb0JBQTJDLENBQUM7SUFJL0MsQ0FBQztJQUNELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O3FIQWJVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDJFR2pJckMsOGRBWUEsa2lCSDBGYSxlQUFlOzJGQTJCZix3QkFBd0I7a0JBTnBDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7QUF3QnZDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxzQkFBK0M7SUFHM0YsWUFBWSxHQUFzQixFQUFFLEVBQWMsRUFBVSxPQUFrQjtRQUM1RSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRDJDLFlBQU8sR0FBUCxPQUFPLENBQVc7SUFFOUUsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7cUhBVFUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsK0lBQ0EsV0FBVyxvREl4SmhELDZYQVVBLDZVSjRGYSxlQUFlOzJGQWlEZix3QkFBd0I7a0JBTnBDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt5SkFHWSxhQUFhO3NCQUE3RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7O0FBaUJqRCxNQUFNLE9BQU8sK0JBQ1gsU0FBUSxzQkFBc0Q7SUE0QjlELFlBQVksR0FBc0IsRUFBRSxFQUFjO1FBQ2hELEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUF2QlQsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFLakIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUtYLG9CQUFlLEdBQXdCLEVBQUUsQ0FBQztRQUsxQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUt0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUkvQixDQUFDO0lBM0JELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFHRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBT0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQThCO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekMsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNoQyxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLE9BQU87U0FDUjtRQUNELE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hDLE1BQU0sRUFBQyxRQUFRLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NEhBaEZVLCtCQUErQjtnSEFBL0IsK0JBQStCLGdHS3pLNUMsa2lDQWtCQSw0aUNMb0ZhLGVBQWU7MkZBbUVmLCtCQUErQjtrQkFOM0MsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOztBQTJGdkMsTUFBTSxPQUFPLGdDQUNYLFNBQVEsc0JBQXVEO0lBcUQvRCxZQUFZLEdBQXNCLEVBQUUsRUFBYztRQUNoRCxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBbkRSLG9CQUFlLEdBQUc7WUFDekIsUUFBUSxFQUFFLEVBQUU7WUFDWixlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUN2RCxDQUFDO1FBS00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFLakIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUtYLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFLYixvQkFBZSxHQUFxQixFQUFFLENBQUM7UUFFL0M7O1dBRUc7UUFDSyxvQkFBZSxHQUFxQixFQUFFLENBQUM7UUFFL0M7O1dBRUc7UUFDSywwQkFBcUIsR0FBcUIsRUFBRSxDQUFDO1FBSzdDLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUtwQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUt0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUkvQixDQUFDO0lBL0NELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQWFELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQU9EOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QixJQUNFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsRUFDakM7Z0JBQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQ0UsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsRUFDakM7WUFDQSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDL0Q7UUFDRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxTQUE4QjtRQUNyQyxNQUFNLElBQUksR0FBRyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsSUFBVTtRQUMxQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFFNUIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUM7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMxRCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLENBQWUsRUFBRSxDQUFlLEVBQUUsS0FBYztRQUMvRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7WUFFdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7WUFDdEUsSUFBSSxDQUFDLGVBQWUsR0FBRztnQkFDckIsSUFBSSxDQUFDLGNBQWM7Z0JBQ25CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2FBQ2xGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkhBOUtVLGdDQUFnQztpSEFBaEMsZ0NBQWdDLGdHTWxRN0MsZ3hEQThDQTsyRk5vTmEsZ0NBQWdDO2tCQU41QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7XG4gIEFqZkJhc2VXaWRnZXRDb21wb25lbnQsXG4gIEFqZkNvbHVtbldpZGdldEluc3RhbmNlLFxuICBBamZEaWFsb2dXaWRnZXRJbnN0YW5jZSxcbiAgQWpmTGF5b3V0V2lkZ2V0SW5zdGFuY2UsXG4gIEFqZlBhZ2luYXRlZExpc3RXaWRnZXRJbnN0YW5jZSxcbiAgQWpmUGFnaW5hdGVkVGFibGVXaWRnZXRJbnN0YW5jZSxcbiAgQWpmUmVwb3J0V2lkZ2V0IGFzIENvcmVDb21wb25lbnQsXG4gIEFqZldpZGdldENvbXBvbmVudHNNYXAsXG4gIEFqZldpZGdldEluc3RhbmNlLFxuICBBamZXaWRnZXRTZXJ2aWNlIGFzIENvcmVTZXJ2aWNlLFxuICBBamZXaWRnZXRUeXBlIGFzIHd0LFxufSBmcm9tICdAYWpmL2NvcmUvcmVwb3J0cyc7XG5pbXBvcnQge0FqZlRhYmxlQ2VsbH0gZnJvbSAnQGFqZi9jb3JlL3RhYmxlJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7U29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWpmQ2hhcnRXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtd2lkZ2V0JztcbmltcG9ydCB7QWpmRm9ybXVsYVdpZGdldENvbXBvbmVudH0gZnJvbSAnLi9mb3JtdWxhLXdpZGdldCc7XG5pbXBvcnQge0FqZkdyYXBoV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL2dyYXBoLXdpZGdldCc7XG5pbXBvcnQge0FqZkhlYXRNYXBXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vaGVhdC1tYXAtd2lkZ2V0JztcbmltcG9ydCB7QWpmSW1hZ2VDb250YWluZXJXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vaW1hZ2UtY29udGFpbmVyLXdpZGdldCc7XG5pbXBvcnQge0FqZkltYWdlV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL2ltYWdlLXdpZGdldCc7XG5pbXBvcnQge0FqZk1hcFdpZGdldENvbXBvbmVudH0gZnJvbSAnLi9tYXAtd2lkZ2V0JztcbmltcG9ydCB7QWpmUGFnZUJyZWFrV2lkZ2V0Q29tcG9uZW50fSBmcm9tICcuL3BhZ2UtYnJlYWstd2lkZ2V0JztcbmltcG9ydCB7QWpmVGFibGVXaWRnZXRDb21wb25lbnR9IGZyb20gJy4vdGFibGUtd2lkZ2V0JztcbmltcG9ydCB7QWpmVGV4dFdpZGdldENvbXBvbmVudH0gZnJvbSAnLi90ZXh0LXdpZGdldCc7XG5cbmNvbnN0IGRlZmF1bHRXaWRnZXRzRmFjdG9yeSA9ICgpOiBBamZXaWRnZXRDb21wb25lbnRzTWFwID0+IHtcbiAgY29uc3QgZGVmYXVsdFdpZGdldHM6IEFqZldpZGdldENvbXBvbmVudHNNYXAgPSB7fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuTGF5b3V0XSA9IHtjb21wb25lbnQ6IEFqZkxheW91dFdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LlBhZ2VCcmVha10gPSB7Y29tcG9uZW50OiBBamZQYWdlQnJlYWtXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5JbWFnZV0gPSB7Y29tcG9uZW50OiBBamZJbWFnZVdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LlRleHRdID0ge2NvbXBvbmVudDogQWpmVGV4dFdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkNoYXJ0XSA9IHtjb21wb25lbnQ6IEFqZkNoYXJ0V2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuVGFibGVdID0ge2NvbXBvbmVudDogQWpmVGFibGVXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5EeW5hbWljVGFibGVdID0ge2NvbXBvbmVudDogQWpmVGFibGVXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5NYXBdID0ge2NvbXBvbmVudDogQWpmTWFwV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuQ29sdW1uXSA9IHtjb21wb25lbnQ6IEFqZkNvbHVtbldpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkZvcm11bGFdID0ge2NvbXBvbmVudDogQWpmRm9ybXVsYVdpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkltYWdlQ29udGFpbmVyXSA9IHtjb21wb25lbnQ6IEFqZkltYWdlQ29udGFpbmVyV2lkZ2V0Q29tcG9uZW50fTtcbiAgZGVmYXVsdFdpZGdldHNbd3QuR3JhcGhdID0ge2NvbXBvbmVudDogQWpmR3JhcGhXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5QYWdpbmF0ZWRMaXN0XSA9IHtjb21wb25lbnQ6IEFqZlBhZ2luYXRlZExpc3RXaWRnZXRDb21wb25lbnR9O1xuICBkZWZhdWx0V2lkZ2V0c1t3dC5QYWdpbmF0ZWRUYWJsZV0gPSB7Y29tcG9uZW50OiBBamZQYWdpbmF0ZWRUYWJsZVdpZGdldENvbXBvbmVudH07XG5cbiAgZGVmYXVsdFdpZGdldHNbd3QuRGlhbG9nXSA9IHtjb21wb25lbnQ6IEFqZkRpYWxvZ1dpZGdldENvbXBvbmVudH07XG4gIGRlZmF1bHRXaWRnZXRzW3d0LkhlYXRNYXBdID0ge2NvbXBvbmVudDogQWpmSGVhdE1hcFdpZGdldENvbXBvbmVudH07XG4gIHJldHVybiBkZWZhdWx0V2lkZ2V0cztcbn07XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEFqZldpZGdldFNlcnZpY2UgZXh0ZW5kcyBDb3JlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmF1bHRXaWRnZXRzRmFjdG9yeSgpKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtd2lkZ2V0JyxcbiAgdGVtcGxhdGVVcmw6ICd3aWRnZXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd3aWRnZXQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWpmUmVwb3J0V2lkZ2V0IGV4dGVuZHMgQ29yZUNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHdpZGdldHNNYXA6IEFqZldpZGdldENvbXBvbmVudHNNYXA7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXI6IFJlbmRlcmVyMiwgd2lkZ2V0U2VydmljZTogQWpmV2lkZ2V0U2VydmljZSkge1xuICAgIHN1cGVyKHJlbmRlcmVyKTtcbiAgICB0aGlzLndpZGdldHNNYXAgPSB3aWRnZXRTZXJ2aWNlLmNvbXBvbmVudHNNYXA7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnY29sdW1uLXdpZGdldC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NvbHVtbi13aWRnZXQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmQ29sdW1uV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQWpmQmFzZVdpZGdldENvbXBvbmVudDxBamZDb2x1bW5XaWRnZXRJbnN0YW5jZT4ge1xuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGNkciwgZWwpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2xheW91dC13aWRnZXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydsYXlvdXQtd2lkZ2V0LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFqZkxheW91dFdpZGdldENvbXBvbmVudFxuICBleHRlbmRzIEFqZkJhc2VXaWRnZXRDb21wb25lbnQ8QWpmTGF5b3V0V2lkZ2V0SW5zdGFuY2U+XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZFxue1xuICBwcml2YXRlIF9hbGxjb2x1bW5zUmVuZGVyZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgYWxsY29sdW1uc1JlbmRlcmVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXNcbiAgICAuX2FsbGNvbHVtbnNSZW5kZXJlZCQgYXMgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGNkciwgZWwpO1xuICB9XG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGxjb2x1bW5zUmVuZGVyZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnZGlhbG9nLXdpZGdldC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2RpYWxvZy13aWRnZXQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmRGlhbG9nV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQWpmQmFzZVdpZGdldENvbXBvbmVudDxBamZEaWFsb2dXaWRnZXRJbnN0YW5jZT4ge1xuICBAVmlld0NoaWxkKCdkaWFsb2dDb250ZW50Jywge3JlYWQ6IFRlbXBsYXRlUmVmfSkgZGlhbG9nQ29udGVudCE6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2cpIHtcbiAgICBzdXBlcihjZHIsIGVsKTtcbiAgfVxuXG4gIG9wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dDb250ZW50KTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdwYWdpbmF0ZWQtbGlzdC13aWRnZXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydwYWdpbmF0ZWQtbGlzdC13aWRnZXQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmUGFnaW5hdGVkTGlzdFdpZGdldENvbXBvbmVudFxuICBleHRlbmRzIEFqZkJhc2VXaWRnZXRDb21wb25lbnQ8QWpmUGFnaW5hdGVkTGlzdFdpZGdldEluc3RhbmNlPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0XG57XG4gIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgfVxuICBwcml2YXRlIF9jdXJyZW50UGFnZSA9IDA7XG5cbiAgZ2V0IHBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VzO1xuICB9XG4gIHByaXZhdGUgX3BhZ2VzID0gMDtcblxuICBnZXQgY3VycmVudENvbnRlbnQoKTogQWpmV2lkZ2V0SW5zdGFuY2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDb250ZW50O1xuICB9XG4gIHByaXZhdGUgX2N1cnJlbnRDb250ZW50OiBBamZXaWRnZXRJbnN0YW5jZVtdID0gW107XG5cbiAgZ2V0IGNhbkdvRm9yd2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2FuR29Gb3J3YXJkO1xuICB9XG4gIHByaXZhdGUgX2NhbkdvRm9yd2FyZCA9IGZhbHNlO1xuXG4gIGdldCBjYW5Hb0JhY2t3YXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYW5Hb0JhY2t3YXJkO1xuICB9XG4gIHByaXZhdGUgX2NhbkdvQmFja3dhcmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGNkciwgZWwpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpbnN0YW5jZSddKSB7XG4gICAgICB0aGlzLl91cGRhdGVDdXJyZW50Q29udGVudCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICBnb1RvUGFnZShkaXJlY3Rpb246ICduZXh0JyB8ICdwcmV2aW91cycpOiB2b2lkIHtcbiAgICBjb25zdCBkaWZmID0gZGlyZWN0aW9uID09PSAnbmV4dCcgPyAxIDogLTE7XG4gICAgY29uc3QgbmV3UGFnZSA9IHRoaXMuX2N1cnJlbnRQYWdlICsgZGlmZjtcbiAgICBpZiAobmV3UGFnZSA8PSAwIHx8IG5ld1BhZ2UgPiB0aGlzLl9wYWdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XG4gICAgdGhpcy5fY2FuR29Gb3J3YXJkID0gbmV3UGFnZSA8IHRoaXMuX3BhZ2VzO1xuICAgIHRoaXMuX2NhbkdvQmFja3dhcmQgPSBuZXdQYWdlID4gMTtcbiAgICB0aGlzLl9maWxsQ3VycmVudENvbnRlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUN1cnJlbnRDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2NhbkdvQmFja3dhcmQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSA9PSBudWxsIHx8IHRoaXMuaW5zdGFuY2UuY29udGVudC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMDtcbiAgICAgIHRoaXMuX3BhZ2VzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSAxO1xuICAgICAgY29uc3Qge2NvbnRlbnR9ID0gdGhpcy5pbnN0YW5jZTtcbiAgICAgIGNvbnN0IHtwYWdlU2l6ZX0gPSB0aGlzLmluc3RhbmNlLndpZGdldDtcbiAgICAgIHRoaXMuX3BhZ2VzID0gTWF0aC5jZWlsKGNvbnRlbnQubGVuZ3RoIC8gcGFnZVNpemUpO1xuICAgICAgdGhpcy5fY2FuR29Gb3J3YXJkID0gdGhpcy5fcGFnZXMgPiAxO1xuICAgIH1cbiAgICB0aGlzLl9maWxsQ3VycmVudENvbnRlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbGxDdXJyZW50Q29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSA9PSBudWxsIHx8IHRoaXMuaW5zdGFuY2UuY29udGVudC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50ID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHtjb250ZW50fSA9IHRoaXMuaW5zdGFuY2U7XG4gICAgY29uc3Qge3BhZ2VTaXplfSA9IHRoaXMuaW5zdGFuY2Uud2lkZ2V0O1xuICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMuX2N1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICB0aGlzLl9jdXJyZW50Q29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgcGFnZVNpemUpO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdwYWdpbmF0ZWQtdGFibGUtd2lkZ2V0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncGFnaW5hdGVkLXRhYmxlLXdpZGdldC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBamZQYWdpbmF0ZWRUYWJsZVdpZGdldENvbXBvbmVudFxuICBleHRlbmRzIEFqZkJhc2VXaWRnZXRDb21wb25lbnQ8QWpmUGFnaW5hdGVkVGFibGVXaWRnZXRJbnN0YW5jZT5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdFxue1xuICByZWFkb25seSBwYWdpbmF0b3JDb25maWcgPSB7XG4gICAgcGFnZVNpemU6IDEwLFxuICAgIHBhZ2VTaXplT3B0aW9uczogWzUsIDEwLCAxNSwgMjAsIDI1LCAzMCwgNTAsIDEwMCwgNTAwXSxcbiAgfTtcblxuICBnZXQgY3VycmVudFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7XG4gIH1cbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2UgPSAwO1xuXG4gIGdldCBwYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlcztcbiAgfVxuICBwcml2YXRlIF9wYWdlcyA9IDA7XG5cbiAgZ2V0IG9yZGVyQnkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb3JkZXJCeTtcbiAgfVxuICBwcml2YXRlIF9vcmRlckJ5ID0gMDtcblxuICBnZXQgY3VycmVudENvbnRlbnQoKTogQWpmVGFibGVDZWxsW11bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDb250ZW50O1xuICB9XG4gIHByaXZhdGUgX2N1cnJlbnRDb250ZW50OiBBamZUYWJsZUNlbGxbXVtdID0gW107XG5cbiAgLyoqXG4gICAqIGZ1bGwgZGF0YSB0YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBfYWxsRGF0YUNvbnRlbnQ6IEFqZlRhYmxlQ2VsbFtdW10gPSBbXTtcblxuICAvKipcbiAgICogZnVsbCBzb3J0ZWQgZGF0YSB0YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBfc29ydGVkQWxsRGF0YUNvbnRlbnQ6IEFqZlRhYmxlQ2VsbFtdW10gPSBbXTtcblxuICBnZXQgaGVhZGVyQ29udGVudCgpOiBBamZUYWJsZUNlbGxbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlckNvbnRlbnQ7XG4gIH1cbiAgcHJpdmF0ZSBfaGVhZGVyQ29udGVudDogQWpmVGFibGVDZWxsW10gPSBbXTtcblxuICBnZXQgY2FuR29Gb3J3YXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYW5Hb0ZvcndhcmQ7XG4gIH1cbiAgcHJpdmF0ZSBfY2FuR29Gb3J3YXJkID0gZmFsc2U7XG5cbiAgZ2V0IGNhbkdvQmFja3dhcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbkdvQmFja3dhcmQ7XG4gIH1cbiAgcHJpdmF0ZSBfY2FuR29CYWNrd2FyZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoY2RyLCBlbCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGluaXRpYWwgZGF0YSBmb3IgdGhlIHRhYmxlIG9uIGluc3RhbmNlIGNoYW5nZXNcbiAgICogQHBhcmFtIGNoYW5nZXNcbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaW5zdGFuY2UnXSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmluc3RhbmNlICE9IG51bGwgJiZcbiAgICAgICAgdGhpcy5pbnN0YW5jZS53aWRnZXQucGFnZVNpemUgJiZcbiAgICAgICAgdGhpcy5pbnN0YW5jZS53aWRnZXQucGFnZVNpemUgPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcucGFnZVNpemUgPSB0aGlzLmluc3RhbmNlLndpZGdldC5wYWdlU2l6ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRDb250ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pbnN0YW5jZSAhPSBudWxsICYmXG4gICAgICB0aGlzLmluc3RhbmNlLndpZGdldC5wYWdlU2l6ZSAmJlxuICAgICAgdGhpcy5pbnN0YW5jZS53aWRnZXQucGFnZVNpemUgPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZSA9IHRoaXMuaW5zdGFuY2Uud2lkZ2V0LnBhZ2VTaXplO1xuICAgIH1cbiAgICB0aGlzLl91cGRhdGVDdXJyZW50Q29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvdCB0byBuZXh0IG9yIHByZXZpb3VzIHBhZ2VcbiAgICogQHBhcmFtIGRpcmVjdGlvblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ29Ub1BhZ2UoZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldmlvdXMnKTogdm9pZCB7XG4gICAgY29uc3QgZGlmZiA9IGRpcmVjdGlvbiA9PT0gJ25leHQnID8gMSA6IC0xO1xuICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLl9jdXJyZW50UGFnZSArIGRpZmY7XG4gICAgaWYgKG5ld1BhZ2UgPD0gMCB8fCBuZXdQYWdlID4gdGhpcy5fcGFnZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY3VycmVudFBhZ2UgPSBuZXdQYWdlO1xuICAgIHRoaXMuX2NhbkdvRm9yd2FyZCA9IG5ld1BhZ2UgPCB0aGlzLl9wYWdlcztcbiAgICB0aGlzLl9jYW5Hb0JhY2t3YXJkID0gbmV3UGFnZSA+IDE7XG4gICAgdGhpcy5fZmlsbEN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKF9wYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JDb25maWcucGFnZVNpemUgPSBfcGFnZVNpemU7XG4gICAgdGhpcy5fdXBkYXRlQ3VycmVudENvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IGFsbCBkYXRhIGZvciB0aGUgdGFibGUsIG5vdCBvbmx5IGN1cnJlbnQgcGFnZSBkYXRhXG4gICAqIEBwYXJhbSBzb3J0XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzb3J0UGFnaW5hdGVkRGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FsbERhdGFDb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGlmICghc29ydC5hY3RpdmUgfHwgc29ydC5kaXJlY3Rpb24gPT09ICcnKSB7XG4gICAgICAgIHRoaXMuX3NvcnRlZEFsbERhdGFDb250ZW50ID0gdGhpcy5fYWxsRGF0YUNvbnRlbnQuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgdGhpcy5fY2FuR29Gb3J3YXJkID0gdGhpcy5fY3VycmVudFBhZ2UgPCB0aGlzLl9wYWdlcztcbiAgICAgICAgdGhpcy5fY2FuR29CYWNrd2FyZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbklkeCA9IHBhcnNlSW50KHNvcnQuYWN0aXZlLnNsaWNlKC0xKSkgfHwgMDtcbiAgICAgICAgdGhpcy5fc29ydGVkQWxsRGF0YUNvbnRlbnQgPSB0aGlzLl9hbGxEYXRhQ29udGVudC5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0FzYyA9IHNvcnQuZGlyZWN0aW9uID09PSAnYXNjJztcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZShhW2NvbHVtbklkeF0sIGJbY29sdW1uSWR4XSwgaXNBc2MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2ZpbGxDdXJyZW50Q29udGVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBhcmUoYTogQWpmVGFibGVDZWxsLCBiOiBBamZUYWJsZUNlbGwsIGlzQXNjOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIChhLnZhbHVlIDwgYi52YWx1ZSA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjdXJyZW50IGhlYWRlciBhbmQgZGF0YSBmb3IgdGhlIHRhYmxlLCBzdGFydGluZyBmcm9tIHBhZ2UgMVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ3VycmVudENvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2FuR29CYWNrd2FyZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmluc3RhbmNlID09IG51bGwgfHwgdGhpcy5pbnN0YW5jZS5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSAwO1xuICAgICAgdGhpcy5fcGFnZXMgPSAwO1xuICAgICAgdGhpcy5faGVhZGVyQ29udGVudCA9IFtdO1xuICAgICAgdGhpcy5fY3VycmVudENvbnRlbnQgPSBbXTtcbiAgICAgIHRoaXMuX2FsbERhdGFDb250ZW50ID0gW107XG4gICAgICB0aGlzLl9zb3J0ZWRBbGxEYXRhQ29udGVudCA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJDb250ZW50ID0gdGhpcy5pbnN0YW5jZS5kYXRhWzBdO1xuICAgICAgdGhpcy5fYWxsRGF0YUNvbnRlbnQgPSB0aGlzLmluc3RhbmNlLmRhdGEuc2xpY2UoMSk7XG4gICAgICB0aGlzLl9zb3J0ZWRBbGxEYXRhQ29udGVudCA9IFsuLi50aGlzLl9hbGxEYXRhQ29udGVudF07XG4gICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IDE7XG5cbiAgICAgIHRoaXMuX3BhZ2VzID0gTWF0aC5jZWlsKHRoaXMuX2FsbERhdGFDb250ZW50Lmxlbmd0aCAvIHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplKTtcbiAgICAgIHRoaXMuX2NhbkdvRm9yd2FyZCA9IHRoaXMuX3BhZ2VzID4gMTtcbiAgICB9XG4gICAgdGhpcy5fZmlsbEN1cnJlbnRDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGN1cnJlbnQgZGF0YSBmb3IgdGhlIHRhYmxlLCB1c2luZyBwYWdlIGFuZCBzb3J0ZWQgZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBfZmlsbEN1cnJlbnRDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb3J0ZWRBbGxEYXRhQ29udGVudC5sZW5ndGggPT09IDAgJiYgdGhpcy5faGVhZGVyQ29udGVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9jdXJyZW50Q29udGVudCA9IFt0aGlzLl9oZWFkZXJDb250ZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhcnQgPSAodGhpcy5fY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplO1xuICAgICAgdGhpcy5fY3VycmVudENvbnRlbnQgPSBbXG4gICAgICAgIHRoaXMuX2hlYWRlckNvbnRlbnQsXG4gICAgICAgIC4uLnRoaXMuX3NvcnRlZEFsbERhdGFDb250ZW50LnNsaWNlKHN0YXJ0LCBzdGFydCArIHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplKSxcbiAgICAgIF07XG4gICAgfVxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGFqZi1maWx0ZXItd2lkZ2V0XG4gICpuZ0lmPVwiaW5zdGFuY2UgJiYgaW5zdGFuY2UuZmlsdGVyXCJcbiAgW2luc3RhbmNlXT1cImluc3RhbmNlXCJcbiAgKGZpbHRlcmVkSW5zdGFuY2UpPVwiaW5zdGFuY2UgPSAkZXZlbnRcIlxuPlxuPC9hamYtZmlsdGVyLXdpZGdldD5cbjxuZy10ZW1wbGF0ZSBhamYtd2lkZ2V0LWhvc3Q+PC9uZy10ZW1wbGF0ZT5cbiIsIjxkaXYgKm5nSWY9XCJpbnN0YW5jZVwiIGNsYXNzPVwiYWpmLWNvbHVtbi1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdyBvZiBpbnN0YW5jZS5jb250ZW50XCI+XG4gICAgPGFqZi13aWRnZXQgW2luc3RhbmNlXT1cIndcIj5cbiAgICA8L2FqZi13aWRnZXQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iLCI8ZGl2ICpuZ0lmPVwiaW5zdGFuY2VcIiBjbGFzcz1cImFqZi1jb2x1bW5zXCI+XG4gIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaW5zdGFuY2Uud2lkZ2V0LmNvbHVtbnM7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2ZsZXgtZ3Jvdyc6IGNvbHVtbiA+IC0xID8gMSA6IG51bGwsICdmbGV4LWJhc2lzJyA6IGNvbHVtbiA+IC0xID8gKGNvbHVtbiAqIDEwMCkgKyAnJScgOiBudWxsfVwiXG4gICAgICBjbGFzcz1cImFqZi1jb2x1bW5cIlxuICA+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxjb2x1bW5zUmVuZGVyZWQkfGFzeW5jXCI+XG4gICAgPGFqZi13aWRnZXQgKm5nSWY9XCIoaW5zdGFuY2V8YWpmR2V0Q29sdW1uQ29udGVudDppZHgpIGFzIGNjXCIgW2luc3RhbmNlXT1cImNjIVwiPlxuICAgIDwvYWpmLXdpZGdldD5cbiAgPC9uZy1jb250YWluZXI+XG4gPC9kaXY+XG48L2Rpdj5cbiIsIjxhICpuZ0lmPVwiaW5zdGFuY2VcIiBjbGFzcz1cImFqZi1kaWFsb2ctdG9nZ2xlXCIgKGNsaWNrKT1cIm9wZW5EaWFsb2coKVwiPlxuICA8YWpmLXdpZGdldCBbaW5zdGFuY2VdPVwiaW5zdGFuY2UudG9nZ2xlXCI+PC9hamYtd2lkZ2V0PlxuPC9hPlxuPG5nLXRlbXBsYXRlICNkaWFsb2dDb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5zdGFuY2VcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGluc3RhbmNlLmNvbnRlbnRcIj5cbiAgICAgIDxhamYtd2lkZ2V0IFtpbnN0YW5jZV09XCJpdGVtXCI+PC9hamYtd2lkZ2V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0XCIgKm5nSWY9XCJpbnN0YW5jZSAmJiBwYWdlcyA+IDBcIj5cbiAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC10aXRsZS1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LXRpdGxlXCI+e3sgaW5zdGFuY2Uud2lkZ2V0LnRpdGxlIH19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1zcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LXBhZ2luYXRvclwiPlxuICAgICAgPGEgKGNsaWNrKT1cImdvVG9QYWdlKCdwcmV2aW91cycpXCIgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtYnRuIGFqZi1wYWdpbmF0ZWQtbGlzdC1iYWNrLWJ0blwiXG4gICAgICAgICAgW2NsYXNzLmFqZi1wYWdpbmF0ZWQtbGlzdC1idG4tZGlzYWJsZWRdPVwiY2FuR29CYWNrd2FyZCA9PT0gZmFsc2VcIj48L2E+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC1saXN0LXBhZ2luYXRvci1wYWdlXCI+e3sgY3VycmVudFBhZ2UgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtcGFnaW5hdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC1wYWdpbmF0b3ItcGFnZXNcIj57eyBwYWdlcyB9fTwvZGl2PlxuICAgICAgPGEgKGNsaWNrKT1cImdvVG9QYWdlKCduZXh0JylcIiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtbGlzdC1idG4gYWpmLXBhZ2luYXRlZC1saXN0LWZvcndhcmQtYnRuXCJcbiAgICAgICAgW2NsYXNzLmFqZi1wYWdpbmF0ZWQtbGlzdC1idG4tZGlzYWJsZWRdPVwiY2FuR29Gb3J3YXJkID09PSBmYWxzZVwiPjwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLWxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1cnJlbnRDb250ZW50XCI+XG4gICAgPGFqZi13aWRnZXQgW2luc3RhbmNlXT1cIml0ZW1cIj48L2FqZi13aWRnZXQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iLCI8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZVwiICpuZ0lmPVwiaW5zdGFuY2VcIj5cbiAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtdGl0bGUtY29udGFpbmVyXCIgKm5nSWY9XCJwYWdlcyA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdlLXNlbGVjdG9yXCI+XG4gICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdlLXNlbGVjdG9yLWxhYmVsXCJcbiAgICAgICAgPnt7J0l0ZW1zIHBlciBwYWdlOid8dHJhbnNsb2NvfX08L21hdC1sYWJlbFxuICAgICAgPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgW3ZhbHVlXT1cInBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICBbdmFsdWVdPVwicGFnZVNpemVPcHRcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwYWdlU2l6ZU9wdCBvZiBwYWdpbmF0b3JDb25maWcucGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhZ2VTaXplT3B0IH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLXNwYWNlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhamYtcGFnaW5hdGVkLXRhYmxlLXBhZ2luYXRvclwiPlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKCdwcmV2aW91cycpXCJcbiAgICAgICAgY2xhc3M9XCJhamYtcGFnaW5hdGVkLXRhYmxlLWJ0biBhamYtcGFnaW5hdGVkLXRhYmxlLWJhY2stYnRuXCJcbiAgICAgICAgW2NsYXNzLmFqZi1wYWdpbmF0ZWQtdGFibGUtYnRuLWRpc2FibGVkXT1cImNhbkdvQmFja3dhcmQgPT09IGZhbHNlXCJcbiAgICAgID48L2E+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdpbmF0b3ItcGFnZVwiPnt7IGN1cnJlbnRQYWdlIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdpbmF0b3Itc2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLXBhZ2luYXRlZC10YWJsZS1wYWdpbmF0b3ItcGFnZXNcIj57eyBwYWdlcyB9fTwvZGl2PlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKCduZXh0JylcIlxuICAgICAgICBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtYnRuIGFqZi1wYWdpbmF0ZWQtdGFibGUtZm9yd2FyZC1idG5cIlxuICAgICAgICBbY2xhc3MuYWpmLXBhZ2luYXRlZC10YWJsZS1idG4tZGlzYWJsZWRdPVwiY2FuR29Gb3J3YXJkID09PSBmYWxzZVwiXG4gICAgICA+PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFqZi1wYWdpbmF0ZWQtdGFibGUtaXRlbVwiPlxuICAgIDxhamYtd2lkZ2V0LWV4cG9ydFxuICAgICAgKm5nSWY9XCJpbnN0YW5jZVwiXG4gICAgICBbd2lkZ2V0VHlwZV09XCJpbnN0YW5jZS53aWRnZXRUeXBlXCJcbiAgICAgIFtkYXRhXT1cImN1cnJlbnRDb250ZW50XCJcbiAgICAgIFtlbmFibGVdPVwiaW5zdGFuY2UuZXhwb3J0YWJsZVwiXG4gICAgPlxuICAgICAgPGFqZi10YWJsZSBbZGF0YV09XCJjdXJyZW50Q29udGVudFwiIChzb3J0U2VsZWN0ZWQpPVwic29ydFBhZ2luYXRlZERhdGEoJGV2ZW50KVwiPjwvYWpmLXRhYmxlPlxuICAgIDwvYWpmLXdpZGdldC1leHBvcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -27,10 +27,10 @@ import { AjfTime } from './time';
27
27
  import * as i0 from "@angular/core";
28
28
  export class AjfTimeModule {
29
29
  }
30
- AjfTimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
- AjfTimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTimeModule, declarations: [AjfTime], imports: [FormsModule, MatFormFieldModule, MatInputModule], exports: [AjfTime] });
32
- AjfTimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTimeModule, imports: [[FormsModule, MatFormFieldModule, MatInputModule]] });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTimeModule, decorators: [{
30
+ AjfTimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
+ AjfTimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AjfTimeModule, declarations: [AjfTime], imports: [FormsModule, MatFormFieldModule, MatInputModule], exports: [AjfTime] });
32
+ AjfTimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfTimeModule, imports: [FormsModule, MatFormFieldModule, MatInputModule] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfTimeModule, decorators: [{
34
34
  type: NgModule,
35
35
  args: [{
36
36
  imports: [FormsModule, MatFormFieldModule, MatInputModule],
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
38
38
  exports: [AjfTime],
39
39
  }]
40
40
  }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC90aW1lL3NyYy90aW1lLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQzs7QUFPL0IsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFIVCxPQUFPLGFBRFosV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsYUFFL0MsT0FBTzsyR0FFTixhQUFhLFlBSmYsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDOzJGQUkvQyxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLENBQUM7b0JBQzFELFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7QWpmVGltZX0gZnJvbSAnLi90aW1lJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQWpmVGltZV0sXG4gIGV4cG9ydHM6IFtBamZUaW1lXSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmVGltZU1vZHVsZSB7fVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC90aW1lL3NyYy90aW1lLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQzs7QUFPL0IsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFIVCxPQUFPLGFBRFosV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsYUFFL0MsT0FBTzsyR0FFTixhQUFhLFlBSmQsV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWM7MkZBSTlDLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQztvQkFDMUQsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHtBamZUaW1lfSBmcm9tICcuL3RpbWUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBamZUaW1lXSxcbiAgZXhwb3J0czogW0FqZlRpbWVdLFxufSlcbmV4cG9ydCBjbGFzcyBBamZUaW1lTW9kdWxlIHt9XG4iXX0=
@@ -23,9 +23,9 @@ import { AjfTime as Base } from '@ajf/core/time';
23
23
  import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation, } from '@angular/core';
24
24
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
25
25
  import * as i0 from "@angular/core";
26
- import * as i1 from "@angular/material/form-field";
27
- import * as i2 from "@angular/material/input";
28
- import * as i3 from "@angular/forms";
26
+ import * as i1 from "@angular/forms";
27
+ import * as i2 from "@angular/material/form-field";
28
+ import * as i3 from "@angular/material/input";
29
29
  export const AJF_TIME_CONTROL_VALUE_ACCESSOR = {
30
30
  provide: NG_VALUE_ACCESSOR,
31
31
  useExisting: forwardRef(() => AjfTime),
@@ -36,10 +36,10 @@ export class AjfTime extends Base {
36
36
  super();
37
37
  }
38
38
  }
39
- AjfTime.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTime, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- AjfTime.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: AjfTime, selector: "ajf-time", providers: [AJF_TIME_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<div>\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"23\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"hours\"\n type=\"number\">\n </mat-form-field>\n :\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"59\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"minutes\"\n type=\"number\">\n </mat-form-field>\n</div>\n", styles: ["ajf-time .mat-form-field{width:1.5em;text-align:center}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: AjfTime, decorators: [{
39
+ AjfTime.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfTime, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ AjfTime.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AjfTime, selector: "ajf-time", providers: [AJF_TIME_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<div>\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"23\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"hours\"\n type=\"number\">\n </mat-form-field>\n :\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"59\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"minutes\"\n type=\"number\">\n </mat-form-field>\n</div>\n", styles: ["ajf-time .mat-mdc-form-field{width:1.5em;text-align:center}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AjfTime, decorators: [{
42
42
  type: Component,
43
- args: [{ selector: 'ajf-time', providers: [AJF_TIME_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"23\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"hours\"\n type=\"number\">\n </mat-form-field>\n :\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"59\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"minutes\"\n type=\"number\">\n </mat-form-field>\n</div>\n", styles: ["ajf-time .mat-form-field{width:1.5em;text-align:center}\n"] }]
43
+ args: [{ selector: 'ajf-time', providers: [AJF_TIME_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"23\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"hours\"\n type=\"number\">\n </mat-form-field>\n :\n <mat-form-field>\n <input\n matInput\n min=\"0\"\n max=\"59\"\n (focus)=\"focusHandler()\"\n [(ngModel)]=\"minutes\"\n type=\"number\">\n </mat-form-field>\n</div>\n", styles: ["ajf-time .mat-mdc-form-field{width:1.5em;text-align:center}\n"] }]
44
44
  }], ctorParameters: function () { return []; } });
45
45
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL3RpbWUvc3JjL3RpbWUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC90aW1lL3NyYy90aW1lLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFVRixNQUFNLE9BQU8sT0FBUSxTQUFRLElBQUk7SUFDL0I7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7O29HQUhVLE9BQU87d0ZBQVAsT0FBTyxtQ0FKUCxDQUFDLCtCQUErQixDQUFDLGlEQzFDOUMsOGFBcUJBOzJGRHlCYSxPQUFPO2tCQVJuQixTQUFTOytCQUNFLFVBQVUsYUFHVCxDQUFDLCtCQUErQixDQUFDLGlCQUM3QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge0FqZlRpbWUgYXMgQmFzZX0gZnJvbSAnQGFqZi9jb3JlL3RpbWUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgT25EZXN0cm95LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgQUpGX1RJTUVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWpmVGltZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWpmLXRpbWUnLFxuICB0ZW1wbGF0ZVVybDogJ3RpbWUuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd0aW1lLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQUpGX1RJTUVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBamZUaW1lIGV4dGVuZHMgQmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIG1pbj1cIjBcIlxuICAgICAgICBtYXg9XCIyM1wiXG4gICAgICAgIChmb2N1cyk9XCJmb2N1c0hhbmRsZXIoKVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaG91cnNcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDpcbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAoZm9jdXMpPVwiZm9jdXNIYW5kbGVyKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1pbnV0ZXNcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==