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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. package/color-palette/lib/color-palette-input.component.d.ts +6 -1
  2. package/data-pager/lib/data-pager.component.d.ts +1 -2
  3. package/esm2022/color-palette/lib/color-palette-input.component.mjs +2 -1
  4. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +3 -3
  5. package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +15 -11
  6. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +3 -3
  7. package/esm2022/data-pager/lib/data-pager.component.mjs +6 -7
  8. package/esm2022/data-table/lib/data-table/data-table.component.mjs +1 -1
  9. package/esm2022/image-editor/lib/image-editor-container/image-editor-container.component.mjs +5 -4
  10. package/esm2022/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.mjs +2 -2
  11. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +3 -3
  12. package/esm2022/image-editor/lib/image-editor-view/image-editor-view.component.mjs +55 -16
  13. package/esm2022/image-editor/lib/image-editor.service.mjs +1 -1
  14. package/esm2022/step-wizard/lib/step-wizard.component.mjs +20 -3
  15. package/fesm2022/acorex-components-color-palette.mjs +3 -2
  16. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  17. package/fesm2022/acorex-components-data-pager.mjs +21 -18
  18. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  19. package/fesm2022/acorex-components-data-table.mjs +1 -1
  20. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  21. package/fesm2022/acorex-components-image-editor.mjs +60 -22
  22. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  23. package/fesm2022/acorex-components-step-wizard.mjs +18 -1
  24. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  25. package/image-editor/lib/image-editor-container/image-editor-container.component.d.ts +2 -0
  26. package/image-editor/lib/image-editor-view/image-editor-view.component.d.ts +16 -3
  27. package/image-editor/lib/image-editor.service.d.ts +2 -2
  28. package/package.json +1 -1
  29. 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,14 @@ export class AXImageEditorViewComponent {
59
107
  }
60
108
  /** @ignore */
61
109
  ngOnDestroy() {
62
- this.service.initialImage()?.removeEventListener('load', this.EventListener);
110
+ this.resizeEventListener();
111
+ this.imageLoadEventListener();
63
112
  }
64
113
  /** @ignore */
65
114
  imageLoaded() {
66
115
  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
116
  this.service.toggleClear.set({ userInteract: false, state: false });
72
117
  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
118
  }
80
119
  /** @ignore */
81
120
  penConfigHandler(penType) {
@@ -304,7 +343,7 @@ export class AXImageEditorViewComponent {
304
343
  return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;
305
344
  }
306
345
  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 }); }
346
+ 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
347
  }
309
348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorViewComponent, decorators: [{
310
349
  type: Component,
@@ -313,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
313
352
  type: HostBinding,
314
353
  args: ['style']
315
354
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ltYWdlLWVkaXRvci9zcmMvbGliL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3Itdmlldy9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUVOLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLDBCQUEwQjtJQTJCckMsY0FBYztJQUNkO1FBM0JBOztXQUVHO1FBQ0gsUUFBRyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFjO1FBQ0osZUFBVSxHQUFHLFNBQVMsQ0FBZ0MsWUFBWSxDQUFDLENBQUM7UUFDOUUsY0FBYztRQUNKLFFBQUcsR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGNBQWM7UUFDSixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakQsY0FBYztRQUNKLGtCQUFhLEdBQUcsTUFBTSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDSixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxjQUFjO1FBQ0osZUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFD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Q0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO1FBQ3ZELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7SUFDSixpQkFBaUI7UUFDekIsSUFBSSxTQUFpQixDQUFDO1FBQ3RCLElBQUksVUFBa0IsQ0FBQztRQUV2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMvRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUVwRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWM7SUFDSixXQUFXO1FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQ3ZCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNsQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDSixlQUFlO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDN0IsUUFBUSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDbkMsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxFQUNELFlBQVksRUFDWixDQUFDLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUNwQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQ0QsV0FBVyxFQUNYLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ3BDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDUCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsRUFDRCxZQUFZLEVBQ1osQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNZLFdBQVc7UUFDckIsT0FBTyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7SUFDNUcsQ0FBQzs4R0E3WFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsMldDdkJ2Qyx1Z0JBaUJBOzsyRkRNYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7d0RBNlh6QixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGFmdGVyTmV4dFJlbmRlcixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgZWZmZWN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEltYWdlRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL2ltYWdlLWVkaXRvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtaW1hZ2UtZWRpdG9yLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhJbWFnZUVkaXRvclZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIGl0cyByZWNlaXZlIGltYWdlIHNyYy5cclxuICAgKi9cclxuICBzcmMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjYW52YXNFbGVtID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+PignY2FudmFzRWxlbScpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGN0eCA9IHNpZ25hbDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG51bGwpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhJbWFnZUVkaXRvclNlcnZpY2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BJbWFnZURhdGEgPSBzaWduYWw8SW1hZ2VEYXRhPihudWxsKTtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BTdGFydFggPSBzaWduYWwoMCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcFN0YXJ0WSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWCA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBFdmVudExpc3RlbmVyO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZS5zZXQobmV3IEltYWdlKCkpO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkuc3JjID0gdGhpcy5zcmMoKTtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICAgIHRoaXMuRXZlbnRMaXN0ZW5lciA9IHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5pbWFnZUxvYWRlZC5iaW5kKHRoaXMpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyKCkudXNlckludGVyYWN0KSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS50b2dnbGVDbGVhcigpLnN0YXRlKSB7XHJcbiAgICAgICAgICB0aGlzLmltYWdlTG9hZGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnVzZXJJbnRlcmFjdCB8fCAhdGhpcy5jdHgoKSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuY3R4KCkuZmlsdGVyID0gJ2JyaWdodG5lc3MoNDAlKSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY3R4KCkuZmlsdGVyID0gJ2JyaWdodG5lc3MoMTAwJSknO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZShcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIDAsXHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCxcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCxcclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnJvdGF0ZSgpLnVzZXJJbnRlcmFjdCB8fCAhdGhpcy5jdHgoKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucm90YXRlSW1hZ2UoKTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzLkV2ZW50TGlzdGVuZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaW1hZ2VMb2FkZWQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2Uuc2V0KHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKSk7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoID0gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQgPSB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkuaGVpZ2h0O1xyXG4gICAgdGhpcy5jdHguc2V0KHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSk7XHJcbiAgICB0aGlzLmN0eCgpLmRyYXdJbWFnZShcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLFxyXG4gICAgICAwLFxyXG4gICAgICAwLFxyXG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkud2lkdGgsXHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5oZWlnaHQsXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuaXNJbWFnZUxvYWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jdHgoKS5saW5lSm9pbiA9ICdyb3VuZCc7XHJcbiAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9IHRoaXMuc2VydmljZS5wZW5Db2xvcigpO1xyXG4gICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSB0aGlzLnNlcnZpY2UubGluZVdpZHRoKCk7XHJcbiAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHBlbkNvbmZpZ0hhbmRsZXIocGVuVHlwZTogJ3BlbicgfCAnaGlnaGxpZ2h0Jykge1xyXG4gICAgc3dpdGNoIChwZW5UeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3Blbic6XHJcbiAgICAgICAgdGhpcy5jdHgoKS5nbG9iYWxBbHBoYSA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2hpZ2hsaWdodCc6XHJcbiAgICAgICAgdGhpcy5jdHgoKS5nbG9iYWxBbHBoYSA9IDAuMDA4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBtb3VzZURvd25IYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KHRydWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jcm9wU3RhcnRYLnNldChlLm9mZnNldFgpO1xyXG4gICAgICB0aGlzLmNyb3BTdGFydFkuc2V0KGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZW5Db25maWdIYW5kbGVyKHRoaXMuc2VydmljZS5wZW5UeXBlKCkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUNhcCA9IHRoaXMuc2VydmljZS5saW5lQ2FwKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG5cclxuICAgICAgdGhpcy5jdHgoKS5iZWdpblBhdGgoKTtcclxuICAgICAgdGhpcy5jdHgoKS5tb3ZlVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVUbyhlLm9mZnNldFgsIGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBtb3VzZU1vdmVIYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc01vdXNlRG93bigpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NjcmVlbic7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KGUub2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuZHJhd1NlbGVjdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgbW91c2VVcEhhbmRsZXIoKSB7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlICYmIHRoaXMuY3JvcEVuZFgoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICAgIHRoaXMuY3JvcEltYWdlRnVuY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuY2xvc2VQYXRoKCk7XHJcbiAgICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCB0b3VjaFN0YXJ0SGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XHJcbiAgICBjb25zdCBvZmZzZXRYID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLmxlZnQ7XHJcbiAgICBjb25zdCBvZmZzZXRZID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLnRvcDtcclxuXHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldCh0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WC5zZXQob2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WS5zZXQob2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZW5Db25maWdIYW5kbGVyKHRoaXMuc2VydmljZS5wZW5UeXBlKCkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUNhcCA9IHRoaXMuc2VydmljZS5saW5lQ2FwKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG5cclxuICAgICAgdGhpcy5jdHgoKS5iZWdpblBhdGgoKTtcclxuICAgICAgdGhpcy5jdHgoKS5tb3ZlVG8ob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgdG91Y2hNb3ZlSGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIHByZXZlbnQgcGFnZSBmcm9tIHNjcm9sbFxyXG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHJldHVybjtcclxuICAgIGNvbnN0IG9mZnNldFggPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkubGVmdDtcclxuICAgIGNvbnN0IG9mZnNldFkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkudG9wO1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc2NyZWVuJztcclxuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQob2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmRyYXdTZWxlY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgdG91Y2hFbmRIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSAmJiB0aGlzLmNyb3BFbmRYKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc291cmNlLW92ZXInO1xyXG4gICAgICB0aGlzLmNyb3BJbWFnZUZ1bmN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN0eCgpLmNsb3NlUGF0aCgpO1xyXG4gICAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgZHJhd1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xyXG4gICAgY29uc3QgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG5cclxuICAgIHRoaXMuY3R4KCkuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLCAwLCAwKTtcclxuICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xyXG4gICAgdGhpcy5jdHgoKS5zZXRMaW5lRGFzaChbNCwgMTBdKTtcclxuICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gMjtcclxuICAgIHRoaXMuY3R4KCkuc3Ryb2tlUmVjdCh0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wU3RhcnRZKCksIGNyb3BXaWR0aCwgY3JvcEhlaWdodCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wSW1hZ2VGdW5jdGlvbigpIHtcclxuICAgIHRoaXMuY3R4KCkuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLCAwLCAwKTtcclxuXHJcbiAgICBsZXQgaW1hZ2VEYXRhOiBJbWFnZURhdGE7XHJcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRZKCkgLSB0aGlzLmNyb3BTdGFydFkoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgaW1hZ2VEYXRhID0gdGhpcy5jdHgoKS5nZXRJbWFnZURhdGEoXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5ID0gaW1hZ2VEYXRhLmRhdGE7XHJcblxyXG4gICAgY29uc3QgYnJpZ2h0bmVzc0ZhY3RvciA9IDIuNDsgLy8gSW5jcmVhc2UgYnJpZ2h0bmVzcyBieSAyMCVcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gNCkge1xyXG4gICAgICBkYXRhW2ldID0gZGF0YVtpXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIFJlZFxyXG4gICAgICBkYXRhW2kgKyAxXSA9IGRhdGFbaSArIDFdICogYnJpZ2h0bmVzc0ZhY3RvcjsgLy8gR3JlZW5cclxuICAgICAgZGF0YVtpICsgMl0gPSBkYXRhW2kgKyAyXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIEJsdWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wRW5kWSgpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BFbmRYKCksIHRoaXMuY3JvcEVuZFkoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wU3RhcnRYKCksIHRoaXMuY3JvcFN0YXJ0WSgpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BFbmRYKCksIHRoaXMuY3JvcFN0YXJ0WSgpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyb3BJbWFnZURhdGEuc2V0KGltYWdlRGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wQnV0dG9uSGFuZGxlcigpIHtcclxuICAgIGxldCBjcm9wV2lkdGg6IG51bWJlcjtcclxuICAgIGxldCBjcm9wSGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnJvdGF0ZS51cGRhdGUoKHByZXYpID0+IHtcclxuICAgICAgcmV0dXJuIHsgdXNlckludGVyYWN0OiBmYWxzZSwgc3RhdGU6IHByZXYuc3RhdGUgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBjcm9wV2lkdGggPSB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKTtcclxuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGggPSBjcm9wV2lkdGg7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCA9IGNyb3BIZWlnaHQ7XHJcblxyXG4gICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEodGhpcy5jcm9wSW1hZ2VEYXRhKCksIDAsIDApO1xyXG4gICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIHRoaXMuY3JvcEltYWdlRGF0YS5zZXQobnVsbCk7XHJcbiAgICB0aGlzLnNlcnZpY2UuY3JvcFN0YXRlLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHJvdGF0ZUltYWdlKCkge1xyXG4gICAgdGhpcy5jdHgoKS5zYXZlKCk7XHJcbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XHJcbiAgICB0aGlzLmN0eCgpLnRyYW5zbGF0ZSh0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCAvIDIsIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCAvIDIpO1xyXG4gICAgdGhpcy5jdHgoKS5yb3RhdGUoKHRoaXMuc2VydmljZS5yb3RhdGUoKS5zdGF0ZSAqIE1hdGguUEkpIC8gMTgwKTtcclxuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxyXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKSxcclxuICAgICAgLXRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoIC8gMixcclxuICAgICAgLXRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCAvIDIsXHJcbiAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoLFxyXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jdHgoKS5yZXN0b3JlKCk7XHJcblxyXG4gICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIHRoaXMuc2VydmljZS5yb3RhdGUudXBkYXRlKChwcmV2KSA9PiB7XHJcbiAgICAgIHJldHVybiB7IHN0YXRlOiBwcmV2LnN0YXRlLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNhdmVJbWFnZUNoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld0ltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICBuZXdJbWFnZS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgbmV3SW1hZ2Uuc3JjID0gdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxKTtcclxuICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZS5zZXQobmV3SW1hZ2UpO1xyXG5cclxuICAgIGNvbnN0IHRlbXBCbG9iID0gW107XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LnRvQmxvYihcclxuICAgICAgKGJsb2IpID0+IHtcclxuICAgICAgICB0ZW1wQmxvYi5wdXNoKGJsb2IpO1xyXG4gICAgICB9LFxyXG4gICAgICAnaW1hZ2UvanBlZycsXHJcbiAgICAgIDEsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0Jsb2IoXHJcbiAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgdGVtcEJsb2IucHVzaChibG9iKTtcclxuICAgICAgfSxcclxuICAgICAgJ2ltYWdlL3BuZycsXHJcbiAgICAgIDEsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC50b0Jsb2IoXHJcbiAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgdGVtcEJsb2IucHVzaChibG9iKTtcclxuICAgICAgfSxcclxuICAgICAgJ2ltYWdlL3dlYnAnLFxyXG4gICAgICAxLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VydmljZS5pbWFnZUJsb2Iuc2V0KHRlbXBCbG9iKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZScpXHJcbiAgcHJpdmF0ZSBnZXQgX19ob3N0U3R5bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgd2lkdGg6ICR7dGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpPy53aWR0aH1weDsgaGVpZ2h0OiAke3RoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKT8uaGVpZ2h0fXB4YDtcclxuICB9XHJcbn1cclxuIiwiPGNhbnZhc1xuICB0YWJpbmRleD1cIjFcIlxuICAobW91c2Vkb3duKT1cIm1vdXNlRG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gIChtb3VzZXVwKT1cIm1vdXNlVXBIYW5kbGVyKClcIlxuICAobW91c2Vtb3ZlKT1cIm1vdXNlTW92ZUhhbmRsZXIoJGV2ZW50KVwiXG4gICh0b3VjaHN0YXJ0KT1cInRvdWNoU3RhcnRIYW5kbGVyKCRldmVudClcIlxuICAodG91Y2hlbmQpPVwidG91Y2hFbmRIYW5kbGVyKClcIlxuICAodG91Y2htb3ZlKT1cInRvdWNoTW92ZUhhbmRsZXIoJGV2ZW50KVwiXG4gIGNsYXNzPVwiYXgtY2FudmFzLWVsZW1lbnRcIlxuICAjY2FudmFzRWxlbVxuPjwvY2FudmFzPlxuPGF4LWJ1dHRvblxuICAoY2xpY2spPVwiY3JvcEJ1dHRvbkhhbmRsZXIoKVwiXG4gIFtzdHlsZV09XCJ7IGRpc3BsYXk6IHNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUgPyAnYmxvY2snIDogJ25vbmUnIH1cIlxuICBjbGFzcz1cImF4LWNyb3Atc2F2ZSBheC1zbVwiXG4gIHRleHQ9XCJDcm9wXCJcbj48L2F4LWJ1dHRvbj5cbiJdfQ==
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ltYWdlLWVkaXRvci9zcmMvbGliL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3Itdmlldy9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGVBQWU7SUFvQzdELGNBQWM7SUFDSixZQUFZO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWM7SUFDSixnQkFBZ0IsQ0FBQyxLQUF1QjtRQUNoRCxNQUFNLFdBQVcsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUMsYUFBZ0MsQ0FBQyxXQUFXLENBQUM7UUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FB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RUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7SUFDSixp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Q0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7SUFDNUcsQ0FBQzs4R0FwYVUsMEJBQTBCO2tHQUExQiwwQkFBMEIsa1lDM0J2Qyx1Z0JBaUJBOzsyRkRVYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7d0RBb2F6QixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNWEJhc2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBhZnRlck5leHRSZW5kZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgUmVuZGVyZXIyLFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYSW1hZ2VFZGl0b3JDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9pbWFnZS1lZGl0b3ItY29udGFpbmVyL2ltYWdlLWVkaXRvci1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhJbWFnZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9pbWFnZS1lZGl0b3Iuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWltYWdlLWVkaXRvci12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYSW1hZ2VFZGl0b3JWaWV3Q29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiBpdHMgcmVjZWl2ZSBpbWFnZSBzcmMuXHJcbiAgICovXHJcbiAgc3JjID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY2FudmFzRWxlbSA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50Pj4oJ2NhbnZhc0VsZW0nKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjdHggPSBzaWduYWw8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihudWxsKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYSW1hZ2VFZGl0b3JTZXJ2aWNlKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wSW1hZ2VEYXRhID0gc2lnbmFsPEltYWdlRGF0YT4obnVsbCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BTdGFydFggPSBzaWduYWwoMCk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgY3JvcFN0YXJ0WSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWCA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjcm9wRW5kWSA9IHNpZ25hbCgwKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBwYXJlbnQgPSBpbmplY3QoQVhJbWFnZUVkaXRvckNvbnRhaW5lckNvbXBvbmVudCk7XHJcbiAgcHJvdGVjdGVkIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgaW1hZ2VBc3BlY3QgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoIC8gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLmhlaWdodDtcclxuICB9KTtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICByZXNpemVFdmVudExpc3RlbmVyO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgaW1hZ2VMb2FkRXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgcmVzaXplV2luZG93KCkge1xyXG4gICAgdGhpcy5jYW52YXNSZXNwb25zaXZlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNhbnZhc1Jlc3BvbnNpdmUoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHBhcmVudFdpZHRoID0gKHRoaXMucGFyZW50LmltYWdlRWRpdG9yQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCkuY2xpZW50V2lkdGg7XHJcbiAgICBjb25zdCBpbWFnZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLndpZHRoO1xyXG5cclxuICAgIGlmIChwYXJlbnRXaWR0aCA8IGltYWdlV2lkdGgpIHtcclxuICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnN0eWxlLndpZHRoID0gYCR7cGFyZW50V2lkdGh9cHhgO1xyXG4gICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuc3R5bGUuaGVpZ2h0ID0gYCR7cGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCl9cHhgO1xyXG4gICAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoID0gcGFyZW50V2lkdGg7XHJcbiAgICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gcGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCk7XHJcbiAgICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBwYXJlbnRXaWR0aCwgcGFyZW50V2lkdGggKiB0aGlzLmltYWdlQXNwZWN0KCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnN0eWxlLndpZHRoID0gYCR7aW1hZ2VXaWR0aH1weGA7XHJcbiAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zdHlsZS5oZWlnaHQgPSBgJHtpbWFnZVdpZHRoIC8gdGhpcy5pbWFnZUFzcGVjdCgpfXB4YDtcclxuICAgICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCA9IGltYWdlV2lkdGg7XHJcbiAgICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gaW1hZ2VXaWR0aCAvIHRoaXMuaW1hZ2VBc3BlY3QoKTtcclxuICAgICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGltYWdlV2lkdGgsIGltYWdlV2lkdGggLyB0aGlzLmltYWdlQXNwZWN0KCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih3aW5kb3csICdyZXNpemUnLCB0aGlzLnJlc2l6ZVdpbmRvdy5iaW5kKHRoaXMpKTtcclxuICAgICAgLy9sb2FkIGltYWdlXHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2Uuc2V0KG5ldyBJbWFnZSgpKTtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLnNyYyA9IHRoaXMuc3JjKCk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgICB0aGlzLmltYWdlTG9hZEV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcclxuICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCksXHJcbiAgICAgICAgJ2xvYWQnLFxyXG4gICAgICAgIHRoaXMuaW1hZ2VMb2FkZWQuYmluZCh0aGlzKSxcclxuICAgICAgKTtcclxuICAgICAgLy9zZXQgY2FudmFzIG9wdGlvbnNcclxuICAgICAgdGhpcy5jdHguc2V0KHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZUpvaW4gPSAncm91bmQnO1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQWxwaGEgPSAxO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucGFyZW50LmltYWdlRWRpdG9yQ29udGFpbmVyKCkgJiYgdGhpcy5zZXJ2aWNlLmlzSW1hZ2VMb2FkKCkpIHtcclxuICAgICAgICB0aGlzLmNhbnZhc1Jlc3BvbnNpdmUodGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UudG9nZ2xlQ2xlYXIoKS51c2VySW50ZXJhY3QpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyKCkuc3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VMb2FkZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuICAgICk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkudXNlckludGVyYWN0IHx8ICF0aGlzLmN0eCgpKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5jdHgoKS5maWx0ZXIgPSAnYnJpZ2h0bmVzcyg0MCUpJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdHgoKS5maWx0ZXIgPSAnYnJpZ2h0bmVzcygxMDAlKSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoLFxyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkuaGVpZ2h0LFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuICAgICk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2Uucm90YXRlKCkudXNlckludGVyYWN0IHx8ICF0aGlzLmN0eCgpKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yb3RhdGVJbWFnZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplRXZlbnRMaXN0ZW5lcigpO1xyXG4gICAgdGhpcy5pbWFnZUxvYWRFdmVudExpc3RlbmVyKCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBpbWFnZUxvYWRlZCgpIHtcclxuICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZS5zZXQodGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpKTtcclxuICAgIHRoaXMuc2VydmljZS50b2dnbGVDbGVhci5zZXQoeyB1c2VySW50ZXJhY3Q6IGZhbHNlLCBzdGF0ZTogZmFsc2UgfSk7XHJcbiAgICB0aGlzLnNlcnZpY2UuaXNJbWFnZUxvYWQuc2V0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgcGVuQ29uZmlnSGFuZGxlcihwZW5UeXBlOiAncGVuJyB8ICdoaWdobGlnaHQnKSB7XHJcbiAgICBzd2l0Y2ggKHBlblR5cGUpIHtcclxuICAgICAgY2FzZSAncGVuJzpcclxuICAgICAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaGlnaGxpZ2h0JzpcclxuICAgICAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMC4wMDg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBnZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIG1vdXNlRG93bkhhbmRsZXIoZTogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQodHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICB0aGlzLmNyb3BTdGFydFguc2V0KGUub2Zmc2V0WCk7XHJcbiAgICAgIHRoaXMuY3JvcFN0YXJ0WS5zZXQoZS5vZmZzZXRZKTtcclxuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQoMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBlbkNvbmZpZ0hhbmRsZXIodGhpcy5zZXJ2aWNlLnBlblR5cGUoKSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSB0aGlzLnNlcnZpY2UucGVuQ29sb3IoKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lQ2FwID0gdGhpcy5zZXJ2aWNlLmxpbmVDYXAoKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSB0aGlzLnNlcnZpY2UubGluZVdpZHRoKCk7XHJcblxyXG4gICAgICB0aGlzLmN0eCgpLmJlZ2luUGF0aCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLm1vdmVUbyhlLm9mZnNldFgsIGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKGUub2Zmc2V0WCwgZS5vZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIG1vdXNlTW92ZUhhbmRsZXIoZTogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc2NyZWVuJztcclxuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQoZS5vZmZzZXRYKTtcclxuICAgICAgdGhpcy5jcm9wRW5kWS5zZXQoZS5vZmZzZXRZKTtcclxuICAgICAgdGhpcy5kcmF3U2VsZWN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN0eCgpLmxpbmVUbyhlLm9mZnNldFgsIGUub2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBtb3VzZVVwSGFuZGxlcigpIHtcclxuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KGZhbHNlKTtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUgJiYgdGhpcy5jcm9wRW5kWCgpKSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcclxuICAgICAgdGhpcy5jcm9wSW1hZ2VGdW5jdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdHgoKS5jbG9zZVBhdGgoKTtcclxuICAgICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHRvdWNoU3RhcnRIYW5kbGVyKGU6IFRvdWNoRXZlbnQpIHtcclxuICAgIGNvbnN0IG9mZnNldFggPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkubGVmdDtcclxuICAgIGNvbnN0IG9mZnNldFkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkudG9wO1xyXG5cclxuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KHRydWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcclxuICAgICAgdGhpcy5jcm9wU3RhcnRYLnNldChvZmZzZXRYKTtcclxuICAgICAgdGhpcy5jcm9wU3RhcnRZLnNldChvZmZzZXRZKTtcclxuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQoMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBlbkNvbmZpZ0hhbmRsZXIodGhpcy5zZXJ2aWNlLnBlblR5cGUoKSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSB0aGlzLnNlcnZpY2UucGVuQ29sb3IoKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lQ2FwID0gdGhpcy5zZXJ2aWNlLmxpbmVDYXAoKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSB0aGlzLnNlcnZpY2UubGluZVdpZHRoKCk7XHJcblxyXG4gICAgICB0aGlzLmN0eCgpLmJlZ2luUGF0aCgpO1xyXG4gICAgICB0aGlzLmN0eCgpLm1vdmVUbyhvZmZzZXRYLCBvZmZzZXRZKTtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lVG8ob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCB0b3VjaE1vdmVIYW5kbGVyKGU6IFRvdWNoRXZlbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTsgLy8gcHJldmVudCBwYWdlIGZyb20gc2Nyb2xsXHJcbiAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24oKSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb2Zmc2V0WCA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gdGhpcy5nZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKS5sZWZ0O1xyXG4gICAgY29uc3Qgb2Zmc2V0WSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gdGhpcy5nZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKS50b3A7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSkge1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzY3JlZW4nO1xyXG4gICAgICB0aGlzLmNyb3BFbmRYLnNldChvZmZzZXRYKTtcclxuICAgICAgdGhpcy5jcm9wRW5kWS5zZXQob2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuZHJhd1NlbGVjdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdHgoKS5saW5lVG8ob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgIHRoaXMuY3R4KCkuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCB0b3VjaEVuZEhhbmRsZXIoKSB7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duLnNldChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlICYmIHRoaXMuY3JvcEVuZFgoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XHJcbiAgICAgIHRoaXMuY3JvcEltYWdlRnVuY3Rpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3R4KCkuY2xvc2VQYXRoKCk7XHJcbiAgICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBkcmF3U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgY3JvcFdpZHRoID0gdGhpcy5jcm9wRW5kWCgpIC0gdGhpcy5jcm9wU3RhcnRYKCk7XHJcbiAgICBjb25zdCBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCk7XHJcblxyXG4gICAgdGhpcy5jdHgoKS5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQpO1xyXG4gICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UodGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksIDAsIDApO1xyXG4gICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XHJcbiAgICB0aGlzLmN0eCgpLnNldExpbmVEYXNoKFs0LCAxMF0pO1xyXG4gICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSAyO1xyXG4gICAgdGhpcy5jdHgoKS5zdHJva2VSZWN0KHRoaXMuY3JvcFN0YXJ0WCgpLCB0aGlzLmNyb3BTdGFydFkoKSwgY3JvcFdpZHRoLCBjcm9wSGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BJbWFnZUZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5jdHgoKS5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQpO1xyXG4gICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UodGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksIDAsIDApO1xyXG5cclxuICAgIGxldCBpbWFnZURhdGE6IEltYWdlRGF0YTtcclxuICAgIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRZKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWCgpIC0gdGhpcy5jcm9wU3RhcnRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRZKCkgLSB0aGlzLmNyb3BFbmRZKCksXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFgoKSxcclxuICAgICAgICB0aGlzLmNyb3BFbmRZKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCkgLSB0aGlzLmNyb3BFbmRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRZKCkgLSB0aGlzLmNyb3BFbmRZKCksXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpLFxyXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcclxuICAgICAgICB0aGlzLmNyb3BFbmRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRZKCksXHJcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCkgLSB0aGlzLmNyb3BFbmRYKCksXHJcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCksXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YTogVWludDhDbGFtcGVkQXJyYXkgPSBpbWFnZURhdGEuZGF0YTtcclxuXHJcbiAgICBjb25zdCBicmlnaHRuZXNzRmFjdG9yID0gMi40OyAvLyBJbmNyZWFzZSBicmlnaHRuZXNzIGJ5IDIwJVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0KSB7XHJcbiAgICAgIGRhdGFbaV0gPSBkYXRhW2ldICogYnJpZ2h0bmVzc0ZhY3RvcjsgLy8gUmVkXHJcbiAgICAgIGRhdGFbaSArIDFdID0gZGF0YVtpICsgMV0gKiBicmlnaHRuZXNzRmFjdG9yOyAvLyBHcmVlblxyXG4gICAgICBkYXRhW2kgKyAyXSA9IGRhdGFbaSArIDJdICogYnJpZ2h0bmVzc0ZhY3RvcjsgLy8gQmx1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLnB1dEltYWdlRGF0YShpbWFnZURhdGEsIHRoaXMuY3JvcFN0YXJ0WCgpLCB0aGlzLmNyb3BFbmRZKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLnB1dEltYWdlRGF0YShpbWFnZURhdGEsIHRoaXMuY3JvcEVuZFgoKSwgdGhpcy5jcm9wRW5kWSgpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcclxuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wU3RhcnRZKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xyXG4gICAgICB0aGlzLmN0eCgpLnB1dEltYWdlRGF0YShpbWFnZURhdGEsIHRoaXMuY3JvcEVuZFgoKSwgdGhpcy5jcm9wU3RhcnRZKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JvcEltYWdlRGF0YS5zZXQoaW1hZ2VEYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNyb3BCdXR0b25IYW5kbGVyKCkge1xyXG4gICAgbGV0IGNyb3BXaWR0aDogbnVtYmVyO1xyXG4gICAgbGV0IGNyb3BIZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2Uucm90YXRlLnVwZGF0ZSgocHJldikgPT4ge1xyXG4gICAgICByZXR1cm4geyB1c2VySW50ZXJhY3Q6IGZhbHNlLCBzdGF0ZTogcHJldi5zdGF0ZSB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xyXG4gICAgICBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wU3RhcnRZKCkgLSB0aGlzLmNyb3BFbmRZKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpID4gdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpO1xyXG4gICAgICBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wU3RhcnRZKCkgLSB0aGlzLmNyb3BFbmRZKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xyXG4gICAgICBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpID4gdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XHJcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpO1xyXG4gICAgICBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCA9IGNyb3BXaWR0aDtcclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gY3JvcEhlaWdodDtcclxuXHJcbiAgICB0aGlzLmN0eCgpLnB1dEltYWdlRGF0YSh0aGlzLmNyb3BJbWFnZURhdGEoKSwgMCwgMCk7XHJcbiAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xyXG4gICAgdGhpcy5jcm9wSW1hZ2VEYXRhLnNldChudWxsKTtcclxuICAgIHRoaXMuc2VydmljZS5jcm9wU3RhdGUuc2V0KHsgdXNlckludGVyYWN0OiBmYWxzZSwgc3RhdGU6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgcm90YXRlSW1hZ2UoKSB7XHJcbiAgICB0aGlzLmN0eCgpLnNhdmUoKTtcclxuICAgIHRoaXMuY3R4KCkuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcclxuICAgIHRoaXMuY3R4KCkudHJhbnNsYXRlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLndpZHRoIC8gMiwgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkuaGVpZ2h0IC8gMik7XHJcbiAgICB0aGlzLmN0eCgpLnJvdGF0ZSgodGhpcy5zZXJ2aWNlLnJvdGF0ZSgpLnN0YXRlICogTWF0aC5QSSkgLyAxODApO1xyXG4gICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UoXHJcbiAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLFxyXG4gICAgICAtdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkud2lkdGggLyAyLFxyXG4gICAgICAtdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkuaGVpZ2h0IC8gMixcclxuICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkud2lkdGgsXHJcbiAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCxcclxuICAgICk7XHJcbiAgICB0aGlzLmN0eCgpLnJlc3RvcmUoKTtcclxuXHJcbiAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnJvdGF0ZS51cGRhdGUoKHByZXYpID0+IHtcclxuICAgICAgcmV0dXJuIHsgc3RhdGU6IHByZXYuc3RhdGUsIHVzZXJJbnRlcmFjdDogZmFsc2UgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcm90ZWN0ZWQgc2F2ZUltYWdlQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbmV3SW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgIG5ld0ltYWdlLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICBuZXdJbWFnZS5zcmMgPSB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDEpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlLnNldChuZXdJbWFnZSk7XHJcblxyXG4gICAgY29uc3QgdGVtcEJsb2IgPSBbXTtcclxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQudG9CbG9iKFxyXG4gICAgICAoYmxvYikgPT4ge1xyXG4gICAgICAgIHRlbXBCbG9iLnB1c2goYmxvYik7XHJcbiAgICAgIH0sXHJcbiAgICAgICdpbWFnZS9qcGVnJyxcclxuICAgICAgMSxcclxuICAgICk7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LnRvQmxvYihcclxuICAgICAgKGJsb2IpID0+IHtcclxuICAgICAgICB0ZW1wQmxvYi5wdXNoKGJsb2IpO1xyXG4gICAgICB9LFxyXG4gICAgICAnaW1hZ2UvcG5nJyxcclxuICAgICAgMSxcclxuICAgICk7XHJcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LnRvQmxvYihcclxuICAgICAgKGJsb2IpID0+IHtcclxuICAgICAgICB0ZW1wQmxvYi5wdXNoKGJsb2IpO1xyXG4gICAgICB9LFxyXG4gICAgICAnaW1hZ2Uvd2VicCcsXHJcbiAgICAgIDEsXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmltYWdlQmxvYi5zZXQodGVtcEJsb2IpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlJylcclxuICBwcml2YXRlIGdldCBfX2hvc3RTdHlsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGB3aWR0aDogJHt0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCk/LndpZHRofXB4OyBoZWlnaHQ6ICR7dGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpPy5oZWlnaHR9cHhgO1xyXG4gIH1cclxufVxyXG4iLCI8Y2FudmFzXG4gIHRhYmluZGV4PVwiMVwiXG4gIChtb3VzZWRvd24pPVwibW91c2VEb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgKG1vdXNldXApPVwibW91c2VVcEhhbmRsZXIoKVwiXG4gIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgKHRvdWNoc3RhcnQpPVwidG91Y2hTdGFydEhhbmRsZXIoJGV2ZW50KVwiXG4gICh0b3VjaGVuZCk9XCJ0b3VjaEVuZEhhbmRsZXIoKVwiXG4gICh0b3VjaG1vdmUpPVwidG91Y2hNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgY2xhc3M9XCJheC1jYW52YXMtZWxlbWVudFwiXG4gICNjYW52YXNFbGVtXG4+PC9jYW52YXM+XG48YXgtYnV0dG9uXG4gIChjbGljayk9XCJjcm9wQnV0dG9uSGFuZGxlcigpXCJcbiAgW3N0eWxlXT1cInsgZGlzcGxheTogc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSA/ICdibG9jaycgOiAnbm9uZScgfVwiXG4gIGNsYXNzPVwiYXgtY3JvcC1zYXZlIGF4LXNtXCJcbiAgdGV4dD1cIkNyb3BcIlxuPjwvYXgtYnV0dG9uPlxuIl19
@@ -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=
@@ -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==
@@ -344,6 +344,7 @@ class AXColorPaletteInputComponent extends MXBaseComponent {
344
344
  break;
345
345
  default:
346
346
  this._colorMode = 'rgba';
347
+ this.applyParent(true);
347
348
  break;
348
349
  }
349
350
  }
@@ -526,8 +527,8 @@ class AXColorPalettePickerComponent extends MXBaseComponent {
526
527
  }
527
528
  const surface = this.getHostElement().querySelector('.ax-color-box-overlay');
528
529
  const pointer = this.getHostElement().querySelector('.ax-color-box-pointer');
529
- let x = e.offsetX;
530
- let y = e.offsetY;
530
+ const x = e.offsetX;
531
+ const y = e.offsetY;
531
532
  this.setColorByXY(x, y);
532
533
  }
533
534
  /**