@acorex/components 18.16.0-next.5 → 18.16.0-next.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/color-palette/lib/color-palette-input.component.d.ts +6 -1
  2. package/color-palette/lib/color-palette-picker.component.d.ts +6 -2
  3. package/data-pager/lib/data-pager.component.d.ts +1 -2
  4. package/esm2022/action-sheet/lib/action-sheet.component.mjs +2 -2
  5. package/esm2022/color-palette/lib/color-palette-input.component.mjs +2 -1
  6. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +66 -40
  7. package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +15 -11
  8. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +3 -3
  9. package/esm2022/data-pager/lib/data-pager.component.mjs +6 -7
  10. package/esm2022/data-table/lib/data-table/data-table.component.mjs +1 -1
  11. package/esm2022/image-editor/lib/image-editor-container/image-editor-container.component.mjs +5 -4
  12. package/esm2022/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.mjs +2 -2
  13. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +3 -3
  14. package/esm2022/image-editor/lib/image-editor-view/image-editor-view.component.mjs +59 -16
  15. package/esm2022/image-editor/lib/image-editor.service.mjs +1 -1
  16. package/esm2022/media-viewer/lib/media-viewer-container/media-viewer-container.component.mjs +7 -3
  17. package/esm2022/media-viewer/lib/media-viewer-slider/media-viewer-slider.component.mjs +2 -2
  18. package/esm2022/step-wizard/lib/step-wizard.component.mjs +20 -3
  19. package/esm2022/tabs/lib/tabs.component.mjs +2 -2
  20. package/fesm2022/acorex-components-action-sheet.mjs +2 -2
  21. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  22. package/fesm2022/acorex-components-color-palette.mjs +65 -38
  23. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  24. package/fesm2022/acorex-components-data-pager.mjs +21 -18
  25. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  26. package/fesm2022/acorex-components-data-table.mjs +1 -1
  27. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  28. package/fesm2022/acorex-components-image-editor.mjs +64 -22
  29. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  30. package/fesm2022/acorex-components-media-viewer.mjs +8 -4
  31. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  32. package/fesm2022/acorex-components-step-wizard.mjs +18 -1
  33. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  34. package/fesm2022/acorex-components-tabs.mjs +1 -1
  35. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  36. package/image-editor/lib/image-editor-container/image-editor-container.component.d.ts +2 -0
  37. package/image-editor/lib/image-editor-view/image-editor-view.component.d.ts +16 -3
  38. package/image-editor/lib/image-editor.service.d.ts +2 -2
  39. package/package.json +1 -1
  40. package/step-wizard/lib/step-wizard.component.d.ts +2 -1
@@ -1,10 +1,36 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, effect, HostBinding, inject, input, signal, viewChild, ViewEncapsulation, } from '@angular/core';
1
+ import { MXBaseComponent } from '@acorex/components/common';
2
+ import { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, HostBinding, inject, input, Renderer2, signal, viewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { AXImageEditorContainerComponent } from '../image-editor-container/image-editor-container.component';
2
4
  import { AXImageEditorService } from '../image-editor.service';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@acorex/components/button";
5
- export class AXImageEditorViewComponent {
7
+ export class AXImageEditorViewComponent extends MXBaseComponent {
8
+ /** @ignore */
9
+ resizeWindow() {
10
+ this.canvasResponsive(this.service.newImage());
11
+ }
12
+ /** @ignore */
13
+ canvasResponsive(image) {
14
+ const parentWidth = this.parent.imageEditorContainer().nativeElement.clientWidth;
15
+ const imageWidth = this.service.initialImage().width;
16
+ if (parentWidth < imageWidth) {
17
+ this.getHostElement().style.width = `${parentWidth}px`;
18
+ this.getHostElement().style.height = `${parentWidth * this.imageAspect()}px`;
19
+ this.canvasElem().nativeElement.width = parentWidth;
20
+ this.canvasElem().nativeElement.height = parentWidth * this.imageAspect();
21
+ this.ctx().drawImage(image, 0, 0, parentWidth, parentWidth * this.imageAspect());
22
+ }
23
+ else {
24
+ this.getHostElement().style.width = `${imageWidth}px`;
25
+ this.getHostElement().style.height = `${imageWidth / this.imageAspect()}px`;
26
+ this.canvasElem().nativeElement.width = imageWidth;
27
+ this.canvasElem().nativeElement.height = imageWidth / this.imageAspect();
28
+ this.ctx().drawImage(image, 0, 0, imageWidth, imageWidth / this.imageAspect());
29
+ }
30
+ }
6
31
  /** @ignore */
7
32
  constructor() {
33
+ super();
8
34
  /**
9
35
  * its receive image src.
10
36
  */
@@ -27,11 +53,33 @@ export class AXImageEditorViewComponent {
27
53
  this.cropEndX = signal(0);
28
54
  /** @ignore */
29
55
  this.cropEndY = signal(0);
56
+ /** @ignore */
57
+ this.parent = inject(AXImageEditorContainerComponent);
58
+ this.renderer = inject(Renderer2);
59
+ /** @ignore */
60
+ this.imageAspect = computed(() => {
61
+ return this.service.initialImage().width / this.service.initialImage().height;
62
+ });
30
63
  afterNextRender(() => {
64
+ this.resizeEventListener = this.renderer.listen(window, 'resize', this.resizeWindow.bind(this));
65
+ //load image
31
66
  this.service.initialImage.set(new Image());
32
67
  this.service.initialImage().src = this.src();
33
68
  this.service.initialImage().crossOrigin = 'anonymous';
34
- this.EventListener = this.service.initialImage().addEventListener('load', this.imageLoaded.bind(this));
69
+ this.imageLoadEventListener = this.renderer.listen(this.service.initialImage(), 'load', this.imageLoaded.bind(this));
70
+ //set canvas options
71
+ this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));
72
+ this.ctx().lineJoin = 'round';
73
+ this.ctx().lineCap = this.service.lineCap();
74
+ this.ctx().strokeStyle = this.service.penColor();
75
+ this.ctx().lineWidth = this.service.lineWidth();
76
+ this.ctx().globalCompositeOperation = 'source-over';
77
+ this.ctx().globalAlpha = 1;
78
+ });
79
+ effect(() => {
80
+ if (this.parent.imageEditorContainer() && this.service.isImageLoad()) {
81
+ this.canvasResponsive(this.service.initialImage());
82
+ }
35
83
  });
36
84
  effect(() => {
37
85
  if (!this.service.toggleClear().userInteract)
@@ -59,23 +107,18 @@ export class AXImageEditorViewComponent {
59
107
  }
60
108
  /** @ignore */
61
109
  ngOnDestroy() {
62
- this.service.initialImage()?.removeEventListener('load', this.EventListener);
110
+ if (this.resizeEventListener) {
111
+ this.resizeEventListener();
112
+ }
113
+ if (this.imageLoadEventListener) {
114
+ this.imageLoadEventListener();
115
+ }
63
116
  }
64
117
  /** @ignore */
65
118
  imageLoaded() {
66
119
  this.service.newImage.set(this.service.initialImage());
67
- this.canvasElem().nativeElement.width = this.service.initialImage().width;
68
- this.canvasElem().nativeElement.height = this.service.initialImage().height;
69
- this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));
70
- this.ctx().drawImage(this.service.initialImage(), 0, 0, this.service.initialImage().width, this.service.initialImage().height);
71
120
  this.service.toggleClear.set({ userInteract: false, state: false });
72
121
  this.service.isImageLoad.set(true);
73
- this.ctx().lineJoin = 'round';
74
- this.ctx().lineCap = this.service.lineCap();
75
- this.ctx().strokeStyle = this.service.penColor();
76
- this.ctx().lineWidth = this.service.lineWidth();
77
- this.ctx().globalCompositeOperation = 'source-over';
78
- this.ctx().globalAlpha = 1;
79
122
  }
80
123
  /** @ignore */
81
124
  penConfigHandler(penType) {
@@ -304,7 +347,7 @@ export class AXImageEditorViewComponent {
304
347
  return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;
305
348
  }
306
349
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXImageEditorViewComponent, selector: "ax-image-editor-view", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__hostStyle" } }, viewQueries: [{ propertyName: "canvasElem", first: true, predicate: ["canvasElem"], descendants: true, isSignal: true }], ngImport: i0, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
350
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXImageEditorViewComponent, selector: "ax-image-editor-view", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__hostStyle" } }, viewQueries: [{ propertyName: "canvasElem", first: true, predicate: ["canvasElem"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
308
351
  }
309
352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorViewComponent, decorators: [{
310
353
  type: Component,
@@ -313,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
313
356
  type: HostBinding,
314
357
  args: ['style']
315
358
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ltYWdlLWVkaXRvci9zcmMvbGliL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3Itdmlldy9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUVOLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLDBCQUEwQjtJQTJCckMsY0FBYztJQUNkO1FBM0JBOztXQUVHO1FBQ0gsUUFBRyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFjO1FBQ0osZUFBVSxHQUFHLFNBQVMsQ0FBZ0MsWUFBWSxDQUFDLENBQUM7UUFDOUUsY0FBYztRQUNKLFFBQUcsR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGNBQWM7UUFDSixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakQsY0FBYztRQUNKLGtCQUFhLEdBQUcsTUFBTSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDSixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxjQUFjO1FBQ0osZUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFD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Q0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO1FBQ3ZELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxD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LENBQUMsRUFDRCxZQUFZLEVBQ1osQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNZLFdBQVc7UUFDckIsT0FBTyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7SUFDNUcsQ0FBQzs4R0E3WFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsMldDdkJ2Qyx1Z0JBaUJBOzsyRkRNYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7d0RBNlh6QixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGFmdGVyTmV4dFJlbmRlcixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgZWZmZWN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEltYWdlRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL2ltYWdlLWVkaXRvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtaW1hZ2UtZWRpdG9yLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhJbWFnZUVkaXRvclZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIGl0cyByZWNlaXZlIGltYWdlIHNyYy5cclxuICAgKi9cclxuICBzcmMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjYW52YXNFbGVtID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+PignY2FudmFzRWxlbScpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGN0eCA9IHNpZ25hbDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG51bGwpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhJbWFnZUVkaXRvclNlcnZpY2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BJbWFnZURhdGEgPSBzaWduYWw8SW1hZ2VEYXRhPihudWxsKTtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BTdGFydFggPSBzaWduYWwoMCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcFN0YXJ0WSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWCA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBFdmVudExpc3RlbmVyO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZS5zZXQobmV3IEltYWdlKCkpO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkuc3JjID0gdGhpcy5zcmMoKTtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICAgIHRoaXMuRXZlbnRMaXN0ZW5lciA9IHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5pbWFnZUxvYWRlZC5iaW5kKHRoaXMpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyKCkudXNlckludGVyYWN0KSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS50b2dnbGVDbGVhcigpLnN0YXRlKSB7XHJcbiAgICAgICAgICB0aGlzLmltYWdlTG9hZGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnVzZXJJbnRlcmFjdCB8fCAhdGhpcy5jdHgoKSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuY3R4KCkuZmlsdGVyID0gJ2JyaWdodG5lc3MoNDAlKSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY3R4KCkuZmlsdGVyID0gJ2JyaWdodG5lc3MoMTAwJSknO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZShcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIDAsXHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCxcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCxcclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnJvdGF0ZSgpLnVzZXJJbnRlcmFjdCB8fCAhdGhpcy5jdHgoKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucm90YXRlSW1hZ2UoKTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzLkV2ZW50TGlzdGVuZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaW1hZ2VMb2FkZWQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2Uuc2V0KHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKSk7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoID0gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQgPSB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkuaGVpZ2h0O1xyXG4gICAgdGhpcy5jdHguc2V0KHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSk7XHJcbiAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZShcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLFxyXG4gICAgICAwLFxyXG4gICAgICAwLFxyXG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkud2lkdGgsXHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5oZWlnaHQsXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuaXNJbWFnZUxvYWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jdHgoKS5saW5lSm9pbiA9ICdyb3VuZCc7XHJcbiAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9IHRoaXMuc2VydmljZS5wZW5Db2xvcigpO1xyXG4gICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSB0aGlzLnNlcnZpY2UubGluZVdpZHRoKCk7XHJcbiAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHBlbkNvbmZpZ0hhbmRsZXIocGVuVHlwZTogJ3BlbicgfCAnaGlnaGxpZ2h0Jykge1xyXG4gICAgc3dpdGNoIChwZW5UeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3Blbic6XHJcbiAgICAgICAgdGhpcy5jdHgoKS5nbG9iYWxBbHBoYSA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2hpZ2hsaWdodCc6XHJcbiAgICAgICAgdGhpcy5jdHgoKS5nbG9iYWxBbHBoYSA9IDAuMDA4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBtb3VzZURvd25IYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KHRydWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jcm9wU3RhcnRYLnNldChlLm9mZnNldFgpO1xyXG4gICAgICB0aGlzLmNyb3BTdGFydFkuc2V0KGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZW5Db25maWdIYW5kbGVyKHRoaXMuc2VydmljZS5wZW5UeXBlKCkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUNhcCA9IHRoaXMuc2VydmljZS5saW5lQ2FwKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG5cclxuICAgICAgdGhpcy5jdHgoKS5iZWdpblBhdGgoKTtcclxuICAgICAgdGhpcy5jdHgoKS5tb3ZlVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVUbyhlLm9mZnNldFgsIGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBtb3VzZU1vdmVIYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc01vdXNlRG93bigpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NjcmVlbic7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KGUub2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuZHJhd1NlbGVjdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgbW91c2VVcEhhbmRsZXIoKSB7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlICYmIHRoaXMuY3JvcEVuZFgoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICAgIHRoaXMuY3JvcEltYWdlRnVuY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuY2xvc2VQYXRoKCk7XHJcbiAgICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCB0b3VjaFN0YXJ0SGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XHJcbiAgICBjb25zdCBvZmZzZXRYID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLmxlZnQ7XHJcbiAgICBjb25zdCBvZmZzZXRZID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLnRvcDtcclxuXHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldCh0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WC5zZXQob2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WS5zZXQob2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZW5Db25maWdIYW5kbGVyKHRoaXMuc2VydmljZS5wZW5UeXBlKCkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUNhcCA9IHRoaXMuc2VydmljZS5saW5lQ2FwKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG5cclxuICAgICAgdGhpcy5jdHgoKS5iZWdpblBhdGgoKTtcclxuICAgICAgdGhpcy5jdHgoKS5tb3ZlVG8ob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgdG91Y2hNb3ZlSGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIHByZXZlbnQgcGFnZSBmcm9tIHNjcm9sbFxyXG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHJldHVybjtcclxuICAgIGNvbnN0IG9mZnNldFggPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkubGVmdDtcclxuICAgIGNvbnN0IG9mZnNldFkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkudG9wO1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc2NyZWVuJztcclxuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQob2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmRyYXdTZWxlY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgdG91Y2hFbmRIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSAmJiB0aGlzLmNyb3BFbmRYKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc291cmNlLW92ZXInO1xyXG4gICAgICB0aGlzLmNyb3BJbWFnZUZ1bmN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN0eCgpLmNsb3NlUGF0aCgpO1xyXG4gICAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgZHJhd1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xyXG4gICAgY29uc3QgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG5cclxuICAgIHRoaXMuY3R4KCkuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLCAwLCAwKTtcclxuICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xyXG4gICAgdGhpcy5jdHgoKS5zZXRMaW5lRGFzaChbNCwgMTBdKTtcclxuICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gMjtcclxuICAgIHRoaXMuY3R4KCkuc3Ryb2tlUmVjdCh0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wU3RhcnRZKCksIGNyb3BXaWR0aCwgY3JvcEhlaWdodCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wSW1hZ2VGdW5jdGlvbigpIHtcclxuICAgIHRoaXMuY3R4KCkuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLCAwLCAwKTtcclxuXHJcbiAgICBsZXQgaW1hZ2VEYXRhOiBJbWFnZURhdGE7XHJcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5ID0gaW1hZ2VEYXRhLmRhdGE7XHJcblxyXG4gICAgY29uc3QgYnJpZ2h0bmVzc0ZhY3RvciA9IDIuNDsgLy8gSW5jcmVhc2UgYnJpZ2h0bmVzcyBieSAyMCVcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gNCkge1xyXG4gICAgICBkYXRhW2ldID0gZGF0YVtpXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIFJlZFxyXG4gICAgICBkYXRhW2kgKyAxXSA9IGRhdGFbaSArIDFdICogYnJpZ2h0bmVzc0ZhY3RvcjsgLy8gR3JlZW5cclxuICAgICAgZGF0YVtpICsgMl0gPSBkYXRhW2kgKyAyXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIEJsdWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wRW5kWSgpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BFbmRYKCksIHRoaXMuY3JvcEVuZFkoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wU3RhcnRYKCksIHRoaXMuY3JvcFN0YXJ0WSgpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BFbmRYKCksIHRoaXMuY3JvcFN0YXJ0WSgpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyb3BJbWFnZURhdGEuc2V0KGltYWdlRGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wQnV0dG9uSGFuZGxlcigpIHtcclxuICAgIGxldCBjcm9wV2lkdGg6IG51bWJlcjtcclxuICAgIGxldCBjcm9wSGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnJvdGF0ZS51cGRhdGUoKHByZXYpID0+IHtcclxuICAgICAgcmV0dXJuIHsgdXNlckludGVyYWN0OiBmYWxzZSwgc3RhdGU6IHByZXYuc3RhdGUgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGggPSBjcm9wV2lkdGg7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCA9IGNyb3BIZWlnaHQ7XHJcblxyXG4gICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEodGhpcy5jcm9wSW1hZ2VEYXRhKCksIDAsIDApO1xyXG4gICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIHRoaXMuY3JvcEltYWdlRGF0YS5zZXQobnVsbCk7XHJcbiAgICB0aGlzLnNlcnZpY2UuY3JvcFN0YXRlLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHJvdGF0ZUltYWdlKCkge1xyXG4gICAgdGhpcy5jdHgoKS5zYXZlKCk7XHJcbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XHJcbiAgICB0aGlzLmN0eCgpLnRyYW5zbGF0ZSh0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCAvIDIsIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCAvIDIpO1xyXG4gICAgdGhpcy5jdHgoKS5yb3RhdGUoKHRoaXMuc2VydmljZS5yb3RhdGUoKS5zdGF0ZSAqIE1hdGguUEkpIC8gMTgwKTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxyXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKSxcclxuICAgICAgLXRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoIC8gMixcclxuICAgICAgLXRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCAvIDIsXHJcbiAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoLFxyXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jdHgoKS5yZXN0b3JlKCk7XHJcblxyXG4gICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIHRoaXMuc2VydmljZS5yb3RhdGUudXBkYXRlKChwcmV2KSA9PiB7XHJcbiAgICAgIHJldHVybiB7IHN0YXRlOiBwcmV2LnN0YXRlLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNhdmVJbWFnZUNoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld0ltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICBuZXdJbWFnZS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgbmV3SW1hZ2Uuc3JjID0gdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxKTtcclxuICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZS5zZXQobmV3SW1hZ2UpO1xyXG5cclxuICAgIGNvbnN0IHRlbXBCbG9iID0gW107XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LnRvQmxvYihcclxuICAgICAgKGJsb2IpID0+IHtcclxuICAgICAgICB0ZW1wQmxvYi5wdXNoKGJsb2IpO1xyXG4gICAgICB9LFxyXG4gICAgICAnaW1hZ2UvanBlZycsXHJcbiAgICAgIDEsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0Jsb2IoXHJcbiAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgdGVtcEJsb2IucHVzaChibG9iKTtcclxuICAgICAgfSxcclxuICAgICAgJ2ltYWdlL3BuZycsXHJcbiAgICAgIDEsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0Jsb2IoXHJcbiAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgdGVtcEJsb2IucHVzaChibG9iKTtcclxuICAgICAgfSxcclxuICAgICAgJ2ltYWdlL3dlYnAnLFxyXG4gICAgICAxLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VydmljZS5pbWFnZUJsb2Iuc2V0KHRlbXBCbG9iKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZScpXHJcbiAgcHJpdmF0ZSBnZXQgX19ob3N0U3R5bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgd2lkdGg6ICR7dGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpPy53aWR0aH1weDsgaGVpZ2h0OiAke3RoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKT8uaGVpZ2h0fXB4YDtcclxuICB9XHJcbn1cclxuIiwiPGNhbnZhc1xuICB0YWJpbmRleD1cIjFcIlxuICAobW91c2Vkb3duKT1cIm1vdXNlRG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gIChtb3VzZXVwKT1cIm1vdXNlVXBIYW5kbGVyKClcIlxuICAobW91c2Vtb3ZlKT1cIm1vdXNlTW92ZUhhbmRsZXIoJGV2ZW50KVwiXG4gICh0b3VjaHN0YXJ0KT1cInRvdWNoU3RhcnRIYW5kbGVyKCRldmVudClcIlxuICAodG91Y2hlbmQpPVwidG91Y2hFbmRIYW5kbGVyKClcIlxuICAodG91Y2htb3ZlKT1cInRvdWNoTW92ZUhhbmRsZXIoJGV2ZW50KVwiXG4gIGNsYXNzPVwiYXgtY2FudmFzLWVsZW1lbnRcIlxuICAjY2FudmFzRWxlbVxuPjwvY2FudmFzPlxuPGF4LWJ1dHRvblxuICAoY2xpY2spPVwiY3JvcEJ1dHRvbkhhbmRsZXIoKVwiXG4gIFtzdHlsZV09XCJ7IGRpc3BsYXk6IHNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUgPyAnYmxvY2snIDogJ25vbmUnIH1cIlxuICBjbGFzcz1cImF4LWNyb3Atc2F2ZSBheC1zbVwiXG4gIHRleHQ9XCJDcm9wXCJcbj48L2F4LWJ1dHRvbj5cbiJdfQ==
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ltYWdlLWVkaXRvci9zcmMvbGliL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3Itdmlldy9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGVBQWU7SUFvQzdELGNBQWM7SUFDSixZQUFZO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWM7SUFDSixnQkFBZ0IsQ0FBQyxLQUF1QjtRQUNoRCxNQUFNLFdBQVcsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUMsYUFBZ0MsQ0FBQyxXQUFXLENBQUM7UUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FB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LElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENB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Q0FBQztJQUVELGNBQWM7SUFDZCxJQUNZLFdBQVc7UUFDckIsT0FBTyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7SUFDNUcsQ0FBQzs4R0F6YVUsMEJBQTBCO2tHQUExQiwwQkFBMEIsa1lDM0J2Qyx1Z0JBaUJBOzsyRkRVYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7d0RBeWF6QixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNWEJhc2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBhZnRlck5leHRSZW5kZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgUmVuZGVyZXIyLFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYSW1hZ2VFZGl0b3JDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9pbWFnZS1lZGl0b3ItY29udGFpbmVyL2ltYWdlLWVkaXRvci1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhJbWFnZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9pbWFnZS1lZGl0b3Iuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWltYWdlLWVkaXRvci12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYSW1hZ2VFZGl0b3JWaWV3Q29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiBpdHMgcmVjZWl2ZSBpbWFnZSBzcmMuXHJcbiAgICovXHJcbiAgc3JjID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY2FudmFzRWxlbSA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50Pj4oJ2NhbnZhc0VsZW0nKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjdHggPSBzaWduYWw8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihudWxsKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYSW1hZ2VFZGl0b3JTZXJ2aWNlKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wSW1hZ2VEYXRhID0gc2lnbmFsPEltYWdlRGF0YT4obnVsbCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BTdGFydFggPSBzaWduYWwoMCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcFN0YXJ0WSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWCA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBwYXJlbnQgPSBpbmplY3QoQVhJbWFnZUVkaXRvckNvbnRhaW5lckNvbXBvbmVudCk7XHJcbiAgcHJvdGVjdGVkIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaW1hZ2VBc3BlY3QgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoIC8gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLmhlaWdodDtcclxuICB9KTtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICByZXNpemVFdmVudExpc3RlbmVyO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgaW1hZ2VMb2FkRXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgcmVzaXplV2luZG93KCkge1xyXG4gICAgdGhpcy5jYW52YXNSZXNwb25zaXZlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNhbnZhc1Jlc3BvbnNpdmUoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHBhcmVudFdpZHRoID0gKHRoaXMucGFyZW50LmltYWdlRWRpdG9yQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCkuY2xpZW50V2lkdGg7XHJcbiAgICBjb25zdCBpbWFnZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoO1xyXG5cclxuICAgIGlmIChwYXJlbnRXaWR0aCA8IGltYWdlV2lkdGgpIHtcclxuICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnN0eWxlLndpZHRoID0gYCR7cGFyZW50V2lkdGh9cHhgO1xyXG4gICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuc3R5bGUuaGVpZ2h0ID0gYCR7cGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCl9cHhgO1xyXG4gICAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoID0gcGFyZW50V2lkdGg7XHJcbiAgICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gcGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCk7XHJcbiAgICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBwYXJlbnRXaWR0aCwgcGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnN0eWxlLndpZHRoID0gYCR7aW1hZ2VXaWR0aH1weGA7XHJcbiAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zdHlsZS5oZWlnaHQgPSBgJHtpbWFnZVdpZHRoIC8gdGhpcy5pbWFnZUFzcGVjdCgpfXB4YDtcclxuICAgICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCA9IGltYWdlV2lkdGg7XHJcbiAgICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gaW1hZ2VXaWR0aCAvIHRoaXMuaW1hZ2VBc3BlY3QoKTtcclxuICAgICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGltYWdlV2lkdGgsIGltYWdlV2lkdGggLyB0aGlzLmltYWdlQXNwZWN0KCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih3aW5kb3csICdyZXNpemUnLCB0aGlzLnJlc2l6ZVdpbmRvdy5iaW5kKHRoaXMpKTtcclxuICAgICAgLy9sb2FkIGltYWdlXHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2Uuc2V0KG5ldyBJbWFnZSgpKTtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLnNyYyA9IHRoaXMuc3JjKCk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgICB0aGlzLmltYWdlTG9hZEV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcclxuICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCksXHJcbiAgICAgICAgJ2xvYWQnLFxyXG4gICAgICAgIHRoaXMuaW1hZ2VMb2FkZWQuYmluZCh0aGlzKSxcclxuICAgICAgKTtcclxuICAgICAgLy9zZXQgY2FudmFzIG9wdGlvbnNcclxuICAgICAgdGhpcy5jdHguc2V0KHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUpvaW4gPSAncm91bmQnO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQWxwaGEgPSAxO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucGFyZW50LmltYWdlRWRpdG9yQ29udGFpbmVyKCkgJiYgdGhpcy5zZXJ2aWNlLmlzSW1hZ2VMb2FkKCkpIHtcclxuICAgICAgICB0aGlzLmNhbnZhc1Jlc3BvbnNpdmUodGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UudG9nZ2xlQ2xlYXIoKS51c2VySW50ZXJhY3QpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyKCkuc3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VMb2FkZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuICAgICk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkudXNlckludGVyYWN0IHx8ICF0aGlzLmN0eCgpKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5jdHgoKS5maWx0ZXIgPSAnYnJpZ2h0bmVzcyg0MCUpJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdHgoKS5maWx0ZXIgPSAnYnJpZ2h0bmVzcygxMDAlKSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoLFxyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkuaGVpZ2h0LFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuICAgICk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2Uucm90YXRlKCkudXNlckludGVyYWN0IHx8ICF0aGlzLmN0eCgpKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yb3RhdGVJbWFnZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc2l6ZUV2ZW50TGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5yZXNpemVFdmVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VMb2FkRXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLmltYWdlTG9hZEV2ZW50TGlzdGVuZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGltYWdlTG9hZGVkKCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlLnNldCh0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcclxuICAgIHRoaXMuc2VydmljZS5pc0ltYWdlTG9hZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBwZW5Db25maWdIYW5kbGVyKHBlblR5cGU6ICdwZW4nIHwgJ2hpZ2hsaWdodCcpIHtcclxuICAgIHN3aXRjaCAocGVuVHlwZSkge1xyXG4gICAgICBjYXNlICdwZW4nOlxyXG4gICAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQWxwaGEgPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdoaWdobGlnaHQnOlxyXG4gICAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQWxwaGEgPSAwLjAwODtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgbW91c2VEb3duSGFuZGxlcihlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldCh0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WC5zZXQoZS5vZmZzZXRYKTtcclxuICAgICAgdGhpcy5jcm9wU3RhcnRZLnNldChlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmNyb3BFbmRYLnNldCgwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVuQ29uZmlnSGFuZGxlcih0aGlzLnNlcnZpY2UucGVuVHlwZSgpKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9IHRoaXMuc2VydmljZS5wZW5Db2xvcigpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVXaWR0aCA9IHRoaXMuc2VydmljZS5saW5lV2lkdGgoKTtcclxuXHJcbiAgICAgIHRoaXMuY3R4KCkuYmVnaW5QYXRoKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubW92ZVRvKGUub2Zmc2V0WCwgZS5vZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgbW91c2VNb3ZlSGFuZGxlcihlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24oKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzY3JlZW4nO1xyXG4gICAgICB0aGlzLmNyb3BFbmRYLnNldChlLm9mZnNldFgpO1xyXG4gICAgICB0aGlzLmNyb3BFbmRZLnNldChlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmRyYXdTZWxlY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKGUub2Zmc2V0WCwgZS5vZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIG1vdXNlVXBIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSAmJiB0aGlzLmNyb3BFbmRYKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc291cmNlLW92ZXInO1xyXG4gICAgICB0aGlzLmNyb3BJbWFnZUZ1bmN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN0eCgpLmNsb3NlUGF0aCgpO1xyXG4gICAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgdG91Y2hTdGFydEhhbmRsZXIoZTogVG91Y2hFdmVudCkge1xyXG4gICAgY29uc3Qgb2Zmc2V0WCA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gdGhpcy5nZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKS5sZWZ0O1xyXG4gICAgY29uc3Qgb2Zmc2V0WSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gdGhpcy5nZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKS50b3A7XHJcblxyXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQodHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICB0aGlzLmNyb3BTdGFydFguc2V0KG9mZnNldFgpO1xyXG4gICAgICB0aGlzLmNyb3BTdGFydFkuc2V0KG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmNyb3BFbmRYLnNldCgwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVuQ29uZmlnSGFuZGxlcih0aGlzLnNlcnZpY2UucGVuVHlwZSgpKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9IHRoaXMuc2VydmljZS5wZW5Db2xvcigpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVXaWR0aCA9IHRoaXMuc2VydmljZS5saW5lV2lkdGgoKTtcclxuXHJcbiAgICAgIHRoaXMuY3R4KCkuYmVnaW5QYXRoKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubW92ZVRvKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVUbyhvZmZzZXRYLCBvZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHRvdWNoTW92ZUhhbmRsZXIoZTogVG91Y2hFdmVudCkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHBhZ2UgZnJvbSBzY3JvbGxcclxuICAgIGlmICghdGhpcy5pc01vdXNlRG93bigpKSByZXR1cm47XHJcbiAgICBjb25zdCBvZmZzZXRYID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLmxlZnQ7XHJcbiAgICBjb25zdCBvZmZzZXRZID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLnRvcDtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NjcmVlbic7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KG9mZnNldFgpO1xyXG4gICAgICB0aGlzLmNyb3BFbmRZLnNldChvZmZzZXRZKTtcclxuICAgICAgdGhpcy5kcmF3U2VsZWN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVUbyhvZmZzZXRYLCBvZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHRvdWNoRW5kSGFuZGxlcigpIHtcclxuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KGZhbHNlKTtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUgJiYgdGhpcy5jcm9wRW5kWCgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcclxuICAgICAgdGhpcy5jcm9wSW1hZ2VGdW5jdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdHgoKS5jbG9zZVBhdGgoKTtcclxuICAgICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGRyYXdTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcclxuICAgIGNvbnN0IGNyb3BIZWlnaHQgPSB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKTtcclxuXHJcbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XHJcbiAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZSh0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKSwgMCwgMCk7XHJcbiAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gJ3doaXRlJztcclxuICAgIHRoaXMuY3R4KCkuc2V0TGluZURhc2goWzQsIDEwXSk7XHJcbiAgICB0aGlzLmN0eCgpLmxpbmVXaWR0aCA9IDI7XHJcbiAgICB0aGlzLmN0eCgpLnN0cm9rZVJlY3QodGhpcy5jcm9wU3RhcnRYKCksIHRoaXMuY3JvcFN0YXJ0WSgpLCBjcm9wV2lkdGgsIGNyb3BIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcEltYWdlRnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XHJcbiAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZSh0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKSwgMCwgMCk7XHJcblxyXG4gICAgbGV0IGltYWdlRGF0YTogSW1hZ2VEYXRhO1xyXG4gICAgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFkoKSAtIHRoaXMuY3JvcEVuZFkoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFkoKSAtIHRoaXMuY3JvcEVuZFkoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRZKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWCgpIC0gdGhpcy5jcm9wU3RhcnRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCksXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRhOiBVaW50OENsYW1wZWRBcnJheSA9IGltYWdlRGF0YS5kYXRhO1xyXG5cclxuICAgIGNvbnN0IGJyaWdodG5lc3NGYWN0b3IgPSAyLjQ7IC8vIEluY3JlYXNlIGJyaWdodG5lc3MgYnkgMjAlXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDQpIHtcclxuICAgICAgZGF0YVtpXSA9IGRhdGFbaV0gKiBicmlnaHRuZXNzRmFjdG9yOyAvLyBSZWRcclxuICAgICAgZGF0YVtpICsgMV0gPSBkYXRhW2kgKyAxXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIEdyZWVuXHJcbiAgICAgIGRhdGFbaSArIDJdID0gZGF0YVtpICsgMl0gKiBicmlnaHRuZXNzRmFjdG9yOyAvLyBCbHVlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wU3RhcnRYKCksIHRoaXMuY3JvcEVuZFkoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wRW5kWCgpLCB0aGlzLmNyb3BFbmRZKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLnB1dEltYWdlRGF0YShpbWFnZURhdGEsIHRoaXMuY3JvcFN0YXJ0WCgpLCB0aGlzLmNyb3BTdGFydFkoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wRW5kWCgpLCB0aGlzLmNyb3BTdGFydFkoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcm9wSW1hZ2VEYXRhLnNldChpbWFnZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcEJ1dHRvbkhhbmRsZXIoKSB7XHJcbiAgICBsZXQgY3JvcFdpZHRoOiBudW1iZXI7XHJcbiAgICBsZXQgY3JvcEhlaWdodDogbnVtYmVyO1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5yb3RhdGUudXBkYXRlKChwcmV2KSA9PiB7XHJcbiAgICAgIHJldHVybiB7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBwcmV2LnN0YXRlIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgY3JvcFdpZHRoID0gdGhpcy5jcm9wRW5kWCgpIC0gdGhpcy5jcm9wU3RhcnRYKCk7XHJcbiAgICAgIGNyb3BIZWlnaHQgPSB0aGlzLmNyb3BTdGFydFkoKSAtIHRoaXMuY3JvcEVuZFkoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgY3JvcFdpZHRoID0gdGhpcy5jcm9wU3RhcnRYKCkgLSB0aGlzLmNyb3BFbmRYKCk7XHJcbiAgICAgIGNyb3BIZWlnaHQgPSB0aGlzLmNyb3BTdGFydFkoKSAtIHRoaXMuY3JvcEVuZFkoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgY3JvcFdpZHRoID0gdGhpcy5jcm9wRW5kWCgpIC0gdGhpcy5jcm9wU3RhcnRYKCk7XHJcbiAgICAgIGNyb3BIZWlnaHQgPSB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgY3JvcFdpZHRoID0gdGhpcy5jcm9wU3RhcnRYKCkgLSB0aGlzLmNyb3BFbmRYKCk7XHJcbiAgICAgIGNyb3BIZWlnaHQgPSB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoID0gY3JvcFdpZHRoO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQgPSBjcm9wSGVpZ2h0O1xyXG5cclxuICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKHRoaXMuY3JvcEltYWdlRGF0YSgpLCAwLCAwKTtcclxuICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XHJcbiAgICB0aGlzLmNyb3BJbWFnZURhdGEuc2V0KG51bGwpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZS5zZXQoeyB1c2VySW50ZXJhY3Q6IGZhbHNlLCBzdGF0ZTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCByb3RhdGVJbWFnZSgpIHtcclxuICAgIHRoaXMuY3R4KCkuc2F2ZSgpO1xyXG4gICAgdGhpcy5jdHgoKS5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQpO1xyXG4gICAgdGhpcy5jdHgoKS50cmFuc2xhdGUodGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkud2lkdGggLyAyLCB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQgLyAyKTtcclxuICAgIHRoaXMuY3R4KCkucm90YXRlKCh0aGlzLnNlcnZpY2Uucm90YXRlKCkuc3RhdGUgKiBNYXRoLlBJKSAvIDE4MCk7XHJcbiAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZShcclxuICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksXHJcbiAgICAgIC10aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCAvIDIsXHJcbiAgICAgIC10aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQgLyAyLFxyXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCxcclxuICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkuaGVpZ2h0LFxyXG4gICAgKTtcclxuICAgIHRoaXMuY3R4KCkucmVzdG9yZSgpO1xyXG5cclxuICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XHJcbiAgICB0aGlzLnNlcnZpY2Uucm90YXRlLnVwZGF0ZSgocHJldikgPT4ge1xyXG4gICAgICByZXR1cm4geyBzdGF0ZTogcHJldi5zdGF0ZSwgdXNlckludGVyYWN0OiBmYWxzZSB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBzYXZlSW1hZ2VDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBuZXdJbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgbmV3SW1hZ2UuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcclxuICAgIG5ld0ltYWdlLnNyYyA9IHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2Uuc2V0KG5ld0ltYWdlKTtcclxuXHJcbiAgICBjb25zdCB0ZW1wQmxvYiA9IFtdO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0Jsb2IoXHJcbiAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgdGVtcEJsb2IucHVzaChibG9iKTtcclxuICAgICAgfSxcclxuICAgICAgJ2ltYWdlL2pwZWcnLFxyXG4gICAgICAxLFxyXG4gICAgKTtcclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQudG9CbG9iKFxyXG4gICAgICAoYmxvYikgPT4ge1xyXG4gICAgICAgIHRlbXBCbG9iLnB1c2goYmxvYik7XHJcbiAgICAgIH0sXHJcbiAgICAgICdpbWFnZS9wbmcnLFxyXG4gICAgICAxLFxyXG4gICAgKTtcclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQudG9CbG9iKFxyXG4gICAgICAoYmxvYikgPT4ge1xyXG4gICAgICAgIHRlbXBCbG9iLnB1c2goYmxvYik7XHJcbiAgICAgIH0sXHJcbiAgICAgICdpbWFnZS93ZWJwJyxcclxuICAgICAgMSxcclxuICAgICk7XHJcbiAgICB0aGlzLnNlcnZpY2UuaW1hZ2VCbG9iLnNldCh0ZW1wQmxvYik7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKVxyXG4gIHByaXZhdGUgZ2V0IF9faG9zdFN0eWxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYHdpZHRoOiAke3RoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKT8ud2lkdGh9cHg7IGhlaWdodDogJHt0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCk/LmhlaWdodH1weGA7XHJcbiAgfVxyXG59XHJcbiIsIjxjYW52YXNcbiAgdGFiaW5kZXg9XCIxXCJcbiAgKG1vdXNlZG93bik9XCJtb3VzZURvd25IYW5kbGVyKCRldmVudClcIlxuICAobW91c2V1cCk9XCJtb3VzZVVwSGFuZGxlcigpXCJcbiAgKG1vdXNlbW92ZSk9XCJtb3VzZU1vdmVIYW5kbGVyKCRldmVudClcIlxuICAodG91Y2hzdGFydCk9XCJ0b3VjaFN0YXJ0SGFuZGxlcigkZXZlbnQpXCJcbiAgKHRvdWNoZW5kKT1cInRvdWNoRW5kSGFuZGxlcigpXCJcbiAgKHRvdWNobW92ZSk9XCJ0b3VjaE1vdmVIYW5kbGVyKCRldmVudClcIlxuICBjbGFzcz1cImF4LWNhbnZhcy1lbGVtZW50XCJcbiAgI2NhbnZhc0VsZW1cbj48L2NhbnZhcz5cbjxheC1idXR0b25cbiAgKGNsaWNrKT1cImNyb3BCdXR0b25IYW5kbGVyKClcIlxuICBbc3R5bGVdPVwieyBkaXNwbGF5OiBzZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlID8gJ2Jsb2NrJyA6ICdub25lJyB9XCJcbiAgY2xhc3M9XCJheC1jcm9wLXNhdmUgYXgtc21cIlxuICB0ZXh0PVwiQ3JvcFwiXG4+PC9heC1idXR0b24+XG4iXX0=
@@ -20,4 +20,4 @@ export class AXImageEditorService {
20
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorService, decorators: [{
21
21
  type: Injectable
22
22
  }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW1hZ2UtZWRpdG9yL3NyYy9saWIvaW1hZ2UtZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUEwQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsTUFBTSxDQUFnQixPQUFPLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQXNCLEtBQUssQ0FBQyxDQUFDO1FBQzdDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RCxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7S0FDaEM7OEdBWlksb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYSW1hZ2VFZGl0b3JTZXJ2aWNlIHtcbiAgcGVuQ29sb3IgPSBzaWduYWw8c3RyaW5nIHwgQ2FudmFzR3JhZGllbnQgfCBDYW52YXNQYXR0ZXJuPignJyk7XG4gIGxpbmVDYXAgPSBzaWduYWw8Q2FudmFzTGluZUNhcD4oJ3JvdW5kJyk7XG4gIGxpbmVXaWR0aCA9IHNpZ25hbDxudW1iZXI+KDEwKTtcbiAgcGVuVHlwZSA9IHNpZ25hbDwncGVuJyB8ICdoaWdobGlnaHQnPigncGVuJyk7XG4gIHRvZ2dsZUNsZWFyID0gc2lnbmFsKHsgc3RhdGU6IGZhbHNlLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH0pO1xuICBjcm9wU3RhdGUgPSBzaWduYWwoeyBzdGF0ZTogZmFsc2UsIHVzZXJJbnRlcmFjdDogZmFsc2UgfSk7XG4gIHJvdGF0ZSA9IHNpZ25hbCh7IHN0YXRlOiAwLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH0pO1xuICBpc0ltYWdlTG9hZCA9IHNpZ25hbChmYWxzZSk7XG4gIG5ld0ltYWdlID0gc2lnbmFsKG51bGwpO1xuICBpbml0aWFsSW1hZ2UgPSBzaWduYWwobnVsbCk7XG4gIGltYWdlQmxvYiA9IHNpZ25hbDxCbG9iW10+KFtdKTtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW1hZ2UtZWRpdG9yL3NyYy9saWIvaW1hZ2UtZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUEwQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsTUFBTSxDQUFnQixPQUFPLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQXNCLEtBQUssQ0FBQyxDQUFDO1FBQzdDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RCxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQUNqRCxpQkFBWSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7UUFDckQsY0FBUyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztLQUNoQzs4R0FaWSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhJbWFnZUVkaXRvclNlcnZpY2Uge1xuICBwZW5Db2xvciA9IHNpZ25hbDxzdHJpbmcgfCBDYW52YXNHcmFkaWVudCB8IENhbnZhc1BhdHRlcm4+KCcnKTtcbiAgbGluZUNhcCA9IHNpZ25hbDxDYW52YXNMaW5lQ2FwPigncm91bmQnKTtcbiAgbGluZVdpZHRoID0gc2lnbmFsPG51bWJlcj4oMTApO1xuICBwZW5UeXBlID0gc2lnbmFsPCdwZW4nIHwgJ2hpZ2hsaWdodCc+KCdwZW4nKTtcbiAgdG9nZ2xlQ2xlYXIgPSBzaWduYWwoeyBzdGF0ZTogZmFsc2UsIHVzZXJJbnRlcmFjdDogZmFsc2UgfSk7XG4gIGNyb3BTdGF0ZSA9IHNpZ25hbCh7IHN0YXRlOiBmYWxzZSwgdXNlckludGVyYWN0OiBmYWxzZSB9KTtcbiAgcm90YXRlID0gc2lnbmFsKHsgc3RhdGU6IDAsIHVzZXJJbnRlcmFjdDogZmFsc2UgfSk7XG4gIGlzSW1hZ2VMb2FkID0gc2lnbmFsKGZhbHNlKTtcbiAgbmV3SW1hZ2UgPSBzaWduYWw8SFRNTEltYWdlRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBpbml0aWFsSW1hZ2UgPSBzaWduYWw8SFRNTEltYWdlRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBpbWFnZUJsb2IgPSBzaWduYWw8QmxvYltdPihbXSk7XG59XG4iXX0=
@@ -14,13 +14,17 @@ export class AXMediaViewerContainerComponent {
14
14
  });
15
15
  }
16
16
  next() {
17
- if (this.arrayIndex() === this.arrayLength() - 1)
17
+ if (this.arrayIndex() === this.arrayLength() - 1) {
18
+ this.service.selectedIndex.set(0);
18
19
  return;
20
+ }
19
21
  this.service.selectedIndex.update((prev) => prev + 1);
20
22
  }
21
23
  prev() {
22
- if (this.arrayIndex() === 0)
24
+ if (this.arrayIndex() === 0) {
25
+ this.service.selectedIndex.set(this.arrayLength() - 1);
23
26
  return;
27
+ }
24
28
  this.service.selectedIndex.update((prev) => prev - 1);
25
29
  }
26
30
  closeHandler() {
@@ -45,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
45
49
  type: HostBinding,
46
50
  args: ['class']
47
51
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWVkaWEtdmlld2VyL3NyYy9saWIvbWVkaWEtdmlld2VyLWNvbnRhaW5lci9tZWRpYS12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9tZWRpYS12aWV3ZXItY29udGFpbmVyL21lZGlhLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVUvRCxNQUFNLE9BQU8sK0JBQStCO0lBUzFDO1FBUkEsY0FBUyxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUUvQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFdkMsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzFELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRzVFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLFdBQVc7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUNoQyxPQUFPLDBCQUEwQixDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyw0QkFBNEIsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQzs4R0FyQ1UsK0JBQStCO2tHQUEvQiwrQkFBK0IsMlBBRi9CLENBQUMsb0JBQW9CLENBQUMsMEJDcEJuQyxnV0FXQTs7MkZEV2EsK0JBQStCO2tCQVIzQyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLG9CQUFvQixDQUFDO3dEQWlDN0IsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWE1lZGlhVmlld2VyRGF0YSB9IGZyb20gJy4uL21lZGlhLXZpZXdlci10eXBlcyc7XG5pbXBvcnQgeyBBWE1lZGlhVmlld2VyU2VydmljZSB9IGZyb20gJy4uL21lZGlhLXZpZXdlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtbWVkaWEtdmlld2VyLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbQVhNZWRpYVZpZXdlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1lZGlhVmlld2VyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgZGF0YUFycmF5ID0gaW5wdXQ8QVhNZWRpYVZpZXdlckRhdGFbXT4oKTtcblxuICBwcm90ZWN0ZWQgc2VydmljZSA9IGluamVjdChBWE1lZGlhVmlld2VyU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGFycmF5TGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXRhQXJyYXkoKS5sZW5ndGgpO1xuICBwcm90ZWN0ZWQgYXJyYXlJbmRleCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZS5zZWxlY3RlZEluZGV4KCkpO1xuICBwcm90ZWN0ZWQgc2hvd0NvbXBvbmVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YUFycmF5KClbdGhpcy5hcnJheUluZGV4KCldKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5zZXJ2aWNlLmRhdGFBcnJheS5zZXQodGhpcy5kYXRhQXJyYXkoKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLmFycmF5SW5kZXgoKSA9PT0gdGhpcy5hcnJheUxlbmd0aCgpIC0gMSkgcmV0dXJuO1xuICAgIHRoaXMuc2VydmljZS5zZWxlY3RlZEluZGV4LnVwZGF0ZSgocHJldikgPT4gcHJldiArIDEpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICBpZiAodGhpcy5hcnJheUluZGV4KCkgPT09IDApIHJldHVybjtcbiAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRJbmRleC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZUhhbmRsZXIoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmlzRnVsbFNjcmVlbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlcnZpY2UuaXNGdWxsU2NyZWVuKCkpIHtcbiAgICAgIHJldHVybiAnYXgtZnVsbC1zY3JlZW4tY29udGlhbmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdheC1ub3JtYWwtc2NyZWVuLWNvbnRpYW5lcic7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj4gPC9uZy1jb250ZW50PlxuXG48ZGl2IGNsYXNzPVwiYXgtbWVkaWEtdmlld2VyLXNsaWRlci1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+PC9uZy1jb250ZW50PlxuXG4gIDxheC1tZWRpYS12aWV3ZXItc2xpZGVyIFtkYXRhT2JqZWN0XT1cInNob3dDb21wb25lbnQoKVwiPjwvYXgtbWVkaWEtdmlld2VyLXNsaWRlcj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWVkaWEtdmlld2VyL3NyYy9saWIvbWVkaWEtdmlld2VyLWNvbnRhaW5lci9tZWRpYS12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9tZWRpYS12aWV3ZXItY29udGFpbmVyL21lZGlhLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVUvRCxNQUFNLE9BQU8sK0JBQStCO0lBUzFDO1FBUkEsY0FBUyxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUUvQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFdkMsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzFELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRzVFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDSSxXQUFXO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDaEMsT0FBTywwQkFBMEIsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sNEJBQTRCLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7OEdBM0NVLCtCQUErQjtrR0FBL0IsK0JBQStCLDJQQUYvQixDQUFDLG9CQUFvQixDQUFDLDBCQ3BCbkMsZ1dBV0E7OzJGRFdhLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxvQkFBb0IsQ0FBQzt3REF1QzdCLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhNZWRpYVZpZXdlckRhdGEgfSBmcm9tICcuLi9tZWRpYS12aWV3ZXItdHlwZXMnO1xuaW1wb3J0IHsgQVhNZWRpYVZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi9tZWRpYS12aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LW1lZGlhLXZpZXdlci1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW0FYTWVkaWFWaWV3ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNZWRpYVZpZXdlckNvbnRhaW5lckNvbXBvbmVudCB7XG4gIGRhdGFBcnJheSA9IGlucHV0PEFYTWVkaWFWaWV3ZXJEYXRhW10+KCk7XG5cbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhNZWRpYVZpZXdlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBhcnJheUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YUFycmF5KCkubGVuZ3RoKTtcbiAgcHJvdGVjdGVkIGFycmF5SW5kZXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRJbmRleCgpKTtcbiAgcHJvdGVjdGVkIHNob3dDb21wb25lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGFBcnJheSgpW3RoaXMuYXJyYXlJbmRleCgpXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuc2VydmljZS5kYXRhQXJyYXkuc2V0KHRoaXMuZGF0YUFycmF5KCkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5hcnJheUluZGV4KCkgPT09IHRoaXMuYXJyYXlMZW5ndGgoKSAtIDEpIHtcbiAgICAgIHRoaXMuc2VydmljZS5zZWxlY3RlZEluZGV4LnNldCgwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkSW5kZXgudXBkYXRlKChwcmV2KSA9PiBwcmV2ICsgMSk7XG4gIH1cblxuICBwcmV2KCkge1xuICAgIGlmICh0aGlzLmFycmF5SW5kZXgoKSA9PT0gMCkge1xuICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkSW5kZXguc2V0KHRoaXMuYXJyYXlMZW5ndGgoKSAtIDEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRJbmRleC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZUhhbmRsZXIoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmlzRnVsbFNjcmVlbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlcnZpY2UuaXNGdWxsU2NyZWVuKCkpIHtcbiAgICAgIHJldHVybiAnYXgtZnVsbC1zY3JlZW4tY29udGlhbmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdheC1ub3JtYWwtc2NyZWVuLWNvbnRpYW5lcic7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj4gPC9uZy1jb250ZW50PlxuXG48ZGl2IGNsYXNzPVwiYXgtbWVkaWEtdmlld2VyLXNsaWRlci1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+PC9uZy1jb250ZW50PlxuXG4gIDxheC1tZWRpYS12aWV3ZXItc2xpZGVyIFtkYXRhT2JqZWN0XT1cInNob3dDb21wb25lbnQoKVwiPjwvYXgtbWVkaWEtdmlld2VyLXNsaWRlcj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiJdfQ==
@@ -28,10 +28,10 @@ export class AXMediaViewerSliderComponent {
28
28
  }
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXMediaViewerSliderComponent, selector: "ax-media-viewer-slider", inputs: { dataObject: { classPropertyName: "dataObject", publicName: "dataObject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{display:flex;justify-content:center;align-items:center;min-height:40vh;overflow:hidden;margin-inline:2rem;width:fit-content}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXMediaViewerSliderComponent, selector: "ax-media-viewer-slider", inputs: { dataObject: { classPropertyName: "dataObject", publicName: "dataObject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{display:flex;justify-content:center;align-items:center;min-height:50vh;overflow:hidden;margin-inline:2rem;width:fit-content}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerSliderComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'ax-media-viewer-slider', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{display:flex;justify-content:center;align-items:center;min-height:40vh;overflow:hidden;margin-inline:2rem;width:fit-content}\n"] }]
35
+ args: [{ selector: 'ax-media-viewer-slider', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{display:flex;justify-content:center;align-items:center;min-height:50vh;overflow:hidden;margin-inline:2rem;width:fit-content}\n"] }]
36
36
  }], ctorParameters: () => [] });
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLXNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWVkaWEtdmlld2VyL3NyYy9saWIvbWVkaWEtdmlld2VyLXNsaWRlci9tZWRpYS12aWV3ZXItc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9tZWRpYS12aWV3ZXItc2xpZGVyL21lZGlhLXZpZXdlci1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBOEIsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBUy9ELE1BQU0sT0FBTyw0QkFBNEI7SUFXdkMsZUFBZTtJQUNmO1FBWFUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWpELGVBQVUsR0FBRyxLQUFLLEVBQXFCLENBQUM7UUFFeEMsZUFBZTtRQUNMLFdBQU0sR0FBRyxNQUFNLENBQThCLElBQUksQ0FBQyxDQUFDO1FBRTdELGVBQWU7UUFDTCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBSW5FLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDYixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQ3BGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtJQUNMLGVBQWUsQ0FBQyxHQUErQjtRQUN2RCxHQUFHLEdBQUcsR0FBNEIsQ0FBQztRQUNuQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQzs4R0EvQlUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsaU5DeEJ6QyxxR0FDQTs7MkZEdUJhLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYsIENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWE1lZGlhVmlld2VyVHlwZVJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4uL21lZGlhLXZpZXdlci10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNZWRpYVZpZXdlckRhdGEgfSBmcm9tICcuLi9tZWRpYS12aWV3ZXItdHlwZXMnO1xuaW1wb3J0IHsgQVhNZWRpYVZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi9tZWRpYS12aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LW1lZGlhLXZpZXdlci1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdmlld2VyLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLXZpZXdlci1zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYTWVkaWFWaWV3ZXJTbGlkZXJDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc2VydmljZSA9IGluamVjdChBWE1lZGlhVmlld2VyU2VydmljZSk7XG5cbiAgZGF0YU9iamVjdCA9IGlucHV0PEFYTWVkaWFWaWV3ZXJEYXRhPigpO1xuXG4gIC8qKiAgQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgcG9ydGFsID0gc2lnbmFsPENvbXBvbmVudFBvcnRhbDxhbnk+IHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqICBAaWdub3JlICovXG4gIHByb3RlY3RlZCByZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhNZWRpYVZpZXdlclR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIC8qKiAgQGlnbm9yZSAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFPYmplY3QoKSkge1xuICAgICAgICAgIHRoaXMucG9ydGFsLnNldChcbiAgICAgICAgICAgIG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5yZWdpc3RyeVNlcnZpY2UucmVzb2x2ZSh0aGlzLmRhdGFPYmplY3QoKS50eXBlKS5jb21wb25lbnQpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKiAgQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUF0dGFjaGVkKHJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICByZWYgPSByZWYgYXMgQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgIGlmIChyZWYuaW5zdGFuY2UgJiYgaXNCcm93c2VyKCkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVmLmluc3RhbmNlLCB7IG1lc3NhZ2U6IHRoaXMuZGF0YU9iamVjdCgpIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwicG9ydGFsKClcIiAoYXR0YWNoZWQpPVwiX2hhbmRsZUF0dGFjaGVkKCRldmVudClcIj48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { MXBaseComponent } from '@acorex/components/common';
2
- import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, computed, contentChildren, effect, model, signal, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, computed, contentChildren, effect, input, model, signal, } from '@angular/core';
3
3
  import { AXStepWizardItemComponent } from './step-wizard-item/step-wizard-item.component';
4
4
  import { AXStepWizardContentDirective } from './step-wizard.directive';
5
5
  import * as i0 from "@angular/core";
@@ -16,6 +16,22 @@ export class AXStepWizardComponent extends MXBaseComponent {
16
16
  * @param v
17
17
  */
18
18
  this.look = model('classic-circular');
19
+ this.changeStep = input(false);
20
+ this.#changeStepEffect = effect(() => {
21
+ this.steps().forEach((item, i = 1) => {
22
+ const stepItem = item.getHostElement();
23
+ if (this.changeStep()) {
24
+ stepItem.addEventListener('click', () => this.goStep(i));
25
+ stepItem.style.pointerEvents = 'auto';
26
+ stepItem.style.cursor = 'pointer';
27
+ }
28
+ else {
29
+ stepItem.style.pointerEvents = 'none';
30
+ stepItem.style.cursor = 'default';
31
+ }
32
+ i++;
33
+ });
34
+ });
19
35
  /** @ignore */
20
36
  this.activeStepIndex = signal(0);
21
37
  /** @ignore */
@@ -53,6 +69,7 @@ export class AXStepWizardComponent extends MXBaseComponent {
53
69
  // @ContentChildren(AXStepWizardItemComponent, { descendants: true })
54
70
  this.steps = contentChildren(AXStepWizardItemComponent);
55
71
  }
72
+ #changeStepEffect;
56
73
  #effect;
57
74
  /** @ignore */
58
75
  #stepChangeEffect;
@@ -118,7 +135,7 @@ export class AXStepWizardComponent extends MXBaseComponent {
118
135
  return classList;
119
136
  }
120
137
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXStepWizardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXStepWizardComponent, selector: "ax-step-wizard", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { look: "lookChange" }, host: { properties: { "class": "this.__hostClass" } }, queries: [{ propertyName: "steps", predicate: AXStepWizardItemComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: ` <ng-content select="ax-step-wizard-item"></ng-content> `, isInline: true, styles: ["ax-step-wizard{display:flex;width:100%;align-items:center;justify-content:space-between;position:relative;overflow-x:hidden}ax-step-wizard.ax-vertical{width:max-content;flex-direction:column;align-items:start}ax-step-wizard.ax-look-with-line-number{gap:.75rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXStepWizardComponent, selector: "ax-step-wizard", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, changeStep: { classPropertyName: "changeStep", publicName: "changeStep", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { look: "lookChange" }, host: { properties: { "class": "this.__hostClass" } }, queries: [{ propertyName: "steps", predicate: AXStepWizardItemComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: ` <ng-content select="ax-step-wizard-item"></ng-content> `, isInline: true, styles: ["ax-step-wizard{display:flex;width:100%;align-items:center;justify-content:space-between;position:relative;overflow-x:hidden}ax-step-wizard.ax-vertical{width:max-content;flex-direction:column;align-items:start}ax-step-wizard.ax-look-with-line-number{gap:.75rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
122
139
  }
123
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXStepWizardComponent, decorators: [{
124
141
  type: Component,
@@ -131,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
131
148
  type: HostBinding,
132
149
  args: ['class']
133
150
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC13aXphcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3N0ZXAtd2l6YXJkL3NyYy9saWIvc3RlcC13aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUUxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFdkU7OztHQUdHO0FBUUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFQMUQ7O1FBUUU7Ozs7V0FJRztRQUNILFNBQUksR0FBRyxLQUFLLENBQW1CLGtCQUFrQixDQUFDLENBQUM7UUFFbkQsY0FBYztRQUNKLG9CQUFlLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTlDLGNBQWM7UUFDSixzQkFBaUIsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRCxZQUFPLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxXQUFNLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdGLFlBQU8sR0FBRyxNQUFNLENBQ2QsR0FB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QztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFpQjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDWSxXQUFXO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDM0MsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs4R0E1SFUscUJBQXFCO2tHQUFyQixxQkFBcUIsK2lCQWtFUix5QkFBeUIsb0VBdkV2QywwREFBMEQ7OzJGQUt6RCxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsZ0JBQWdCLFlBQ2hCLDBEQUEwRCxtQkFFbkQsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkE0RTFCLFdBQVc7c0JBRHJCLEtBQUs7Z0JBTU4sT0FBTztzQkFETixLQUFLO2dCQXdDTSxXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE9yaWVudGF0aW9uLCBNWEJhc2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYU3RlcFdpemFyZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3N0ZXAtd2l6YXJkLWl0ZW0vc3RlcC13aXphcmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhTdGVwV2l6YXJkTG9vayB9IGZyb20gJy4vc3RlcC13aXphcmQuY2xhc3MnO1xuaW1wb3J0IHsgQVhTdGVwV2l6YXJkQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vc3RlcC13aXphcmQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiAgQGNhdGVnb3J5XG4gKiBBIGNvbXBvbmVudCBmb3IgY3JlYXRpbmcgYSBzdGVwLWJ5LXN0ZXAgd2l6YXJkIGludGVyZmFjZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtc3RlcC13aXphcmQnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdGVwLXdpemFyZC1pdGVtXCI+PC9uZy1jb250ZW50PiBgLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwLXdpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhTdGVwV2l6YXJkQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiB0aGUgc3RlcCB3aXphcmQuXG4gICAqXG4gICAqIEBwYXJhbSB2XG4gICAqL1xuICBsb29rID0gbW9kZWw8QVhTdGVwV2l6YXJkTG9vaz4oJ2NsYXNzaWMtY2lyY3VsYXInKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgYWN0aXZlU3RlcEluZGV4ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGFjdGl2ZU9yaWVudGF0aW9uID0gc2lnbmFsPEFYT3JpZW50YXRpb24+KHRoaXMub3JpZW50YXRpb24pO1xuXG4gIHB1YmxpYyBpc0ZpcnN0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5hY3RpdmVTdGVwSW5kZXgoKSA9PT0gMCk7XG4gIHB1YmxpYyBpc0xhc3QgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmFjdGl2ZVN0ZXBJbmRleCgpID09PSB0aGlzLnN0ZXBzKCk/Lmxlbmd0aCAtIDEpO1xuXG4gICNlZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgdGhpcy5zdGVwcygpPy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIHMubG9vayA9IHRoaXMubG9vaygpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB7XG4gICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBAaWdub3JlICovXG4gICNzdGVwQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXA6IEFYU3RlcFdpemFyZEl0ZW1Db21wb25lbnQgPSB0aGlzLnN0ZXBzKClbdGhpcy5hY3RpdmVTdGVwSW5kZXgoKV07XG4gICAgICB0aGlzLnN0ZXBzKCkuZm9yRWFjaCgocywgaSkgPT4ge1xuICAgICAgICBzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBzLnBhc3NlZCA9IGZhbHNlO1xuICAgICAgICBpZiAoaSA8IHRoaXMuYWN0aXZlU3RlcEluZGV4KCkpIHtcbiAgICAgICAgICB0aGlzLnN0ZXBzKClbaV0ucGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnN0ZXBzKClbdGhpcy5hY3RpdmVTdGVwSW5kZXgoKV0uZ2V0SG9zdEVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcbiAgICAgICAgaW5saW5lOiAnY2VudGVyJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdGVwcygpW3RoaXMuYWN0aXZlU3RlcEluZGV4KCldLmFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZVN0ZXBDb250ZW50KHN0ZXApO1xuICAgIH0sXG4gICAge1xuICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGNoYW5nZVN0ZXBDb250ZW50KHN0ZXA/OiBBWFN0ZXBXaXphcmRJdGVtQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiBzdGVwKSB7XG4gICAgICB0aGlzLmNvbnRlbnQucG9ydGFsID0gc3RlcC50ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgLy8gQENvbnRlbnRDaGlsZHJlbihBWFN0ZXBXaXphcmRJdGVtQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHN0ZXBzID0gY29udGVudENoaWxkcmVuKEFYU3RlcFdpemFyZEl0ZW1Db21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvcmllbnRhdGlvbih2OiBBWE9yaWVudGF0aW9uKSB7XG4gICAgdGhpcy5hY3RpdmVPcmllbnRhdGlvbi5zZXQodik7XG4gIH1cblxuICBASW5wdXQoKVxuICBjb250ZW50ITogQVhTdGVwV2l6YXJkQ29udGVudERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogQWR2YW5jZXMgdG8gdGhlIG5leHQgc3RlcCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICBwdWJsaWMgbmV4dCgpIHtcbiAgICB0aGlzLmFjdGl2ZVN0ZXBJbmRleC51cGRhdGUoKHByZXYpID0+IHtcbiAgICAgIGlmIChwcmV2IDwgdGhpcy5zdGVwcygpLmxlbmd0aCAtIDEpIHJldHVybiBwcmV2ICsgMTtcbiAgICAgIGVsc2UgcmV0dXJuIHByZXY7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdG8gdGhlIHByZXZpb3VzIHN0ZXAgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHVibGljIHByZXZpb3VzKCkge1xuICAgIHRoaXMuYWN0aXZlU3RlcEluZGV4LnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgaWYgKHByZXYgPiAwKSByZXR1cm4gcHJldiAtIDE7XG4gICAgICBlbHNlIHJldHVybiBwcmV2O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpcmVjdGx5IG5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIHN0ZXAgYnkgaXRzIGluZGV4LlxuICAgKiBAcGFyYW0gc3RlcEluZGV4XG4gICAqL1xuICBwdWJsaWMgZ29TdGVwKHN0ZXBJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVTdGVwSW5kZXguc2V0KHN0ZXBJbmRleCAtIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgd2l6YXJkIHRvIHRoZSBmaXJzdCBzdGVwLlxuICAgKi9cbiAgcHVibGljIHJlc2V0KCkge1xuICAgIHRoaXMuYWN0aXZlU3RlcEluZGV4LnNldCgwKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gW2BheC1sb29rLSR7dGhpcy5sb29rKCl9YF07XG4gICAgaWYgKHRoaXMuYWN0aXZlT3JpZW50YXRpb24oKSA9PSAndmVydGljYWwnKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYXgtdmVydGljYWwnKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTGlzdDtcbiAgfVxufVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC13aXphcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3N0ZXAtd2l6YXJkL3NyYy9saWIvc3RlcC13aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFMUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXZFOzs7R0FHRztBQVFILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO0lBUDFEOztRQVFFOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUcsS0FBSyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO1FBRW5ELGVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO29CQUN0QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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SSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBN0lVLHFCQUFxQjtrR0FBckIscUJBQXFCLHNyQkFtRlIseUJBQXlCLG9FQXhGdkMsMERBQTBEOzsyRkFLekQscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGdCQUFnQixZQUNoQiwwREFBMEQsbUJBRW5ELHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBNkYxQixXQUFXO3NCQURyQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sS0FBSztnQkF3Q00sV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhPcmllbnRhdGlvbiwgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdGVwV2l6YXJkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC13aXphcmQtaXRlbS9zdGVwLXdpemFyZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFN0ZXBXaXphcmRMb29rIH0gZnJvbSAnLi9zdGVwLXdpemFyZC5jbGFzcyc7XG5pbXBvcnQgeyBBWFN0ZXBXaXphcmRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9zdGVwLXdpemFyZC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqICBAY2F0ZWdvcnlcbiAqIEEgY29tcG9uZW50IGZvciBjcmVhdGluZyBhIHN0ZXAtYnktc3RlcCB3aXphcmQgaW50ZXJmYWNlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zdGVwLXdpemFyZCcsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXN0ZXAtd2l6YXJkLWl0ZW1cIj48L25nLWNvbnRlbnQ+IGAsXG4gIHN0eWxlVXJsczogWycuL3N0ZXAtd2l6YXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFN0ZXBXaXphcmRDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIHRoZSBzdGVwIHdpemFyZC5cbiAgICpcbiAgICogQHBhcmFtIHZcbiAgICovXG4gIGxvb2sgPSBtb2RlbDxBWFN0ZXBXaXphcmRMb29rPignY2xhc3NpYy1jaXJjdWxhcicpO1xuXG4gIGNoYW5nZVN0ZXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgI2NoYW5nZVN0ZXBFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuc3RlcHMoKS5mb3JFYWNoKChpdGVtLCBpID0gMSkgPT4ge1xuICAgICAgY29uc3Qgc3RlcEl0ZW0gPSBpdGVtLmdldEhvc3RFbGVtZW50KCk7XG4gICAgICBpZiAodGhpcy5jaGFuZ2VTdGVwKCkpIHtcbiAgICAgICAgc3RlcEl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLmdvU3RlcChpKSk7XG4gICAgICAgIHN0ZXBJdGVtLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgICAgIHN0ZXBJdGVtLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXBJdGVtLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIHN0ZXBJdGVtLnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGFjdGl2ZVN0ZXBJbmRleCA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBhY3RpdmVPcmllbnRhdGlvbiA9IHNpZ25hbDxBWE9yaWVudGF0aW9uPih0aGlzLm9yaWVudGF0aW9uKTtcblxuICBwdWJsaWMgaXNGaXJzdCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHRoaXMuYWN0aXZlU3RlcEluZGV4KCkgPT09IDApO1xuICBwdWJsaWMgaXNMYXN0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5hY3RpdmVTdGVwSW5kZXgoKSA9PT0gdGhpcy5zdGVwcygpPy5sZW5ndGggLSAxKTtcblxuICAjZWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHRoaXMuc3RlcHMoKT8uZm9yRWFjaCgocykgPT4ge1xuICAgICAgICBzLmxvb2sgPSB0aGlzLmxvb2soKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAge1xuICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICAjc3RlcENoYW5nZUVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBzdGVwOiBBWFN0ZXBXaXphcmRJdGVtQ29tcG9uZW50ID0gdGhpcy5zdGVwcygpW3RoaXMuYWN0aXZlU3RlcEluZGV4KCldO1xuICAgICAgdGhpcy5zdGVwcygpLmZvckVhY2goKHMsIGkpID0+IHtcbiAgICAgICAgcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgcy5wYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGkgPCB0aGlzLmFjdGl2ZVN0ZXBJbmRleCgpKSB7XG4gICAgICAgICAgdGhpcy5zdGVwcygpW2ldLnBhc3NlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdGVwcygpW3RoaXMuYWN0aXZlU3RlcEluZGV4KCldLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgIGlubGluZTogJ2NlbnRlcicsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RlcHMoKVt0aGlzLmFjdGl2ZVN0ZXBJbmRleCgpXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VTdGVwQ29udGVudChzdGVwKTtcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBjaGFuZ2VTdGVwQ29udGVudChzdGVwPzogQVhTdGVwV2l6YXJkSXRlbUNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgc3RlcCkge1xuICAgICAgdGhpcy5jb250ZW50LnBvcnRhbCA9IHN0ZXAudGVtcGxhdGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIC8vIEBDb250ZW50Q2hpbGRyZW4oQVhTdGVwV2l6YXJkSXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBzdGVwcyA9IGNvbnRlbnRDaGlsZHJlbihBWFN0ZXBXaXphcmRJdGVtQ29tcG9uZW50KTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHZcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgb3JpZW50YXRpb24odjogQVhPcmllbnRhdGlvbikge1xuICAgIHRoaXMuYWN0aXZlT3JpZW50YXRpb24uc2V0KHYpO1xuICB9XG5cbiAgQElucHV0KClcbiAgY29udGVudCE6IEFYU3RlcFdpemFyZENvbnRlbnREaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIEFkdmFuY2VzIHRvIHRoZSBuZXh0IHN0ZXAgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5hY3RpdmVTdGVwSW5kZXgudXBkYXRlKChwcmV2KSA9PiB7XG4gICAgICBpZiAocHJldiA8IHRoaXMuc3RlcHMoKS5sZW5ndGggLSAxKSByZXR1cm4gcHJldiArIDE7XG4gICAgICBlbHNlIHJldHVybiBwcmV2O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRvIHRoZSBwcmV2aW91cyBzdGVwIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHB1YmxpYyBwcmV2aW91cygpIHtcbiAgICB0aGlzLmFjdGl2ZVN0ZXBJbmRleC51cGRhdGUoKHByZXYpID0+IHtcbiAgICAgIGlmIChwcmV2ID4gMCkgcmV0dXJuIHByZXYgLSAxO1xuICAgICAgZWxzZSByZXR1cm4gcHJldjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXJlY3RseSBuYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCBzdGVwIGJ5IGl0cyBpbmRleC5cbiAgICogQHBhcmFtIHN0ZXBJbmRleFxuICAgKi9cbiAgcHVibGljIGdvU3RlcChzdGVwSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlU3RlcEluZGV4LnNldChzdGVwSW5kZXggLSAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHdpemFyZCB0byB0aGUgZmlyc3Qgc3RlcC5cbiAgICovXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICB0aGlzLmFjdGl2ZVN0ZXBJbmRleC5zZXQoMCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFtgYXgtbG9vay0ke3RoaXMubG9vaygpfWBdO1xuICAgIGlmICh0aGlzLmFjdGl2ZU9yaWVudGF0aW9uKCkgPT0gJ3ZlcnRpY2FsJykge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2F4LXZlcnRpY2FsJyk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc0xpc3Q7XG4gIH1cbn1cbiJdfQ==
@@ -78,7 +78,7 @@ export class AXTabsComponent extends MXBaseComponent {
78
78
  this.zone.runOutsideAngular(() => {
79
79
  this.indicator().nativeElement.addEventListener('transitionend', () => {
80
80
  this.setIndicatorPosition(this.activeTab());
81
- });
81
+ }, { once: true });
82
82
  });
83
83
  }
84
84
  /** @ignore */
@@ -180,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
180
180
  type: HostBinding,
181
181
  args: ['class']
182
182
  }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRzFEOzs7R0FHRztBQVFILE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUFQcEQ7O1FBY0U7OztXQUdHO1FBQ0gsU0FBSSxHQUFHLEtBQUssQ0FBWSxTQUFTLENBQUMsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFnQixRQUFRLENBQUMsQ0FBQztRQUUxQzs7O1dBR0c7UUFFSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCOzs7V0FHRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFRVCxjQUFTLEdBQUcsU0FBUyxDQUE4QixXQUFXLENBQUMsQ0FBQztRQUVoRSxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLGNBQWM7UUFDTix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFtQjNCLGNBQVMsR0FBRyxNQUFNLENBQXFCLElBQUksQ0FBQyxDQUFDO1FBRXJELGVBQVUsR0FBRyxNQUFNLENBQUMs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QUFJLENBQUMsUUFBUSxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ2hDLGNBQWMsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7b0JBQ3hDLGNBQWMsQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO2dCQUMxQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUM5QixjQUFjLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO29CQUMxQyxjQUFjLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDeEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDOzhHQXJMVSxlQUFlO2tHQUFmLGVBQWUsazBCQUlULGtCQUFrQiw0S0FUekIsaUdBQWlHOzsyRkFLaEcsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxTQUFTLFlBQ1QsaUdBQWlHLG1CQUUxRix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU83QixZQUFZO3NCQURuQixlQUFlO3VCQUFDLGtCQUFrQjtnQkFvQm5DLFNBQVM7c0JBRFIsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQXVDTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS0ssV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRhYkNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRhYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFRhYkxvY2F0aW9uLCBBWFRhYkxvb2ssIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3RhYnMuY2xhc3MnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogQSBjb21wb25lbnQgdGhhdCBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIHRhYiBpdGVtcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGFicycsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdGFiLWl0ZW1cIj48L25nLWNvbnRlbnQ+PHNwYW4gY2xhc3M9XCJheC10YWItaW5kaWNhdG9yXCIgI2luZGljYXRvcj48L3NwYW4+YCxcbiAgc3R5bGVVcmw6ICcuL3RhYnMuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUYWJzQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEFYVGFiSXRlbUNvbXBvbmVudClcbiAgcHJpdmF0ZSBfY29udGVudFRhYnMhOiBRdWVyeUxpc3Q8QVhUYWJJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwZWFyYW5jZSBzdHlsZSBvZiB0aGUgdGFiIGNvbXBvbmVudC5cbiAgICogIEBkZWZhdWx0VmFsdWUgJ2RlZmF1bHQnXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhUYWJMb29rPignZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWIgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdFZhbHVlICdib3R0b20nXG4gICAqL1xuICBsb2NhdGlvbiA9IGlucHV0PEFYVGFiTG9jYXRpb24+KCdib3R0b20nKTtcblxuICAvKipcbiAgICogQGRlZmF1bHRWYWx1ZSAnZmFsc2UnXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIHJlc2l6ZSB0byBmaXQgaXRzIHBhcmVudCBjb250YWluZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBmaXRQYXJlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlZmF1bHRWYWx1ZSAnZmFsc2UnXG4gICAqIEFwcGxpZXMgYSBtaW5pbXVtIHdpZHRoIGNvbnN0cmFpbnQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBgQVhUYWJDb250ZW50RGlyZWN0aXZlYCBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQhOiBBWFRhYkNvbnRlbnREaXJlY3RpdmU7XG5cbiAgcHJpdmF0ZSBpbmRpY2F0b3IgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PignaW5kaWNhdG9yJyk7XG5cbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcblxuICBnZXQgaXRlbXMoKTogQVhUYWJJdGVtQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50VGFicy50b0FycmF5KCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW0hOiBBWFRhYkl0ZW1Db21wb25lbnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkSXRlbSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBnZXQgc2VsZWN0ZWRJdGVtKCk6IEFYVGFiSXRlbUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlVGFiID0gc2lnbmFsPEFYVGFiSXRlbUNvbXBvbmVudD4obnVsbCk7XG5cbiAgI3RhYkNoYW5nZSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiKCkgJiYgdGhpcy5sb29rKCkgPT09ICd3aXRoLWxpbmUnKSB7XG4gICAgICB0aGlzLnNldEluZGljYXRvclBvc2l0aW9uKHRoaXMuYWN0aXZlVGFiKCkpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQWN0aXZlVGFiQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY3NzQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjc3NDbGFzc2VzLnB1c2goYGF4LWxvb2stJHt0aGlzLmxvb2soKX1gKTtcbiAgICBjc3NDbGFzc2VzLnB1c2goYGF4LSR7dGhpcy5sb2NhdGlvbigpfWApO1xuICAgIGlmICh0aGlzLmZpdFBhcmVudCkgY3NzQ2xhc3Nlcy5wdXNoKGBheC10YWJzLWZpdGApO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX2NvbnRlbnRUYWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2JpbmRPbkNsaWNrRXZlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9iaW5kT25DbGlja0V2ZW50KCk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yKCkubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEluZGljYXRvclBvc2l0aW9uKHRoaXMuYWN0aXZlVGFiKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9iaW5kT25DbGlja0V2ZW50KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pdGVtcy5maW5kKChjKSA9PiBjLmFjdGl2ZSkgfHwgdGhpcy5pdGVtc1swXTtcbiAgICB0aGlzLnNlbGVjdChzZWxlY3RlZCk7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBpZiAoIWMub25DbGljay5sZW5ndGgpIHtcbiAgICAgICAgYy5vbkNsaWNrLnN1YnNjcmliZSgodCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdC5uYXRpdmVFdmVudD8uaXNUcnVzdGVkO1xuICAgICAgICAgIHRoaXMuc2VsZWN0KGMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIHNwZWNpZmllZCB0YWIgYW5kIHVwZGF0ZXMgdGhlIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgQVhUYWJJdGVtQ29tcG9uZW50fVxuICAgKi9cbiAgc2VsZWN0KHRhYjogbnVtYmVyIHwgQVhUYWJJdGVtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgdGFiSXRlbTogQVhUYWJJdGVtQ29tcG9uZW50ID0gdHlwZW9mIHRhYiA9PSAnbnVtYmVyJyA/IHRoaXMuaXRlbXNbdGFiXSA6IHRhYjtcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQodGFiSXRlbSk7XG4gICAgLy9cbiAgICBpZiAoIXRhYiB8fCB0aGlzLnNlbGVjdGVkSXRlbSA9PSB0YWJJdGVtKSByZXR1cm47XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gdGFiSXRlbTtcbiAgICAvL1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoYykgPT4gKGMuYWN0aXZlID0gZmFsc2UpKTtcbiAgICB0YWJJdGVtLmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50LnBvcnRhbCA9IHRhYkl0ZW0udGVtcGxhdGU7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub25BY3RpdmVUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuX2lzVXNlckludGVyYWN0aW9uLFxuICAgICAgdGFiOiB0YWJJdGVtLFxuICAgICAgaW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICB9KTtcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbmRpY2F0b3JQb3NpdGlvbih0YWJJdGVtOiBBWFRhYkl0ZW1Db21wb25lbnQpIHtcbiAgICBjb25zdCBpbmRpY2F0b3JTdHlsZSA9IHRoaXMuaW5kaWNhdG9yKCkubmF0aXZlRWxlbWVudC5zdHlsZTtcbiAgICBjb25zdCBpdGVtU3RhdHMgPSB0YWJJdGVtLmdldFN0YXRzKCk7XG4gICAgaWYgKHRoaXMubG9vaygpID09PSAnd2l0aC1saW5lJykge1xuICAgICAgaW5kaWNhdG9yU3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICBpZiAodGhpcy5sb2NhdGlvbigpID09PSAndG9wJyB8fCB0aGlzLmxvY2F0aW9uKCkgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGluZGljYXRvclN0eWxlLndpZHRoID0gYCR7aXRlbVN0YXRzLndpZHRofXB4YDtcbiAgICAgICAgaW5kaWNhdG9yU3R5bGUuaGVpZ2h0ID0gYDNweGA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lU3RhcnQgPSBgJHtpdGVtU3RhdHMubGVmdH1weGA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lRW5kID0gYHVuc2V0YDtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS50b3AgPSBgMHB4YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5ib3R0b20gPSBgdW5zZXRgO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxvY2F0aW9uKCkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgaW5kaWNhdG9yU3R5bGUudG9wID0gYHVuc2V0YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5ib3R0b20gPSBgMHB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3N0YXJ0JyB8fCB0aGlzLmxvY2F0aW9uKCkgPT09ICdlbmQnKSB7XG4gICAgICAgIGluZGljYXRvclN0eWxlLndpZHRoID0gYCAwLjEyNXJlbWA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmhlaWdodCA9IGAke2l0ZW1TdGF0cy5oZWlnaHR9cHhgO1xuICAgICAgICBpbmRpY2F0b3JTdHlsZS50b3AgPSBgJHtpdGVtU3RhdHMudG9wfXB4YDtcbiAgICAgICAgaW5kaWNhdG9yU3R5bGUuYm90dG9tID0gYHVuc2V0YDtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lU3RhcnQgPSBgMHB4YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZUVuZCA9IGB1bnNldGA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZVN0YXJ0ID0gYHVuc2V0YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZUVuZCA9IGAwcHhgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGljYXRvclN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICB9XG59XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRzFEOzs7R0FHRztBQVFILE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUFQcEQ7O1FBY0U7OztXQUdHO1FBQ0gsU0FBSSxHQUFHLEtBQUssQ0FBWSxTQUFTLENBQUMsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFnQixRQUFRLENBQUMsQ0FBQztRQUUxQzs7O1dBR0c7UUFFSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCOzs7V0FHRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFRVCxjQUFTLEdBQUcsU0FBUyxDQUE4QixXQUFXLENBQUMsQ0FBQztRQUVoRSxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLGNBQWM7UUFDTix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFtQjNCLGNBQVMsR0FBRyxNQUFNLENBQXFCLElBQUksQ0FBQyxDQUFDO1FBRXJELGVBQVUsR0FBRyxNQUFNLENBQUMs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TSxHQUFHLE9BQU8sQ0FBQztnQkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ2hDLGNBQWMsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7b0JBQ3hDLGNBQWMsQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO2dCQUMxQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUM5QixjQUFjLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO29CQUMxQyxjQUFjLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDeEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDOzhHQXpMVSxlQUFlO2tHQUFmLGVBQWUsazBCQUlULGtCQUFrQiw0S0FUekIsaUdBQWlHOzsyRkFLaEcsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxTQUFTLFlBQ1QsaUdBQWlHLG1CQUUxRix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU83QixZQUFZO3NCQURuQixlQUFlO3VCQUFDLGtCQUFrQjtnQkFvQm5DLFNBQVM7c0JBRFIsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQXVDTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS0ssV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRhYkNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRhYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFRhYkxvY2F0aW9uLCBBWFRhYkxvb2ssIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3RhYnMuY2xhc3MnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogQSBjb21wb25lbnQgdGhhdCBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIHRhYiBpdGVtcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGFicycsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdGFiLWl0ZW1cIj48L25nLWNvbnRlbnQ+PHNwYW4gY2xhc3M9XCJheC10YWItaW5kaWNhdG9yXCIgI2luZGljYXRvcj48L3NwYW4+YCxcbiAgc3R5bGVVcmw6ICcuL3RhYnMuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUYWJzQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEFYVGFiSXRlbUNvbXBvbmVudClcbiAgcHJpdmF0ZSBfY29udGVudFRhYnMhOiBRdWVyeUxpc3Q8QVhUYWJJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwZWFyYW5jZSBzdHlsZSBvZiB0aGUgdGFiIGNvbXBvbmVudC5cbiAgICogIEBkZWZhdWx0VmFsdWUgJ2RlZmF1bHQnXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhUYWJMb29rPignZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWIgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdFZhbHVlICdib3R0b20nXG4gICAqL1xuICBsb2NhdGlvbiA9IGlucHV0PEFYVGFiTG9jYXRpb24+KCdib3R0b20nKTtcblxuICAvKipcbiAgICogQGRlZmF1bHRWYWx1ZSAnZmFsc2UnXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIHJlc2l6ZSB0byBmaXQgaXRzIHBhcmVudCBjb250YWluZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBmaXRQYXJlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlZmF1bHRWYWx1ZSAnZmFsc2UnXG4gICAqIEFwcGxpZXMgYSBtaW5pbXVtIHdpZHRoIGNvbnN0cmFpbnQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBgQVhUYWJDb250ZW50RGlyZWN0aXZlYCBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQhOiBBWFRhYkNvbnRlbnREaXJlY3RpdmU7XG5cbiAgcHJpdmF0ZSBpbmRpY2F0b3IgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PignaW5kaWNhdG9yJyk7XG5cbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcblxuICBnZXQgaXRlbXMoKTogQVhUYWJJdGVtQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50VGFicy50b0FycmF5KCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW0hOiBBWFRhYkl0ZW1Db21wb25lbnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkSXRlbSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBnZXQgc2VsZWN0ZWRJdGVtKCk6IEFYVGFiSXRlbUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlVGFiID0gc2lnbmFsPEFYVGFiSXRlbUNvbXBvbmVudD4obnVsbCk7XG5cbiAgI3RhYkNoYW5nZSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiKCkgJiYgdGhpcy5sb29rKCkgPT09ICd3aXRoLWxpbmUnKSB7XG4gICAgICB0aGlzLnNldEluZGljYXRvclBvc2l0aW9uKHRoaXMuYWN0aXZlVGFiKCkpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQWN0aXZlVGFiQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY3NzQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjc3NDbGFzc2VzLnB1c2goYGF4LWxvb2stJHt0aGlzLmxvb2soKX1gKTtcbiAgICBjc3NDbGFzc2VzLnB1c2goYGF4LSR7dGhpcy5sb2NhdGlvbigpfWApO1xuICAgIGlmICh0aGlzLmZpdFBhcmVudCkgY3NzQ2xhc3Nlcy5wdXNoKGBheC10YWJzLWZpdGApO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX2NvbnRlbnRUYWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2JpbmRPbkNsaWNrRXZlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9iaW5kT25DbGlja0V2ZW50KCk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yKCkubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAndHJhbnNpdGlvbmVuZCcsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldEluZGljYXRvclBvc2l0aW9uKHRoaXMuYWN0aXZlVGFiKCkpO1xuICAgICAgICB9LFxuICAgICAgICB7IG9uY2U6IHRydWUgfSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9iaW5kT25DbGlja0V2ZW50KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pdGVtcy5maW5kKChjKSA9PiBjLmFjdGl2ZSkgfHwgdGhpcy5pdGVtc1swXTtcbiAgICB0aGlzLnNlbGVjdChzZWxlY3RlZCk7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBpZiAoIWMub25DbGljay5sZW5ndGgpIHtcbiAgICAgICAgYy5vbkNsaWNrLnN1YnNjcmliZSgodCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdC5uYXRpdmVFdmVudD8uaXNUcnVzdGVkO1xuICAgICAgICAgIHRoaXMuc2VsZWN0KGMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIHNwZWNpZmllZCB0YWIgYW5kIHVwZGF0ZXMgdGhlIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgQVhUYWJJdGVtQ29tcG9uZW50fVxuICAgKi9cbiAgc2VsZWN0KHRhYjogbnVtYmVyIHwgQVhUYWJJdGVtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgdGFiSXRlbTogQVhUYWJJdGVtQ29tcG9uZW50ID0gdHlwZW9mIHRhYiA9PSAnbnVtYmVyJyA/IHRoaXMuaXRlbXNbdGFiXSA6IHRhYjtcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQodGFiSXRlbSk7XG4gICAgLy9cbiAgICBpZiAoIXRhYiB8fCB0aGlzLnNlbGVjdGVkSXRlbSA9PSB0YWJJdGVtKSByZXR1cm47XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gdGFiSXRlbTtcbiAgICAvL1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoYykgPT4gKGMuYWN0aXZlID0gZmFsc2UpKTtcbiAgICB0YWJJdGVtLmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50LnBvcnRhbCA9IHRhYkl0ZW0udGVtcGxhdGU7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub25BY3RpdmVUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuX2lzVXNlckludGVyYWN0aW9uLFxuICAgICAgdGFiOiB0YWJJdGVtLFxuICAgICAgaW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICB9KTtcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbmRpY2F0b3JQb3NpdGlvbih0YWJJdGVtOiBBWFRhYkl0ZW1Db21wb25lbnQpIHtcbiAgICBjb25zdCBpbmRpY2F0b3JTdHlsZSA9IHRoaXMuaW5kaWNhdG9yKCkubmF0aXZlRWxlbWVudC5zdHlsZTtcbiAgICBjb25zdCBpdGVtU3RhdHMgPSB0YWJJdGVtLmdldFN0YXRzKCk7XG4gICAgaWYgKHRoaXMubG9vaygpID09PSAnd2l0aC1saW5lJykge1xuICAgICAgaW5kaWNhdG9yU3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICBpZiAodGhpcy5sb2NhdGlvbigpID09PSAndG9wJyB8fCB0aGlzLmxvY2F0aW9uKCkgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGluZGljYXRvclN0eWxlLndpZHRoID0gYCR7aXRlbVN0YXRzLndpZHRofXB4YDtcbiAgICAgICAgaW5kaWNhdG9yU3R5bGUuaGVpZ2h0ID0gYDNweGA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lU3RhcnQgPSBgJHtpdGVtU3RhdHMubGVmdH1weGA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lRW5kID0gYHVuc2V0YDtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS50b3AgPSBgMHB4YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5ib3R0b20gPSBgdW5zZXRgO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxvY2F0aW9uKCkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgaW5kaWNhdG9yU3R5bGUudG9wID0gYHVuc2V0YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5ib3R0b20gPSBgMHB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3N0YXJ0JyB8fCB0aGlzLmxvY2F0aW9uKCkgPT09ICdlbmQnKSB7XG4gICAgICAgIGluZGljYXRvclN0eWxlLndpZHRoID0gYCAwLjEyNXJlbWA7XG4gICAgICAgIGluZGljYXRvclN0eWxlLmhlaWdodCA9IGAke2l0ZW1TdGF0cy5oZWlnaHR9cHhgO1xuICAgICAgICBpbmRpY2F0b3JTdHlsZS50b3AgPSBgJHtpdGVtU3RhdHMudG9wfXB4YDtcbiAgICAgICAgaW5kaWNhdG9yU3R5bGUuYm90dG9tID0gYHVuc2V0YDtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGluZGljYXRvclN0eWxlLmluc2V0SW5saW5lU3RhcnQgPSBgMHB4YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZUVuZCA9IGB1bnNldGA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24oKSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZVN0YXJ0ID0gYHVuc2V0YDtcbiAgICAgICAgICBpbmRpY2F0b3JTdHlsZS5pbnNldElubGluZUVuZCA9IGAwcHhgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGljYXRvclN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICB9XG59XG4iXX0=