@kms-ngx-ui/presentational 14.1.2 → 14.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
42
42
  ],
43
43
  }]
44
44
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBbUJqRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBZnpCLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixhQUFhLGFBRUwsWUFBWSxhQUVwQixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixnQkFBZ0I7UUFDaEIsYUFBYTs4R0FHSixnQkFBZ0IsWUFUakIsWUFBWTsyRkFTWCxnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1vdXNlV2hlZWxEaXJlY3RpdmUgfSBmcm9tICcuL21vdXNld2hlZWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdldE1heEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4vc3VtLW9mLWhlaWdodC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3dpcGVEaXJlY3RpdmUgfSBmcm9tICcuL3N3aXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9zaXplLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFN3aXBlRGlyZWN0aXZlLFxuICAgIE1vdXNlV2hlZWxEaXJlY3RpdmUsXG4gICAgR2V0TWF4SGVpZ2h0RGlyZWN0aXZlLFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgU2l6ZURpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBTd2lwZURpcmVjdGl2ZSxcbiAgICBNb3VzZVdoZWVsRGlyZWN0aXZlLFxuICAgIEdldE1heEhlaWdodERpcmVjdGl2ZSxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFNpemVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZXNNb2R1bGUge1NpemVEaXJlY3RpdmV9XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBbUJqRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBZnpCLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixhQUFhLGFBRUwsWUFBWSxhQUVwQixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixnQkFBZ0I7UUFDaEIsYUFBYTs4R0FHSixnQkFBZ0IsWUFUakIsWUFBWTsyRkFTWCxnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1vdXNlV2hlZWxEaXJlY3RpdmUgfSBmcm9tICcuL21vdXNld2hlZWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdldE1heEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4vc3VtLW9mLWhlaWdodC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3dpcGVEaXJlY3RpdmUgfSBmcm9tICcuL3N3aXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9zaXplLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFN3aXBlRGlyZWN0aXZlLFxuICAgIE1vdXNlV2hlZWxEaXJlY3RpdmUsXG4gICAgR2V0TWF4SGVpZ2h0RGlyZWN0aXZlLFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgU2l6ZURpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBTd2lwZURpcmVjdGl2ZSxcbiAgICBNb3VzZVdoZWVsRGlyZWN0aXZlLFxuICAgIEdldE1heEhlaWdodERpcmVjdGl2ZSxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFNpemVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZXNNb2R1bGUge1xuICBTaXplRGlyZWN0aXZlO1xufVxuIl19
@@ -6,8 +6,8 @@ export class SizeDirective {
6
6
  this.size = '';
7
7
  }
8
8
  ngOnInit() {
9
- this.elementRef.nativeElement.style.width(this.size + 'px');
10
- this.elementRef.nativeElement.style.height(this.size + 'px');
9
+ this.elementRef.nativeElement.style.width = this.size + 'px';
10
+ this.elementRef.nativeElement.style.height = this.size + 'px';
11
11
  }
12
12
  }
13
13
  SizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SizeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
18
18
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { size: [{
19
19
  type: Input
20
20
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZGlyZWN0aXZlcy9zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLGFBQWE7SUFFdEIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQURqQyxTQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ21CLENBQUM7SUFFL0MsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQzs7MEdBUFEsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO2lHQUVwQixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tzaXplXScgfSlcbmV4cG9ydCBjbGFzcyBTaXplRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKSBzaXplOiBzdHJpbmcgPSAnJztcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoKHRoaXMuc2l6ZSArICdweCcpO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQodGhpcy5zaXplICsgJ3B4Jyk7XG4gICAgfVxufSJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZGlyZWN0aXZlcy9zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLGFBQWE7SUFHdEIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUZqQyxTQUFJLEdBQVcsRUFBRSxDQUFDO0lBRW1CLENBQUM7SUFFL0MsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsRSxDQUFDOzswR0FSUSxhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7aUdBRXBCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3NpemVdJyB9KVxuZXhwb3J0IGNsYXNzIFNpemVEaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIHNpemU6IHN0cmluZyA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuc2l6ZSArICdweCc7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuc2l6ZSArICdweCc7XG4gICAgfVxufVxuIl19
@@ -5,6 +5,11 @@ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
5
5
  import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
6
6
  import { Subject } from 'rxjs';
7
7
  import * as i0 from "@angular/core";
8
+ export class WindowDimensions {
9
+ constructor(data) {
10
+ Object.assign(this, data);
11
+ }
12
+ }
8
13
  export class SimpleBreakpoint {
9
14
  constructor(data) {
10
15
  Object.assign(this, data);
@@ -83,13 +88,13 @@ export class ViewportService {
83
88
  }
84
89
  }
85
90
  /**
86
- * Get window height
91
+ * Get document height
87
92
  */
88
93
  getDocumentHeight() {
89
94
  return this.isBrowser ? document.body.clientHeight : 1200;
90
95
  }
91
96
  /**
92
- * Get window width
97
+ * Get document width
93
98
  */
94
99
  getDocumentWidth() {
95
100
  return this.isBrowser ? document.body.clientWidth : 1200;
@@ -130,11 +135,33 @@ export class ViewportService {
130
135
  }
131
136
  /**
132
137
  * Returns the current viewport as number
138
+ * @deprecated use getCurrentViewPortDimensions instead
133
139
  * @returns string
134
140
  */
135
141
  getCurrentViewPortNumber() {
136
142
  return this.isBrowser ? document.body.clientWidth : 1200;
137
143
  }
144
+ /**
145
+ * Returns the current viewport width as number
146
+ * @returns string
147
+ */
148
+ getCurrentViewPortWidth() {
149
+ return this.isBrowser ? document.body.clientWidth : 1200;
150
+ }
151
+ /**
152
+ * Returns the current viewport as number
153
+ * @returns string
154
+ */
155
+ getCurrentViewPortHeight() {
156
+ return this.isBrowser ? document.body.clientHeight : 600;
157
+ }
158
+ /**
159
+ * Returns the current viewport dimensions
160
+ * @returns string
161
+ */
162
+ getCurrentViewPortDimensions() {
163
+ return this.isBrowser ? { Width: document.body.clientWidth, Height: document.body.clientWidth, Orientation: this.getOrientationAsString() } : { Width: 800, Height: 600, Orientation: "landscape" };
164
+ }
138
165
  /**
139
166
  * Provides mq´s as string
140
167
  */
@@ -197,7 +224,7 @@ export class ViewportService {
197
224
  if (this.isBrowser)
198
225
  return window.innerHeight > window.innerWidth;
199
226
  else
200
- return;
227
+ return undefined;
201
228
  }
202
229
  /**
203
230
  * If orientation is landscape
@@ -208,9 +235,15 @@ export class ViewportService {
208
235
  return isLandscape;
209
236
  }
210
237
  else {
211
- return;
238
+ return undefined;
212
239
  }
213
240
  }
241
+ /**
242
+ * Get screen orientation (portrait/landscape)
243
+ */
244
+ getOrientationAsString() {
245
+ return this.isPortrait ? "portrait" : "landscape";
246
+ }
214
247
  /**
215
248
  * If mobile breakpoint (below tablet)
216
249
  */
@@ -222,6 +255,12 @@ export class ViewportService {
222
255
  * @deprecated
223
256
  */
224
257
  calculateFullscreenElementsheight(id, defaultheight, extra) {
258
+ return this.calculateFullscreenElementsHeight(id, defaultheight, extra);
259
+ }
260
+ /**
261
+ * Get height of an element
262
+ */
263
+ calculateFullscreenElementsHeight(id, defaultheight, extra) {
225
264
  if (!this.isBrowser || this.isMobile()) {
226
265
  return defaultheight;
227
266
  }
@@ -237,12 +276,6 @@ export class ViewportService {
237
276
  }
238
277
  }
239
278
  }
240
- /**
241
- * Get height of an element
242
- */
243
- calculateFullscreenElementsHeight(id, defaultheight, extra) {
244
- return this.calculateFullscreenElementsheight(id, defaultheight, extra);
245
- }
246
279
  /**
247
280
  * If viewport changed
248
281
  * @event
@@ -319,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
319
352
  type: Inject,
320
353
  args: [DOCUMENT]
321
354
  }] }]; } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQVksSUFBZ0M7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUlKO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFDbkIsWUFBWSxJQUFnQztRQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBS0o7QUFFRDs7R0FFRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBMkR4QixZQUNpQyxVQUFrQixFQUN0QixRQUFrQjtRQURkLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVEL0Isc0JBQWlCLEdBQXVCO1lBQ3BELEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDakQsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtZQUNsRCxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUs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QUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsVUFBa0I7UUFDbEMsSUFBSSxnQkFBOEMsQ0FBQztRQUVuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyw0SkFBNEo7UUFDcE4sS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDckIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDdkMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0o7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNEdBQTRHO1NBQzVJO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0wsQ0FBQzs7NEdBNVVRLGVBQWUsa0JBNERaLFdBQVcsYUFDWCxRQUFRO2dIQTdEWCxlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQTZERixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgS01TIEdtYkhcbiAqL1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVsbEFibGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCBkb2N1bWVudDogYW55O1xuXG5leHBvcnQgY2xhc3MgU2ltcGxlQnJlYWtwb2ludCB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8U2ltcGxlQnJlYWtwb2ludD4pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG4gICAgTnVtYmVyITogbnVtYmVyO1xuICAgIE5hbWUhOiBzdHJpbmc7XG4gICAgTWF4aW11bVBpeGVscyE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEJyZWFrcG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPFNpbXBsZUJyZWFrcG9pbnQ+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuICAgIE51bWJlciE6IG51bWJlcjtcbiAgICBOYW1lITogc3RyaW5nO1xuICAgIExvdyE6IG51bWJlcjtcbiAgICBIaWdoITogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gZ2V0IHZpZXdwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSBzaW1wbGVCcmVha3BvaW50czogU2ltcGxlQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7IE51bWJlcjogMCwgTmFtZTogJ21vYmlsZScsIE1heGltdW1QaXhlbHM6IDc2OCB9LFxuICAgICAgICB7IE51bWJlcjogMSwgTmFtZTogJ3RhYmxldCcsIE1heGltdW1QaXhlbHM6IDEwMjQgfSxcbiAgICAgICAgeyBOdW1iZXI6IDIsIE5hbWU6ICdkZXNrdG9wJywgTWF4aW11bVBpeGVsczogMTYwMCB9LFxuICAgICAgICB7IE51bWJlcjogMywgTmFtZTogJ2hpZ2gnLCBNYXhpbXVtUGl4ZWxzOiAyNTAwIH0sXG4gICAgXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBicmVha3BvaW50czogQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBOdW1iZXI6IDAsXG4gICAgICAgICAgICBOYW1lOiAneHMnLFxuICAgICAgICAgICAgTG93OiAzNjAsXG4gICAgICAgICAgICBIaWdoOiA5OTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogMSxcbiAgICAgICAgICAgIE5hbWU6ICdzJyxcbiAgICAgICAgICAgIExvdzogOTkxLFxuICAgICAgICAgICAgSGlnaDogMTAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAyLFxuICAgICAgICAgICAgTmFtZTogJ20nLFxuICAgICAgICAgICAgTG93OiAxMDI1LFxuICAgICAgICAgICAgSGlnaDogMTIwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAzLFxuICAgICAgICAgICAgTmFtZTogJ2wnLFxuICAgICAgICAgICAgTG93OiAxMjAxLFxuICAgICAgICAgICAgSGlnaDogMTQwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA0LFxuICAgICAgICAgICAgTmFtZTogJ3hsJyxcbiAgICAgICAgICAgIExvdzogMTQwMSxcbiAgICAgICAgICAgIEhpZ2g6IDE2MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogNSxcbiAgICAgICAgICAgIE5hbWU6ICd4eGwnLFxuICAgICAgICAgICAgTG93OiAxNjAxLFxuICAgICAgICAgICAgSGlnaDogMTkyMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA2LFxuICAgICAgICAgICAgTmFtZTogJ3h4eGwnLFxuICAgICAgICAgICAgTG93OiAxOTIxLFxuICAgICAgICAgICAgSGlnaDogOTk5OTksXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgdmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlcjogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgdmlld3BvcnRSZXNpemVkU3Vic2NyaWJlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0ITogc3RyaW5nO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0T2JqZWN0ITogQnJlYWtwb2ludDtcbiAgICBwcml2YXRlIGlzQnJvd3NlciA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkLmJpbmQodGhpcyksIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlzQnJvd3NlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgd2luZG93IGhlaWdodFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQnJvd3NlciA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgd2lkdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2luZG93V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gd2luZG93LmlubmVyV2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRWaWV3UG9ydCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGg6IG51bWJlciA9IHRoaXMuaXNCcm93c2VyXG4gICAgICAgICAgICA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIDogMTIwMDtcbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSB0aGlzLmNvbnZlcnRXaWR0aFRvTWVkaWFRdWVyeShjdXJyZW50V2lkdGgpLk5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgb2JqZWN0IHdpdGggYWxsIGluZm9ybWF0aW9uc1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50Vmlld1BvcnRPYmplY3QoKTogQnJlYWtwb2ludCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aDogbnVtYmVyID0gdGhpcy5pc0Jyb3dzZXJcbiAgICAgICAgICAgID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aFxuICAgICAgICAgICAgOiAxMjAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydE9iamVjdCA9IHRoaXMuY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KGN1cnJlbnRXaWR0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0T2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgYXMgbnVtYmVyXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRWaWV3UG9ydE51bWJlcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBtccK0cyBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRDaGFuZ2VkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGggYXMgbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdwb3J0UmVzaXplZE9ic2VydmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9FbGVtZW50SWQoZWw6IHN0cmluZywgYWxpZ25DZW50ZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgZWwpLCBhbGlnbkNlbnRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBzY3JvbGxzIHRvIHRoZSBnaXZlbiBtYXJrdXAgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gZWwgLSBuYXRpdmVFbGVtZW50IGZyb20gbWFya3VwXG4gICAgICogQHBhcmFtIGFsaWduQ2VudGVyIC0gZGVmaW5lcyBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBjZW50ZXJlZCBvbiB3aW5kb3dcbiAgICAgKi9cblxuICAgIHB1YmxpYyBzY3JvbGxUb0VsZW1lbnQoZWw6IEhUTUxFbGVtZW50LCBhbGlnbkNlbnRlciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgbGV0IGV4dHJhU2Nyb2xsVG9wID0gMDtcblxuICAgICAgICAgICAgaWYgKGFsaWduQ2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFTY3JvbGxUb3AgPSAod2luZG93LmlubmVySGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0KSAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICBsZXQgZWxUZW1wOiBOdWxsQWJsZTxIVE1MRWxlbWVudD4gPSBlbDtcblxuICAgICAgICAgICAgd2hpbGUgKGVsVGVtcCkge1xuICAgICAgICAgICAgICAgIG9mZnNldExlZnQgKz0gZWxUZW1wLm9mZnNldExlZnQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IGVsVGVtcC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgZWxUZW1wID0gZWxUZW1wLnBhcmVudEVsZW1lbnQgPyBlbFRlbXAucGFyZW50RWxlbWVudCA6IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgICAgICAgICAgbGVmdDogb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgICAgICB0b3A6IG9mZnNldFRvcCAtIGV4dHJhU2Nyb2xsVG9wLFxuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gdG9wIC0gdG9wIHBvc2l0aW9uIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvcCh0b3A6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IGxlZnQ6IDAsIHRvcDogdG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBvcmllbnRhdGlvbiBpcyBwb3J0cmFpdFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1BvcnRyYWl0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPiB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgZWxzZSByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgb3JpZW50YXRpb24gaXMgbGFuZHNjYXBlXG4gICAgICovXG4gICAgcHVibGljIGlzTGFuZHNjYXBlKCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFuZHNjYXBlID1cbiAgICAgICAgICAgICAgICB3aW5kb3cub3JpZW50YXRpb24gPT09IDkwIHx8IHdpbmRvdy5vcmllbnRhdGlvbiA9PT0gLTkwO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGFuZHNjYXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgbW9iaWxlIGJyZWFrcG9pbnQgKGJlbG93IHRhYmxldClcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNNb2JpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWaWV3UG9ydE51bWJlcigpIDwgdGhpcy5icmVha3BvaW50c1syXS5Mb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGhlaWdodCBvZiBhbiBlbGVtZW50XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlRnVsbHNjcmVlbkVsZW1lbnRzaGVpZ2h0KFxuICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0aGVpZ2h0OiBzdHJpbmcsXG4gICAgICAgIGV4dHJhOiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlciB8fCB0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0aGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWFwID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb290ZXInKVswXTtcbiAgICAgICAgICAgIGlmIChtYXAgJiYgZm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3dpbmRvdy5pbm5lckhlaWdodCAtIG1hcC5vZmZzZXRUb3AgLSBmb290ZXIub2Zmc2V0SGVpZ2h0IC0gZXh0cmFcbiAgICAgICAgICAgICAgICAgICAgfXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdjb3VsZCBub3QgY2FsY3VsYXRlIG1hcCBoZWlnaHQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBoZWlnaHQgb2YgYW4gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjYWxjdWxhdGVGdWxsc2NyZWVuRWxlbWVudHNIZWlnaHQoXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRoZWlnaHQ6IHN0cmluZyxcbiAgICAgICAgZXh0cmE6IG51bWJlclxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVGdWxsc2NyZWVuRWxlbWVudHNoZWlnaHQoaWQsIGRlZmF1bHRoZWlnaHQsIGV4dHJhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB2aWV3cG9ydCBjaGFuZ2VkXG4gICAgICogQGV2ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBkb2N1bWVudFNpemVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd1dpZHRoOiBudW1iZXIgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgLy8gaW5mb3JtIHdob8K0cyBpbnRlcmVzdGVkXG4gICAgICAgIHRoaXMudmlld3BvcnRSZXNpemVkU3Vic2NyaWJlci5uZXh0KGN1cnJlbnRXaW5kb3dXaWR0aCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRXaW5kb3dXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXFzIG9mIHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gbXFzLkhpZ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRXaW5kb3dXaWR0aCA+PSBtcXMuTG93IHx8IGN1cnJlbnRXaW5kb3dXaWR0aCA8PSBtcXMuSGlnaCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgIT09IG1xcy5OYW1lXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gbXFzLk5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXIubmV4dChtcXMuTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50Vmlld3BvcnQgPT09IG1xcy5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBNZWRpYSBRdWVyeSBmb3IgdGhlIGdpdmVuIHdpZHRoXG4gICAgICogQHBhcmFtIHdpZHRoIFdpZHRoIHRvIGdldCB0aGUgYWNjb3JkaW5nIE1RIGZvclxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KHdpZHRoOiBudW1iZXIpOiBCcmVha3BvaW50IHtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3cG9ydCA9IHRoaXMuYnJlYWtwb2ludHNbMF07XG5cbiAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgaWYgKHdpZHRoIDw9IG1xcy5IaWdoICYmIHdpZHRoID49IG1xcy5Mb3cpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Vmlld3BvcnQgPSBtcXM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYnJlYWtwb2ludC9kZXZpY2UgbmFtZSBsaWtlIG1vYmlsZSx0YWJsZXQsZGVza3RvcCwgaGlnaFxuICAgICAqL1xuICAgIGdldFNpbXBsZUJyZWFrcG9pbnQoc2NyZWVuU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBhY3R1YWxCcmVha3BvaW50OiBTaW1wbGVCcmVha3BvaW50IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHNpemVzID0gdGhpcy5zaW1wbGVCcmVha3BvaW50cy5zbGljZSgpLnJldmVyc2UoKTsgLy8gd2UgbmVlZCB0byByZXZlcnNlIGl0IHRvIGNoZWNrIHN0ZXAgYnkgc3RlcCBmcm9tIGJpZ2dlc3QsIHdoaWNoIGJyZWFrcG9pbnRzIHN0aWxsIGZpdHMuIFNsaWNlIGlzIGEgdHJpY2sgdG8gbm90IG11dGF0ZSB0aGUgb3JpZ2luYWwgYXJyYXkgYW5kIG1ha2UgYSBjb3B5XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNpemVzKSB7XG4gICAgICAgICAgICBpZiAoc2NyZWVuU2l6ZSA8IHNpemVzW2tleV0uTWF4aW11bVBpeGVscykge1xuICAgICAgICAgICAgICAgIGFjdHVhbEJyZWFrcG9pbnQgPSBzaXplc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYWN0dWFsQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgYWN0dWFsQnJlYWtwb2ludCA9IHNpemVzWzBdOyAvLyBkZWZhdWx0IHNjcmVlbnNpemUgaXMgYmlnZ2VzdC4gV2lsbCBiZSB1c2VkIGlmIHZpZXdwb3J0IGlzIGJpZ2dlciBhcyBtYXhpbXVtLiBSZW1lbWJlciwgYXJyYXkgaXMgcmV2ZXJzZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3R1YWxCcmVha3BvaW50O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50U2l6ZUNoYW5nZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQVksSUFBZ0M7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUlKO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixZQUFZLElBQWdDO1FBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FJSjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBQ25CLFlBQVksSUFBMEI7UUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUtKO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQTREeEIsWUFDaUMsVUFBa0IsRUFDdEIsUUFBa0I7UUFEZCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUE3RC9CLHNCQUFpQixHQUF1QjtZQUNwRCxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ2pELEVBQUUsTUFBTSxFQUFFLENBQUMs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QUFPLEVBQUUsQ0FBQyxDQUFDLDRKQUE0SjtRQUNwTixLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRTtZQUNyQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFO2dCQUN2QyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakM7U0FDSjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQixnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0R0FBNEc7U0FDNUk7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDbEU7SUFDTCxDQUFDOzs0R0E5V1EsZUFBZSxrQkE2RFosV0FBVyxhQUNYLFFBQVE7Z0hBOURYLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBOERGLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBLTVMgR21iSFxuICovXG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBhbnk7XG5kZWNsYXJlIGNvbnN0IGRvY3VtZW50OiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dEaW1lbnNpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxXaW5kb3dEaW1lbnNpb25zPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICAgIH1cbiAgICBIZWlnaHQhOiBudW1iZXI7XG4gICAgV2lkdGghOiBudW1iZXI7XG4gICAgT3JpZW50YXRpb24hOiBcImxhbmRzY2FwZVwiIHwgXCJwb3J0cmFpdFwiO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlQnJlYWtwb2ludCB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8U2ltcGxlQnJlYWtwb2ludD4pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG4gICAgTnVtYmVyITogbnVtYmVyO1xuICAgIE5hbWUhOiBzdHJpbmc7XG4gICAgTWF4aW11bVBpeGVscyE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEJyZWFrcG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEJyZWFrcG9pbnQ+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuICAgIE51bWJlciE6IG51bWJlcjtcbiAgICBOYW1lITogc3RyaW5nO1xuICAgIExvdyE6IG51bWJlcjtcbiAgICBIaWdoITogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gZ2V0IHZpZXdwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSBzaW1wbGVCcmVha3BvaW50czogU2ltcGxlQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7IE51bWJlcjogMCwgTmFtZTogJ21vYmlsZScsIE1heGltdW1QaXhlbHM6IDc2OCB9LFxuICAgICAgICB7IE51bWJlcjogMSwgTmFtZTogJ3RhYmxldCcsIE1heGltdW1QaXhlbHM6IDEwMjQgfSxcbiAgICAgICAgeyBOdW1iZXI6IDIsIE5hbWU6ICdkZXNrdG9wJywgTWF4aW11bVBpeGVsczogMTYwMCB9LFxuICAgICAgICB7IE51bWJlcjogMywgTmFtZTogJ2hpZ2gnLCBNYXhpbXVtUGl4ZWxzOiAyNTAwIH0sXG4gICAgXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBicmVha3BvaW50czogQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBOdW1iZXI6IDAsXG4gICAgICAgICAgICBOYW1lOiAneHMnLFxuICAgICAgICAgICAgTG93OiAzNjAsXG4gICAgICAgICAgICBIaWdoOiA5OTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogMSxcbiAgICAgICAgICAgIE5hbWU6ICdzJyxcbiAgICAgICAgICAgIExvdzogOTkxLFxuICAgICAgICAgICAgSGlnaDogMTAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAyLFxuICAgICAgICAgICAgTmFtZTogJ20nLFxuICAgICAgICAgICAgTG93OiAxMDI1LFxuICAgICAgICAgICAgSGlnaDogMTIwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAzLFxuICAgICAgICAgICAgTmFtZTogJ2wnLFxuICAgICAgICAgICAgTG93OiAxMjAxLFxuICAgICAgICAgICAgSGlnaDogMTQwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA0LFxuICAgICAgICAgICAgTmFtZTogJ3hsJyxcbiAgICAgICAgICAgIExvdzogMTQwMSxcbiAgICAgICAgICAgIEhpZ2g6IDE2MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogNSxcbiAgICAgICAgICAgIE5hbWU6ICd4eGwnLFxuICAgICAgICAgICAgTG93OiAxNjAxLFxuICAgICAgICAgICAgSGlnaDogMTkyMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA2LFxuICAgICAgICAgICAgTmFtZTogJ3h4eGwnLFxuICAgICAgICAgICAgTG93OiAxOTIxLFxuICAgICAgICAgICAgSGlnaDogOTk5OTksXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgdmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlcjogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgdmlld3BvcnRSZXNpemVkU3Vic2NyaWJlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgcHJpdmF0ZSBjdXJyZW50Vmlld3BvcnQhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBjdXJyZW50Vmlld3BvcnRPYmplY3QhOiBCcmVha3BvaW50O1xuICAgIHByaXZhdGUgaXNCcm93c2VyID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50U2l6ZUNoYW5nZWQuYmluZCh0aGlzKSwge1xuICAgICAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaXNCcm93c2VyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBkb2N1bWVudCBoZWlnaHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBkb2N1bWVudCB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQnJvd3NlciA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgd2lkdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2luZG93V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gd2luZG93LmlubmVyV2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRWaWV3UG9ydCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGg6IG51bWJlciA9IHRoaXMuaXNCcm93c2VyXG4gICAgICAgICAgICA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIDogMTIwMDtcbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSB0aGlzLmNvbnZlcnRXaWR0aFRvTWVkaWFRdWVyeShjdXJyZW50V2lkdGgpLk5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgb2JqZWN0IHdpdGggYWxsIGluZm9ybWF0aW9uc1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50Vmlld1BvcnRPYmplY3QoKTogQnJlYWtwb2ludCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aDogbnVtYmVyID0gdGhpcy5pc0Jyb3dzZXJcbiAgICAgICAgICAgID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aFxuICAgICAgICAgICAgOiAxMjAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydE9iamVjdCA9IHRoaXMuY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KGN1cnJlbnRXaWR0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0T2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgYXMgbnVtYmVyXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGdldEN1cnJlbnRWaWV3UG9ydERpbWVuc2lvbnMgaW5zdGVhZFxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50Vmlld1BvcnROdW1iZXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2aWV3cG9ydCB3aWR0aCBhcyBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFZpZXdQb3J0V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2aWV3cG9ydCBhcyBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFZpZXdQb3J0SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQnJvd3NlciA/IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IDogNjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgZGltZW5zaW9uc1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50Vmlld1BvcnREaW1lbnNpb25zKCk6IFdpbmRvd0RpbWVuc2lvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyB7V2lkdGg6ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxIZWlnaHQ6ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxPcmllbnRhdGlvbjp0aGlzLmdldE9yaWVudGF0aW9uQXNTdHJpbmcoKSB9IGFzIFdpbmRvd0RpbWVuc2lvbnMgOiB7V2lkdGg6ODAwLCBIZWlnaHQ6NjAwLCBPcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIn0gYXMgV2luZG93RGltZW5zaW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBtccK0cyBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRDaGFuZ2VkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGggYXMgbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdwb3J0UmVzaXplZE9ic2VydmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9FbGVtZW50SWQoZWw6IHN0cmluZywgYWxpZ25DZW50ZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgZWwpLCBhbGlnbkNlbnRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBzY3JvbGxzIHRvIHRoZSBnaXZlbiBtYXJrdXAgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gZWwgLSBuYXRpdmVFbGVtZW50IGZyb20gbWFya3VwXG4gICAgICogQHBhcmFtIGFsaWduQ2VudGVyIC0gZGVmaW5lcyBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBjZW50ZXJlZCBvbiB3aW5kb3dcbiAgICAgKi9cblxuICAgIHB1YmxpYyBzY3JvbGxUb0VsZW1lbnQoZWw6IEhUTUxFbGVtZW50LCBhbGlnbkNlbnRlciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgbGV0IGV4dHJhU2Nyb2xsVG9wID0gMDtcblxuICAgICAgICAgICAgaWYgKGFsaWduQ2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFTY3JvbGxUb3AgPSAod2luZG93LmlubmVySGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0KSAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICBsZXQgZWxUZW1wOiBOdWxsQWJsZTxIVE1MRWxlbWVudD4gPSBlbDtcblxuICAgICAgICAgICAgd2hpbGUgKGVsVGVtcCkge1xuICAgICAgICAgICAgICAgIG9mZnNldExlZnQgKz0gZWxUZW1wLm9mZnNldExlZnQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IGVsVGVtcC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgZWxUZW1wID0gZWxUZW1wLnBhcmVudEVsZW1lbnQgPyBlbFRlbXAucGFyZW50RWxlbWVudCA6IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgICAgICAgICAgbGVmdDogb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgICAgICB0b3A6IG9mZnNldFRvcCAtIGV4dHJhU2Nyb2xsVG9wLFxuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gdG9wIC0gdG9wIHBvc2l0aW9uIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvcCh0b3A6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IGxlZnQ6IDAsIHRvcDogdG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBvcmllbnRhdGlvbiBpcyBwb3J0cmFpdFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1BvcnRyYWl0KCkgOiBib29sZWFufHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3NlcikgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA+IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBlbHNlIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgb3JpZW50YXRpb24gaXMgbGFuZHNjYXBlXG4gICAgICovXG4gICAgcHVibGljIGlzTGFuZHNjYXBlKCkgOmJvb2xlYW58dW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBjb25zdCBpc0xhbmRzY2FwZSA9XG4gICAgICAgICAgICAgICAgd2luZG93Lm9yaWVudGF0aW9uID09PSA5MCB8fCB3aW5kb3cub3JpZW50YXRpb24gPT09IC05MDtcbiAgICAgICAgICAgIHJldHVybiBpc0xhbmRzY2FwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2NyZWVuIG9yaWVudGF0aW9uIChwb3J0cmFpdC9sYW5kc2NhcGUpXG4gICAgICovXG4gICAgcHVibGljIGdldE9yaWVudGF0aW9uQXNTdHJpbmcoKSA6IFwicG9ydHJhaXRcIiB8IFwibGFuZHNjYXBlXCIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1BvcnRyYWl0ID8gXCJwb3J0cmFpdFwiIDogXCJsYW5kc2NhcGVcIjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBtb2JpbGUgYnJlYWtwb2ludCAoYmVsb3cgdGFibGV0KVxuICAgICAqL1xuICAgIHB1YmxpYyBpc01vYmlsZSgpOmJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50Vmlld1BvcnROdW1iZXIoKSA8IHRoaXMuYnJlYWtwb2ludHNbMl0uTG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBoZWlnaHQgb2YgYW4gZWxlbWVudFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgcHVibGljIGNhbGN1bGF0ZUZ1bGxzY3JlZW5FbGVtZW50c2hlaWdodChcbiAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgZGVmYXVsdGhlaWdodDogc3RyaW5nLFxuICAgICAgICBleHRyYTogbnVtYmVyXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUZ1bGxzY3JlZW5FbGVtZW50c0hlaWdodChpZCwgZGVmYXVsdGhlaWdodCwgZXh0cmEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBoZWlnaHQgb2YgYW4gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjYWxjdWxhdGVGdWxsc2NyZWVuRWxlbWVudHNIZWlnaHQoXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRoZWlnaHQ6IHN0cmluZyxcbiAgICAgICAgZXh0cmE6IG51bWJlclxuICAgICkge1xuICAgICAgICBcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlciB8fCB0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0aGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWFwID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb290ZXInKVswXTtcbiAgICAgICAgICAgIGlmIChtYXAgJiYgZm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3dpbmRvdy5pbm5lckhlaWdodCAtIG1hcC5vZmZzZXRUb3AgLSBmb290ZXIub2Zmc2V0SGVpZ2h0IC0gZXh0cmFcbiAgICAgICAgICAgICAgICAgICAgfXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdjb3VsZCBub3QgY2FsY3VsYXRlIG1hcCBoZWlnaHQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHZpZXdwb3J0IGNoYW5nZWRcbiAgICAgKiBAZXZlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGRvY3VtZW50U2l6ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2luZG93V2lkdGg6IG51bWJlciA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAvLyBpbmZvcm0gd2hvwrRzIGludGVyZXN0ZWRcbiAgICAgICAgdGhpcy52aWV3cG9ydFJlc2l6ZWRTdWJzY3JpYmVyLm5leHQoY3VycmVudFdpbmRvd1dpZHRoKTtcblxuICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50V2luZG93V2lkdGggPiBtcXMuSGlnaCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoY3VycmVudFdpbmRvd1dpZHRoID49IG1xcy5Mb3cgfHwgY3VycmVudFdpbmRvd1dpZHRoIDw9IG1xcy5IaWdoKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydCAhPT0gbXFzLk5hbWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSBtcXMuTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5mb3JtIHdob8K0cyBpbnRlcmVzdGVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5uZXh0KG1xcy5OYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3cG9ydCA9PT0gbXFzLk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRVJST1InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIE1lZGlhIFF1ZXJ5IGZvciB0aGUgZ2l2ZW4gd2lkdGhcbiAgICAgKiBAcGFyYW0gd2lkdGggV2lkdGggdG8gZ2V0IHRoZSBhY2NvcmRpbmcgTVEgZm9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0V2lkdGhUb01lZGlhUXVlcnkod2lkdGg6IG51bWJlcik6IEJyZWFrcG9pbnQge1xuICAgICAgICBsZXQgY3VycmVudFZpZXdwb3J0ID0gdGhpcy5icmVha3BvaW50c1swXTtcblxuICAgICAgICBmb3IgKGNvbnN0IG1xcyBvZiB0aGlzLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICBpZiAod2lkdGggPD0gbXFzLkhpZ2ggJiYgd2lkdGggPj0gbXFzLkxvdykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3cG9ydCA9IG1xcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBicmVha3BvaW50L2RldmljZSBuYW1lIGxpa2UgbW9iaWxlLHRhYmxldCxkZXNrdG9wLCBoaWdoXG4gICAgICovXG4gICAgZ2V0U2ltcGxlQnJlYWtwb2ludChzY3JlZW5TaXplOiBudW1iZXIpIDpTaW1wbGVCcmVha3BvaW50IHtcbiAgICAgICAgbGV0IGFjdHVhbEJyZWFrcG9pbnQ6IFNpbXBsZUJyZWFrcG9pbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnNpbXBsZUJyZWFrcG9pbnRzLnNsaWNlKCkucmV2ZXJzZSgpOyAvLyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgdG8gY2hlY2sgc3RlcCBieSBzdGVwIGZyb20gYmlnZ2VzdCwgd2hpY2ggYnJlYWtwb2ludHMgc3RpbGwgZml0cy4gU2xpY2UgaXMgYSB0cmljayB0byBub3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgbWFrZSBhIGNvcHlcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2l6ZXMpIHtcbiAgICAgICAgICAgIGlmIChzY3JlZW5TaXplIDwgc2l6ZXNba2V5XS5NYXhpbXVtUGl4ZWxzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsQnJlYWtwb2ludCA9IHNpemVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY3R1YWxCcmVha3BvaW50KSB7XG4gICAgICAgICAgICBhY3R1YWxCcmVha3BvaW50ID0gc2l6ZXNbMF07IC8vIGRlZmF1bHQgc2NyZWVuc2l6ZSBpcyBiaWdnZXN0LiBXaWxsIGJlIHVzZWQgaWYgdmlld3BvcnQgaXMgYmlnZ2VyIGFzIG1heGltdW0uIFJlbWVtYmVyLCBhcnJheSBpcyByZXZlcnNlZFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbEJyZWFrcG9pbnQ7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRTaXplQ2hhbmdlZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -116,13 +116,13 @@ export class DropdownFromDataComponent extends FormControlParentComponent {
116
116
  }
117
117
  }
118
118
  DropdownFromDataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DropdownFromDataComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
119
- DropdownFromDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DropdownFromDataComponent, selector: "kms-dropdown-from-data", inputs: { optionsEnum: "optionsEnum", optionsPlainArray: "optionsPlainArray", optionsObjArray: "optionsObjArray", mapKey: "mapKey", mapValue: "mapValue", hasNullOption: "hasNullOption", translation: "translation", placeholder: "placeholder", label: "label", required: "required", useEnumIndexAsValue: "useEnumIndexAsValue", multiple: "multiple" }, providers: [
119
+ DropdownFromDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DropdownFromDataComponent, selector: "kms-dropdown-from-data", inputs: { optionsEnum: "optionsEnum", optionsPlainArray: "optionsPlainArray", optionsObjArray: "optionsObjArray", mapKey: "mapKey", mapValue: "mapValue", hasNullOption: "hasNullOption", translation: "translation", placeholder: "placeholder", label: "label", required: "required", useEnumIndexAsValue: "useEnumIndexAsValue", multiple: "multiple", control: "control" }, providers: [
120
120
  {
121
121
  provide: NG_VALUE_ACCESSOR,
122
122
  useExisting: forwardRef(() => DropdownFromDataComponent),
123
123
  multi: true,
124
124
  },
125
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
125
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"control?.value ? control.value : value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DropdownFromDataComponent, decorators: [{
127
127
  type: Component,
128
128
  args: [{ selector: 'kms-dropdown-from-data', providers: [
@@ -131,7 +131,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
131
131
  useExisting: forwardRef(() => DropdownFromDataComponent),
132
132
  multi: true,
133
133
  },
134
- ], template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n" }]
134
+ ], template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"control?.value ? control.value : value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n" }]
135
135
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.Renderer2 }]; }, propDecorators: { optionsEnum: [{
136
136
  type: Input
137
137
  }], optionsPlainArray: [{
@@ -156,5 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
156
156
  type: Input
157
157
  }], multiple: [{
158
158
  type: Input
159
+ }], control: [{
160
+ type: Input
159
161
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBRTVGOztHQUVHO0FBWUgsTUFBTSxPQUFPLHlCQUNYLFNBQVEsMEJBQTBCO0lBa0NsQyxZQUNTLFdBQStCLEVBQy9CLFFBQW1CO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQjVCLDJFQUEyRTtRQUNsRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFckMscUJBQXFCO1FBQ1osYUFBUSxHQUFHLEtBQUssQ0FB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TyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDOztzSEF0SVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNllBUnpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLHNFQzdCSCwrbkJBcUJBOzJGRFVhLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx3QkFBd0IsYUFFdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lJQU9RLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnVtVmFsdWVzIH0gZnJvbSAnZW51bS12YWx1ZXMvc3JjL2VudW1WYWx1ZXMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJlbnQtY29tcG9uZW50cy9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcblxuLyoqXG4gKiBEcm9wZG93biBmcm9tIGRhdGEgY29tcG9uZW50IHtAbGluayBodHRwczovL2xlYXNlcGxhbi1kZXYucmVudG9mZmljZS5kZS9zdHlsZWd1aWRlI3VpLWVsZW1lbnRzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtZHJvcGRvd24tZnJvbS1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWZyb20tZGF0YS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25Gcm9tRGF0YUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50XG4gIGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXNcbntcbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgZW51bSBzZXQuIENhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggJ29wdGlvbnNQbGFpbkFycmF5JyB0byBzZXQgZGlmZXJlbnQgdmFsdWVzIGJ5IGluZGV4XG4gIEBJbnB1dCgpIG9wdGlvbnNFbnVtOiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgc2ltcGxlIGFycmF5IG9mIGVsZW1lbnRzXG4gIEBJbnB1dCgpIG9wdGlvbnNQbGFpbkFycmF5OiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGFuIGFycmF5IG9mIG9iamVjdHMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBpbnB1dCAnbWFwS2V5JyBhbmQgJ21hcFZhbHVlJ1xuICBASW5wdXQoKSBvcHRpb25zT2JqQXJyYXk6IGFueTtcbiAgLy8ga2V5IGlkZW50aWZpZXIgb2YgdGhlIG9iai4gSWYgbWFwVmFsdWUgZG9lc250IGV4aXN0LCBtYXBLZXkgaXMgYWxzbyB0aGUgdmFsdWVcbiAgQElucHV0KCkgbWFwS2V5PzogYW55O1xuICAvLyB2YWx1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmpcbiAgQElucHV0KCkgbWFwVmFsdWU/OiBhbnk7XG5cbiAgLy8gb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duIGhhdmUgYSBudWxsIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gIEBJbnB1dCgpIGhhc051bGxPcHRpb24gPSBmYWxzZTtcblxuICAvLyB0cmFuc2xhdGlvbiBvYmplY3QgZm9yIHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXJcbiAgQElucHV0KCkgdHJhbnNsYXRpb24/OiBJVHJhbnNsYXRpb247XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUVudW1JbmRleEFzVmFsdWUgPSBmYWxzZTtcblxuICAvLyBtdWx0aXBsZSBzZWxlY3Rpb25cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBwdWJsaWMga2V5czogYW55W10gPSBbXTtcbiAgcHVibGljIHZhbHVlczogYW55W10gPSBbXTtcblxuICBPYmplY3QgPSBPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rIHVzZWQgdG8gc3luYyBjaGFuZ2VzIG9uIHNldCBMYWJlbCBhbmQgVHlwZVxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnNQbGFpbkFycmF5KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgIH1cbiAgICB0aGlzLnNldEtleVZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkcm9wZG93bkRhdGE6IFtdLFxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdmFsdWUuZHJvcGRvd25EYXRhO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5kcm9wZG93bkRhdGEpO1xuICAgIH0pO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmFuc29mcm1zIHRoZSBkYXRhIHZhbHVlcyB0byB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIGJlIHVzZWQgYnkgdGhlIHRlbXBsYXRlXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRLZXlWYWx1ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uc09iakFycmF5ICYmIHRoaXMubWFwS2V5ICYmIHRoaXMubWFwVmFsdWUpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBWYWx1ZX1gXVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uc09iakFycmF5ICYmIHRoaXMubWFwS2V5KSB7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF0pO1xuICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoXG4gICAgICAgIChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zRW51bSkge1xuICAgICAgdGhpcy5rZXlzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnNQbGFpbkFycmF5KSB7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEVudW1WYWx1ZXMuZ2V0VmFsdWVzKHRoaXMub3B0aW9uc0VudW0pO1xuXG4gICAgICAgIC8vIHZhciB3aG8gZGVmaW5lcyBpZiBlbnVtIGlzIGNvbXBvbmVkIGp1c3Qgd2l0aCBrZXlzIG9yIGtleVZhbHVlcy4gRS5nIGVudW0gS2V5RW51bSB7IFZBTFVFMSwgVkFMVUUyIH0gb3IgZW51bSBLZXlWYWx1ZUVudW0geyBWQUxVRTQgPSAnVjQnLCBWQUxVRTUgPSAnVjUnIH1cbiAgICAgICAgbGV0IGtleVZhbHVlRW51bSA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgIT09IHZhbHVlc1tpXSkge1xuICAgICAgICAgICAga2V5VmFsdWVFbnVtID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVZhbHVlRW51bSB8fCB0aGlzLnVzZUVudW1JbmRleEFzVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcyA9IEVudW1WYWx1ZXMuZ2V0TmFtZXModGhpcy5vcHRpb25zRW51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzTnVsbE9wdGlvbiA9PT0gdHJ1ZSkgdGhpcy5rZXlzLnVuc2hpZnQobnVsbCk7XG4gICAgaWYgKHRoaXMuaGFzTnVsbE9wdGlvbiA9PT0gdHJ1ZSkgdGhpcy52YWx1ZXMudW5zaGlmdChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgdGhlIHZhbHVlIG9mIHRoZSBkcm9wZG93biBiYXNlZCBpZiB0cmFuc2xhdGlvbiBpcyBzZXRcbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgcHVibGljIHNldERpc3BsYXlLZXkoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbikge1xuICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb24uaXNQcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24ucGF0aCArICcuJyArIGtleVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYW5zbGF0aW9uLnVzZUtleUFzVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKHRoaXMudHJhbnNsYXRpb24ucGF0aCwgeyBrZXk6IGtleSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlcnZpY2U/Lmluc3RhbnQ/Lih0aGlzLnRyYW5zbGF0aW9uLnBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBkcm9wZG93bkRhdGE6IHZhbHVlLFxuICAgIH0pO1xuICAgIHRoaXMub25TZWxlY3RJdGVtRW1pdHRlci5lbWl0KHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSB0aGF0IGRlZmluZXMgdGhlIHRyYW5zbGF0aW9uIG9iamVjdCBpbiB0ZW1wbGF0ZVxuICovXG5pbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcbiAgcGF0aDogc3RyaW5nO1xuICBpc1ByZWZpeD86IGJvb2xlYW47XG4gIHVzZUtleUFzVmFsdWU/OiBib29sZWFuO1xuICBzZXJ2aWNlOiBhbnk7XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtmbG9hdExhYmVsXT1cInBsYWNlaG9sZGVyID8gJ2Fsd2F5cycgOiAnYXV0bydcIlxuICA+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKCRldmVudD8udmFsdWUpXCJcbiAgICAgICNjaGlsZFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZhbHVlc1tpXVwiPlxuICAgICAgICA8c3Bhbj57eyBzZXREaXNwbGF5S2V5KGtleSkgfX08L3NwYW4+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPlxuIl19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBRTVGOztHQUVHO0FBWUgsTUFBTSxPQUFPLHlCQUNYLFNBQVEsMEJBQTBCO0lBb0NsQyxZQUNTLFdBQStCLEVBQy9CLFFBQW1CO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUF0QjVCLDJFQUEyRTtRQUNsRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFckMscUJBQXFCO1FBQ1osYUFBUSxHQUFHLEtBQUssQ0FB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TyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDOztzSEF4SVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsaWFBUnpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLHNFQzlCSCxncUJBcUJBOzJGRFdhLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx3QkFBd0IsYUFFdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lJQU9RLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgQWJzdHJhY3RDb250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnVtVmFsdWVzIH0gZnJvbSAnZW51bS12YWx1ZXMvc3JjL2VudW1WYWx1ZXMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJlbnQtY29tcG9uZW50cy9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcblxuLyoqXG4gKiBEcm9wZG93biBmcm9tIGRhdGEgY29tcG9uZW50IHtAbGluayBodHRwczovL2xlYXNlcGxhbi1kZXYucmVudG9mZmljZS5kZS9zdHlsZWd1aWRlI3VpLWVsZW1lbnRzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtZHJvcGRvd24tZnJvbS1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWZyb20tZGF0YS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25Gcm9tRGF0YUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50XG4gIGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXNcbntcbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgZW51bSBzZXQuIENhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggJ29wdGlvbnNQbGFpbkFycmF5JyB0byBzZXQgZGlmZXJlbnQgdmFsdWVzIGJ5IGluZGV4XG4gIEBJbnB1dCgpIG9wdGlvbnNFbnVtOiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgc2ltcGxlIGFycmF5IG9mIGVsZW1lbnRzXG4gIEBJbnB1dCgpIG9wdGlvbnNQbGFpbkFycmF5OiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGFuIGFycmF5IG9mIG9iamVjdHMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBpbnB1dCAnbWFwS2V5JyBhbmQgJ21hcFZhbHVlJ1xuICBASW5wdXQoKSBvcHRpb25zT2JqQXJyYXk6IGFueTtcbiAgLy8ga2V5IGlkZW50aWZpZXIgb2YgdGhlIG9iai4gSWYgbWFwVmFsdWUgZG9lc250IGV4aXN0LCBtYXBLZXkgaXMgYWxzbyB0aGUgdmFsdWVcbiAgQElucHV0KCkgbWFwS2V5PzogYW55O1xuICAvLyB2YWx1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmpcbiAgQElucHV0KCkgbWFwVmFsdWU/OiBhbnk7XG5cbiAgLy8gb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duIGhhdmUgYSBudWxsIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gIEBJbnB1dCgpIGhhc051bGxPcHRpb24gPSBmYWxzZTtcblxuICAvLyB0cmFuc2xhdGlvbiBvYmplY3QgZm9yIHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXJcbiAgQElucHV0KCkgdHJhbnNsYXRpb24/OiBJVHJhbnNsYXRpb247XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUVudW1JbmRleEFzVmFsdWUgPSBmYWxzZTtcblxuICAvLyBtdWx0aXBsZSBzZWxlY3Rpb25cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb250cm9sPzogQWJzdHJhY3RDb250cm9sO1xuXG4gIHB1YmxpYyBrZXlzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gIE9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgcmVuZGVyZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgdXNlZCB0byBzeW5jIGNoYW5nZXMgb24gc2V0IExhYmVsIGFuZCBUeXBlXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgfVxuICAgIHRoaXMuc2V0S2V5VmFsdWVzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogW10sXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5kcm9wZG93bkRhdGE7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmRyb3Bkb3duRGF0YSk7XG4gICAgfSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyYW5zb2ZybXMgdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgYmUgdXNlZCBieSB0aGUgdGVtcGxhdGVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHNldEtleVZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkgJiYgdGhpcy5tYXBWYWx1ZSkge1xuICAgICAgdGhpcy5rZXlzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdKTtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKFxuICAgICAgICAob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcFZhbHVlfWBdXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnNFbnVtKSB7XG4gICAgICB0aGlzLmtleXMgPSBFbnVtVmFsdWVzLmdldE5hbWVzKHRoaXMub3B0aW9uc0VudW0pO1xuICAgICAgaWYgKHRoaXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gRW51bVZhbHVlcy5nZXRWYWx1ZXModGhpcy5vcHRpb25zRW51bSk7XG5cbiAgICAgICAgLy8gdmFyIHdobyBkZWZpbmVzIGlmIGVudW0gaXMgY29tcG9uZWQganVzdCB3aXRoIGtleXMgb3Iga2V5VmFsdWVzLiBFLmcgZW51bSBLZXlFbnVtIHsgVkFMVUUxLCBWQUxVRTIgfSBvciBlbnVtIEtleVZhbHVlRW51bSB7IFZBTFVFNCA9ICdWNCcsIFZBTFVFNSA9ICdWNScgfVxuICAgICAgICBsZXQga2V5VmFsdWVFbnVtID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSAhPT0gdmFsdWVzW2ldKSB7XG4gICAgICAgICAgICBrZXlWYWx1ZUVudW0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5VmFsdWVFbnVtIHx8IHRoaXMudXNlRW51bUluZGV4QXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLmtleXMudW5zaGlmdChudWxsKTtcbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLnZhbHVlcy51bnNoaWZ0KG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGJhc2VkIGlmIHRyYW5zbGF0aW9uIGlzIHNldFxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBwdWJsaWMgc2V0RGlzcGxheUtleShrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbi5pc1ByZWZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5wYXRoICsgJy4nICsga2V5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHJhbnNsYXRpb24udXNlS2V5QXNWYWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4odGhpcy50cmFuc2xhdGlvbi5wYXRoLCB7IGtleToga2V5IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKHRoaXMudHJhbnNsYXRpb24ucGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogdmFsdWUsXG4gICAgfSk7XG4gICAgdGhpcy5vblNlbGVjdEl0ZW1FbWl0dGVyLmVtaXQodmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgZGVmaW5lcyB0aGUgdHJhbnNsYXRpb24gb2JqZWN0IGluIHRlbXBsYXRlXG4gKi9cbmludGVyZmFjZSBJVHJhbnNsYXRpb24ge1xuICBwYXRoOiBzdHJpbmc7XG4gIGlzUHJlZml4PzogYm9vbGVhbjtcbiAgdXNlS2V5QXNWYWx1ZT86IGJvb2xlYW47XG4gIHNlcnZpY2U6IGFueTtcbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Zsb2F0TGFiZWxdPVwicGxhY2Vob2xkZXIgPyAnYWx3YXlzJyA6ICdhdXRvJ1wiXG4gID5cbiAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1zZWxlY3RcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZ1xuICAgICAgWyh2YWx1ZSldPVwiY29udHJvbD8udmFsdWUgPyBjb250cm9sLnZhbHVlIDogdmFsdWVcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoJGV2ZW50Py52YWx1ZSlcIlxuICAgICAgI2NoaWxkXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICA+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwidmFsdWVzW2ldXCI+XG4gICAgICAgIDxzcGFuPnt7IHNldERpc3BsYXlLZXkoa2V5KSB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Zvcm0+XG4iXX0=
@@ -13,28 +13,28 @@ import * as i4 from "../icon/icon.component";
13
13
  export class KMSAccordionItemComponent {
14
14
  constructor(sanitizer) {
15
15
  this.sanitizer = sanitizer;
16
- this.itemTitle = '';
17
16
  this.showAsCard = false;
18
17
  this.isSmall = false;
19
18
  this.expanded = false;
20
19
  this.panelOpenState = false;
21
20
  }
22
- ngOnInit() {
23
- this.itemTitleTrustHtml = this.sanitizer.bypassSecurityTrustHtml(this.itemTitle);
21
+ set itemTitle(val) {
22
+ this.itemTitleTrustHtml = this.sanitizer.bypassSecurityTrustHtml(val);
24
23
  }
24
+ ngOnInit() { }
25
25
  }
26
26
  KMSAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KMSAccordionItemComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
27
- KMSAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: KMSAccordionItemComponent, selector: "kms-accordion-item", inputs: { itemTitle: "itemTitle", showAsCard: "showAsCard", isSmall: "isSmall", expanded: "expanded" }, ngImport: i0, template: "<mat-expansion-panel\n class=\"accordion-item\"\n [ngClass]=\"{showAsCard: showAsCard, showFlat: !showAsCard, isSmall: isSmall}\"\n (opened)=\"panelOpenState = true\"\n (closed)=\"panelOpenState = false\"\n [expanded] = \"expanded\"\n hideToggle=\"true\">\n <mat-expansion-panel-header class=\"accordion-item-header\">\n <mat-panel-title class=\"mat-subheading-2 accordion-item-title\">\n <div [innerHtml]=\"itemTitleTrustHtml\"></div>\n <ng-content select=\"[itemTitleElement]\"></ng-content>\n </mat-panel-title>\n <div class=\"accordion-item-header-icon-wrapper\">\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"ic_plus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"ic_minus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"chevron-down\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"chevron-top\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n </div>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n</mat-expansion-panel>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i4.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "size", "dontUseSprite"] }] });
27
+ KMSAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: KMSAccordionItemComponent, selector: "kms-accordion-item", inputs: { showAsCard: "showAsCard", isSmall: "isSmall", expanded: "expanded", itemTitle: "itemTitle" }, ngImport: i0, template: "<mat-expansion-panel\n class=\"accordion-item\"\n [ngClass]=\"{showAsCard: showAsCard, showFlat: !showAsCard, isSmall: isSmall}\"\n (opened)=\"panelOpenState = true\"\n (closed)=\"panelOpenState = false\"\n [expanded] = \"expanded\"\n hideToggle=\"true\">\n <mat-expansion-panel-header class=\"accordion-item-header\">\n <mat-panel-title class=\"mat-subheading-2 accordion-item-title\">\n <div [innerHtml]=\"itemTitleTrustHtml\"></div>\n <ng-content select=\"[itemTitleElement]\"></ng-content>\n </mat-panel-title>\n <div class=\"accordion-item-header-icon-wrapper\">\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"ic_plus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"ic_minus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"chevron-down\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"chevron-top\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n </div>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n</mat-expansion-panel>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i4.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "size", "dontUseSprite"] }] });
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KMSAccordionItemComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{ selector: 'kms-accordion-item', template: "<mat-expansion-panel\n class=\"accordion-item\"\n [ngClass]=\"{showAsCard: showAsCard, showFlat: !showAsCard, isSmall: isSmall}\"\n (opened)=\"panelOpenState = true\"\n (closed)=\"panelOpenState = false\"\n [expanded] = \"expanded\"\n hideToggle=\"true\">\n <mat-expansion-panel-header class=\"accordion-item-header\">\n <mat-panel-title class=\"mat-subheading-2 accordion-item-title\">\n <div [innerHtml]=\"itemTitleTrustHtml\"></div>\n <ng-content select=\"[itemTitleElement]\"></ng-content>\n </mat-panel-title>\n <div class=\"accordion-item-header-icon-wrapper\">\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"ic_plus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"ic_minus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"chevron-down\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"chevron-top\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n </div>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n</mat-expansion-panel>\n" }]
31
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { itemTitle: [{
32
- type: Input
33
- }], showAsCard: [{
31
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { showAsCard: [{
34
32
  type: Input
35
33
  }], isSmall: [{
36
34
  type: Input
37
35
  }], expanded: [{
38
36
  type: Input
37
+ }], itemTitle: [{
38
+ type: Input
39
39
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9rbXMtYWNjb3JkaW9uLWl0ZW0va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9rbXMtYWNjb3JkaW9uLWl0ZW0va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUd6RDs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFBbUIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVIxQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFFc0IsQ0FBQztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQzlELElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztJQUNKLENBQUM7O3NIQWZVLHlCQUF5QjswR0FBekIseUJBQXlCLGtLQ2Z0Qyx5MUNBc0JBOzJGRFBhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxvQkFBb0I7bUdBS2QsU0FBUztzQkFBeEIsS0FBSztnQkFHVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGNvcHlyaWdodCBGTFlBQ1RTIEdtYkggMjAxOVxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBkaWFsb2cgY29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1hY2NvcmRpb24taXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9rbXMtYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rbXMtYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgS01TQWNjb3JkaW9uSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtVGl0bGUgPSAnJztcblxuICBwdWJsaWMgaXRlbVRpdGxlVHJ1c3RIdG1sOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcHVibGljIHNob3dBc0NhcmQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzU21hbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGV4cGFuZGVkID0gZmFsc2U7XG4gIHBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXRlbVRpdGxlVHJ1c3RIdG1sID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXG4gICAgICB0aGlzLml0ZW1UaXRsZVxuICAgICk7XG4gIH1cbn1cbiIsIjxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgY2xhc3M9XCJhY2NvcmRpb24taXRlbVwiXG4gICAgW25nQ2xhc3NdPVwie3Nob3dBc0NhcmQ6IHNob3dBc0NhcmQsIHNob3dGbGF0OiAhc2hvd0FzQ2FyZCwgaXNTbWFsbDogaXNTbWFsbH1cIlxuICAgIChvcGVuZWQpPVwicGFuZWxPcGVuU3RhdGUgPSB0cnVlXCJcbiAgICAoY2xvc2VkKT1cInBhbmVsT3BlblN0YXRlID0gZmFsc2VcIlxuICAgIFtleHBhbmRlZF0gPSBcImV4cGFuZGVkXCJcbiAgICBoaWRlVG9nZ2xlPVwidHJ1ZVwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlclwiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlIGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMiBhY2NvcmRpb24taXRlbS10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIml0ZW1UaXRsZVRydXN0SHRtbFwiPjwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2l0ZW1UaXRsZUVsZW1lbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlci1pY29uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxrbXMtaWNvbiAqbmdJZj1cIiFwYW5lbE9wZW5TdGF0ZVwiIGljb249XCJpY19wbHVzXCIgaWNvbkNsYXNzPVwiY29sb3ItcmVkXCIgY2xhc3M9XCJhY2NvcmRpb24taXRlbS1oZWFkZXItaWNvbi13cmFwcGVyLWRlc2t0b3BcIj48L2ttcy1pY29uPlxuICAgICAgICAgICAgPGttcy1pY29uICpuZ0lmPVwicGFuZWxPcGVuU3RhdGVcIiBpY29uPVwiaWNfbWludXNcIiBpY29uQ2xhc3M9XCJjb2xvci1yZWRcIiBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlci1pY29uLXdyYXBwZXItZGVza3RvcFwiPjwva21zLWljb24+XG5cbiAgICAgICAgICAgIDxrbXMtaWNvbiAqbmdJZj1cIiFwYW5lbE9wZW5TdGF0ZVwiIGljb249XCJjaGV2cm9uLWRvd25cIiBpY29uQ2xhc3M9XCJjb2xvci1yZWRcIiBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlci1pY29uLXdyYXBwZXItbW9iaWxlXCI+PC9rbXMtaWNvbj5cbiAgICAgICAgICAgIDxrbXMtaWNvbiAqbmdJZj1cInBhbmVsT3BlblN0YXRlXCIgaWNvbj1cImNoZXZyb24tdG9wXCIgaWNvbkNsYXNzPVwiY29sb3ItcmVkXCIgY2xhc3M9XCJhY2NvcmRpb24taXRlbS1oZWFkZXItaWNvbi13cmFwcGVyLW1vYmlsZVwiPjwva21zLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9rbXMtYWNjb3JkaW9uLWl0ZW0va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9rbXMtYWNjb3JkaW9uLWl0ZW0va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUd6RDs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFZcEMsWUFBbUIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVYxQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU1qQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUVzQixDQUFDO0lBUDlDLElBQ1csU0FBUyxDQUFDLEdBQVc7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQU1ELFFBQVEsS0FBSSxDQUFDOztzSEFkRix5QkFBeUI7MEdBQXpCLHlCQUF5QixrS0NmdEMseTFDQXNCQTsyRkRQYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9CO21HQU1kLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVLLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBjb3B5cmlnaHQgRkxZQUNUUyBHbWJIIDIwMTlcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgZGlhbG9nIGNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtYWNjb3JkaW9uLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEtNU0FjY29yZGlvbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgaXRlbVRpdGxlVHJ1c3RIdG1sOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcHVibGljIHNob3dBc0NhcmQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzU21hbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGV4cGFuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXRlbVRpdGxlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5pdGVtVGl0bGVUcnVzdEh0bWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWwpO1xuICB9XG5cbiAgcGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuIiwiPG1hdC1leHBhbnNpb24tcGFuZWxcbiAgICBjbGFzcz1cImFjY29yZGlvbi1pdGVtXCJcbiAgICBbbmdDbGFzc109XCJ7c2hvd0FzQ2FyZDogc2hvd0FzQ2FyZCwgc2hvd0ZsYXQ6ICFzaG93QXNDYXJkLCBpc1NtYWxsOiBpc1NtYWxsfVwiXG4gICAgKG9wZW5lZCk9XCJwYW5lbE9wZW5TdGF0ZSA9IHRydWVcIlxuICAgIChjbG9zZWQpPVwicGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiXG4gICAgW2V4cGFuZGVkXSA9IFwiZXhwYW5kZWRcIlxuICAgIGhpZGVUb2dnbGU9XCJ0cnVlXCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW0taGVhZGVyXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0yIGFjY29yZGlvbi1pdGVtLXRpdGxlXCI+XG4gICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiaXRlbVRpdGxlVHJ1c3RIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaXRlbVRpdGxlRWxlbWVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW0taGVhZGVyLWljb24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGttcy1pY29uICpuZ0lmPVwiIXBhbmVsT3BlblN0YXRlXCIgaWNvbj1cImljX3BsdXNcIiBpY29uQ2xhc3M9XCJjb2xvci1yZWRcIiBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlci1pY29uLXdyYXBwZXItZGVza3RvcFwiPjwva21zLWljb24+XG4gICAgICAgICAgICA8a21zLWljb24gKm5nSWY9XCJwYW5lbE9wZW5TdGF0ZVwiIGljb249XCJpY19taW51c1wiIGljb25DbGFzcz1cImNvbG9yLXJlZFwiIGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW0taGVhZGVyLWljb24td3JhcHBlci1kZXNrdG9wXCI+PC9rbXMtaWNvbj5cblxuICAgICAgICAgICAgPGttcy1pY29uICpuZ0lmPVwiIXBhbmVsT3BlblN0YXRlXCIgaWNvbj1cImNoZXZyb24tZG93blwiIGljb25DbGFzcz1cImNvbG9yLXJlZFwiIGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW0taGVhZGVyLWljb24td3JhcHBlci1tb2JpbGVcIj48L2ttcy1pY29uPlxuICAgICAgICAgICAgPGttcy1pY29uICpuZ0lmPVwicGFuZWxPcGVuU3RhdGVcIiBpY29uPVwiY2hldnJvbi10b3BcIiBpY29uQ2xhc3M9XCJjb2xvci1yZWRcIiBjbGFzcz1cImFjY29yZGlvbi1pdGVtLWhlYWRlci1pY29uLXdyYXBwZXItbW9iaWxlXCI+PC9rbXMtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L21hdC1leHBhbnNpb24tcGFuZWw+XG4iXX0=