igot-cb-tour-guide 1.0.3-ang-9-12 → 1.0.3-ang-13-16

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 (38) hide show
  1. package/esm2022/lib/guided-tour.component.mjs +363 -0
  2. package/esm2022/lib/guided-tour.constants.mjs +19 -0
  3. package/esm2022/lib/guided-tour.module.mjs +28 -0
  4. package/esm2022/lib/guided-tour.service.mjs +227 -0
  5. package/esm2022/lib/windowref.service.mjs +43 -0
  6. package/fesm2022/igot-cb-tour-guide.mjs +670 -0
  7. package/fesm2022/igot-cb-tour-guide.mjs.map +1 -0
  8. package/igot-cb-tour-guide-1.0.3-ang-13-16.tgz +0 -0
  9. package/{igot-cb-tour-guide.d.ts → index.d.ts} +0 -1
  10. package/lib/guided-tour.component.d.ts +1 -2
  11. package/lib/guided-tour.constants.d.ts +0 -1
  12. package/lib/guided-tour.module.d.ts +1 -3
  13. package/lib/guided-tour.service.d.ts +0 -1
  14. package/lib/windowref.service.d.ts +0 -1
  15. package/package.json +41 -8
  16. package/public_api.d.ts +0 -1
  17. package/bundles/igot-cb-tour-guide.umd.js +0 -796
  18. package/bundles/igot-cb-tour-guide.umd.js.map +0 -1
  19. package/css/guided-tour-base-theme.css +0 -74
  20. package/css/guided-tour.component.css +0 -276
  21. package/esm2015/lib/guided-tour.component.js +0 -360
  22. package/esm2015/lib/guided-tour.constants.js +0 -19
  23. package/esm2015/lib/guided-tour.module.js +0 -29
  24. package/esm2015/lib/guided-tour.service.js +0 -221
  25. package/esm2015/lib/windowref.service.js +0 -43
  26. package/fesm2015/igot-cb-tour-guide.js +0 -665
  27. package/fesm2015/igot-cb-tour-guide.js.map +0 -1
  28. package/igot-cb-tour-guide.d.ts.map +0 -1
  29. package/lib/guided-tour.component.d.ts.map +0 -1
  30. package/lib/guided-tour.constants.d.ts.map +0 -1
  31. package/lib/guided-tour.module.d.ts.map +0 -1
  32. package/lib/guided-tour.service.d.ts.map +0 -1
  33. package/lib/windowref.service.d.ts.map +0 -1
  34. package/public_api.d.ts.map +0 -1
  35. package/scss/guided-tour-base-theme.scss +0 -144
  36. package/scss/guided-tour.component.scss +0 -374
  37. /package/{esm2015/igot-cb-tour-guide.js → esm2022/igot-cb-tour-guide.mjs} +0 -0
  38. /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
@@ -0,0 +1,363 @@
1
+ import { Component, ElementRef, Input, ViewChild, ViewEncapsulation, TemplateRef, Inject } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { Orientation, ProgressIndicatorLocation } from './guided-tour.constants';
5
+ import { GuidedTourService } from './guided-tour.service';
6
+ import { WindowRefService } from "./windowref.service";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./guided-tour.service";
9
+ import * as i2 from "./windowref.service";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/material/icon";
12
+ export class GuidedTourComponent {
13
+ guidedTourService;
14
+ windowRef;
15
+ dom;
16
+ topOfPageAdjustment = 0;
17
+ tourStepWidth = 300;
18
+ minimalTourStepWidth = 200;
19
+ skipText = 'Skip';
20
+ nextText = 'Next';
21
+ doneText = 'Done';
22
+ closeText = 'Close';
23
+ backText = 'Back';
24
+ progressIndicatorLocation = ProgressIndicatorLocation.InsideNextButton;
25
+ progressIndicator = undefined;
26
+ tourStep;
27
+ highlightPadding = 4;
28
+ currentTourStep = null;
29
+ selectedElementRect = null;
30
+ isOrbShowing = false;
31
+ progressIndicatorLocations = ProgressIndicatorLocation;
32
+ resizeSubscription;
33
+ scrollSubscription;
34
+ constructor(guidedTourService, windowRef, dom) {
35
+ this.guidedTourService = guidedTourService;
36
+ this.windowRef = windowRef;
37
+ this.dom = dom;
38
+ }
39
+ get maxWidthAdjustmentForTourStep() {
40
+ return this.tourStepWidth - this.minimalTourStepWidth;
41
+ }
42
+ get widthAdjustmentForScreenBound() {
43
+ if (!this.tourStep) {
44
+ return 0;
45
+ }
46
+ let adjustment = 0;
47
+ if (this.calculatedLeftPosition < 0) {
48
+ adjustment = -this.calculatedLeftPosition;
49
+ }
50
+ if (this.calculatedLeftPosition > this.windowRef.nativeWindow.innerWidth - this.tourStepWidth) {
51
+ adjustment = this.calculatedLeftPosition - (this.windowRef.nativeWindow.innerWidth - this.tourStepWidth);
52
+ }
53
+ return Math.min(this.maxWidthAdjustmentForTourStep, adjustment);
54
+ }
55
+ get calculatedTourStepWidth() {
56
+ return this.tourStepWidth - this.widthAdjustmentForScreenBound;
57
+ }
58
+ ngAfterViewInit() {
59
+ this.guidedTourService.guidedTourCurrentStepStream.subscribe((step) => {
60
+ this.currentTourStep = step;
61
+ if (step && step.selector) {
62
+ const selectedElement = this.dom.querySelector(step.selector);
63
+ if (selectedElement) {
64
+ this.scrollToAndSetElement();
65
+ }
66
+ else {
67
+ this.selectedElementRect = null;
68
+ }
69
+ }
70
+ else {
71
+ this.selectedElementRect = null;
72
+ }
73
+ });
74
+ this.guidedTourService.guidedTourOrbShowingStream.subscribe((value) => {
75
+ this.isOrbShowing = value;
76
+ });
77
+ this.resizeSubscription = fromEvent(this.windowRef.nativeWindow, 'resize').subscribe(() => {
78
+ this.updateStepLocation();
79
+ });
80
+ this.scrollSubscription = fromEvent(this.windowRef.nativeWindow, 'scroll').subscribe(() => {
81
+ this.updateStepLocation();
82
+ });
83
+ }
84
+ ngOnDestroy() {
85
+ this.resizeSubscription.unsubscribe();
86
+ this.scrollSubscription.unsubscribe();
87
+ }
88
+ scrollToAndSetElement() {
89
+ this.updateStepLocation();
90
+ // Allow things to render to scroll to the correct location
91
+ setTimeout(() => {
92
+ if (!this.isOrbShowing && !this.isTourOnScreen()) {
93
+ if (this.selectedElementRect && this.isBottom()) {
94
+ // Scroll so the element is on the top of the screen.
95
+ const topPos = ((this.windowRef.nativeWindow.scrollY + this.selectedElementRect.top) - this.topOfPageAdjustment)
96
+ - (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)
97
+ + this.getStepScreenAdjustment();
98
+ try {
99
+ this.windowRef.nativeWindow.scrollTo({
100
+ left: null,
101
+ top: topPos,
102
+ behavior: 'smooth'
103
+ });
104
+ }
105
+ catch (err) {
106
+ if (err instanceof TypeError) {
107
+ this.windowRef.nativeWindow.scroll(0, topPos);
108
+ }
109
+ else {
110
+ throw err;
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ // Scroll so the element is on the bottom of the screen.
116
+ const topPos = (this.windowRef.nativeWindow.scrollY + this.selectedElementRect.top + this.selectedElementRect.height)
117
+ - this.windowRef.nativeWindow.innerHeight
118
+ + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)
119
+ - this.getStepScreenAdjustment();
120
+ try {
121
+ this.windowRef.nativeWindow.scrollTo({
122
+ left: null,
123
+ top: topPos,
124
+ behavior: 'smooth'
125
+ });
126
+ }
127
+ catch (err) {
128
+ if (err instanceof TypeError) {
129
+ this.windowRef.nativeWindow.scroll(0, topPos);
130
+ }
131
+ else {
132
+ throw err;
133
+ }
134
+ }
135
+ }
136
+ }
137
+ });
138
+ }
139
+ handleOrb() {
140
+ this.guidedTourService.activateOrb();
141
+ if (this.currentTourStep && this.currentTourStep.selector) {
142
+ this.scrollToAndSetElement();
143
+ }
144
+ }
145
+ isTourOnScreen() {
146
+ return this.tourStep
147
+ && this.elementInViewport(this.dom.querySelector(this.currentTourStep.selector))
148
+ && this.elementInViewport(this.tourStep.nativeElement);
149
+ }
150
+ // Modified from https://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport
151
+ elementInViewport(element) {
152
+ let top = element.offsetTop;
153
+ const height = element.offsetHeight;
154
+ while (element.offsetParent) {
155
+ element = element.offsetParent;
156
+ top += element.offsetTop;
157
+ }
158
+ if (this.isBottom()) {
159
+ return (top >= (this.windowRef.nativeWindow.pageYOffset
160
+ + this.topOfPageAdjustment
161
+ + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)
162
+ + this.getStepScreenAdjustment())
163
+ && (top + height) <= (this.windowRef.nativeWindow.pageYOffset + this.windowRef.nativeWindow.innerHeight));
164
+ }
165
+ else {
166
+ return (top >= (this.windowRef.nativeWindow.pageYOffset + this.topOfPageAdjustment - this.getStepScreenAdjustment())
167
+ && (top + height + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)) <= (this.windowRef.nativeWindow.pageYOffset + this.windowRef.nativeWindow.innerHeight));
168
+ }
169
+ }
170
+ backdropClick(event) {
171
+ if (this.guidedTourService.preventBackdropFromAdvancing) {
172
+ event.stopPropagation();
173
+ }
174
+ else {
175
+ this.guidedTourService.nextStep();
176
+ }
177
+ }
178
+ updateStepLocation() {
179
+ if (this.currentTourStep && this.currentTourStep.selector) {
180
+ const selectedElement = this.dom.querySelector(this.currentTourStep.selector);
181
+ if (selectedElement && typeof selectedElement.getBoundingClientRect === 'function') {
182
+ this.selectedElementRect = selectedElement.getBoundingClientRect();
183
+ }
184
+ else {
185
+ this.selectedElementRect = null;
186
+ }
187
+ }
188
+ else {
189
+ this.selectedElementRect = null;
190
+ }
191
+ }
192
+ isBottom() {
193
+ return this.currentTourStep.orientation
194
+ && (this.currentTourStep.orientation === Orientation.Bottom
195
+ || this.currentTourStep.orientation === Orientation.BottomLeft
196
+ || this.currentTourStep.orientation === Orientation.BottomRight);
197
+ }
198
+ get topPosition() {
199
+ const paddingAdjustment = this.getHighlightPadding();
200
+ if (this.isBottom()) {
201
+ return this.selectedElementRect.top + this.selectedElementRect.height + paddingAdjustment;
202
+ }
203
+ return this.selectedElementRect.top - this.getHighlightPadding();
204
+ }
205
+ get orbTopPosition() {
206
+ if (this.isBottom()) {
207
+ return this.selectedElementRect.top + this.selectedElementRect.height;
208
+ }
209
+ if (this.currentTourStep.orientation === Orientation.Right
210
+ || this.currentTourStep.orientation === Orientation.Left) {
211
+ return (this.selectedElementRect.top + (this.selectedElementRect.height / 2));
212
+ }
213
+ return this.selectedElementRect.top;
214
+ }
215
+ get calculatedLeftPosition() {
216
+ const paddingAdjustment = this.getHighlightPadding();
217
+ if (this.currentTourStep.orientation === Orientation.TopRight
218
+ || this.currentTourStep.orientation === Orientation.BottomRight) {
219
+ return (this.selectedElementRect.right - this.tourStepWidth);
220
+ }
221
+ if (this.currentTourStep.orientation === Orientation.TopLeft
222
+ || this.currentTourStep.orientation === Orientation.BottomLeft) {
223
+ return (this.selectedElementRect.left);
224
+ }
225
+ if (this.currentTourStep.orientation === Orientation.Left) {
226
+ return this.selectedElementRect.left - this.tourStepWidth - paddingAdjustment;
227
+ }
228
+ if (this.currentTourStep.orientation === Orientation.Right) {
229
+ return (this.selectedElementRect.left + this.selectedElementRect.width + paddingAdjustment);
230
+ }
231
+ return (this.selectedElementRect.right - (this.selectedElementRect.width / 2) - (this.tourStepWidth / 2));
232
+ }
233
+ get leftPosition() {
234
+ if (this.calculatedLeftPosition >= 0) {
235
+ return this.calculatedLeftPosition;
236
+ }
237
+ const adjustment = Math.max(0, -this.calculatedLeftPosition);
238
+ const maxAdjustment = Math.min(this.maxWidthAdjustmentForTourStep, adjustment);
239
+ return this.calculatedLeftPosition + maxAdjustment;
240
+ }
241
+ get orbLeftPosition() {
242
+ if (this.currentTourStep.orientation === Orientation.TopRight
243
+ || this.currentTourStep.orientation === Orientation.BottomRight) {
244
+ return this.selectedElementRect.right;
245
+ }
246
+ if (this.currentTourStep.orientation === Orientation.TopLeft
247
+ || this.currentTourStep.orientation === Orientation.BottomLeft) {
248
+ return this.selectedElementRect.left;
249
+ }
250
+ if (this.currentTourStep.orientation === Orientation.Left) {
251
+ return this.selectedElementRect.left;
252
+ }
253
+ if (this.currentTourStep.orientation === Orientation.Right) {
254
+ return (this.selectedElementRect.left + this.selectedElementRect.width);
255
+ }
256
+ return (this.selectedElementRect.right - (this.selectedElementRect.width / 2));
257
+ }
258
+ get transform() {
259
+ if (!this.currentTourStep.orientation
260
+ || this.currentTourStep.orientation === Orientation.Top
261
+ || this.currentTourStep.orientation === Orientation.TopRight
262
+ || this.currentTourStep.orientation === Orientation.TopLeft) {
263
+ return 'translateY(-100%)';
264
+ }
265
+ return null;
266
+ }
267
+ get orbTransform() {
268
+ if (!this.currentTourStep.orientation
269
+ || this.currentTourStep.orientation === Orientation.Top
270
+ || this.currentTourStep.orientation === Orientation.Bottom
271
+ || this.currentTourStep.orientation === Orientation.TopLeft
272
+ || this.currentTourStep.orientation === Orientation.BottomLeft) {
273
+ return 'translateY(-50%)';
274
+ }
275
+ if (this.currentTourStep.orientation === Orientation.TopRight
276
+ || this.currentTourStep.orientation === Orientation.BottomRight) {
277
+ return 'translate(-100%, -50%)';
278
+ }
279
+ if (this.currentTourStep.orientation === Orientation.Right
280
+ || this.currentTourStep.orientation === Orientation.Left) {
281
+ return 'translate(-50%, -50%)';
282
+ }
283
+ return null;
284
+ }
285
+ get overlayTop() {
286
+ if (this.selectedElementRect) {
287
+ return this.selectedElementRect.top - this.getHighlightPadding();
288
+ }
289
+ return 0;
290
+ }
291
+ get overlayLeft() {
292
+ if (this.selectedElementRect) {
293
+ return this.selectedElementRect.left - this.getHighlightPadding();
294
+ }
295
+ return 0;
296
+ }
297
+ get overlayHeight() {
298
+ if (this.selectedElementRect) {
299
+ return this.selectedElementRect.height + (this.getHighlightPadding() * 2);
300
+ }
301
+ return 0;
302
+ }
303
+ get overlayWidth() {
304
+ if (this.selectedElementRect) {
305
+ return this.selectedElementRect.width + (this.getHighlightPadding() * 2);
306
+ }
307
+ return 0;
308
+ }
309
+ getHighlightPadding() {
310
+ let paddingAdjustment = this.currentTourStep.useHighlightPadding ? this.highlightPadding : 0;
311
+ if (this.currentTourStep.highlightPadding) {
312
+ paddingAdjustment = this.currentTourStep.highlightPadding;
313
+ }
314
+ return paddingAdjustment;
315
+ }
316
+ // This calculates a value to add or subtract so the step should not be off screen.
317
+ getStepScreenAdjustment() {
318
+ if (this.currentTourStep.orientation === Orientation.Left
319
+ || this.currentTourStep.orientation === Orientation.Right) {
320
+ return 0;
321
+ }
322
+ const scrollAdjustment = this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0;
323
+ const tourStepHeight = typeof this.tourStep.nativeElement.getBoundingClientRect === 'function' ? this.tourStep.nativeElement.getBoundingClientRect().height : 0;
324
+ const elementHeight = this.selectedElementRect.height + scrollAdjustment + tourStepHeight;
325
+ if ((this.windowRef.nativeWindow.innerHeight - this.topOfPageAdjustment) < elementHeight) {
326
+ return elementHeight - (this.windowRef.nativeWindow.innerHeight - this.topOfPageAdjustment);
327
+ }
328
+ return 0;
329
+ }
330
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourComponent, deps: [{ token: i1.GuidedTourService }, { token: i2.WindowRefService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
331
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GuidedTourComponent, selector: "ngx-guided-tour", inputs: { topOfPageAdjustment: "topOfPageAdjustment", tourStepWidth: "tourStepWidth", minimalTourStepWidth: "minimalTourStepWidth", skipText: "skipText", nextText: "nextText", doneText: "doneText", closeText: "closeText", backText: "backText", progressIndicatorLocation: "progressIndicatorLocation", progressIndicator: "progressIndicator" }, viewQueries: [{ propertyName: "tourStep", first: true, predicate: ["tourStep"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"currentTourStep && selectedElementRect && isOrbShowing\" (mouseenter)=\"handleOrb()\"\n class=\"tour-orb tour-{{ currentTourStep.orientation }}\" [style.top.px]=\"orbTopPosition\"\n [style.left.px]=\"orbLeftPosition\" [style.transform]=\"orbTransform\">\n <div class=\"tour-orb-ring\"></div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div class=\"guided-tour-user-input-mask\" (click)=\"backdropClick($event)\"></div>\n <div class=\"\" [attr.class]=\"'guided-tour-spotlight-overlay ' + currentTourStep?.class\" [style.top.px]=\"overlayTop\"\n [style.left.px]=\"overlayLeft\" [style.height.px]=\"overlayHeight\" [style.width.px]=\"overlayWidth\">\n </div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div #tourStep *ngIf=\"currentTourStep\"\n class=\"tour-step tour-{{ currentTourStep.orientation}} {{currentTourStep?.containerClass}}\" [ngClass]=\"{\n 'page-tour-step': !currentTourStep.selector,\n 'right-panel': currentTourStep.connectorDirection == 'right',\n 'left-panel': currentTourStep.connectorDirection == 'left',\n 'bottom-panel': currentTourStep.connectorDirection == 'bottom',\n 'top-panel': currentTourStep.connectorDirection == 'top'\n }\" [style.top.px]=\"(currentTourStep.selector && selectedElementRect ? topPosition : null)\"\n [style.left.px]=\"(currentTourStep.selector && selectedElementRect ? leftPosition : null)\"\n [style.width.px]=\"(currentTourStep.selector && selectedElementRect ? calculatedTourStepWidth : null)\"\n [style.transform]=\"(currentTourStep.selector && selectedElementRect ? transform : null)\">\n\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection == 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n <div *ngIf=\"currentTourStep.selector\" class=\"tour-arrow\"></div>\n <div class=\"tour-block\">\n <div class=\"arrow\" [ngClass]=\"{\n 'right-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'right'),\n 'left-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'left'),\n 'bottom-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'bottom'),\n 'top-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'top')\n }\">\n <div class=\"circle\"></div>\n <div class=\"circle-start-dot\"></div>\n <div class=\"triangle\"></div>\n </div>\n\n <div *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.TopOfTourBlock\n && !guidedTourService.onResizeMessage\" class=\"tour-progress-indicator\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </div>\n <div class=\"tour-image\" *ngIf=\"currentTourStep.icon && currentTourStep.selector\">\n <mat-icon>{{currentTourStep.icon}}</mat-icon>\n </div>\n <h3 class=\"tour-title\" *ngIf=\"currentTourStep.title && currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h3>\n <h2 class=\"tour-title\" *ngIf=\"currentTourStep.title && !currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h2>\n <div class=\"tour-content\" [innerHTML]=\"currentTourStep.content\"></div>\n <div *ngIf=\"!currentTourStep.isMobile\" class=\"tour-buttons tour-button-container\">\n <!-- <div class=\"tour-skip-container\">\n <button *ngIf=\"!guidedTourService.onResizeMessage\"\n (click)=\"guidedTourService.skipTour()\"\n [attr.class]=\"currentTourStep?.skipBtnClass + ' skip-button link-button'\">\n {{ skipText }}\n </button>\n </div> -->\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n\n <div class=\"progress-container\">\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </div>\n\n </div>\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection != 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n </div>\n <ng-template #progress>\n <ng-container *ngTemplateOutlet=\"\n progressIndicator || defaultProgressIndicator; \n context: { currentStepNumber: guidedTourService.currentTourStepDisplay, totalSteps: guidedTourService.currentTourStepCount }\n \"></ng-container>\n </ng-template>\n <ng-template #defaultProgressIndicator let-currentStepNumber=\"currentStepNumber\" let-totalSteps=\"totalSteps\">\n <!-- <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">&nbsp;</ng-container>{{ currentStepNumber }}/{{ totalSteps }} -->\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <div class=\"pagination\">\n <li class=\"nav-dots\">\n <ng-container *ngFor=\"let dot of [].constructor(totalSteps); first as isFirst; index as i\">\n <label [ngClass]=\"(currentStepNumber == (i+1)) ? 'nav-dot-active': ''\" class=\"nav-dot\"\n id=\"img-dot-+{{i}}+{{currentStepNumber}}\"></label>\n </ng-container>\n </li>\n </div>\n </ng-container>\n </ng-template>", styles: ["ngx-guided-tour .guided-tour-user-input-mask{position:fixed;top:0;left:0;display:block;height:100%;width:100%;max-height:100vh;text-align:center;opacity:0}ngx-guided-tour .guided-tour-spotlight-overlay{position:fixed;box-shadow:0 0 0 9999px #000000b3,0 0 1.5rem #00000080}ngx-guided-tour .tour-orb{position:fixed;width:20px;height:20px;border-radius:50%}ngx-guided-tour .tour-orb .tour-orb-ring{width:35px;height:35px;position:relative;top:50%;left:50%;transform:translate(-50%,-50%);animation:pulse 2s linear infinite}ngx-guided-tour .tour-orb .tour-orb-ring:after{content:\"\";display:inline-block;height:100%;width:100%;border-radius:50%}@keyframes pulse{0%{transform:translate(-50%,-50%) scale(.45);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:0}}ngx-guided-tour .tour-step{position:fixed}ngx-guided-tour .tour-step.page-tour-step{max-width:400px;width:50%;left:50%;top:50%;transform:translate(-50%,-50%)}ngx-guided-tour .tour-step.tour-bottom .tour-arrow:before,ngx-guided-tour .tour-step.tour-bottom-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-bottom-left .tour-arrow:before{position:absolute}ngx-guided-tour .tour-step.tour-bottom .tour-block,ngx-guided-tour .tour-step.tour-bottom-right .tour-block,ngx-guided-tour .tour-step.tour-bottom-left .tour-block{margin-top:10px}ngx-guided-tour .tour-step.tour-top,ngx-guided-tour .tour-step.tour-top-right,ngx-guided-tour .tour-step.tour-top-left{margin-bottom:10px}ngx-guided-tour .tour-step.tour-top .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-left .tour-arrow:before{position:absolute;bottom:0}ngx-guided-tour .tour-step.tour-top .tour-block,ngx-guided-tour .tour-step.tour-top-right .tour-block,ngx-guided-tour .tour-step.tour-top-left .tour-block{margin-bottom:10px}ngx-guided-tour .tour-step.tour-bottom .tour-arrow:before,ngx-guided-tour .tour-step.tour-top .tour-arrow:before{transform:translate(-50%);left:50%}ngx-guided-tour .tour-step.tour-bottom-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-right .tour-arrow:before{transform:translate(-100%);left:calc(100% - 5px)}ngx-guided-tour .tour-step.tour-bottom-left .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-left .tour-arrow:before{left:5px}ngx-guided-tour .tour-step.tour-left .tour-arrow:before{position:absolute;left:100%;transform:translate(-100%);top:5px}ngx-guided-tour .tour-step.tour-left .tour-block{margin-right:10px}ngx-guided-tour .tour-step.tour-right .tour-arrow:before{position:absolute;left:0;top:5px}ngx-guided-tour .tour-step.tour-right .tour-block{margin-left:10px}ngx-guided-tour .tour-step .tour-block{padding:15px 25px}ngx-guided-tour .tour-step .tour-progress-indicator{padding-bottom:15px}ngx-guided-tour .tour-step .tour-title{font-weight:700!important;padding-bottom:20px}ngx-guided-tour .tour-step h3.tour-title{font-size:20px}ngx-guided-tour .tour-step h2.tour-title{font-size:30px}ngx-guided-tour .tour-step .tour-content{min-height:80px;padding-bottom:30px;font-size:15px}ngx-guided-tour .tour-step .tour-buttons{overflow:hidden}ngx-guided-tour .tour-step .tour-buttons button.link-button{font-size:15px;font-weight:700;max-width:none!important;cursor:pointer;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;line-height:1.5;background-color:transparent;position:relative;outline:none;padding:0 15px;-webkit-appearance:button}ngx-guided-tour .tour-step .tour-buttons button.skip-button.link-button{padding-left:0;border-left:0}ngx-guided-tour .tour-step .tour-buttons .back-button{cursor:pointer;border-radius:1px;font-size:14px;border:none;outline:none;padding-left:10px;padding-right:10px}ngx-guided-tour .tour-step .tour-buttons .next-button{cursor:pointer;border-radius:1px;font-size:14px;border:none;outline:none;padding-left:10px;padding-right:10px}.arrow{position:absolute;left:-50px;top:-13px}.right-connector{transform:scaleX(-1);left:0;right:-46px}.circle{position:absolute;box-sizing:border-box;height:118px;width:100px;border:7px solid #000;border-radius:50%;clip-path:inset(0 50% 0 0);border-style:dotted}.triangle{position:absolute;width:20px;height:15px;background:#000;margin-top:-6px;margin-left:38px;clip-path:polygon(50% 0,0% 100%,100% 100%);transform:rotate(90deg)}.circle-start-dot{display:inline;width:16px;height:16px;background-color:#f3962e;content:\"\";border-radius:50%;position:absolute;margin-top:108px;margin-left:40px}.tour-step.left-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.right-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.top-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.bottom-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.progress-container{display:flex;justify-content:center;align-items:center}.pagination{display:flex;justify-content:center;align-items:center;padding:.5rem}.nav-dots{display:inline-block;position:relative;width:auto;height:10px;border-radius:50%;cursor:default;margin:2px}.nav-dots .nav-dot{top:-5px;width:11px;height:11px;margin:0 4px;position:relative;border-radius:100%;display:inline-block;background-color:#d3d3d3}.nav-dot-active{background:#113463}.top-connector{top:-116px!important;right:173px!important}.top-connector .circle{top:50px;left:80px;transform:rotate(180deg);width:50px;height:70px}.top-connector .circle-start-dot{margin-left:100px}.top-connector .triangle{left:63px;top:49px;transform:rotate(44deg)!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
332
+ }
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourComponent, decorators: [{
334
+ type: Component,
335
+ args: [{ selector: 'ngx-guided-tour', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"currentTourStep && selectedElementRect && isOrbShowing\" (mouseenter)=\"handleOrb()\"\n class=\"tour-orb tour-{{ currentTourStep.orientation }}\" [style.top.px]=\"orbTopPosition\"\n [style.left.px]=\"orbLeftPosition\" [style.transform]=\"orbTransform\">\n <div class=\"tour-orb-ring\"></div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div class=\"guided-tour-user-input-mask\" (click)=\"backdropClick($event)\"></div>\n <div class=\"\" [attr.class]=\"'guided-tour-spotlight-overlay ' + currentTourStep?.class\" [style.top.px]=\"overlayTop\"\n [style.left.px]=\"overlayLeft\" [style.height.px]=\"overlayHeight\" [style.width.px]=\"overlayWidth\">\n </div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div #tourStep *ngIf=\"currentTourStep\"\n class=\"tour-step tour-{{ currentTourStep.orientation}} {{currentTourStep?.containerClass}}\" [ngClass]=\"{\n 'page-tour-step': !currentTourStep.selector,\n 'right-panel': currentTourStep.connectorDirection == 'right',\n 'left-panel': currentTourStep.connectorDirection == 'left',\n 'bottom-panel': currentTourStep.connectorDirection == 'bottom',\n 'top-panel': currentTourStep.connectorDirection == 'top'\n }\" [style.top.px]=\"(currentTourStep.selector && selectedElementRect ? topPosition : null)\"\n [style.left.px]=\"(currentTourStep.selector && selectedElementRect ? leftPosition : null)\"\n [style.width.px]=\"(currentTourStep.selector && selectedElementRect ? calculatedTourStepWidth : null)\"\n [style.transform]=\"(currentTourStep.selector && selectedElementRect ? transform : null)\">\n\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection == 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n <div *ngIf=\"currentTourStep.selector\" class=\"tour-arrow\"></div>\n <div class=\"tour-block\">\n <div class=\"arrow\" [ngClass]=\"{\n 'right-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'right'),\n 'left-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'left'),\n 'bottom-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'bottom'),\n 'top-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'top')\n }\">\n <div class=\"circle\"></div>\n <div class=\"circle-start-dot\"></div>\n <div class=\"triangle\"></div>\n </div>\n\n <div *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.TopOfTourBlock\n && !guidedTourService.onResizeMessage\" class=\"tour-progress-indicator\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </div>\n <div class=\"tour-image\" *ngIf=\"currentTourStep.icon && currentTourStep.selector\">\n <mat-icon>{{currentTourStep.icon}}</mat-icon>\n </div>\n <h3 class=\"tour-title\" *ngIf=\"currentTourStep.title && currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h3>\n <h2 class=\"tour-title\" *ngIf=\"currentTourStep.title && !currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h2>\n <div class=\"tour-content\" [innerHTML]=\"currentTourStep.content\"></div>\n <div *ngIf=\"!currentTourStep.isMobile\" class=\"tour-buttons tour-button-container\">\n <!-- <div class=\"tour-skip-container\">\n <button *ngIf=\"!guidedTourService.onResizeMessage\"\n (click)=\"guidedTourService.skipTour()\"\n [attr.class]=\"currentTourStep?.skipBtnClass + ' skip-button link-button'\">\n {{ skipText }}\n </button>\n </div> -->\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n\n <div class=\"progress-container\">\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </div>\n\n </div>\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection != 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n </div>\n <ng-template #progress>\n <ng-container *ngTemplateOutlet=\"\n progressIndicator || defaultProgressIndicator; \n context: { currentStepNumber: guidedTourService.currentTourStepDisplay, totalSteps: guidedTourService.currentTourStepCount }\n \"></ng-container>\n </ng-template>\n <ng-template #defaultProgressIndicator let-currentStepNumber=\"currentStepNumber\" let-totalSteps=\"totalSteps\">\n <!-- <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">&nbsp;</ng-container>{{ currentStepNumber }}/{{ totalSteps }} -->\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <div class=\"pagination\">\n <li class=\"nav-dots\">\n <ng-container *ngFor=\"let dot of [].constructor(totalSteps); first as isFirst; index as i\">\n <label [ngClass]=\"(currentStepNumber == (i+1)) ? 'nav-dot-active': ''\" class=\"nav-dot\"\n id=\"img-dot-+{{i}}+{{currentStepNumber}}\"></label>\n </ng-container>\n </li>\n </div>\n </ng-container>\n </ng-template>", styles: ["ngx-guided-tour .guided-tour-user-input-mask{position:fixed;top:0;left:0;display:block;height:100%;width:100%;max-height:100vh;text-align:center;opacity:0}ngx-guided-tour .guided-tour-spotlight-overlay{position:fixed;box-shadow:0 0 0 9999px #000000b3,0 0 1.5rem #00000080}ngx-guided-tour .tour-orb{position:fixed;width:20px;height:20px;border-radius:50%}ngx-guided-tour .tour-orb .tour-orb-ring{width:35px;height:35px;position:relative;top:50%;left:50%;transform:translate(-50%,-50%);animation:pulse 2s linear infinite}ngx-guided-tour .tour-orb .tour-orb-ring:after{content:\"\";display:inline-block;height:100%;width:100%;border-radius:50%}@keyframes pulse{0%{transform:translate(-50%,-50%) scale(.45);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:0}}ngx-guided-tour .tour-step{position:fixed}ngx-guided-tour .tour-step.page-tour-step{max-width:400px;width:50%;left:50%;top:50%;transform:translate(-50%,-50%)}ngx-guided-tour .tour-step.tour-bottom .tour-arrow:before,ngx-guided-tour .tour-step.tour-bottom-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-bottom-left .tour-arrow:before{position:absolute}ngx-guided-tour .tour-step.tour-bottom .tour-block,ngx-guided-tour .tour-step.tour-bottom-right .tour-block,ngx-guided-tour .tour-step.tour-bottom-left .tour-block{margin-top:10px}ngx-guided-tour .tour-step.tour-top,ngx-guided-tour .tour-step.tour-top-right,ngx-guided-tour .tour-step.tour-top-left{margin-bottom:10px}ngx-guided-tour .tour-step.tour-top .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-left .tour-arrow:before{position:absolute;bottom:0}ngx-guided-tour .tour-step.tour-top .tour-block,ngx-guided-tour .tour-step.tour-top-right .tour-block,ngx-guided-tour .tour-step.tour-top-left .tour-block{margin-bottom:10px}ngx-guided-tour .tour-step.tour-bottom .tour-arrow:before,ngx-guided-tour .tour-step.tour-top .tour-arrow:before{transform:translate(-50%);left:50%}ngx-guided-tour .tour-step.tour-bottom-right .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-right .tour-arrow:before{transform:translate(-100%);left:calc(100% - 5px)}ngx-guided-tour .tour-step.tour-bottom-left .tour-arrow:before,ngx-guided-tour .tour-step.tour-top-left .tour-arrow:before{left:5px}ngx-guided-tour .tour-step.tour-left .tour-arrow:before{position:absolute;left:100%;transform:translate(-100%);top:5px}ngx-guided-tour .tour-step.tour-left .tour-block{margin-right:10px}ngx-guided-tour .tour-step.tour-right .tour-arrow:before{position:absolute;left:0;top:5px}ngx-guided-tour .tour-step.tour-right .tour-block{margin-left:10px}ngx-guided-tour .tour-step .tour-block{padding:15px 25px}ngx-guided-tour .tour-step .tour-progress-indicator{padding-bottom:15px}ngx-guided-tour .tour-step .tour-title{font-weight:700!important;padding-bottom:20px}ngx-guided-tour .tour-step h3.tour-title{font-size:20px}ngx-guided-tour .tour-step h2.tour-title{font-size:30px}ngx-guided-tour .tour-step .tour-content{min-height:80px;padding-bottom:30px;font-size:15px}ngx-guided-tour .tour-step .tour-buttons{overflow:hidden}ngx-guided-tour .tour-step .tour-buttons button.link-button{font-size:15px;font-weight:700;max-width:none!important;cursor:pointer;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;line-height:1.5;background-color:transparent;position:relative;outline:none;padding:0 15px;-webkit-appearance:button}ngx-guided-tour .tour-step .tour-buttons button.skip-button.link-button{padding-left:0;border-left:0}ngx-guided-tour .tour-step .tour-buttons .back-button{cursor:pointer;border-radius:1px;font-size:14px;border:none;outline:none;padding-left:10px;padding-right:10px}ngx-guided-tour .tour-step .tour-buttons .next-button{cursor:pointer;border-radius:1px;font-size:14px;border:none;outline:none;padding-left:10px;padding-right:10px}.arrow{position:absolute;left:-50px;top:-13px}.right-connector{transform:scaleX(-1);left:0;right:-46px}.circle{position:absolute;box-sizing:border-box;height:118px;width:100px;border:7px solid #000;border-radius:50%;clip-path:inset(0 50% 0 0);border-style:dotted}.triangle{position:absolute;width:20px;height:15px;background:#000;margin-top:-6px;margin-left:38px;clip-path:polygon(50% 0,0% 100%,100% 100%);transform:rotate(90deg)}.circle-start-dot{display:inline;width:16px;height:16px;background-color:#f3962e;content:\"\";border-radius:50%;position:absolute;margin-top:108px;margin-left:40px}.tour-step.left-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.right-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.top-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.tour-step.bottom-panel:after{display:inline;width:8px;height:-webkit-fill-available;background-color:green;right:0;position:absolute;content:\"\";overflow:hidden;top:10px}.progress-container{display:flex;justify-content:center;align-items:center}.pagination{display:flex;justify-content:center;align-items:center;padding:.5rem}.nav-dots{display:inline-block;position:relative;width:auto;height:10px;border-radius:50%;cursor:default;margin:2px}.nav-dots .nav-dot{top:-5px;width:11px;height:11px;margin:0 4px;position:relative;border-radius:100%;display:inline-block;background-color:#d3d3d3}.nav-dot-active{background:#113463}.top-connector{top:-116px!important;right:173px!important}.top-connector .circle{top:50px;left:80px;transform:rotate(180deg);width:50px;height:70px}.top-connector .circle-start-dot{margin-left:100px}.top-connector .triangle{left:63px;top:49px;transform:rotate(44deg)!important}\n"] }]
336
+ }], ctorParameters: function () { return [{ type: i1.GuidedTourService }, { type: i2.WindowRefService }, { type: undefined, decorators: [{
337
+ type: Inject,
338
+ args: [DOCUMENT]
339
+ }] }]; }, propDecorators: { topOfPageAdjustment: [{
340
+ type: Input
341
+ }], tourStepWidth: [{
342
+ type: Input
343
+ }], minimalTourStepWidth: [{
344
+ type: Input
345
+ }], skipText: [{
346
+ type: Input
347
+ }], nextText: [{
348
+ type: Input
349
+ }], doneText: [{
350
+ type: Input
351
+ }], closeText: [{
352
+ type: Input
353
+ }], backText: [{
354
+ type: Input
355
+ }], progressIndicatorLocation: [{
356
+ type: Input
357
+ }], progressIndicator: [{
358
+ type: Input
359
+ }], tourStep: [{
360
+ type: ViewChild,
361
+ args: ['tourStep', { static: false }]
362
+ }] } });
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBWSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFRdkQsTUFBTSxPQUFPLG1CQUFtQjtJQXNCakI7SUFDQztJQUNrQjtJQXZCZCxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDeEIsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQixvQkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUNsQixRQUFRLEdBQUcsTUFBTSxDQUFDO0lBQ2xCLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDbEIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUNwQixRQUFRLEdBQUcsTUFBTSxDQUFDO0lBQ2xCLHlCQUF5QixHQUErQix5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRyxpQkFBaUIsR0FBc0IsU0FB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O2tCQU4vQixTQUFTOytCQUNJLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJOzswQkEwQmhDLE1BQU07MkJBQUMsUUFBUTs0Q0F2QkosbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUMyQyxRQUFRO3NCQUF4RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIFRlbXBsYXRlUmVmLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPcmllbnRhdGlvbiwgVG91clN0ZXAsIFByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb24gfSBmcm9tICcuL2d1aWRlZC10b3VyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuc2VydmljZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWZTZXJ2aWNlIH0gZnJvbSBcIi4vd2luZG93cmVmLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtZ3VpZGVkLXRvdXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ndWlkZWQtdG91ci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ3VpZGVkLXRvdXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEd1aWRlZFRvdXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0b3BPZlBhZ2VBZGp1c3RtZW50Pz0gMDtcbiAgICBASW5wdXQoKSBwdWJsaWMgdG91clN0ZXBXaWR0aD89IDMwMDtcbiAgICBASW5wdXQoKSBwdWJsaWMgbWluaW1hbFRvdXJTdGVwV2lkdGg/PSAyMDA7XG4gICAgQElucHV0KCkgcHVibGljIHNraXBUZXh0Pz0gJ1NraXAnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuZXh0VGV4dD89ICdOZXh0JztcbiAgICBASW5wdXQoKSBwdWJsaWMgZG9uZVRleHQ/PSAnRG9uZSc7XG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlVGV4dD89ICdDbG9zZSc7XG4gICAgQElucHV0KCkgcHVibGljIGJhY2tUZXh0Pz0gJ0JhY2snO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcm9ncmVzc0luZGljYXRvckxvY2F0aW9uPzogUHJvZ3Jlc3NJbmRpY2F0b3JMb2NhdGlvbiA9IFByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb24uSW5zaWRlTmV4dEJ1dHRvbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJvZ3Jlc3NJbmRpY2F0b3I/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3RvdXJTdGVwJywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0b3VyU3RlcDogRWxlbWVudFJlZjtcbiAgICBwdWJsaWMgaGlnaGxpZ2h0UGFkZGluZyA9IDQ7XG4gICAgcHVibGljIGN1cnJlbnRUb3VyU3RlcDogVG91clN0ZXAgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZEVsZW1lbnRSZWN0OiBET01SZWN0ID0gbnVsbDtcbiAgICBwdWJsaWMgaXNPcmJTaG93aW5nID0gZmFsc2U7XG4gICAgcHVibGljIHByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb25zID0gUHJvZ3Jlc3NJbmRpY2F0b3JMb2NhdGlvbjtcblxuICAgIHByaXZhdGUgcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZ3VpZGVkVG91clNlcnZpY2U6IEd1aWRlZFRvdXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb206IGFueVxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIGdldCBtYXhXaWR0aEFkanVzdG1lbnRGb3JUb3VyU3RlcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b3VyU3RlcFdpZHRoIC0gdGhpcy5taW5pbWFsVG91clN0ZXBXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCB3aWR0aEFkanVzdG1lbnRGb3JTY3JlZW5Cb3VuZCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudG91clN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhZGp1c3RtZW50ID0gMDtcbiAgICAgICAgaWYgKHRoaXMuY2FsY3VsYXRlZExlZnRQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIGFkanVzdG1lbnQgPSAtdGhpcy5jYWxjdWxhdGVkTGVmdFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNhbGN1bGF0ZWRMZWZ0UG9zaXRpb24gPiB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMudG91clN0ZXBXaWR0aCkge1xuICAgICAgICAgICAgYWRqdXN0bWVudCA9IHRoaXMuY2FsY3VsYXRlZExlZnRQb3NpdGlvbiAtICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMudG91clN0ZXBXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5tYXhXaWR0aEFkanVzdG1lbnRGb3JUb3VyU3RlcCwgYWRqdXN0bWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYWxjdWxhdGVkVG91clN0ZXBXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG91clN0ZXBXaWR0aCAtIHRoaXMud2lkdGhBZGp1c3RtZW50Rm9yU2NyZWVuQm91bmQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ndWlkZWRUb3VyU2VydmljZS5ndWlkZWRUb3VyQ3VycmVudFN0ZXBTdHJlYW0uc3Vic2NyaWJlKChzdGVwOiBUb3VyU3RlcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgaWYgKHN0ZXAgJiYgc3RlcC5zZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZG9tLnF1ZXJ5U2VsZWN0b3Ioc3RlcC5zZWxlY3Rvcik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQW5kU2V0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd1aWRlZFRvdXJTZXJ2aWNlLmd1aWRlZFRvdXJPcmJTaG93aW5nU3RyZWFtLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcmJTaG93aW5nID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0ZXBMb2NhdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3csICdzY3JvbGwnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGVwTG9jYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzY3JvbGxUb0FuZFNldEVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RlcExvY2F0aW9uKCk7XG4gICAgICAgIC8vIEFsbG93IHRoaW5ncyB0byByZW5kZXIgdG8gc2Nyb2xsIHRvIHRoZSBjb3JyZWN0IGxvY2F0aW9uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3JiU2hvd2luZyAmJiAhdGhpcy5pc1RvdXJPblNjcmVlbigpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdCAmJiB0aGlzLmlzQm90dG9tKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHNvIHRoZSBlbGVtZW50IGlzIG9uIHRoZSB0b3Agb2YgdGhlIHNjcmVlbi5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9wUG9zID0gKCh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsWSArIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC50b3ApIC0gdGhpcy50b3BPZlBhZ2VBZGp1c3RtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLSAodGhpcy5jdXJyZW50VG91clN0ZXAuc2Nyb2xsQWRqdXN0bWVudCA/IHRoaXMuY3VycmVudFRvdXJTdGVwLnNjcm9sbEFkanVzdG1lbnQgOiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKyB0aGlzLmdldFN0ZXBTY3JlZW5BZGp1c3RtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3BQb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbCgwLCB0b3BQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBTY3JvbGwgc28gdGhlIGVsZW1lbnQgaXMgb24gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BQb3MgPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFkgKyB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QudG9wICsgdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIC0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICArICh0aGlzLmN1cnJlbnRUb3VyU3RlcC5zY3JvbGxBZGp1c3RtZW50ID8gdGhpcy5jdXJyZW50VG91clN0ZXAuc2Nyb2xsQWRqdXN0bWVudCA6IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAtIHRoaXMuZ2V0U3RlcFNjcmVlbkFkanVzdG1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcFBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsKDAsIHRvcFBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9yYigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ndWlkZWRUb3VyU2VydmljZS5hY3RpdmF0ZU9yYigpO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXAgJiYgdGhpcy5jdXJyZW50VG91clN0ZXAuc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BbmRTZXRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG91ck9uU2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b3VyU3RlcFxuICAgICAgICAgICAgJiYgdGhpcy5lbGVtZW50SW5WaWV3cG9ydCh0aGlzLmRvbS5xdWVyeVNlbGVjdG9yKHRoaXMuY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yKSlcbiAgICAgICAgICAgICYmIHRoaXMuZWxlbWVudEluVmlld3BvcnQodGhpcy50b3VyU3RlcC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvLyBNb2RpZmllZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEyMzk5OS9ob3ctdG8tdGVsbC1pZi1hLWRvbS1lbGVtZW50LWlzLXZpc2libGUtaW4tdGhlLWN1cnJlbnQtdmlld3BvcnRcbiAgICBwcml2YXRlIGVsZW1lbnRJblZpZXdwb3J0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCB0b3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gKGVsZW1lbnQub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIHRvcCArPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0JvdHRvbSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRvcCA+PSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy50b3BPZlBhZ2VBZGp1c3RtZW50XG4gICAgICAgICAgICAgICAgICAgICsgKHRoaXMuY3VycmVudFRvdXJTdGVwLnNjcm9sbEFkanVzdG1lbnQgPyB0aGlzLmN1cnJlbnRUb3VyU3RlcC5zY3JvbGxBZGp1c3RtZW50IDogMClcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLmdldFN0ZXBTY3JlZW5BZGp1c3RtZW50KCkpXG4gICAgICAgICAgICAgICAgJiYgKHRvcCArIGhlaWdodCkgPD0gKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5wYWdlWU9mZnNldCArIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5pbm5lckhlaWdodClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRvcCA+PSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnBhZ2VZT2Zmc2V0ICsgdGhpcy50b3BPZlBhZ2VBZGp1c3RtZW50IC0gdGhpcy5nZXRTdGVwU2NyZWVuQWRqdXN0bWVudCgpKVxuICAgICAgICAgICAgICAgICYmICh0b3AgKyBoZWlnaHQgKyAodGhpcy5jdXJyZW50VG91clN0ZXAuc2Nyb2xsQWRqdXN0bWVudCA/IHRoaXMuY3VycmVudFRvdXJTdGVwLnNjcm9sbEFkanVzdG1lbnQgOiAwKSkgPD0gKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5wYWdlWU9mZnNldCArIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5pbm5lckhlaWdodClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYmFja2Ryb3BDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3VpZGVkVG91clNlcnZpY2UucHJldmVudEJhY2tkcm9wRnJvbUFkdmFuY2luZykge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmd1aWRlZFRvdXJTZXJ2aWNlLm5leHRTdGVwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlU3RlcExvY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXAgJiYgdGhpcy5jdXJyZW50VG91clN0ZXAuc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZG9tLnF1ZXJ5U2VsZWN0b3IodGhpcy5jdXJyZW50VG91clN0ZXAuc2VsZWN0b3IpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCAmJiB0eXBlb2Ygc2VsZWN0ZWRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdCA9IChzZWxlY3RlZEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgYXMgRE9NUmVjdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0JvdHRvbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uXG4gICAgICAgICAgICAmJiAodGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLkJvdHRvbVxuICAgICAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Cb3R0b21MZWZ0XG4gICAgICAgICAgICAgICAgfHwgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLkJvdHRvbVJpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvcFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBhZGRpbmdBZGp1c3RtZW50ID0gdGhpcy5nZXRIaWdobGlnaHRQYWRkaW5nKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNCb3R0b20oKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC50b3AgKyB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QuaGVpZ2h0ICsgcGFkZGluZ0FkanVzdG1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LnRvcCAtIHRoaXMuZ2V0SGlnaGxpZ2h0UGFkZGluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3JiVG9wUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCb3R0b20oKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC50b3AgKyB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlJpZ2h0XG4gICAgICAgICAgICB8fCB0aGlzLmN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uTGVmdFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LnRvcCArICh0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QuaGVpZ2h0IC8gMikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC50b3A7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY2FsY3VsYXRlZExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwYWRkaW5nQWRqdXN0bWVudCA9IHRoaXMuZ2V0SGlnaGxpZ2h0UGFkZGluZygpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Ub3BSaWdodFxuICAgICAgICAgICAgfHwgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLkJvdHRvbVJpZ2h0XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QucmlnaHQgLSB0aGlzLnRvdXJTdGVwV2lkdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlRvcExlZnRcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Cb3R0b21MZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QubGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLkxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QubGVmdCAtIHRoaXMudG91clN0ZXBXaWR0aCAtIHBhZGRpbmdBZGp1c3RtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5SaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QubGVmdCArIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC53aWR0aCArIHBhZGRpbmdBZGp1c3RtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LnJpZ2h0IC0gKHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC53aWR0aCAvIDIpIC0gKHRoaXMudG91clN0ZXBXaWR0aCAvIDIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5jYWxjdWxhdGVkTGVmdFBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZWRMZWZ0UG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWRqdXN0bWVudCA9IE1hdGgubWF4KDAsIC10aGlzLmNhbGN1bGF0ZWRMZWZ0UG9zaXRpb24pXG4gICAgICAgIGNvbnN0IG1heEFkanVzdG1lbnQgPSBNYXRoLm1pbih0aGlzLm1heFdpZHRoQWRqdXN0bWVudEZvclRvdXJTdGVwLCBhZGp1c3RtZW50KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlZExlZnRQb3NpdGlvbiArIG1heEFkanVzdG1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcmJMZWZ0UG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlRvcFJpZ2h0XG4gICAgICAgICAgICB8fCB0aGlzLmN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uQm90dG9tUmlnaHRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlRvcExlZnRcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Cb3R0b21MZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5MZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC5sZWZ0ICsgdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LndpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LnJpZ2h0IC0gKHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC53aWR0aCAvIDIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRyYW5zZm9ybSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb25cbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Ub3BcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Ub3BSaWdodFxuICAgICAgICAgICAgfHwgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLlRvcExlZnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZVkoLTEwMCUpJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9yYlRyYW5zZm9ybSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb25cbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Ub3BcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Cb3R0b21cbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Ub3BMZWZ0XG4gICAgICAgICAgICB8fCB0aGlzLmN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uQm90dG9tTGVmdFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAndHJhbnNsYXRlWSgtNTAlKSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uVG9wUmlnaHRcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5Cb3R0b21SaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAndHJhbnNsYXRlKC0xMDAlLCAtNTAlKSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uUmlnaHRcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5MZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoLTUwJSwgLTUwJSknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvdmVybGF5VG9wKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudFJlY3QudG9wIC0gdGhpcy5nZXRIaWdobGlnaHRQYWRkaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvdmVybGF5TGVmdCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LmxlZnQgLSB0aGlzLmdldEhpZ2hsaWdodFBhZGRpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG92ZXJsYXlIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50UmVjdC5oZWlnaHQgKyAodGhpcy5nZXRIaWdobGlnaHRQYWRkaW5nKCkgKiAyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG92ZXJsYXlXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LndpZHRoICsgKHRoaXMuZ2V0SGlnaGxpZ2h0UGFkZGluZygpICogMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIaWdobGlnaHRQYWRkaW5nKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBwYWRkaW5nQWRqdXN0bWVudCA9IHRoaXMuY3VycmVudFRvdXJTdGVwLnVzZUhpZ2hsaWdodFBhZGRpbmcgPyB0aGlzLmhpZ2hsaWdodFBhZGRpbmcgOiAwO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXAuaGlnaGxpZ2h0UGFkZGluZykge1xuICAgICAgICAgICAgcGFkZGluZ0FkanVzdG1lbnQgPSB0aGlzLmN1cnJlbnRUb3VyU3RlcC5oaWdobGlnaHRQYWRkaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYWRkaW5nQWRqdXN0bWVudDtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGNhbGN1bGF0ZXMgYSB2YWx1ZSB0byBhZGQgb3Igc3VidHJhY3Qgc28gdGhlIHN0ZXAgc2hvdWxkIG5vdCBiZSBvZmYgc2NyZWVuLlxuICAgIHByaXZhdGUgZ2V0U3RlcFNjcmVlbkFkanVzdG1lbnQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gPT09IE9yaWVudGF0aW9uLkxlZnRcbiAgICAgICAgICAgIHx8IHRoaXMuY3VycmVudFRvdXJTdGVwLm9yaWVudGF0aW9uID09PSBPcmllbnRhdGlvbi5SaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsQWRqdXN0bWVudCA9IHRoaXMuY3VycmVudFRvdXJTdGVwLnNjcm9sbEFkanVzdG1lbnQgPyB0aGlzLmN1cnJlbnRUb3VyU3RlcC5zY3JvbGxBZGp1c3RtZW50IDogMDtcbiAgICAgICAgY29uc3QgdG91clN0ZXBIZWlnaHQgPSB0eXBlb2YgdGhpcy50b3VyU3RlcC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG91clN0ZXAubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiAwO1xuICAgICAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRSZWN0LmhlaWdodCArIHNjcm9sbEFkanVzdG1lbnQgKyB0b3VyU3RlcEhlaWdodDtcblxuICAgICAgICBpZiAoKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMudG9wT2ZQYWdlQWRqdXN0bWVudCkgPCBlbGVtZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudEhlaWdodCAtICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLnRvcE9mUGFnZUFkanVzdG1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJjdXJyZW50VG91clN0ZXAgJiYgc2VsZWN0ZWRFbGVtZW50UmVjdCAmJiBpc09yYlNob3dpbmdcIiAobW91c2VlbnRlcik9XCJoYW5kbGVPcmIoKVwiXG4gIGNsYXNzPVwidG91ci1vcmIgdG91ci17eyBjdXJyZW50VG91clN0ZXAub3JpZW50YXRpb24gfX1cIiBbc3R5bGUudG9wLnB4XT1cIm9yYlRvcFBvc2l0aW9uXCJcbiAgW3N0eWxlLmxlZnQucHhdPVwib3JiTGVmdFBvc2l0aW9uXCIgW3N0eWxlLnRyYW5zZm9ybV09XCJvcmJUcmFuc2Zvcm1cIj5cbiAgPGRpdiBjbGFzcz1cInRvdXItb3JiLXJpbmdcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImN1cnJlbnRUb3VyU3RlcCAmJiAhaXNPcmJTaG93aW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJndWlkZWQtdG91ci11c2VyLWlucHV0LW1hc2tcIiAoY2xpY2spPVwiYmFja2Ryb3BDbGljaygkZXZlbnQpXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIiBbYXR0ci5jbGFzc109XCInZ3VpZGVkLXRvdXItc3BvdGxpZ2h0LW92ZXJsYXkgJyArIGN1cnJlbnRUb3VyU3RlcD8uY2xhc3NcIiBbc3R5bGUudG9wLnB4XT1cIm92ZXJsYXlUb3BcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIm92ZXJsYXlMZWZ0XCIgW3N0eWxlLmhlaWdodC5weF09XCJvdmVybGF5SGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cIm92ZXJsYXlXaWR0aFwiPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImN1cnJlbnRUb3VyU3RlcCAmJiAhaXNPcmJTaG93aW5nXCI+XG4gIDxkaXYgI3RvdXJTdGVwICpuZ0lmPVwiY3VycmVudFRvdXJTdGVwXCJcbiAgICBjbGFzcz1cInRvdXItc3RlcCB0b3VyLXt7IGN1cnJlbnRUb3VyU3RlcC5vcmllbnRhdGlvbn19IHt7Y3VycmVudFRvdXJTdGVwPy5jb250YWluZXJDbGFzc319XCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAncGFnZS10b3VyLXN0ZXAnOiAhY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAncmlnaHQtcGFuZWwnOiBjdXJyZW50VG91clN0ZXAuY29ubmVjdG9yRGlyZWN0aW9uID09ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICdsZWZ0LXBhbmVsJzogY3VycmVudFRvdXJTdGVwLmNvbm5lY3RvckRpcmVjdGlvbiA9PSAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICdib3R0b20tcGFuZWwnOiBjdXJyZW50VG91clN0ZXAuY29ubmVjdG9yRGlyZWN0aW9uID09ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAndG9wLXBhbmVsJzogY3VycmVudFRvdXJTdGVwLmNvbm5lY3RvckRpcmVjdGlvbiA9PSAndG9wJ1xuICAgICAgICAgICAgICAgIH1cIiBbc3R5bGUudG9wLnB4XT1cIihjdXJyZW50VG91clN0ZXAuc2VsZWN0b3IgJiYgc2VsZWN0ZWRFbGVtZW50UmVjdCA/IHRvcFBvc2l0aW9uIDogbnVsbClcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIihjdXJyZW50VG91clN0ZXAuc2VsZWN0b3IgJiYgc2VsZWN0ZWRFbGVtZW50UmVjdCA/IGxlZnRQb3NpdGlvbiA6IG51bGwpXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiKGN1cnJlbnRUb3VyU3RlcC5zZWxlY3RvciAmJiBzZWxlY3RlZEVsZW1lbnRSZWN0ID8gY2FsY3VsYXRlZFRvdXJTdGVwV2lkdGggOiBudWxsKVwiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCIoY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yICYmIHNlbGVjdGVkRWxlbWVudFJlY3QgPyB0cmFuc2Zvcm0gOiBudWxsKVwiPlxuXG4gICAgPGRpdiAqbmdJZj1cImN1cnJlbnRUb3VyU3RlcC5pc01vYmlsZSAmJiBjdXJyZW50VG91clN0ZXAuY29ubmVjdG9yRGlyZWN0aW9uID09ICdib3R0b20nXCIgY2xhc3M9XCJ0b3VyLWJ1dHRvbnMgdG91ci1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidG91ci1hY3Rpb25zLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFndWlkZWRUb3VyU2VydmljZS5vbkZpcnN0U3RlcCAmJiAhZ3VpZGVkVG91clNlcnZpY2Uub25SZXNpemVNZXNzYWdlXCJcbiAgICAgICAgICBbYXR0ci5jbGFzc109XCJjdXJyZW50VG91clN0ZXA/LmJhY2tCdG5DbGFzcyArICcgYmFjay1idXR0b24nXCIgKGNsaWNrKT1cImd1aWRlZFRvdXJTZXJ2aWNlLmJhY2tTdGVwKClcIj5cbiAgICAgICAgICB7eyBiYWNrVGV4dCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFndWlkZWRUb3VyU2VydmljZS5vbkxhc3RTdGVwICYmICFndWlkZWRUb3VyU2VydmljZS5vblJlc2l6ZU1lc3NhZ2VcIiBjbGFzcz1cIm5leHQtYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImd1aWRlZFRvdXJTZXJ2aWNlLm5leHRTdGVwKClcIj5cbiAgICAgICAge3sgbmV4dFRleHQgfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb24gPT09IHByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb25zLkluc2lkZU5leHRCdXR0b25cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZ3Jlc3NcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJndWlkZWRUb3VyU2VydmljZS5vbkxhc3RTdGVwXCIgW2F0dHIuY2xhc3NdPVwiY3VycmVudFRvdXJTdGVwPy5uZXh0QnRuQ2xhc3MgKyAnIG5leHQtYnV0dG9uJ1wiXG4gICAgICAgIChjbGljayk9XCJndWlkZWRUb3VyU2VydmljZS5uZXh0U3RlcCgpXCI+XG4gICAgICAgIHt7IGRvbmVUZXh0IH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJndWlkZWRUb3VyU2VydmljZS5vblJlc2l6ZU1lc3NhZ2VcIiBjbGFzcz1cIm5leHQtYnV0dG9uXCIgKGNsaWNrKT1cImd1aWRlZFRvdXJTZXJ2aWNlLnJlc2V0VG91cigpXCI+XG4gICAgICAgIHt7IGNsb3NlVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VG91clN0ZXAuc2VsZWN0b3JcIiBjbGFzcz1cInRvdXItYXJyb3dcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidG91ci1ibG9ja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImFycm93XCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0LWNvbm5lY3Rvcic6IChjdXJyZW50VG91clN0ZXAuc2VsZWN0b3IgJiYgY3VycmVudFRvdXJTdGVwLmNvbm5lY3RvckRpcmVjdGlvbiA9PSAncmlnaHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0LWNvbm5lY3Rvcic6IChjdXJyZW50VG91clN0ZXAuc2VsZWN0b3IgJiYgY3VycmVudFRvdXJTdGVwLmNvbm5lY3RvckRpcmVjdGlvbiA9PSAnbGVmdCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1jb25uZWN0b3InOiAoY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yICYmIGN1cnJlbnRUb3VyU3RlcC5jb25uZWN0b3JEaXJlY3Rpb24gPT0gJ2JvdHRvbScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1jb25uZWN0b3InOiAoY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yICYmIGN1cnJlbnRUb3VyU3RlcC5jb25uZWN0b3JEaXJlY3Rpb24gPT0gJ3RvcCcpXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlLXN0YXJ0LWRvdFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJpYW5nbGVcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicHJvZ3Jlc3NJbmRpY2F0b3JMb2NhdGlvbiA9PT0gcHJvZ3Jlc3NJbmRpY2F0b3JMb2NhdGlvbnMuVG9wT2ZUb3VyQmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICFndWlkZWRUb3VyU2VydmljZS5vblJlc2l6ZU1lc3NhZ2VcIiBjbGFzcz1cInRvdXItcHJvZ3Jlc3MtaW5kaWNhdG9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9ncmVzc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidG91ci1pbWFnZVwiICpuZ0lmPVwiY3VycmVudFRvdXJTdGVwLmljb24gJiYgY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yXCI+XG4gICAgICAgIDxtYXQtaWNvbj57e2N1cnJlbnRUb3VyU3RlcC5pY29ufX08L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8aDMgY2xhc3M9XCJ0b3VyLXRpdGxlXCIgKm5nSWY9XCJjdXJyZW50VG91clN0ZXAudGl0bGUgJiYgY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yXCI+XG4gICAgICAgIHt7IGN1cnJlbnRUb3VyU3RlcC50aXRsZSB9fVxuICAgICAgPC9oMz5cbiAgICAgIDxoMiBjbGFzcz1cInRvdXItdGl0bGVcIiAqbmdJZj1cImN1cnJlbnRUb3VyU3RlcC50aXRsZSAmJiAhY3VycmVudFRvdXJTdGVwLnNlbGVjdG9yXCI+XG4gICAgICAgIHt7IGN1cnJlbnRUb3VyU3RlcC50aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3VyLWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cImN1cnJlbnRUb3VyU3RlcC5jb250ZW50XCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnRUb3VyU3RlcC5pc01vYmlsZVwiIGNsYXNzPVwidG91ci1idXR0b25zIHRvdXItYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b3VyLXNraXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFndWlkZWRUb3VyU2VydmljZS5vblJlc2l6ZU1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3VpZGVkVG91clNlcnZpY2Uuc2tpcFRvdXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNsYXNzXT1cImN1cnJlbnRUb3VyU3RlcD8uc2tpcEJ0bkNsYXNzICsgJyBza2lwLWJ1dHRvbiBsaW5rLWJ1dHRvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2tpcFRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvdXItYWN0aW9ucy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFndWlkZWRUb3VyU2VydmljZS5vbkZpcnN0U3RlcCAmJiAhZ3VpZGVkVG91clNlcnZpY2Uub25SZXNpemVNZXNzYWdlXCJcbiAgICAgICAgICAgIFthdHRyLmNsYXNzXT1cImN1cnJlbnRUb3VyU3RlcD8uYmFja0J0bkNsYXNzICsgJyBiYWNrLWJ1dHRvbidcIiAoY2xpY2spPVwiZ3VpZGVkVG91clNlcnZpY2UuYmFja1N0ZXAoKVwiPlxuICAgICAgICAgICAge3sgYmFja1RleHQgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhZ3VpZGVkVG91clNlcnZpY2Uub25MYXN0U3RlcCAmJiAhZ3VpZGVkVG91clNlcnZpY2Uub25SZXNpemVNZXNzYWdlXCIgY2xhc3M9XCJuZXh0LWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImd1aWRlZFRvdXJTZXJ2aWNlLm5leHRTdGVwKClcIj5cbiAgICAgICAgICB7eyBuZXh0VGV4dCB9fVxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzc0luZGljYXRvckxvY2F0aW9uID09PSBwcm9ncmVzc0luZGljYXRvckxvY2F0aW9ucy5JbnNpZGVOZXh0QnV0dG9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZ3Jlc3NcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJndWlkZWRUb3VyU2VydmljZS5vbkxhc3RTdGVwXCIgW2F0dHIuY2xhc3NdPVwiY3VycmVudFRvdXJTdGVwPy5uZXh0QnRuQ2xhc3MgKyAnIG5leHQtYnV0dG9uJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImd1aWRlZFRvdXJTZXJ2aWNlLm5leHRTdGVwKClcIj5cbiAgICAgICAgICB7eyBkb25lVGV4dCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImd1aWRlZFRvdXJTZXJ2aWNlLm9uUmVzaXplTWVzc2FnZVwiIGNsYXNzPVwibmV4dC1idXR0b25cIiAoY2xpY2spPVwiZ3VpZGVkVG91clNlcnZpY2UucmVzZXRUb3VyKClcIj5cbiAgICAgICAgICB7eyBjbG9zZVRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwvZGl2PlxuXG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb24gPT09IHByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb25zLkRvdHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZ3Jlc3NcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VG91clN0ZXAuaXNNb2JpbGUgJiYgY3VycmVudFRvdXJTdGVwLmNvbm5lY3RvckRpcmVjdGlvbiAhPSAnYm90dG9tJ1wiIGNsYXNzPVwidG91ci1idXR0b25zIHRvdXItYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvdXItYWN0aW9ucy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhZ3VpZGVkVG91clNlcnZpY2Uub25GaXJzdFN0ZXAgJiYgIWd1aWRlZFRvdXJTZXJ2aWNlLm9uUmVzaXplTWVzc2FnZVwiXG4gICAgICAgICAgW2F0dHIuY2xhc3NdPVwiY3VycmVudFRvdXJTdGVwPy5iYWNrQnRuQ2xhc3MgKyAnIGJhY2stYnV0dG9uJ1wiIChjbGljayk9XCJndWlkZWRUb3VyU2VydmljZS5iYWNrU3RlcCgpXCI+XG4gICAgICAgICAge3sgYmFja1RleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCIhZ3VpZGVkVG91clNlcnZpY2Uub25MYXN0U3RlcCAmJiAhZ3VpZGVkVG91clNlcnZpY2Uub25SZXNpemVNZXNzYWdlXCIgY2xhc3M9XCJuZXh0LWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJndWlkZWRUb3VyU2VydmljZS5uZXh0U3RlcCgpXCI+XG4gICAgICAgIHt7IG5leHRUZXh0IH19XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzc0luZGljYXRvckxvY2F0aW9uID09PSBwcm9ncmVzc0luZGljYXRvckxvY2F0aW9ucy5JbnNpZGVOZXh0QnV0dG9uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb2dyZXNzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZ3VpZGVkVG91clNlcnZpY2Uub25MYXN0U3RlcFwiIFthdHRyLmNsYXNzXT1cImN1cnJlbnRUb3VyU3RlcD8ubmV4dEJ0bkNsYXNzICsgJyBuZXh0LWJ1dHRvbidcIlxuICAgICAgICAoY2xpY2spPVwiZ3VpZGVkVG91clNlcnZpY2UubmV4dFN0ZXAoKVwiPlxuICAgICAgICB7eyBkb25lVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZ3VpZGVkVG91clNlcnZpY2Uub25SZXNpemVNZXNzYWdlXCIgY2xhc3M9XCJuZXh0LWJ1dHRvblwiIChjbGljayk9XCJndWlkZWRUb3VyU2VydmljZS5yZXNldFRvdXIoKVwiPlxuICAgICAgICB7eyBjbG9zZVRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3Byb2dyZXNzPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwcm9ncmVzc0luZGljYXRvciB8fCBkZWZhdWx0UHJvZ3Jlc3NJbmRpY2F0b3I7IFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgY3VycmVudFN0ZXBOdW1iZXI6IGd1aWRlZFRvdXJTZXJ2aWNlLmN1cnJlbnRUb3VyU3RlcERpc3BsYXksIHRvdGFsU3RlcHM6IGd1aWRlZFRvdXJTZXJ2aWNlLmN1cnJlbnRUb3VyU3RlcENvdW50IH1cbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQcm9ncmVzc0luZGljYXRvciBsZXQtY3VycmVudFN0ZXBOdW1iZXI9XCJjdXJyZW50U3RlcE51bWJlclwiIGxldC10b3RhbFN0ZXBzPVwidG90YWxTdGVwc1wiPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb24gPT09IHByb2dyZXNzSW5kaWNhdG9yTG9jYXRpb25zLkluc2lkZU5leHRCdXR0b25cIj4mbmJzcDs8L25nLWNvbnRhaW5lcj57eyBjdXJyZW50U3RlcE51bWJlciB9fS97eyB0b3RhbFN0ZXBzIH19IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzc0luZGljYXRvckxvY2F0aW9uID09PSBwcm9ncmVzc0luZGljYXRvckxvY2F0aW9ucy5Eb3RzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtZG90c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvdCBvZiBbXS5jb25zdHJ1Y3Rvcih0b3RhbFN0ZXBzKTsgZmlyc3QgYXMgaXNGaXJzdDsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtuZ0NsYXNzXT1cIihjdXJyZW50U3RlcE51bWJlciA9PSAoaSsxKSkgPyAnbmF2LWRvdC1hY3RpdmUnOiAnJ1wiIGNsYXNzPVwibmF2LWRvdFwiXG4gICAgICAgICAgICAgIGlkPVwiaW1nLWRvdC0re3tpfX0re3tjdXJyZW50U3RlcE51bWJlcn19XCI+PC9sYWJlbD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPiJdfQ==
@@ -0,0 +1,19 @@
1
+ export class Orientation {
2
+ static Bottom = 'bottom';
3
+ static BottomLeft = 'bottom-left';
4
+ static BottomRight = 'bottom-right';
5
+ static Center = 'center';
6
+ static Left = 'left';
7
+ static Right = 'right';
8
+ static Top = 'top';
9
+ static TopLeft = 'top-left';
10
+ static TopRight = 'top-right';
11
+ }
12
+ export var ProgressIndicatorLocation;
13
+ (function (ProgressIndicatorLocation) {
14
+ ProgressIndicatorLocation["InsideNextButton"] = "inside-next-button";
15
+ ProgressIndicatorLocation["TopOfTourBlock"] = "top-of-tour-block";
16
+ ProgressIndicatorLocation["None"] = "none";
17
+ ProgressIndicatorLocation["Dots"] = "dots";
18
+ })(ProgressIndicatorLocation || (ProgressIndicatorLocation = {}));
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9FQSxNQUFNLE9BQU8sV0FBVztJQUNiLE1BQU0sQ0FBVSxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLE1BQU0sQ0FBVSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQzNDLE1BQU0sQ0FBVSxXQUFXLEdBQUcsY0FBYyxDQUFDO0lBQzdDLE1BQU0sQ0FBVSxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLE1BQU0sQ0FBVSxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQzlCLE1BQU0sQ0FBVSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLE1BQU0sQ0FBVSxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQzVCLE1BQU0sQ0FBVSxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQ3JDLE1BQU0sQ0FBVSxRQUFRLEdBQUcsV0FBVyxDQUFDOztBQUdsRCxNQUFNLENBQU4sSUFBWSx5QkFLWDtBQUxELFdBQVkseUJBQXlCO0lBQ2pDLG9FQUF1QyxDQUFBO0lBQ3ZDLGlFQUFvQyxDQUFBO0lBQ3BDLDBDQUFhLENBQUE7SUFDYiwwQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyx5QkFBeUIsS0FBekIseUJBQXlCLFFBS3BDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJTdGVwIHtcbiAgICBpY29uPzogc3RyaW5nLFxuICAgIGNvbm5lY3RvckRpcmVjdGlvbj86IHN0cmluZyxcbiAgICBuZXh0QnRuQ2xhc3M/OiBzdHJpbmcsXG4gICAgYmFja0J0bkNsYXNzPzogc3RyaW5nLFxuICAgIHNraXBCdG5DbGFzcz86IHN0cmluZyxcbiAgICBjb250YWluZXJDbGFzcz86IHN0cmluZyxcbiAgICBpc01vYmlsZT86IGJvb2xlYW47XG4gICAgY2xhc3M/OiBzdHJpbmcsXG4gICAgLyoqIFNlbGVjdG9yIGZvciBlbGVtZW50IHRoYXQgd2lsbCBiZSBoaWdobGlnaHRlZCAqL1xuICAgIHNlbGVjdG9yPzogc3RyaW5nO1xuICAgIC8qKiBUb3VyIHRpdGxlIHRleHQgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKiogVG91ciBzdGVwIHRleHQgKi9cbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgLyoqIFdoZXJlIHRoZSB0b3VyIHN0ZXAgd2lsbCBhcHBlYXIgbmV4dCB0byB0aGUgc2VsZWN0ZWQgZWxlbWVudCAqL1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb24gfCBPcmllbnRhdGlvbkNvbmZpZ3VyYXRpb25bXTtcbiAgICAvKiogQWN0aW9uIHRoYXQgaGFwcGVucyB3aGVuIHRoZSBzdGVwIGlzIG9wZW5lZCAqL1xuICAgIGFjdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgLyoqIEFjdGlvbiB0aGF0IGhhcHBlbnMgd2hlbiB0aGUgc3RlcCBpcyBjbG9zZWQgKi9cbiAgICBjbG9zZUFjdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgLyoqIFNraXBzIHRoaXMgc3RlcCwgdGhpcyBpcyBzbyB5b3UgZG8gbm90IGhhdmUgY3JlYXRlIG11bHRpcGxlIHRvdXIgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdXNlciBzZXR0aW5ncy9jb25maWd1cmF0aW9uICovXG4gICAgc2tpcFN0ZXA/OiBib29sZWFuO1xuICAgIC8qKiBBZGRzIHNvbWUgcGFkZGluZyBmb3IgdGhpbmdzIGxpa2Ugc3RpY2t5IGhlYWRlcnMgd2hlbiBzY3JvbGxpbmcgdG8gYW4gZWxlbWVudCAqL1xuICAgIHNjcm9sbEFkanVzdG1lbnQ/OiBudW1iZXI7XG4gICAgLyoqIEFkZHMgZGVmYXVsdCBwYWRkaW5nIGFyb3VuZCB0b3VyIGhpZ2hsaWdodGluZy4gRG9lcyBub3QgbmVlZCB0byBiZSB0cnVlIGZvciBoaWdobGlnaHRQYWRkaW5nIHRvIHdvcmsgKi9cbiAgICB1c2VIaWdobGlnaHRQYWRkaW5nPzogYm9vbGVhbjtcbiAgICAvKiogQWRkcyBwYWRkaW5nIGFyb3VuZCB0b3VyIGhpZ2hsaWdodGluZyBpbiBwaXhlbHMsIHRoaXMgb3ZlcndyaXRlcyB0aGUgZGVmYXVsdCBmb3IgdGhpcyBzdGVwLiBJcyBub3QgZGVwZW5kZW50IG9uIHVzZUhpZ2hsaWdodFBhZGRpbmcgYmVpbmcgdHJ1ZSAqL1xuICAgIGhpZ2hsaWdodFBhZGRpbmc/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3VpZGVkVG91ciB7XG4gICAgLyoqIElkZW50aWZpZXIgZm9yIHRvdXIgKi9cbiAgICB0b3VySWQ6IHN0cmluZztcbiAgICAvKiogVXNlIG9yYiB0byBzdGFydCB0b3VyICovXG4gICAgdXNlT3JiPzogYm9vbGVhbjtcbiAgICAvKiogU3RlcHMgZm8gdGhlIHRvdXIgKi9cbiAgICBzdGVwczogVG91clN0ZXBbXTtcbiAgICBuZXh0Q2FsbGJhY2s/OiAoY3VycmVudFN0ZXA6IG51bWJlciwgc3RlcE9iamVjdDogb2JqZWN0KSA9PiB2b2lkO1xuICAgIHByZXZDYWxsYmFjaz86IChjdXJyZW50U3RlcDogbnVtYmVyLCBzdGVwT2JqZWN0OiBvYmplY3QpID0+IHZvaWQ7XG4gICAgLyoqIEZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdG91ciBpcyBza2lwcGVkICovXG4gICAgc2tpcENhbGxiYWNrPzogKHN0ZXBTa2lwcGVkT246IG51bWJlcikgPT4gdm9pZDtcbiAgICAvKiogRnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiB0b3VyIGlzIGNvbXBsZXRlZCAqL1xuICAgIGNvbXBsZXRlQ2FsbGJhY2s/OiAoKSA9PiB2b2lkO1xuICAgIC8qKiBNaW5pbXVtIHNpemUgb2Ygc2NyZWVuIGluIHBpeGVscyBiZWZvcmUgdGhlIHRvdXIgaXMgcnVuLCBpZiB0aGUgdG91ciBpcyByZXNpemVkIGJlbG93IHRoaXMgdmFsdWUgdGhlIHVzZXIgd2lsbCBiZSB0b2xkIHRvIHJlc2l6ZSAqL1xuICAgIG1pbmltdW1TY3JlZW5TaXplPzogbnVtYmVyO1xuICAgIC8qKiBEaWFsb2cgc2hvd24gaWYgdGhlIHdpbmRvdyB3aWR0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGRlZmluZWQgbWluaW11bSBzY3JlZW4gc2l6ZS4gKi9cbiAgICByZXNpemVEaWFsb2c/OiB7XG4gICAgICAgIC8qKiBSZXNpemUgZGlhbG9nIHRpdGxlIHRleHQgKi9cbiAgICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICAgIC8qKiBSZXNpemUgZGlhbG9nIHRleHQgKi9cbiAgICAgICAgY29udGVudDogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50cyB0aGUgdG91ciBmcm9tIGFkdmFuY2luZyBieSBjbGlja2luZyB0aGUgYmFja2Ryb3AuXG4gICAgICogVGhpcyBzaG91bGQgb25seSBiZSBzZXQgaWYgeW91IGFyZSBjb21wbGV0ZWx5IHN1cmUgeW91ciB0b3VyIGlzIGRpc3BsYXlpbmcgY29ycmVjdGx5IG9uIGFsbCBzY3JlZW4gc2l6ZXMgb3RoZXJ3aXNlIGEgdXNlciBjYW4gZ2V0IHN0dWNrLlxuICAgICAqL1xuICAgIHByZXZlbnRCYWNrZHJvcEZyb21BZHZhbmNpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yaWVudGF0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgLyoqIFdoZXJlIHRoZSB0b3VyIHN0ZXAgd2lsbCBhcHBlYXIgbmV4dCB0byB0aGUgc2VsZWN0ZWQgZWxlbWVudCAqL1xuICAgIG9yaWVudGF0aW9uRGlyZWN0aW9uOiBPcmllbnRhdGlvbjtcbiAgICAvKiogV2hlbiB0aGlzIG9yaWVudGF0aW9uIGNvbmZpZ3VyYXRpb24gc3RhcnRzIGluIHBpeGVscyAqL1xuICAgIG1heGltdW1TaXplPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgT3JpZW50YXRpb24ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQm90dG9tID0gJ2JvdHRvbSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCb3R0b21MZWZ0ID0gJ2JvdHRvbS1sZWZ0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJvdHRvbVJpZ2h0ID0gJ2JvdHRvbS1yaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDZW50ZXIgPSAnY2VudGVyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExlZnQgPSAnbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBSaWdodCA9ICdyaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUb3AgPSAndG9wJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRvcExlZnQgPSAndG9wLWxlZnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVG9wUmlnaHQgPSAndG9wLXJpZ2h0Jztcbn1cblxuZXhwb3J0IGVudW0gUHJvZ3Jlc3NJbmRpY2F0b3JMb2NhdGlvbiB7XG4gICAgSW5zaWRlTmV4dEJ1dHRvbiA9ICdpbnNpZGUtbmV4dC1idXR0b24nLFxuICAgIFRvcE9mVG91ckJsb2NrID0gJ3RvcC1vZi10b3VyLWJsb2NrJyxcbiAgICBOb25lID0gJ25vbmUnLFxuICAgIERvdHMgPSAnZG90cydcbn0gIFxuIl19
@@ -0,0 +1,28 @@
1
+ import { GuidedTourService } from './guided-tour.service';
2
+ import { GuidedTourComponent } from './guided-tour.component';
3
+ import { NgModule, ErrorHandler } from '@angular/core';
4
+ import { CommonModule } from '@angular/common';
5
+ import { WindowRefService } from './windowref.service';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import * as i0 from "@angular/core";
8
+ export class GuidedTourModule {
9
+ static forRoot() {
10
+ return {
11
+ ngModule: GuidedTourModule,
12
+ providers: [ErrorHandler, GuidedTourService],
13
+ };
14
+ }
15
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourModule, declarations: [GuidedTourComponent], imports: [CommonModule, MatIconModule], exports: [GuidedTourComponent] });
17
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourModule, providers: [WindowRefService], imports: [CommonModule, MatIconModule] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuidedTourModule, decorators: [{
20
+ type: NgModule,
21
+ args: [{
22
+ declarations: [GuidedTourComponent],
23
+ imports: [CommonModule, MatIconModule],
24
+ providers: [WindowRefService],
25
+ exports: [GuidedTourComponent]
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBUXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO1NBQzdDLENBQUM7SUFDSixDQUFDOzJIQU5VLGdCQUFnQjs0SEFBaEIsZ0JBQWdCLGlCQUxaLG1CQUFtQixhQUN4QixZQUFZLEVBQUUsYUFBYSxhQUUzQixtQkFBbUI7NEhBRWxCLGdCQUFnQixhQUhoQixDQUFDLGdCQUFnQixDQUFDLFlBRG5CLFlBQVksRUFBRSxhQUFhOzs0RkFJMUIsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3VpZGVkVG91clNlcnZpY2UgfSBmcm9tICcuL2d1aWRlZC10b3VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3VpZGVkVG91ckNvbXBvbmVudCB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nTW9kdWxlLCBFcnJvckhhbmRsZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBXaW5kb3dSZWZTZXJ2aWNlIH0gZnJvbSAnLi93aW5kb3dyZWYuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0d1aWRlZFRvdXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbV2luZG93UmVmU2VydmljZV0sXG4gIGV4cG9ydHM6IFtHdWlkZWRUb3VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBHdWlkZWRUb3VyTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBHdWlkZWRUb3VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbRXJyb3JIYW5kbGVyLCBHdWlkZWRUb3VyU2VydmljZV0sXG4gICAgfTtcbiAgfVxufVxuIl19