@design-factory/design-factory 17.0.1 → 17.1.0

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 (89) hide show
  1. package/README.md +2 -1
  2. package/design-factory-initial-branding.css +1 -1
  3. package/design-factory.css +1 -1
  4. package/esm2022/lib/angular/accessibility/accessibility.module.mjs +4 -4
  5. package/esm2022/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.mjs +3 -3
  6. package/esm2022/lib/angular/accessibility/directives/skip-link.directive.mjs +3 -3
  7. package/esm2022/lib/angular/alert/alert.module.mjs +4 -4
  8. package/esm2022/lib/angular/card/card-advanced.module.mjs +4 -4
  9. package/esm2022/lib/angular/card/manage-card-selection.directive.mjs +3 -3
  10. package/esm2022/lib/angular/datepicker/closedatepicker.directive.mjs +3 -3
  11. package/esm2022/lib/angular/datepicker/datepicker-keyboard-nav.service.mjs +3 -3
  12. package/esm2022/lib/angular/datepicker/datepicker-range.directive.mjs +3 -3
  13. package/esm2022/lib/angular/datepicker/datepicker-range.service.mjs +3 -3
  14. package/esm2022/lib/angular/datepicker/datepicker.module.mjs +4 -4
  15. package/esm2022/lib/angular/df.module.mjs +4 -4
  16. package/esm2022/lib/angular/footer/footer.module.mjs +4 -4
  17. package/esm2022/lib/angular/icon/amadeus-icon.mjs +3 -3
  18. package/esm2022/lib/angular/icon/icon.module.mjs +4 -4
  19. package/esm2022/lib/angular/icon/insert/insert-icon.directive.mjs +3 -3
  20. package/esm2022/lib/angular/icon/insert/insert-icon.module.mjs +4 -4
  21. package/esm2022/lib/angular/inputs/click/trigger-click.directive.mjs +3 -3
  22. package/esm2022/lib/angular/inputs/icon/inputicon.directive.mjs +3 -3
  23. package/esm2022/lib/angular/inputs/input-advanced.module.mjs +4 -4
  24. package/esm2022/lib/angular/mediaqueries/ifMedia.directive.mjs +3 -3
  25. package/esm2022/lib/angular/mediaqueries/media.module.mjs +4 -4
  26. package/esm2022/lib/angular/mediaqueries/media.service.mjs +3 -3
  27. package/esm2022/lib/angular/mediaqueries/mediaUtils.service.mjs +9 -9
  28. package/esm2022/lib/angular/modal/modal.service.mjs +3 -3
  29. package/esm2022/lib/angular/popover/config/popover.config.mjs +3 -3
  30. package/esm2022/lib/angular/popover/popover.module.mjs +4 -4
  31. package/esm2022/lib/angular/progressbar/progressbar.component.mjs +3 -3
  32. package/esm2022/lib/angular/progressbar/progressbar.module.mjs +4 -4
  33. package/esm2022/lib/angular/progressindicator/default/default-spinner.component.mjs +3 -3
  34. package/esm2022/lib/angular/progressindicator/progressindicator-backdrop.component.mjs +3 -3
  35. package/esm2022/lib/angular/progressindicator/progressindicator-container.component.mjs +3 -3
  36. package/esm2022/lib/angular/progressindicator/progressindicator.directive.mjs +3 -3
  37. package/esm2022/lib/angular/progressindicator/progressindicator.module.mjs +4 -4
  38. package/esm2022/lib/angular/progressindicator/progressindicator.service.mjs +3 -3
  39. package/esm2022/lib/angular/right-to-left/directionDetection.service.mjs +3 -3
  40. package/esm2022/lib/angular/selects/events/manage-badge-events.directive.mjs +3 -3
  41. package/esm2022/lib/angular/selects/nav/manage-nav-select.directive.mjs +3 -3
  42. package/esm2022/lib/angular/selects/option-highlight.directive.mjs +3 -3
  43. package/esm2022/lib/angular/selects/select.module.mjs +4 -4
  44. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.mjs +3 -3
  45. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.module.mjs +4 -4
  46. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.service.mjs +3 -3
  47. package/esm2022/lib/angular/sidenav/dfSideNavCollapseConfig.mjs +3 -3
  48. package/esm2022/lib/angular/sidenav/excludeTrap.directive.mjs +3 -3
  49. package/esm2022/lib/angular/sidenav/manage-sidenav.directive.mjs +3 -3
  50. package/esm2022/lib/angular/sidenav/sidenav-config.mjs +3 -3
  51. package/esm2022/lib/angular/sidenav/sidenav.component.mjs +12 -12
  52. package/esm2022/lib/angular/sidenav/sidenav.module.mjs +4 -4
  53. package/esm2022/lib/angular/sidenav/sidenav.service.mjs +10 -9
  54. package/esm2022/lib/angular/sidenav/sidenavlist.component.mjs +3 -3
  55. package/esm2022/lib/angular/slider/direction/sliderdirection.directive.mjs +3 -3
  56. package/esm2022/lib/angular/slider/lib/slider-element.directive.mjs +3 -3
  57. package/esm2022/lib/angular/slider/lib/slider-handle.directive.mjs +3 -3
  58. package/esm2022/lib/angular/slider/lib/slider-label.directive.mjs +3 -3
  59. package/esm2022/lib/angular/slider/lib/slider.component.mjs +3 -3
  60. package/esm2022/lib/angular/slider/lib/tooltip-wrapper.component.mjs +3 -3
  61. package/esm2022/lib/angular/slider/slider.module.mjs +4 -4
  62. package/esm2022/lib/angular/stepper/stepper.component.mjs +6 -6
  63. package/esm2022/lib/angular/stepper/stepper.directive.mjs +6 -6
  64. package/esm2022/lib/angular/stepper/stepper.module.mjs +4 -4
  65. package/esm2022/lib/angular/stepper/stepper.service.mjs +3 -3
  66. package/esm2022/lib/angular/toast/toast.module.mjs +4 -4
  67. package/esm2022/lib/angular/tooltip/tooltip.module.mjs +4 -4
  68. package/esm2022/lib/angular/tooltip/truncate/tooltipTruncate.directive.mjs +3 -3
  69. package/esm2022/lib/angular/utils/scrollbar.service.mjs +3 -3
  70. package/esm2022/lib/angular/utils/titleTruncate.directive.mjs +3 -3
  71. package/esm2022/lib/index.mjs +2 -1
  72. package/fesm2022/design-factory.mjs +249 -248
  73. package/fesm2022/design-factory.mjs.map +1 -1
  74. package/lib/angular/sidenav/sidenav.service.d.ts +1 -0
  75. package/lib/index.d.ts +1 -0
  76. package/package.json +6 -9
  77. package/styles/scss/_variables.scss +1 -0
  78. package/styles/scss/bootstrap/_mixins-override.scss +0 -26
  79. package/styles/scss/bootstrap/_variables-dark.scss +86 -0
  80. package/styles/scss/bootstrap/_variables.scss +10 -3
  81. package/styles/scss/components/brand-color/_brand-color_container.scss +1 -6
  82. package/styles/scss/components/datepicker/_datepicker.variables.scss +1 -1
  83. package/styles/scss/components/fonts/_fonts.root.scss +2 -1
  84. package/styles/scss/components/fonts/_fonts.scss +20 -1
  85. package/styles/scss/components/fonts/_fonts.variables.scss +2 -0
  86. package/styles/scss/components/select/_select.scss +16 -12
  87. package/styles/scss/components/tabs/_tabs.scss +32 -18
  88. package/styles/scss/components/tabs/_tabs.variables.scss +1 -0
  89. package/styles/scss/themes/brand2023/_variables.scss +0 -2
@@ -4,11 +4,11 @@ import { NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';
4
4
  import * as i0 from "@angular/core";
5
5
  export { DfProgressbarComponent } from './progressbar.component';
6
6
  export class DfProgressbarModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: DfProgressbarModule, imports: [DfProgressbarComponent], exports: [DfProgressbarComponent, NgbProgressbarModule] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressbarModule, imports: [NgbProgressbarModule] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DfProgressbarModule, imports: [DfProgressbarComponent], exports: [DfProgressbarComponent, NgbProgressbarModule] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressbarModule, imports: [NgbProgressbarModule] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressbarModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressbarModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  imports: [DfProgressbarComponent],
@@ -7,10 +7,10 @@ export class DfDefaultSpinnerComponent {
7
7
  this.isGlobalSpinner = false;
8
8
  this.contentClass = 'spinner-border text-primary';
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfDefaultSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: DfDefaultSpinnerComponent, isStandalone: true, selector: "df-default-spinner", inputs: { isGlobalSpinner: "isGlobalSpinner", contentClass: "contentClass", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div [ngClass]=\"contentClass\" [attr.role]=\"isGlobalSpinner ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfDefaultSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: DfDefaultSpinnerComponent, isStandalone: true, selector: "df-default-spinner", inputs: { isGlobalSpinner: "isGlobalSpinner", contentClass: "contentClass", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div [ngClass]=\"contentClass\" [attr.role]=\"isGlobalSpinner ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfDefaultSpinnerComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfDefaultSpinnerComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'df-default-spinner', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div [ngClass]=\"contentClass\" [attr.role]=\"isGlobalSpinner ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n" }]
16
16
  }], propDecorators: { isGlobalSpinner: [{
@@ -7,10 +7,10 @@ export class DfProgressIndicatorBackdropComponent {
7
7
  get classes() {
8
8
  return `df-progressindicator-backdrop ${this.backdropClass || ''} ${this.isGlobalBackdrop ? 'df-progressindicator-backdrop-global' : 'df-progressindicator-backdrop-contextual'}`;
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: DfProgressIndicatorBackdropComponent, isStandalone: true, selector: "df-progressindicator-backdrop", inputs: { backdropClass: "backdropClass", isGlobalBackdrop: "isGlobalBackdrop" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: DfProgressIndicatorBackdropComponent, isStandalone: true, selector: "df-progressindicator-backdrop", inputs: { backdropClass: "backdropClass", isGlobalBackdrop: "isGlobalBackdrop" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorBackdropComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorBackdropComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{
16
16
  selector: 'df-progressindicator-backdrop',
@@ -25,12 +25,12 @@ export class DfProgressIndicatorContainerComponent {
25
25
  get position() {
26
26
  return this._position;
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: DfProgressIndicatorContainerComponent, isStandalone: true, selector: "df-progressindicator-container", inputs: { containerClass: "containerClass", position: "position" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: `
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: DfProgressIndicatorContainerComponent, isStandalone: true, selector: "df-progressindicator-container", inputs: { containerClass: "containerClass", position: "position" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: `
30
30
  <ng-content></ng-content>
31
31
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorContainerComponent, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorContainerComponent, decorators: [{
34
34
  type: Component,
35
35
  args: [{
36
36
  selector: 'df-progressindicator-container',
@@ -22,10 +22,10 @@ export class DfProgressIndicatorDirective {
22
22
  }
23
23
  }
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorDirective, deps: [{ token: i0.ElementRef }, { token: i1.DfProgressIndicatorService }], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfProgressIndicatorDirective, isStandalone: true, selector: "[dfProgressIndicator]", inputs: { dfProgressIndicator: "dfProgressIndicator", dfProgressIndicatorConfig: "dfProgressIndicatorConfig" }, usesOnChanges: true, ngImport: i0 }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorDirective, deps: [{ token: i0.ElementRef }, { token: i1.DfProgressIndicatorService }], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfProgressIndicatorDirective, isStandalone: true, selector: "[dfProgressIndicator]", inputs: { dfProgressIndicator: "dfProgressIndicator", dfProgressIndicatorConfig: "dfProgressIndicatorConfig" }, usesOnChanges: true, ngImport: i0 }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorDirective, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  selector: '[dfProgressIndicator]',
@@ -10,8 +10,8 @@ export { DfDefaultSpinnerComponent } from './default/default-spinner.component';
10
10
  export { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';
11
11
  export { DfProgressIndicatorDirective } from './progressindicator.directive';
12
12
  export class DfProgressIndicatorModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorModule, imports: [DfDefaultSpinnerComponent,
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorModule, imports: [DfDefaultSpinnerComponent,
15
15
  DfProgressbarModule,
16
16
  DfProgressIndicatorBackdropComponent,
17
17
  DfProgressIndicatorContainerComponent,
@@ -20,10 +20,10 @@ export class DfProgressIndicatorModule {
20
20
  DfProgressIndicatorDirective,
21
21
  DfProgressIndicatorBackdropComponent,
22
22
  DfDefaultSpinnerComponent] }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorModule, imports: [DfDefaultSpinnerComponent,
23
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorModule, imports: [DfDefaultSpinnerComponent,
24
24
  DfProgressbarModule, DfProgressbarModule] }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorModule, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorModule, decorators: [{
27
27
  type: NgModule,
28
28
  args: [{
29
29
  imports: [
@@ -155,10 +155,10 @@ export class DfProgressIndicatorService {
155
155
  });
156
156
  }
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorService, deps: [{ token: DOCUMENT }, { token: i0.RendererFactory2 }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.ScrollBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
159
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorService, providedIn: 'root' }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorService, deps: [{ token: DOCUMENT }, { token: i0.RendererFactory2 }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.ScrollBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorService, providedIn: 'root' }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfProgressIndicatorService, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfProgressIndicatorService, decorators: [{
162
162
  type: Injectable,
163
163
  args: [{
164
164
  providedIn: 'root'
@@ -20,10 +20,10 @@ export class DfDirectionDetectionService {
20
20
  }
21
21
  return RightToLeftDirectionEnum.LeftToRight;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfDirectionDetectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfDirectionDetectionService, providedIn: 'root' }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfDirectionDetectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfDirectionDetectionService, providedIn: 'root' }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfDirectionDetectionService, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfDirectionDetectionService, decorators: [{
27
27
  type: Injectable,
28
28
  args: [{
29
29
  providedIn: 'root'
@@ -35,10 +35,10 @@ export class DfManageBadgeEventsDirective {
35
35
  this.dfManageBadgeEventsSelect[0](this.dfManageBadgeEventsSelect[1]);
36
36
  event.stopPropagation();
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageBadgeEventsDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfManageBadgeEventsDirective, isStandalone: true, selector: "[dfManageBadgeEventsSelect]", inputs: { dfManageBadgeEventsSelect: "dfManageBadgeEventsSelect" }, host: { listeners: { "keydown.Backspace": "handleKeyDownBackspace($event)", "click": "handleClick($event)", "keydown.Enter": "handleKeyDownEnter($event)", "keydown.Delete": "handleKeyDownDelete($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, ngImport: i0 }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageBadgeEventsDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfManageBadgeEventsDirective, isStandalone: true, selector: "[dfManageBadgeEventsSelect]", inputs: { dfManageBadgeEventsSelect: "dfManageBadgeEventsSelect" }, host: { listeners: { "keydown.Backspace": "handleKeyDownBackspace($event)", "click": "handleClick($event)", "keydown.Enter": "handleKeyDownEnter($event)", "keydown.Delete": "handleKeyDownDelete($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, ngImport: i0 }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageBadgeEventsDirective, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageBadgeEventsDirective, decorators: [{
42
42
  type: Directive,
43
43
  args: [{
44
44
  selector: '[dfManageBadgeEventsSelect]',
@@ -84,10 +84,10 @@ export class DfManageNavSelectDirective {
84
84
  (listBadge[currentPos - 1] || document.activeElement).focus();
85
85
  }
86
86
  }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageNavSelectDirective, deps: [{ token: i1.NgSelectComponent, host: true }, { token: i0.ElementRef }, { token: i2.DfDirectionDetectionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
88
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfManageNavSelectDirective, isStandalone: true, selector: "[dfManageNavSelect]", host: { listeners: { "keydown.arrowLeft": "handleKeyDown($event)", "keydown.Backspace": "handleKeyDownBackspace($event)", "keydown.arrowRight": "handleKeyDownRight($event)" } }, ngImport: i0 }); }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageNavSelectDirective, deps: [{ token: i1.NgSelectComponent, host: true }, { token: i0.ElementRef }, { token: i2.DfDirectionDetectionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
88
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfManageNavSelectDirective, isStandalone: true, selector: "[dfManageNavSelect]", host: { listeners: { "keydown.arrowLeft": "handleKeyDown($event)", "keydown.Backspace": "handleKeyDownBackspace($event)", "keydown.arrowRight": "handleKeyDownRight($event)" } }, ngImport: i0 }); }
89
89
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageNavSelectDirective, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageNavSelectDirective, decorators: [{
91
91
  type: Directive,
92
92
  args: [{
93
93
  selector: '[dfManageNavSelect]',
@@ -43,10 +43,10 @@ export class DfOptionHighlightDirective {
43
43
  isDefined(value) {
44
44
  return value !== undefined && value !== null;
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfOptionHighlightDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfOptionHighlightDirective, isStandalone: true, selector: "[dfOptionHighlight]", inputs: { term: ["dfOptionHighlight", "term"] }, usesOnChanges: true, ngImport: i0 }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfOptionHighlightDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfOptionHighlightDirective, isStandalone: true, selector: "[dfOptionHighlight]", inputs: { term: ["dfOptionHighlight", "term"] }, usesOnChanges: true, ngImport: i0 }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfOptionHighlightDirective, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfOptionHighlightDirective, decorators: [{
50
50
  type: Directive,
51
51
  args: [{
52
52
  selector: '[dfOptionHighlight]',
@@ -8,11 +8,11 @@ export { DfManageNavSelectDirective } from './nav/manage-nav-select.directive';
8
8
  export { DfManageBadgeEventsDirective } from './events/manage-badge-events.directive';
9
9
  export { DfOptionHighlightDirective } from './option-highlight.directive';
10
10
  export class DfSelectModule {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: DfSelectModule, imports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective], exports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective, NgSelectModule] }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSelectModule, imports: [NgSelectModule] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DfSelectModule, imports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective], exports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective, NgSelectModule] }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSelectModule, imports: [NgSelectModule] }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSelectModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSelectModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  imports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective],
@@ -73,10 +73,10 @@ export class DfSideNavCollapseDirective {
73
73
  }
74
74
  });
75
75
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseDirective, deps: [{ token: i0.ElementRef }, { token: i1.DfSideNavCollapseService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
77
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfSideNavCollapseDirective, isStandalone: true, selector: "[dfSideNavCollapse]", inputs: { collapsed: ["dfSideNavCollapse", "collapsed"], minimized: "minimized" }, outputs: { dfSideNavCollapseChange: "dfSideNavCollapseChange", shown: "shown", hidden: "hidden" }, exportAs: ["dfSideNavCollapse"], usesOnChanges: true, ngImport: i0 }); }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseDirective, deps: [{ token: i0.ElementRef }, { token: i1.DfSideNavCollapseService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
77
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfSideNavCollapseDirective, isStandalone: true, selector: "[dfSideNavCollapse]", inputs: { collapsed: ["dfSideNavCollapse", "collapsed"], minimized: "minimized" }, outputs: { dfSideNavCollapseChange: "dfSideNavCollapseChange", shown: "shown", hidden: "hidden" }, exportAs: ["dfSideNavCollapse"], usesOnChanges: true, ngImport: i0 }); }
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseDirective, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseDirective, decorators: [{
80
80
  type: Directive,
81
81
  args: [{ selector: '[dfSideNavCollapse]', exportAs: 'dfSideNavCollapse', standalone: true }]
82
82
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DfSideNavCollapseService }, { type: i0.NgZone }], propDecorators: { collapsed: [{
@@ -4,11 +4,11 @@ import * as i0 from "@angular/core";
4
4
  export { DfSideNavCollapseDirective } from './dfSideNavCollapse';
5
5
  export { DfSideNavCollapseConfig } from './dfSideNavCollapseConfig';
6
6
  export class DfSideNavCollapseModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseModule, imports: [DfSideNavCollapseDirective], exports: [DfSideNavCollapseDirective] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseModule }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseModule, imports: [DfSideNavCollapseDirective], exports: [DfSideNavCollapseDirective] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseModule }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  imports: [DfSideNavCollapseDirective],
@@ -25,10 +25,10 @@ export class DfSideNavCollapseService {
25
25
  setAnimation(on) {
26
26
  this._sideNavAnimation$.next(on);
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseService, deps: [{ token: i1.DfSideNavCollapseConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseService, providedIn: 'root' }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseService, deps: [{ token: i1.DfSideNavCollapseConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseService, providedIn: 'root' }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseService, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseService, decorators: [{
32
32
  type: Injectable,
33
33
  args: [{
34
34
  providedIn: 'root'
@@ -17,10 +17,10 @@ export class DfSideNavCollapseConfig {
17
17
  set animation(animation) {
18
18
  this._animation = animation;
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseConfig, deps: [{ token: i1.NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseConfig, providedIn: 'root' }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseConfig, deps: [{ token: i1.NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseConfig, providedIn: 'root' }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavCollapseConfig, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavCollapseConfig, decorators: [{
24
24
  type: Injectable,
25
25
  args: [{ providedIn: 'root' }]
26
26
  }], ctorParameters: () => [{ type: i1.NgbConfig }] });
@@ -38,10 +38,10 @@ export class DfExcludeTrapDirective {
38
38
  this.subscriptionInput.unsubscribe();
39
39
  }
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfExcludeTrapDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
42
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfExcludeTrapDirective, isStandalone: true, selector: "[dfExcludeTrap]", inputs: { dfExcludeTrapSelector: "dfExcludeTrapSelector", dfExcludeTrap: "dfExcludeTrap" }, ngImport: i0 }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfExcludeTrapDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfExcludeTrapDirective, isStandalone: true, selector: "[dfExcludeTrap]", inputs: { dfExcludeTrapSelector: "dfExcludeTrapSelector", dfExcludeTrap: "dfExcludeTrap" }, ngImport: i0 }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfExcludeTrapDirective, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfExcludeTrapDirective, decorators: [{
45
45
  type: Directive,
46
46
  args: [{
47
47
  selector: '[dfExcludeTrap]',
@@ -13,10 +13,10 @@ export class DfManageSideNavDirective {
13
13
  this.renderer.removeClass(this.element.nativeElement, 'df-sidenav-list-withactivated');
14
14
  }
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageSideNavDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
17
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfManageSideNavDirective, isStandalone: true, selector: "[dfManageSideNav]", ngImport: i0 }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageSideNavDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfManageSideNavDirective, isStandalone: true, selector: "[dfManageSideNav]", ngImport: i0 }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfManageSideNavDirective, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfManageSideNavDirective, decorators: [{
20
20
  type: Directive,
21
21
  args: [{
22
22
  selector: '[dfManageSideNav]',
@@ -15,10 +15,10 @@ export class DfSideNavConfig {
15
15
  this.isAppOverlay = false;
16
16
  this.isAppOverlayMode = true;
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavConfig, providedIn: 'root' }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavConfig, providedIn: 'root' }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavConfig, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavConfig, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{ providedIn: 'root' }]
24
24
  }] });
@@ -9,10 +9,10 @@ export class DfSideNavHeaderDirective {
9
9
  constructor(templateRef) {
10
10
  this.templateRef = templateRef;
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavHeaderDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfSideNavHeaderDirective, isStandalone: true, selector: "ng-template[dfSideNavHeader]", ngImport: i0 }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavHeaderDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfSideNavHeaderDirective, isStandalone: true, selector: "ng-template[dfSideNavHeader]", ngImport: i0 }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavHeaderDirective, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavHeaderDirective, decorators: [{
16
16
  type: Directive,
17
17
  args: [{ selector: 'ng-template[dfSideNavHeader]', standalone: true }]
18
18
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
@@ -20,10 +20,10 @@ export class DfSideNavIconDirective {
20
20
  constructor(templateRef) {
21
21
  this.templateRef = templateRef;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavIconDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfSideNavIconDirective, isStandalone: true, selector: "ng-template[dfSideNavIcon]", ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavIconDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfSideNavIconDirective, isStandalone: true, selector: "ng-template[dfSideNavIcon]", ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavIconDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavIconDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{ selector: 'ng-template[dfSideNavIcon]', standalone: true }]
29
29
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
@@ -31,10 +31,10 @@ export class DfSideNavItemDirective {
31
31
  constructor(templateRef) {
32
32
  this.templateRef = templateRef;
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: DfSideNavItemDirective, isStandalone: true, selector: "ng-template[dfSideNavItem]", ngImport: i0 }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: DfSideNavItemDirective, isStandalone: true, selector: "ng-template[dfSideNavItem]", ngImport: i0 }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavItemDirective, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavItemDirective, decorators: [{
38
38
  type: Directive,
39
39
  args: [{ selector: 'ng-template[dfSideNavItem]', standalone: true }]
40
40
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
@@ -61,10 +61,10 @@ export class DfSideNavComponent {
61
61
  this.subscription.unsubscribe();
62
62
  this.sideNavService.removeSideBar();
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: DfSideNavComponent, isStandalone: true, selector: "df-sidenav", host: { properties: { "class.df-sidenav-menu-overlay": "this.overlayClass", "class": "this.elements" } }, queries: [{ propertyName: "tplHeader", first: true, predicate: DfSideNavHeaderDirective, descendants: true }, { propertyName: "tplIcon", first: true, predicate: DfSideNavIconDirective, descendants: true }, { propertyName: "tplItem", first: true, predicate: DfSideNavItemDirective, descendants: true }], ngImport: i0, template: "@if (tplHeader) {\n <ng-template [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n}\n<df-sidenavlist\n [items]=\"(sideNavService.sideNavItems$ | async) ?? []\"\n [tplIcon]=\"tplIcon\"\n [tplItem]=\"tplItem\"\n></df-sidenavlist>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }] }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: DfSideNavComponent, isStandalone: true, selector: "df-sidenav", host: { properties: { "class.df-sidenav-menu-overlay": "this.overlayClass", "class": "this.elements" } }, queries: [{ propertyName: "tplHeader", first: true, predicate: DfSideNavHeaderDirective, descendants: true }, { propertyName: "tplIcon", first: true, predicate: DfSideNavIconDirective, descendants: true }, { propertyName: "tplItem", first: true, predicate: DfSideNavItemDirective, descendants: true }], ngImport: i0, template: "@if (tplHeader) {\n <ng-template [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n}\n<df-sidenavlist\n [items]=\"(sideNavService.sideNavItems$ | async) ?? []\"\n [tplIcon]=\"tplIcon\"\n [tplItem]=\"tplItem\"\n></df-sidenavlist>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }] }); }
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'df-sidenav', standalone: true, imports: [CommonModule, DfSideNavListComponent], template: "@if (tplHeader) {\n <ng-template [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n}\n<df-sidenavlist\n [items]=\"(sideNavService.sideNavItems$ | async) ?? []\"\n [tplIcon]=\"tplIcon\"\n [tplItem]=\"tplItem\"\n></df-sidenavlist>\n" }]
70
70
  }], ctorParameters: () => [], propDecorators: { tplHeader: [{
@@ -9,8 +9,8 @@ export { DfSideNavComponent, DfSideNavHeaderDirective, DfSideNavIconDirective, D
9
9
  export { DfManageSideNavDirective } from './manage-sidenav.directive';
10
10
  export { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';
11
11
  export class DfSideNavModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavModule, imports: [DfManageSideNavDirective,
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavModule, imports: [DfManageSideNavDirective,
14
14
  DfSideNavComponent,
15
15
  DfSideNavHeaderDirective,
16
16
  DfExcludeTrapDirective,
@@ -23,10 +23,10 @@ export class DfSideNavModule {
23
23
  DfSideNavItemDirective,
24
24
  DfSideNavCollapseModule,
25
25
  DfMediaModule] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavModule, imports: [DfSideNavComponent, DfSideNavCollapseModule,
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavModule, imports: [DfSideNavComponent, DfSideNavCollapseModule,
27
27
  DfMediaModule] }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavModule, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavModule, decorators: [{
30
30
  type: NgModule,
31
31
  args: [{
32
32
  imports: [
@@ -21,6 +21,7 @@ export var DfNavItemType;
21
21
  */
22
22
  export class DfSideNavService {
23
23
  constructor(config) {
24
+ this.config = config;
24
25
  this.type = DfNavItemType;
25
26
  this._items = [];
26
27
  this.subscription = new Subscription();
@@ -58,7 +59,7 @@ export class DfSideNavService {
58
59
  *
59
60
  */
60
61
  inactiveItems(list) {
61
- list.forEach(item => {
62
+ list.forEach((item) => {
62
63
  item.isActive = false;
63
64
  if (item.subMenus) {
64
65
  this.inactiveItems(item.subMenus);
@@ -199,7 +200,7 @@ export class DfSideNavService {
199
200
  }
200
201
  // internal usage from the SideNav. Call when component is destroy
201
202
  removeSideBar() {
202
- this._isCollapsed$.next(false);
203
+ this._isCollapsed$.next(this.config.isCollapsed);
203
204
  this._isPresent$.next(false);
204
205
  }
205
206
  /**
@@ -248,7 +249,7 @@ export class DfSideNavService {
248
249
  * @param itemsList
249
250
  */
250
251
  collapseAll(itemsList) {
251
- itemsList.forEach(item => {
252
+ itemsList.forEach((item) => {
252
253
  if (item.subMenus) {
253
254
  item.isCollapsed = true;
254
255
  this.collapseAll(item.subMenus);
@@ -262,7 +263,7 @@ export class DfSideNavService {
262
263
  // To avoid more than one active state visible
263
264
  setActiveItem(items, foundAnActive = false) {
264
265
  let foundActive = foundAnActive;
265
- items.forEach(item => {
266
+ items.forEach((item) => {
266
267
  if (item.isActive && foundAnActive) {
267
268
  throw Error('DfSideNavService must be init with only one isActive item');
268
269
  }
@@ -277,7 +278,7 @@ export class DfSideNavService {
277
278
  return foundActive;
278
279
  }
279
280
  addNavItemType(withRouter, items = this._items) {
280
- items.forEach(item => {
281
+ items.forEach((item) => {
281
282
  if (!item.type) {
282
283
  if (item.subMenus) {
283
284
  item.type = DfNavItemType.subMenus;
@@ -303,13 +304,13 @@ export class DfSideNavService {
303
304
  updateOverLay() {
304
305
  this._isAppOverlay$.next(this.isAppOverlayMode && this._isCollapsed$.value === false);
305
306
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavService, deps: [{ token: i1.DfSideNavConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
307
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavService, providedIn: 'root' }); }
307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavService, deps: [{ token: i1.DfSideNavConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
308
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavService, providedIn: 'root' }); }
308
309
  }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DfSideNavService, decorators: [{
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DfSideNavService, decorators: [{
310
311
  type: Injectable,
311
312
  args: [{
312
313
  providedIn: 'root'
313
314
  }]
314
315
  }], ctorParameters: () => [{ type: i1.DfSideNavConfig }] });
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFlakUsTUFBTSxDQUFOLElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUN2Qix5REFBUSxDQUFBO0lBQ1IsaUVBQVksQ0FBQTtJQUNaLDZEQUFVLENBQUE7SUFDVixpREFBSSxDQUFBO0lBQ0osaUVBQVksQ0FBQTtJQUNaLDJEQUFTLENBQUE7SUFDVCx5REFBUSxDQUFBO0lBQ1IsbURBQUssQ0FBQTtBQUNQLENBQUMsRUFUVyxhQUFhLEtBQWIsYUFBYSxRQVN4QjtBQUVEOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUFZLE1BQXVCO1FBWjVCLFNBQUksR0FBRyxhQUFhLENBQUM7UUFTcEIsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFDcEIsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsaUJBQWlC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QUU7b0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztpQkFDeEM7cUJBQU0sSUFBSSxVQUFVLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO2lCQUN4QzthQUNGO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztJQUN4RixDQUFDOzhHQTdUVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGZTaWRlTmF2Q29uZmlnIH0gZnJvbSAnLi9zaWRlbmF2LWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGZTaWRlTmF2SXRlbSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgaXNFeHRlcm5hbD86IGJvb2xlYW47XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNDb2xsYXBzZWQ/OiBib29sZWFuO1xuICBicmVha3BvaW50cz86IHN0cmluZ1tdO1xuICBzdWJNZW51cz86IERmU2lkZU5hdkl0ZW1bXTtcbiAgdHlwZT86IERmTmF2SXRlbVR5cGU7XG59XG5cbmV4cG9ydCBlbnVtIERmTmF2SXRlbVR5cGUge1xuICBzdWJNZW51cyxcbiAgYWN0aW9uQnV0dG9uLFxuICByb3V0ZXJMaW5rLFxuICBsaW5rLFxuICBleHRlcm5hbExpbmssXG4gIHNlcGFyYXRvcixcbiAgdGVtcGxhdGUsXG4gIHRpdGxlXG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIGZvciBtYW5hZ2luZyB0aGUgc2lkZW5hdiBwYW5lbC5cbiAqIFRoaXMgc2VydmljZSBpcyBpbmNsdWRlZCBhdCByb290IGxldmVsXG4gKlxuICogQ3JlYXRpbmcgYSBzaWRlbmF2IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdXNlIFtEZlNpZGVOYXZDb21wb25lbnRdKCMvY29tcG9uZW50cy9zaWRlbmF2L2FwaSNEZlNpZGVOYXZDb21wb25lbnQpIGNvbXBvbmVudFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHR5cGUgPSBEZk5hdkl0ZW1UeXBlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaWRlTmF2SXRlbXMkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc01pbm1pemVkJDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNDb2xsYXBzZWQkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ByZXNlbnQkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVJdGVtJDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNJbk1lbnVPdmVybGF5JDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBcHBPdmVybGF5JDtcbiAgcHJpdmF0ZSBfaXNBcHBPdmVybGF5TW9kZTtcbiAgcHJpdmF0ZSBfaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRGZTaWRlTmF2Q29uZmlnKSB7XG4gICAgdGhpcy5fc2lkZU5hdkl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGZTaWRlTmF2SXRlbVtdPihbXSk7XG4gICAgdGhpcy5faXNNaW5taXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc01pbm1pemVkKTtcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc0NvbGxhcHNlZCk7XG4gICAgdGhpcy5faXNQcmVzZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzUHJlc2VudCk7XG4gICAgdGhpcy5faXNJbk1lbnVPdmVybGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzSW5NZW51T3ZlcmxheSk7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzQXBwT3ZlcmxheSk7XG4gICAgdGhpcy5fYWN0aXZlSXRlbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERmU2lkZU5hdkl0ZW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLl9pc0FwcE92ZXJsYXlNb2RlID0gY29uZmlnLmlzQXBwT3ZlcmxheU1vZGU7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5faXNDb2xsYXBzZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlT3ZlckxheSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbml0IHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzaWRlbmF2XG4gICAqXG4gICAqXG4gICAqIFNlY29uZCBvcHRpb24gd2l0aFJvdXRlciBpcyB0byBiZSBzZXQgdG8gZmFsc2UgaWYgeW91IGFyZSBub3QgcGFzc2luZyBsaW5rIHN0cmluZyBmb3IgdGhlIGFuZ3VsYXIgUm91dGVyXG4gICAqIEhlcmUgd2UgYXJlIG5vdCBkZWVwIGNvcHlpbmcgdGhlIGFycmF5IC0tPiB0aGUgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgaXRcbiAgICovXG4gIGluaXRJdGVtcyhpdGVtczogRGZTaWRlTmF2SXRlbVtdLCB3aXRoUm91dGVyID0gdHJ1ZSkge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5hZGROYXZJdGVtVHlwZSh3aXRoUm91dGVyKTtcbiAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5faXRlbXMpO1xuICAgIHRoaXMuZGlzcGF0Y2hTaWRlTmF2SXRlbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbmFjdGl2YXRlIHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzaWRlbmF2XG4gICAqIGlzQWN0aXZlIHByb3BlcnRpZXMgb2YgYWxsIGl0ZW1zIHdpbGwgYmUgc2V0IHRvIGZhbHNlIHJlY3Vyc2l2ZWx5XG4gICAqXG4gICAqL1xuICBpbmFjdGl2ZUl0ZW1zKGxpc3Q6IERmU2lkZU5hdkl0ZW1bXSkge1xuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0uaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIHRoaXMuaW5hY3RpdmVJdGVtcyhpdGVtLnN1Yk1lbnVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoU2lkZU5hdkl0ZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWN0aXZlIHRoZSBpdGVtIHBhc3MgYXMgaW5wdXRcbiAgICogVGhpcyBmdW5jdGlvbiBpbmFjdGl2YXRlIGFsbCB0aGUgb3RoZXIgaXRlbXMgb2YgdGhlIHNlcnZpY2VcbiAgICogSXQgd2lsbCB0aGVuIGRpc3BhdGNoIHRoZSBsaXN0IG9mIGl0ZW1zIG9mIHRoZSBzaWRlTmF2IHRvIGFjdGl2ZUl0ZW0kXG4gICAqXG4gICAqL1xuICBhY3RpdmVJdGVtKGl0ZW06IERmU2lkZU5hdkl0ZW0pIHtcbiAgICB0aGlzLmluYWN0aXZlSXRlbXModGhpcy5faXRlbXMpO1xuICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0kLm5leHQoaXRlbSk7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHdoZW4gdG8gcHV0L3JlbW92ZSB0aGUgb3ZlcmxheS5cbiAgICogYFRydWVgIGluIGNhc2Ugb2Ygb3ZlcmxheSBuZWVkZWRcbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlbmF2IGlzIGluIGFuIG92ZXJsYXkgcGFuZWwgb3Igbm90XG4gICAqIGBUcnVlYCBpbiBjYXNlIG9mIG92ZXJsYXkgcGFuZWxcbiAgICpcbiAgICovXG4gIGdldCBpc0luTWVudU92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luTWVudU92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBjdXJyZW50IGFjdGl2ZUl0ZW0gYSB1c2VyIGNsaWNrZWQgb25cbiAgICpcbiAgICovXG4gIGdldCBhY3RpdmVJdGVtJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlTmF2IGlzIHByZXNlbnQgaW4gdGhlIHBhZ2VcbiAgICogU2lkZU5hdiBtYXkgYmUgY29sbGFwc2VkIGhlcmUgb3Igbm90XG4gICAqXG4gICAqL1xuICBnZXQgaXNQcmVzZW50JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNQcmVzZW50JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdXR1cmUgT3B0aW9uc1xuICAgKi9cbiAgZ2V0IGlzTWluaW1pemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNNaW5taXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIHRvIGtub3cgaWYgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkIG9yIG5vdFxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkXG4gICAqXG4gICAqL1xuICBnZXQgaXNDb2xsYXBzZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIG9mIHRoZSBTaWRlTmF2IEl0ZW1zIGFmdGVyIHRoZXkgaGF2ZSBiZWVucyBjaGFuZ2VkXG4gICAqXG4gICAqL1xuICBnZXQgc2lkZU5hdkl0ZW1zJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlTmF2SXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBtb2RlIEFwcGx5IGZvciB0aGUgU2lkZU5hdlxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgY2FuIGJlIGluIG92ZXJsYXkgKGJ1dCBub3QgbmVjZXNzYXJ5IGlzKS5cbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXlNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXlNb2RlO1xuICB9XG5cbiAgLy8gaW5pdEl0ZW1zIG11c3QgYmUgdXNlZCB0byBwdXNoIG5ldyBpdGVtcyB0byB0aGUgc2VydmljZVxuICBnZXQgaXRlbXMoKTogRGZTaWRlTmF2SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gdG9nZ2xlIGEgU2lkZU5hdiBJdGVtIChlaXRoZXIgZnJvbSBleHBhbmQgdG8gY29sbGFwc2Ugb3IgdGhlIG90aGVyIHdheSBhcm91bmQpLlxuICAgKiBpc0NvbGxhcHNlZCBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGl0ZW0gaXMgY2hhbmdlZC5cbiAgICogQWxsIGl0ZW1zIGFyZSBwdXNoIGFnYWluIHRvIHRoZSBzdHJlYW0gb2YgaXRlbXMuXG4gICAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBTaWRlTmF2IGluIGNhc2Ugb2YgY2xpY2sgYW5kIEVudGVyIG9uIGFuIEl0ZW0gd2l0aCBzdWJNZW51c1xuICAgKi9cbiAgdG9nZ2xlKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSkge1xuICAgIGl0ZW1JbnB1dC5pc0NvbGxhcHNlZCA9ICFpdGVtSW5wdXQuaXNDb2xsYXBzZWQ7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKiBAcGFyYW0gaXRlbUlucHV0IFxuICAgKi9cbiAgY29sbGFwc2VJdGVtKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSkge1xuICAgIHRoaXMuY29sbGFwc2UoaXRlbUlucHV0LCB0aGlzLl9pdGVtcyk7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGNvbGxhcHNlQWxsIGl0ZW1zXG4gICAqL1xuICBjb2xsYXBzZUFsbEl0ZW1zKCkge1xuICAgIHRoaXMuY29sbGFwc2VBbGwodGhpcy5faXRlbXMpO1xuICAgIHRoaXMuZGlzcGF0Y2hTaWRlTmF2SXRlbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQvdW5zZXQgdGhlIFNpZGVOYXYgaW4gYW4gT3ZlcmxheSBNZW51XG4gICAqIElmIGlucHV0IGlzIGBUcnVlYCB0aGVuIHRoZSBTaWRlTmF2IHdpbGwgYmUgaW4gYW4gT3ZlcmxheSBNZW51XG4gICAqICh3aGVuIG5vdCBjb2xsYXBzZWQpXG4gICAqXG4gICAqL1xuICBzZXRJbk1lbnVTaWRlTmF2KG9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNJbk1lbnVPdmVybGF5JC5uZXh0KG9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBjb2xsYXBzZSB0aGUgU2lkZU5hdlxuICAgKlxuICAgKi9cbiAgaGlkZVNpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gbWFrZSB0aGUgU2lkZU5hdiB2aXNpYmxlICh1bmNvbGxhcHNlKVxuICAgKlxuICAgKi9cbiAgc2hvd1NpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHRvZ2dsZSB0aGUgU2lkZU5hdiBzdGF0dXMgY29sbGFwc2UvdmlzaWJsZVxuICAgKlxuICAgKi9cbiAgdG9nZ2xlU2lkZU5hdigpIHtcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCQubmV4dCghdGhpcy5faXNDb2xsYXBzZWQkLnZhbHVlKTtcbiAgfVxuXG4gIC8vIGludGVybmFsIHVzYWdlIGZyb20gdGhlIFNpZGVOYXYuIENhbGwgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveVxuICByZW1vdmVTaWRlQmFyKCkge1xuICAgIHRoaXMuX2lzQ29sbGFwc2VkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLl9pc1ByZXNlbnQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHNldCB0aGUgQXBwIE92ZXJsYXkgTW9kZVxuICAgKiBJbnB1dCBgVHJ1ZWAgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBBcHBPdmVybGF5XG4gICAqIEFuIGV2ZW50IGlzIHNlbmQgdG8gaXNBcHBPdmVybGF5JCBkZXBlbmRpbmcgb24geW91ciBzdGF0dXNcbiAgICogaWYgSW5wdXQgPSBgVHJ1ZWAgYW5kIGlzQ29sbGFwc2VkID0gYEZhbHNlYCB0aGVuIGlzQXBwT3ZlcmxheSRcbiAgICogd2lsbCBiZSBgVHJ1ZWBcbiAgICpcbiAgICovXG4gIHNldEFwcE92ZXJsYXlNb2RlKG9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5TW9kZSA9IG9uO1xuICAgIHRoaXMudXBkYXRlT3ZlckxheSgpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgdXNhZ2UgdG8gdGhlIHNpZGVuYXYgY29tcG9uZW50XG4gIC8vIERvIG5vdCB1c2VcbiAgc2V0U2lkZU5hdigpIHtcbiAgICB0aGlzLl9pc1ByZXNlbnQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSBpdGVtSW5wdXQgXG4gICAqIEBwYXJhbSBpdGVtc0xpc3QgXG4gICAqL1xuICBwcml2YXRlIGNvbGxhcHNlKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSwgaXRlbXNMaXN0OiBEZlNpZGVOYXZJdGVtW10pIDogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zTGlzdCkge1xuICAgICAgaWYgKGl0ZW0gPT09IGl0ZW1JbnB1dCAmJiBpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBpdGVtSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgY29uc3QgbmVlZGNvbCA9IHRoaXMuY29sbGFwc2UoaXRlbUlucHV0LCBpdGVtLnN1Yk1lbnVzKTtcbiAgICAgICAgaWYgKG5lZWRjb2wpIHtcbiAgICAgICAgICBpdGVtLmlzQ29sbGFwc2VkID0gdHJ1ZTsgLy8gY29sbGFwc2UgaXRcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcbiAgICogQHBhcmFtIGl0ZW1zTGlzdCBcbiAgICovXG4gIHByaXZhdGUgY29sbGFwc2VBbGwoaXRlbXNMaXN0OiBEZlNpZGVOYXZJdGVtW10pIHtcbiAgICBpdGVtc0xpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlQWxsKGl0ZW0uc3ViTWVudXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gT25seSBvbmUgaXRlbSBhdCB0aGUgdGltZSBtdXN0IGJlIGFjdGl2ZVxuICAvLyBBY3RpdmUgZmxhZyBpbiBpdGVtIGlzIG9ubHkgdmFsaWQgZm9yIGFjdGlvbiBidXR0b24gYW5kIGxpbmtcbiAgLy8gUm91dGVyIGxpbmsgZG9lcyBub3QgdXNlIHRoaXMgYWN0aXZlIGZsYWcgdG8gd29ya1xuICAvLyBJdCBpcyB1cCB0byB5b3UgdG8gaW5hY3RpdmF0ZUl0ZW1zIHdoZW4gbmVlZGVkIHdoZW4geW91IG1peCBhY3Rpb25CdXR0b24gYW5kIHJvdXRlciBsaW5rXG4gIC8vIFRvIGF2b2lkIG1vcmUgdGhhbiBvbmUgYWN0aXZlIHN0YXRlIHZpc2libGVcbiAgcHJpdmF0ZSBzZXRBY3RpdmVJdGVtKGl0ZW1zIDogRGZTaWRlTmF2SXRlbVtdLCBmb3VuZEFuQWN0aXZlID0gZmFsc2UpIDogYm9vbGVhbiB7XG4gICAgbGV0IGZvdW5kQWN0aXZlID0gZm91bmRBbkFjdGl2ZTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUgJiYgZm91bmRBbkFjdGl2ZSkge1xuICAgICAgICAgIHRocm93IEVycm9yKCdEZlNpZGVOYXZTZXJ2aWNlIG11c3QgYmUgaW5pdCB3aXRoIG9ubHkgb25lIGlzQWN0aXZlIGl0ZW0nKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0kLm5leHQoaXRlbSk7XG4gICAgICAgICAgZm91bmRBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgZm91bmRBY3RpdmUgPSB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbS5zdWJNZW51cywgZm91bmRBY3RpdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3VuZEFjdGl2ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTmF2SXRlbVR5cGUod2l0aFJvdXRlcjogYm9vbGVhbiwgaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSA9IHRoaXMuX2l0ZW1zKSB7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS50eXBlKSB7XG4gICAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgICAgaXRlbS50eXBlID0gRGZOYXZJdGVtVHlwZS5zdWJNZW51cztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICBpdGVtLnR5cGUgPSBEZk5hdkl0ZW1UeXBlLmV4dGVybmFsTGluaztcbiAgICAgICAgfSBlbHNlIGlmICh3aXRoUm91dGVyKSB7XG4gICAgICAgICAgaXRlbS50eXBlID0gRGZOYXZJdGVtVHlwZS5yb3V0ZXJMaW5rO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0udHlwZSA9IERmTmF2SXRlbVR5cGUuYWN0aW9uQnV0dG9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5zdWJNZW51cykge1xuICAgICAgICB0aGlzLmFkZE5hdkl0ZW1UeXBlKHdpdGhSb3V0ZXIsIGl0ZW0uc3ViTWVudXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFNpZGVOYXZJdGVtcygpIHtcbiAgICB0aGlzLl9zaWRlTmF2SXRlbXMkLm5leHQodGhpcy5faXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPdmVyTGF5KCkge1xuICAgIHRoaXMuX2lzQXBwT3ZlcmxheSQubmV4dCh0aGlzLmlzQXBwT3ZlcmxheU1vZGUgJiYgdGhpcy5faXNDb2xsYXBzZWQkLnZhbHVlID09PSBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFlakUsTUFBTSxDQUFOLElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUN2Qix5REFBUSxDQUFBO0lBQ1IsaUVBQVksQ0FBQTtJQUNaLDZEQUFVLENBQUE7SUFDVixpREFBSSxDQUFBO0lBQ0osaUVBQVksQ0FBQTtJQUNaLDJEQUFTLENBQUE7SUFDVCx5REFBUSxDQUFBO0lBQ1IsbURBQUssQ0FBQTtBQUNQLENBQUMsRUFUVyxhQUFhLEtBQWIsYUFBYSxRQVN4QjtBQUVEOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUE2QixNQUF1QjtRQUF2QixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQVo3QyxTQUFJLEdBQUcsYUFBYSxDQUFDO1FBU3BCLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHL0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUF1QixJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxLQUFzQixFQUFFLFVBQVUsR0FBRyxJQUFJO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsSUFBcUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxJQUFtQjtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsMERBQTBEO0lBQzFELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBd0I7UUFDN0IsU0FBUyxDQUFDLFdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxTQUF3QjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBVztRQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLGFBQWE7UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsaUJBQWlCLENBQUMsRUFBVztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLGFBQWE7SUFDYixVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxRQUFRLENBQUMsU0FBd0IsRUFBRSxTQUEwQjtRQUNuRSxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUM1QixJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLENBQUMsNEJBQTRCO2FBQzFDO2lCQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxjQUFjO29CQUN2QyxPQUFPLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtpQkFDMUM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVyxDQUFDLFNBQTBCO1FBQzVDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJDQUEyQztJQUMzQywrREFBK0Q7SUFDL0Qsb0RBQW9EO0lBQ3BELDJGQUEyRjtJQUMzRiw4Q0FBOEM7SUFDdEMsYUFBYSxDQUFDLEtBQXNCLEVBQUUsYUFBYSxHQUFHLEtBQUs7UUFDakUsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksYUFBYSxFQUFFO2dCQUNsQyxNQUFNLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2FBQzFFO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEI7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxjQUFjLENBQUMsVUFBbUIsRUFBRSxRQUF5QixJQUFJLENBQUMsTUFBTTtRQUM5RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7aUJBQ3BDO3FCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO2lCQUN4QztxQkFBTSxJQUFJLFVBQVUsRUFBRTtvQkFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO2lCQUN0QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7aUJBQ3hDO2FBQ0Y7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3hGLENBQUM7OEdBN1RVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZlNpZGVOYXZDb25maWcgfSBmcm9tICcuL3NpZGVuYXYtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBEZlNpZGVOYXZJdGVtIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBpc0V4dGVybmFsPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBpc0NvbGxhcHNlZD86IGJvb2xlYW47XG4gIGJyZWFrcG9pbnRzPzogc3RyaW5nW107XG4gIHN1Yk1lbnVzPzogRGZTaWRlTmF2SXRlbVtdO1xuICB0eXBlPzogRGZOYXZJdGVtVHlwZTtcbn1cblxuZXhwb3J0IGVudW0gRGZOYXZJdGVtVHlwZSB7XG4gIHN1Yk1lbnVzLFxuICBhY3Rpb25CdXR0b24sXG4gIHJvdXRlckxpbmssXG4gIGxpbmssXG4gIGV4dGVybmFsTGluayxcbiAgc2VwYXJhdG9yLFxuICB0ZW1wbGF0ZSxcbiAgdGl0bGVcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgZm9yIG1hbmFnaW5nIHRoZSBzaWRlbmF2IHBhbmVsLlxuICogVGhpcyBzZXJ2aWNlIGlzIGluY2x1ZGVkIGF0IHJvb3QgbGV2ZWxcbiAqXG4gKiBDcmVhdGluZyBhIHNpZGVuYXYgaXMgc3RyYWlnaHRmb3J3YXJkOiB1c2UgW0RmU2lkZU5hdkNvbXBvbmVudF0oIy9jb21wb25lbnRzL3NpZGVuYXYvYXBpI0RmU2lkZU5hdkNvbXBvbmVudCkgY29tcG9uZW50XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERmU2lkZU5hdlNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgdHlwZSA9IERmTmF2SXRlbVR5cGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpZGVOYXZJdGVtcyQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTWlubWl6ZWQkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbGxhcHNlZCQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzUHJlc2VudCQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZUl0ZW0kO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0luTWVudU92ZXJsYXkkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0FwcE92ZXJsYXkkO1xuICBwcml2YXRlIF9pc0FwcE92ZXJsYXlNb2RlO1xuICBwcml2YXRlIF9pdGVtczogRGZTaWRlTmF2SXRlbVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb25maWc6IERmU2lkZU5hdkNvbmZpZykge1xuICAgIHRoaXMuX3NpZGVOYXZJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERmU2lkZU5hdkl0ZW1bXT4oW10pO1xuICAgIHRoaXMuX2lzTWlubWl6ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihjb25maWcuaXNNaW5taXplZCk7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihjb25maWcuaXNDb2xsYXBzZWQpO1xuICAgIHRoaXMuX2lzUHJlc2VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc1ByZXNlbnQpO1xuICAgIHRoaXMuX2lzSW5NZW51T3ZlcmxheSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc0luTWVudU92ZXJsYXkpO1xuICAgIHRoaXMuX2lzQXBwT3ZlcmxheSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc0FwcE92ZXJsYXkpO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEZlNpZGVOYXZJdGVtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5TW9kZSA9IGNvbmZpZy5pc0FwcE92ZXJsYXlNb2RlO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuX2lzQ29sbGFwc2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU92ZXJMYXkoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5pdCB0aGUgbGlzdCBvZiBFbGVtZW50cyBmcm9tIHlvdXIgc2lkZW5hdlxuICAgKlxuICAgKlxuICAgKiBTZWNvbmQgb3B0aW9uIHdpdGhSb3V0ZXIgaXMgdG8gYmUgc2V0IHRvIGZhbHNlIGlmIHlvdSBhcmUgbm90IHBhc3NpbmcgbGluayBzdHJpbmcgZm9yIHRoZSBhbmd1bGFyIFJvdXRlclxuICAgKiBIZXJlIHdlIGFyZSBub3QgZGVlcCBjb3B5aW5nIHRoZSBhcnJheSAtLT4gdGhlIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGl0XG4gICAqL1xuICBpbml0SXRlbXMoaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSwgd2l0aFJvdXRlciA9IHRydWUpIHtcbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xuICAgIHRoaXMuYWRkTmF2SXRlbVR5cGUod2l0aFJvdXRlcik7XG4gICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuX2l0ZW1zKTtcbiAgICB0aGlzLmRpc3BhdGNoU2lkZU5hdkl0ZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5hY3RpdmF0ZSB0aGUgbGlzdCBvZiBFbGVtZW50cyBmcm9tIHlvdXIgc2lkZW5hdlxuICAgKiBpc0FjdGl2ZSBwcm9wZXJ0aWVzIG9mIGFsbCBpdGVtcyB3aWxsIGJlIHNldCB0byBmYWxzZSByZWN1cnNpdmVseVxuICAgKlxuICAgKi9cbiAgaW5hY3RpdmVJdGVtcyhsaXN0OiBEZlNpZGVOYXZJdGVtW10pIHtcbiAgICBsaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIHRoaXMuaW5hY3RpdmVJdGVtcyhpdGVtLnN1Yk1lbnVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoU2lkZU5hdkl0ZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWN0aXZlIHRoZSBpdGVtIHBhc3MgYXMgaW5wdXRcbiAgICogVGhpcyBmdW5jdGlvbiBpbmFjdGl2YXRlIGFsbCB0aGUgb3RoZXIgaXRlbXMgb2YgdGhlIHNlcnZpY2VcbiAgICogSXQgd2lsbCB0aGVuIGRpc3BhdGNoIHRoZSBsaXN0IG9mIGl0ZW1zIG9mIHRoZSBzaWRlTmF2IHRvIGFjdGl2ZUl0ZW0kXG4gICAqXG4gICAqL1xuICBhY3RpdmVJdGVtKGl0ZW06IERmU2lkZU5hdkl0ZW0pIHtcbiAgICB0aGlzLmluYWN0aXZlSXRlbXModGhpcy5faXRlbXMpO1xuICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0kLm5leHQoaXRlbSk7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHdoZW4gdG8gcHV0L3JlbW92ZSB0aGUgb3ZlcmxheS5cbiAgICogYFRydWVgIGluIGNhc2Ugb2Ygb3ZlcmxheSBuZWVkZWRcbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlbmF2IGlzIGluIGFuIG92ZXJsYXkgcGFuZWwgb3Igbm90XG4gICAqIGBUcnVlYCBpbiBjYXNlIG9mIG92ZXJsYXkgcGFuZWxcbiAgICpcbiAgICovXG4gIGdldCBpc0luTWVudU92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luTWVudU92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBjdXJyZW50IGFjdGl2ZUl0ZW0gYSB1c2VyIGNsaWNrZWQgb25cbiAgICpcbiAgICovXG4gIGdldCBhY3RpdmVJdGVtJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlTmF2IGlzIHByZXNlbnQgaW4gdGhlIHBhZ2VcbiAgICogU2lkZU5hdiBtYXkgYmUgY29sbGFwc2VkIGhlcmUgb3Igbm90XG4gICAqXG4gICAqL1xuICBnZXQgaXNQcmVzZW50JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNQcmVzZW50JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdXR1cmUgT3B0aW9uc1xuICAgKi9cbiAgZ2V0IGlzTWluaW1pemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNNaW5taXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIHRvIGtub3cgaWYgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkIG9yIG5vdFxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkXG4gICAqXG4gICAqL1xuICBnZXQgaXNDb2xsYXBzZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIG9mIHRoZSBTaWRlTmF2IEl0ZW1zIGFmdGVyIHRoZXkgaGF2ZSBiZWVucyBjaGFuZ2VkXG4gICAqXG4gICAqL1xuICBnZXQgc2lkZU5hdkl0ZW1zJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlTmF2SXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBtb2RlIEFwcGx5IGZvciB0aGUgU2lkZU5hdlxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgY2FuIGJlIGluIG92ZXJsYXkgKGJ1dCBub3QgbmVjZXNzYXJ5IGlzKS5cbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXlNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXlNb2RlO1xuICB9XG5cbiAgLy8gaW5pdEl0ZW1zIG11c3QgYmUgdXNlZCB0byBwdXNoIG5ldyBpdGVtcyB0byB0aGUgc2VydmljZVxuICBnZXQgaXRlbXMoKTogRGZTaWRlTmF2SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gdG9nZ2xlIGEgU2lkZU5hdiBJdGVtIChlaXRoZXIgZnJvbSBleHBhbmQgdG8gY29sbGFwc2Ugb3IgdGhlIG90aGVyIHdheSBhcm91bmQpLlxuICAgKiBpc0NvbGxhcHNlZCBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGl0ZW0gaXMgY2hhbmdlZC5cbiAgICogQWxsIGl0ZW1zIGFyZSBwdXNoIGFnYWluIHRvIHRoZSBzdHJlYW0gb2YgaXRlbXMuXG4gICAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBTaWRlTmF2IGluIGNhc2Ugb2YgY2xpY2sgYW5kIEVudGVyIG9uIGFuIEl0ZW0gd2l0aCBzdWJNZW51c1xuICAgKi9cbiAgdG9nZ2xlKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSkge1xuICAgIGl0ZW1JbnB1dC5pc0NvbGxhcHNlZCA9ICFpdGVtSW5wdXQuaXNDb2xsYXBzZWQ7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtSW5wdXRcbiAgICovXG4gIGNvbGxhcHNlSXRlbShpdGVtSW5wdXQ6IERmU2lkZU5hdkl0ZW0pIHtcbiAgICB0aGlzLmNvbGxhcHNlKGl0ZW1JbnB1dCwgdGhpcy5faXRlbXMpO1xuICAgIHRoaXMuZGlzcGF0Y2hTaWRlTmF2SXRlbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBjb2xsYXBzZUFsbCBpdGVtc1xuICAgKi9cbiAgY29sbGFwc2VBbGxJdGVtcygpIHtcbiAgICB0aGlzLmNvbGxhcHNlQWxsKHRoaXMuX2l0ZW1zKTtcbiAgICB0aGlzLmRpc3BhdGNoU2lkZU5hdkl0ZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gc2V0L3Vuc2V0IHRoZSBTaWRlTmF2IGluIGFuIE92ZXJsYXkgTWVudVxuICAgKiBJZiBpbnB1dCBpcyBgVHJ1ZWAgdGhlbiB0aGUgU2lkZU5hdiB3aWxsIGJlIGluIGFuIE92ZXJsYXkgTWVudVxuICAgKiAod2hlbiBub3QgY29sbGFwc2VkKVxuICAgKlxuICAgKi9cbiAgc2V0SW5NZW51U2lkZU5hdihvbjogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzSW5NZW51T3ZlcmxheSQubmV4dChvbik7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gY29sbGFwc2UgdGhlIFNpZGVOYXZcbiAgICpcbiAgICovXG4gIGhpZGVTaWRlTmF2KCkge1xuICAgIHRoaXMuX2lzQ29sbGFwc2VkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIG1ha2UgdGhlIFNpZGVOYXYgdmlzaWJsZSAodW5jb2xsYXBzZSlcbiAgICpcbiAgICovXG4gIHNob3dTaWRlTmF2KCkge1xuICAgIHRoaXMuX2lzQ29sbGFwc2VkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byB0b2dnbGUgdGhlIFNpZGVOYXYgc3RhdHVzIGNvbGxhcHNlL3Zpc2libGVcbiAgICpcbiAgICovXG4gIHRvZ2dsZVNpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkLm5leHQoIXRoaXMuX2lzQ29sbGFwc2VkJC52YWx1ZSk7XG4gIH1cblxuICAvLyBpbnRlcm5hbCB1c2FnZSBmcm9tIHRoZSBTaWRlTmF2LiBDYWxsIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3lcbiAgcmVtb3ZlU2lkZUJhcigpIHtcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCQubmV4dCh0aGlzLmNvbmZpZy5pc0NvbGxhcHNlZCk7XG4gICAgdGhpcy5faXNQcmVzZW50JC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIEFwcCBPdmVybGF5IE1vZGVcbiAgICogSW5wdXQgYFRydWVgIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgQXBwT3ZlcmxheVxuICAgKiBBbiBldmVudCBpcyBzZW5kIHRvIGlzQXBwT3ZlcmxheSQgZGVwZW5kaW5nIG9uIHlvdXIgc3RhdHVzXG4gICAqIGlmIElucHV0ID0gYFRydWVgIGFuZCBpc0NvbGxhcHNlZCA9IGBGYWxzZWAgdGhlbiBpc0FwcE92ZXJsYXkkXG4gICAqIHdpbGwgYmUgYFRydWVgXG4gICAqXG4gICAqL1xuICBzZXRBcHBPdmVybGF5TW9kZShvbjogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzQXBwT3ZlcmxheU1vZGUgPSBvbjtcbiAgICB0aGlzLnVwZGF0ZU92ZXJMYXkoKTtcbiAgfVxuXG4gIC8vIEludGVybmFsIHVzYWdlIHRvIHRoZSBzaWRlbmF2IGNvbXBvbmVudFxuICAvLyBEbyBub3QgdXNlXG4gIHNldFNpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNQcmVzZW50JC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtSW5wdXRcbiAgICogQHBhcmFtIGl0ZW1zTGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBjb2xsYXBzZShpdGVtSW5wdXQ6IERmU2lkZU5hdkl0ZW0sIGl0ZW1zTGlzdDogRGZTaWRlTmF2SXRlbVtdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zTGlzdCkge1xuICAgICAgaWYgKGl0ZW0gPT09IGl0ZW1JbnB1dCAmJiBpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBpdGVtSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgY29uc3QgbmVlZGNvbCA9IHRoaXMuY29sbGFwc2UoaXRlbUlucHV0LCBpdGVtLnN1Yk1lbnVzKTtcbiAgICAgICAgaWYgKG5lZWRjb2wpIHtcbiAgICAgICAgICBpdGVtLmlzQ29sbGFwc2VkID0gdHJ1ZTsgLy8gY29sbGFwc2UgaXRcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXNMaXN0XG4gICAqL1xuICBwcml2YXRlIGNvbGxhcHNlQWxsKGl0ZW1zTGlzdDogRGZTaWRlTmF2SXRlbVtdKSB7XG4gICAgaXRlbXNMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlQWxsKGl0ZW0uc3ViTWVudXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gT25seSBvbmUgaXRlbSBhdCB0aGUgdGltZSBtdXN0IGJlIGFjdGl2ZVxuICAvLyBBY3RpdmUgZmxhZyBpbiBpdGVtIGlzIG9ubHkgdmFsaWQgZm9yIGFjdGlvbiBidXR0b24gYW5kIGxpbmtcbiAgLy8gUm91dGVyIGxpbmsgZG9lcyBub3QgdXNlIHRoaXMgYWN0aXZlIGZsYWcgdG8gd29ya1xuICAvLyBJdCBpcyB1cCB0byB5b3UgdG8gaW5hY3RpdmF0ZUl0ZW1zIHdoZW4gbmVlZGVkIHdoZW4geW91IG1peCBhY3Rpb25CdXR0b24gYW5kIHJvdXRlciBsaW5rXG4gIC8vIFRvIGF2b2lkIG1vcmUgdGhhbiBvbmUgYWN0aXZlIHN0YXRlIHZpc2libGVcbiAgcHJpdmF0ZSBzZXRBY3RpdmVJdGVtKGl0ZW1zOiBEZlNpZGVOYXZJdGVtW10sIGZvdW5kQW5BY3RpdmUgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGxldCBmb3VuZEFjdGl2ZSA9IGZvdW5kQW5BY3RpdmU7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUgJiYgZm91bmRBbkFjdGl2ZSkge1xuICAgICAgICB0aHJvdyBFcnJvcignRGZTaWRlTmF2U2VydmljZSBtdXN0IGJlIGluaXQgd2l0aCBvbmx5IG9uZSBpc0FjdGl2ZSBpdGVtJyk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSQubmV4dChpdGVtKTtcbiAgICAgICAgZm91bmRBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgZm91bmRBY3RpdmUgPSB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbS5zdWJNZW51cywgZm91bmRBY3RpdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3VuZEFjdGl2ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTmF2SXRlbVR5cGUod2l0aFJvdXRlcjogYm9vbGVhbiwgaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSA9IHRoaXMuX2l0ZW1zKSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKCFpdGVtLnR5cGUpIHtcbiAgICAgICAgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgICBpdGVtLnR5cGUgPSBEZk5hdkl0ZW1UeXBlLnN1Yk1lbnVzO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNFeHRlcm5hbCkge1xuICAgICAgICAgIGl0ZW0udHlwZSA9IERmTmF2SXRlbVR5cGUuZXh0ZXJuYWxMaW5rO1xuICAgICAgICB9IGVsc2UgaWYgKHdpdGhSb3V0ZXIpIHtcbiAgICAgICAgICBpdGVtLnR5cGUgPSBEZk5hdkl0ZW1UeXBlLnJvdXRlckxpbms7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS50eXBlID0gRGZOYXZJdGVtVHlwZS5hY3Rpb25CdXR0b247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIHRoaXMuYWRkTmF2SXRlbVR5cGUod2l0aFJvdXRlciwgaXRlbS5zdWJNZW51cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoU2lkZU5hdkl0ZW1zKCkge1xuICAgIHRoaXMuX3NpZGVOYXZJdGVtcyQubmV4dCh0aGlzLl9pdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU92ZXJMYXkoKSB7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5JC5uZXh0KHRoaXMuaXNBcHBPdmVybGF5TW9kZSAmJiB0aGlzLl9pc0NvbGxhcHNlZCQudmFsdWUgPT09IGZhbHNlKTtcbiAgfVxufVxuIl19