valtech-components 2.0.1035 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/esm2022/lib/components/atoms/box/box.component.mjs +6 -8
  2. package/esm2022/lib/components/atoms/button/factory.mjs +24 -217
  3. package/esm2022/lib/components/atoms/divider/divider.component.mjs +2 -4
  4. package/esm2022/lib/components/atoms/href/href.component.mjs +1 -2
  5. package/esm2022/lib/components/atoms/image/image.component.mjs +36 -3
  6. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +4 -9
  7. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +4 -4
  8. package/esm2022/lib/components/molecules/card/card.component.mjs +53 -10
  9. package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +27 -36
  10. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +44 -6
  11. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +32 -7
  12. package/esm2022/lib/components/molecules/comment/comment.component.mjs +28 -12
  13. package/esm2022/lib/components/molecules/cta-card/cta-card.component.mjs +4 -9
  14. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +7 -7
  15. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +159 -71
  16. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +7 -3
  17. package/esm2022/lib/components/molecules/hint/hint.component.mjs +30 -5
  18. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +75 -19
  19. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +42 -9
  20. package/esm2022/lib/components/molecules/permission-selector/types.mjs +1 -1
  21. package/esm2022/lib/components/molecules/rating/rating.component.mjs +88 -12
  22. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +15 -7
  23. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +93 -7
  24. package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs +5 -5
  25. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +4 -4
  26. package/esm2022/lib/components/organisms/form/form.component.mjs +62 -20
  27. package/esm2022/lib/components/organisms/login/login.component.mjs +8 -8
  28. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  29. package/esm2022/lib/components/types.mjs +1 -1
  30. package/esm2022/lib/services/presets/default-presets.mjs +45 -0
  31. package/esm2022/lib/services/presets/index.mjs +3 -1
  32. package/esm2022/lib/services/presets/preset.service.mjs +17 -4
  33. package/esm2022/lib/services/requests/request-form-builder.service.mjs +8 -3
  34. package/esm2022/lib/shared/utils/ionic-color.mjs +36 -0
  35. package/esm2022/lib/version.mjs +2 -2
  36. package/esm2022/public-api.mjs +2 -8
  37. package/fesm2022/valtech-components.mjs +1138 -1022
  38. package/fesm2022/valtech-components.mjs.map +1 -1
  39. package/lib/components/atoms/box/box.component.d.ts +2 -5
  40. package/lib/components/atoms/button/factory.d.ts +15 -69
  41. package/lib/components/atoms/divider/divider.component.d.ts +1 -4
  42. package/lib/components/atoms/href/href.component.d.ts +2 -3
  43. package/lib/components/atoms/image/image.component.d.ts +5 -0
  44. package/lib/components/molecules/action-card/action-card.component.d.ts +1 -1
  45. package/lib/components/molecules/card/card.component.d.ts +2 -1
  46. package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +2 -3
  47. package/lib/components/molecules/chip-group/chip-group.component.d.ts +5 -0
  48. package/lib/components/molecules/command-display/command-display.component.d.ts +4 -0
  49. package/lib/components/molecules/comment/comment.component.d.ts +3 -0
  50. package/lib/components/molecules/cta-card/cta-card.component.d.ts +0 -1
  51. package/lib/components/molecules/hint/hint.component.d.ts +11 -1
  52. package/lib/components/molecules/pagination/pagination.component.d.ts +5 -0
  53. package/lib/components/molecules/password-input/password-input.component.d.ts +4 -2
  54. package/lib/components/molecules/permission-selector/types.d.ts +1 -0
  55. package/lib/components/molecules/rating/rating.component.d.ts +11 -0
  56. package/lib/components/molecules/text-input/text-input.component.d.ts +21 -0
  57. package/lib/components/organisms/form/form.component.d.ts +19 -0
  58. package/lib/components/types.d.ts +21 -1
  59. package/lib/services/presets/default-presets.d.ts +22 -0
  60. package/lib/services/presets/index.d.ts +1 -0
  61. package/lib/services/presets/preset.service.d.ts +4 -0
  62. package/lib/shared/utils/ionic-color.d.ts +20 -0
  63. package/lib/version.d.ts +1 -1
  64. package/package.json +1 -1
  65. package/public-api.d.ts +1 -7
  66. package/src/lib/components/styles/mixins.scss +16 -0
  67. package/esm2022/lib/components/molecules/content-card/content-card.component.mjs +0 -86
  68. package/esm2022/lib/components/molecules/content-card/types.mjs +0 -11
  69. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -68
  70. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -28
  71. package/esm2022/lib/components/molecules/info-card/info-card.component.mjs +0 -126
  72. package/esm2022/lib/components/molecules/info-card/types.mjs +0 -11
  73. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -34
  74. package/lib/components/molecules/content-card/content-card.component.d.ts +0 -26
  75. package/lib/components/molecules/content-card/types.d.ts +0 -30
  76. package/lib/components/molecules/email-input/email-input.component.d.ts +0 -34
  77. package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -15
  78. package/lib/components/molecules/info-card/info-card.component.d.ts +0 -37
  79. package/lib/components/molecules/info-card/types.d.ts +0 -44
  80. package/lib/components/molecules/number-input/number-input.component.d.ts +0 -16
@@ -1,11 +1,20 @@
1
1
  import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { IonIcon } from '@ionic/angular/standalone';
3
3
  import { CommonModule } from '@angular/common';
4
+ import { I18nService } from '../../../services/i18n';
4
5
  import { PresetService } from '../../../services/presets';
5
6
  import { addIcons } from 'ionicons';
6
7
  import { star, starOutline, starHalf, heart, heartOutline, heartHalf } from 'ionicons/icons';
7
8
  import * as i0 from "@angular/core";
8
9
  addIcons({ star, starOutline, starHalf, heart, heartOutline, heartHalf });
10
+ /**
11
+ * Defaults i18n (es/en) — auto-registrados si el consumer no proveyó el
12
+ * namespace `Rating`. Cubre el aria-label del grupo y de cada estrella.
13
+ */
14
+ const RATING_I18N = {
15
+ es: { groupLabel: 'Valoración', starLabel: '{value} de {max}' },
16
+ en: { groupLabel: 'Rating', starLabel: '{value} of {max}' },
17
+ };
9
18
  /**
10
19
  * val-rating
11
20
  *
@@ -29,10 +38,14 @@ addIcons({ star, starOutline, starHalf, heart, heartOutline, heartHalf });
29
38
  export class RatingComponent {
30
39
  constructor() {
31
40
  this.presets = inject(PresetService);
41
+ this.i18n = inject(I18nService);
32
42
  this.props = {};
33
43
  this.resolvedProps = {};
34
44
  this.ratingChange = new EventEmitter();
35
45
  this.hoverValue = null;
46
+ if (!this.i18n.hasNamespace('Rating')) {
47
+ this.i18n.registerContent('Rating', RATING_I18N);
48
+ }
36
49
  }
37
50
  ngOnInit() {
38
51
  this.resolveProps();
@@ -58,6 +71,43 @@ export class RatingComponent {
58
71
  const max = this.resolvedProps.max || 5;
59
72
  return Array.from({ length: max }, (_, i) => i + 1);
60
73
  }
74
+ groupLabel() {
75
+ this.i18n.lang();
76
+ return this.i18n.t('groupLabel', 'Rating');
77
+ }
78
+ starLabel(position) {
79
+ this.i18n.lang();
80
+ return this.i18n.t('starLabel', 'Rating', {
81
+ value: position.toString(),
82
+ max: (this.resolvedProps.max || 5).toString(),
83
+ });
84
+ }
85
+ /**
86
+ * Roving tabindex: solo una estrella es tabbable. La estrella del valor
87
+ * actual (o la primera si no hay valor) recibe `0`, el resto `-1`.
88
+ */
89
+ getStarTabindex(position) {
90
+ if (this.resolvedProps.readonly || this.resolvedProps.disabled)
91
+ return -1;
92
+ const value = this.resolvedProps.value || 0;
93
+ const focusIndex = value >= 1 ? Math.ceil(value) : 1;
94
+ return position === focusIndex ? 0 : -1;
95
+ }
96
+ /** Navegación con flechas: mueve el foco y selecciona la estrella vecina. */
97
+ onArrow(event, delta) {
98
+ if (this.resolvedProps.readonly || this.resolvedProps.disabled)
99
+ return;
100
+ event.preventDefault();
101
+ const max = this.resolvedProps.max || 5;
102
+ const current = this.resolvedProps.value >= 1 ? Math.ceil(this.resolvedProps.value) : 1;
103
+ const next = Math.min(max, Math.max(1, current + delta));
104
+ if (next === this.resolvedProps.value)
105
+ return;
106
+ this.ratingChange.emit({ value: next, previousValue: this.resolvedProps.value });
107
+ const target = event.target;
108
+ const buttons = target.closest('.rating-container')?.querySelectorAll('.rating-star');
109
+ buttons?.[next - 1]?.focus();
110
+ }
61
111
  getStarIcon(position) {
62
112
  const value = this.hoverValue !== null ? this.hoverValue : this.resolvedProps.value;
63
113
  const baseIcon = this.resolvedProps.icon || 'star';
@@ -112,55 +162,81 @@ export class RatingComponent {
112
162
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RatingComponent, isStandalone: true, selector: "val-rating", inputs: { preset: "preset", props: "props" }, outputs: { ratingChange: "ratingChange" }, usesOnChanges: true, ngImport: i0, template: `
113
163
  <div
114
164
  class="rating-container"
165
+ role="radiogroup"
166
+ [attr.aria-label]="groupLabel()"
115
167
  [class.readonly]="resolvedProps.readonly"
116
168
  [class.disabled]="resolvedProps.disabled"
117
169
  [class]="'size-' + (resolvedProps.size || 'medium')"
118
170
  >
119
171
  @for (i of getStars(); track i) {
120
- <ion-icon
121
- [name]="getStarIcon(i)"
122
- [color]="getStarColor(i)"
172
+ <button
173
+ type="button"
174
+ class="rating-star"
175
+ role="radio"
123
176
  [class.clickable]="!resolvedProps.readonly && !resolvedProps.disabled"
177
+ [attr.aria-checked]="i <= resolvedProps.value"
178
+ [attr.aria-label]="starLabel(i)"
179
+ [attr.tabindex]="getStarTabindex(i)"
180
+ [disabled]="resolvedProps.disabled"
124
181
  (click)="onStarClick(i)"
182
+ (keydown.arrowright)="onArrow($event, 1)"
183
+ (keydown.arrowup)="onArrow($event, 1)"
184
+ (keydown.arrowleft)="onArrow($event, -1)"
185
+ (keydown.arrowdown)="onArrow($event, -1)"
125
186
  (mouseenter)="onStarHover(i)"
126
187
  (mouseleave)="onStarLeave()"
127
- ></ion-icon>
188
+ >
189
+ <ion-icon [name]="getStarIcon(i)" [color]="getStarColor(i)" aria-hidden="true"></ion-icon>
190
+ </button>
128
191
  }
129
192
  @if (resolvedProps.showValue) {
130
193
  <span class="rating-value">{{ displayValue }}</span>
131
194
  }
132
195
  </div>
133
- `, isInline: true, styles: [":host{display:inline-block}.rating-container{display:inline-flex;align-items:center;gap:4px}.rating-container.readonly{pointer-events:none}.rating-container.disabled{opacity:.5;pointer-events:none}.rating-container.size-small ion-icon{font-size:1rem}.rating-container.size-medium ion-icon{font-size:1.5rem}.rating-container.size-large ion-icon{font-size:2rem}ion-icon{transition:transform .15s ease,color .15s ease}ion-icon.clickable{cursor:pointer}ion-icon.clickable:hover{transform:scale(1.2)}.rating-value{margin-left:8px;font-weight:600;color:var(--ion-color-dark)}.size-small .rating-value{font-size:.75rem}.size-medium .rating-value{font-size:.875rem}.size-large .rating-value{font-size:1.125rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
196
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:inline-block}.rating-container{display:inline-flex;align-items:center;gap:4px}.rating-container.readonly{pointer-events:none}.rating-container.disabled{opacity:.5;pointer-events:none}.rating-container.size-small ion-icon{font-size:1rem}.rating-container.size-medium ion-icon{font-size:1.5rem}.rating-container.size-large ion-icon{font-size:2rem}.rating-star{display:inline-flex;align-items:center;justify-content:center;padding:0;margin:0;border:none;background:none;color:inherit;line-height:0;cursor:default}.rating-star:focus{outline:none}.rating-star:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.rating-star.clickable{cursor:pointer}.rating-star.clickable:hover ion-icon{transform:scale(1.2)}.rating-star:disabled{cursor:default}ion-icon{transition:transform .15s ease,color .15s ease}.rating-value{margin-left:8px;font-weight:600;color:var(--ion-color-dark)}.size-small .rating-value{font-size:.75rem}.size-medium .rating-value{font-size:.875rem}.size-large .rating-value{font-size:1.125rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
134
197
  }
135
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RatingComponent, decorators: [{
136
199
  type: Component,
137
200
  args: [{ selector: 'val-rating', standalone: true, imports: [CommonModule, IonIcon], template: `
138
201
  <div
139
202
  class="rating-container"
203
+ role="radiogroup"
204
+ [attr.aria-label]="groupLabel()"
140
205
  [class.readonly]="resolvedProps.readonly"
141
206
  [class.disabled]="resolvedProps.disabled"
142
207
  [class]="'size-' + (resolvedProps.size || 'medium')"
143
208
  >
144
209
  @for (i of getStars(); track i) {
145
- <ion-icon
146
- [name]="getStarIcon(i)"
147
- [color]="getStarColor(i)"
210
+ <button
211
+ type="button"
212
+ class="rating-star"
213
+ role="radio"
148
214
  [class.clickable]="!resolvedProps.readonly && !resolvedProps.disabled"
215
+ [attr.aria-checked]="i <= resolvedProps.value"
216
+ [attr.aria-label]="starLabel(i)"
217
+ [attr.tabindex]="getStarTabindex(i)"
218
+ [disabled]="resolvedProps.disabled"
149
219
  (click)="onStarClick(i)"
220
+ (keydown.arrowright)="onArrow($event, 1)"
221
+ (keydown.arrowup)="onArrow($event, 1)"
222
+ (keydown.arrowleft)="onArrow($event, -1)"
223
+ (keydown.arrowdown)="onArrow($event, -1)"
150
224
  (mouseenter)="onStarHover(i)"
151
225
  (mouseleave)="onStarLeave()"
152
- ></ion-icon>
226
+ >
227
+ <ion-icon [name]="getStarIcon(i)" [color]="getStarColor(i)" aria-hidden="true"></ion-icon>
228
+ </button>
153
229
  }
154
230
  @if (resolvedProps.showValue) {
155
231
  <span class="rating-value">{{ displayValue }}</span>
156
232
  }
157
233
  </div>
158
- `, styles: [":host{display:inline-block}.rating-container{display:inline-flex;align-items:center;gap:4px}.rating-container.readonly{pointer-events:none}.rating-container.disabled{opacity:.5;pointer-events:none}.rating-container.size-small ion-icon{font-size:1rem}.rating-container.size-medium ion-icon{font-size:1.5rem}.rating-container.size-large ion-icon{font-size:2rem}ion-icon{transition:transform .15s ease,color .15s ease}ion-icon.clickable{cursor:pointer}ion-icon.clickable:hover{transform:scale(1.2)}.rating-value{margin-left:8px;font-weight:600;color:var(--ion-color-dark)}.size-small .rating-value{font-size:.75rem}.size-medium .rating-value{font-size:.875rem}.size-large .rating-value{font-size:1.125rem}\n"] }]
159
- }], propDecorators: { preset: [{
234
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:inline-block}.rating-container{display:inline-flex;align-items:center;gap:4px}.rating-container.readonly{pointer-events:none}.rating-container.disabled{opacity:.5;pointer-events:none}.rating-container.size-small ion-icon{font-size:1rem}.rating-container.size-medium ion-icon{font-size:1.5rem}.rating-container.size-large ion-icon{font-size:2rem}.rating-star{display:inline-flex;align-items:center;justify-content:center;padding:0;margin:0;border:none;background:none;color:inherit;line-height:0;cursor:default}.rating-star:focus{outline:none}.rating-star:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.rating-star.clickable{cursor:pointer}.rating-star.clickable:hover ion-icon{transform:scale(1.2)}.rating-star:disabled{cursor:default}ion-icon{transition:transform .15s ease,color .15s ease}.rating-value{margin-left:8px;font-weight:600;color:var(--ion-color-dark)}.size-small .rating-value{font-size:.75rem}.size-medium .rating-value{font-size:.875rem}.size-large .rating-value{font-size:1.125rem}\n"] }]
235
+ }], ctorParameters: () => [], propDecorators: { preset: [{
160
236
  type: Input
161
237
  }], props: [{
162
238
  type: Input
163
239
  }], ratingChange: [{
164
240
  type: Output
165
241
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmF0aW5nL3JhdGluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU3RixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUE4QjFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFoRDVCO1FBaURVLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFHL0IsVUFBSyxHQUE0QixFQUFFLENBQUM7UUFFN0Msa0JBQWEsR0FBbUIsRUFBb0IsQ0FBQztRQUUzQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRS9ELGVBQVUsR0FBa0IsSUFBSSxDQUFDO0tBcUZsQztJQW5GQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENB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Ozs0RkE2Q3BCLGVBQWU7a0JBaEQzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7OEJBMEJRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgUmF0aW5nTWV0YWRhdGEsIFJhdGluZ0NoYW5nZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHN0YXIsIHN0YXJPdXRsaW5lLCBzdGFySGFsZiwgaGVhcnQsIGhlYXJ0T3V0bGluZSwgaGVhcnRIYWxmIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IHN0YXIsIHN0YXJPdXRsaW5lLCBzdGFySGFsZiwgaGVhcnQsIGhlYXJ0T3V0bGluZSwgaGVhcnRIYWxmIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcmF0aW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyYXRpbmctY29udGFpbmVyXCJcbiAgICAgIFtjbGFzcy5yZWFkb25seV09XCJyZXNvbHZlZFByb3BzLnJlYWRvbmx5XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzLmRpc2FibGVkXCJcbiAgICAgIFtjbGFzc109XCInc2l6ZS0nICsgKHJlc29sdmVkUHJvcHMuc2l6ZSB8fCAnbWVkaXVtJylcIlxuICAgID5cbiAgICAgIEBmb3IgKGkgb2YgZ2V0U3RhcnMoKTsgdHJhY2sgaSkge1xuICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICBbbmFtZV09XCJnZXRTdGFySWNvbihpKVwiXG4gICAgICAgICAgW2NvbG9yXT1cImdldFN0YXJDb2xvcihpKVwiXG4gICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCIhcmVzb2x2ZWRQcm9wcy5yZWFkb25seSAmJiAhcmVzb2x2ZWRQcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RhckNsaWNrKGkpXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJvblN0YXJIb3ZlcihpKVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25TdGFyTGVhdmUoKVwiXG4gICAgICAgID48L2lvbi1pY29uPlxuICAgICAgfVxuICAgICAgQGlmIChyZXNvbHZlZFByb3BzLnNob3dWYWx1ZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInJhdGluZy12YWx1ZVwiPnt7IGRpc3BsYXlWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcmF0aW5nXG4gKlxuICogQSBzdGFyIHJhdGluZyBjb21wb25lbnQgZm9yIGZlZWRiYWNrIGFuZCByZXZpZXdzLlxuICogU3VwcG9ydHMgcHJlc2V0cyBmb3IgcmV1c2FibGUgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgV2l0aCBwcmVzZXQ6XG4gKiA8dmFsLXJhdGluZyBwcmVzZXQ9XCJzdGFyc1wiIFtwcm9wc109XCJ7IHZhbHVlOiAzLjUgfVwiPjwvdmFsLXJhdGluZz5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogPHZhbC1yYXRpbmcgW3Byb3BzXT1cIntcbiAqICAgdmFsdWU6IDMuNSxcbiAqICAgbWF4OiA1LFxuICogICBhbGxvd0hhbGY6IHRydWVcbiAqIH1cIiAocmF0aW5nQ2hhbmdlKT1cIm9uUmF0aW5nQ2hhbmdlKCRldmVudClcIj48L3ZhbC1yYXRpbmc+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHlcbiAqIEBpbnB1dCBwcm9wczogUmF0aW5nTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgcmF0aW5nXG4gKiBAb3V0cHV0IHJhdGluZ0NoYW5nZTogUmF0aW5nQ2hhbmdlRXZlbnQgLSBFbWl0cyB3aGVuIHJhdGluZyBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBSYXRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFJhdGluZ01ldGFkYXRhPiA9IHt9O1xuXG4gIHJlc29sdmVkUHJvcHM6IFJhdGluZ01ldGFkYXRhID0ge30gYXMgUmF0aW5nTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHJhdGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmF0aW5nQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgaG92ZXJWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdyYXRpbmcnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxSYXRpbmdNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgUmF0aW5nTWV0YWRhdGE7XG4gIH1cblxuICBnZXQgZGlzcGxheVZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaG92ZXJWYWx1ZSAhPT0gbnVsbCA/IHRoaXMuaG92ZXJWYWx1ZSA6IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZTtcbiAgfVxuXG4gIGdldFN0YXJzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLnJlc29sdmVkUHJvcHMubWF4IHx8IDU7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IG1heCB9LCAoXywgaSkgPT4gaSArIDEpO1xuICB9XG5cbiAgZ2V0U3Rhckljb24ocG9zaXRpb246IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmhvdmVyVmFsdWUgIT09IG51bGwgPyB0aGlzLmhvdmVyVmFsdWUgOiB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWU7XG4gICAgY29uc3QgYmFzZUljb24gPSB0aGlzLnJlc29sdmVkUHJvcHMuaWNvbiB8fCAnc3Rhcic7XG4gICAgY29uc3QgZW1wdHlJY29uID0gdGhpcy5yZXNvbHZlZFByb3BzLmljb25FbXB0eSB8fCBgJHtiYXNlSWNvbn0tb3V0bGluZWA7XG4gICAgY29uc3QgaGFsZkljb24gPSB0aGlzLnJlc29sdmVkUHJvcHMuaWNvbkhhbGYgfHwgYCR7YmFzZUljb259LWhhbGZgO1xuXG4gICAgaWYgKHBvc2l0aW9uIDw9IHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUljb247XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuYWxsb3dIYWxmICYmIHBvc2l0aW9uIC0gMC41IDw9IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaGFsZkljb247XG4gICAgfVxuICAgIHJldHVybiBlbXB0eUljb247XG4gIH1cblxuICBnZXRTdGFyQ29sb3IocG9zaXRpb246IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmhvdmVyVmFsdWUgIT09IG51bGwgPyB0aGlzLmhvdmVyVmFsdWUgOiB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWU7XG4gICAgY29uc3QgaXNGaWxsZWQgPSBwb3NpdGlvbiA8PSB2YWx1ZSB8fCAodGhpcy5yZXNvbHZlZFByb3BzLmFsbG93SGFsZiAmJiBwb3NpdGlvbiAtIDAuNSA8PSB2YWx1ZSk7XG4gICAgcmV0dXJuIGlzRmlsbGVkID8gKHRoaXMucmVzb2x2ZWRQcm9wcy5jb2xvciB8fCAnd2FybmluZycpIDogKHRoaXMucmVzb2x2ZWRQcm9wcy5lbXB0eUNvbG9yIHx8ICdtZWRpdW0nKTtcbiAgfVxuXG4gIG9uU3RhckNsaWNrKHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnJlYWRvbmx5IHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgbGV0IG5ld1ZhbHVlID0gcG9zaXRpb247XG5cbiAgICAvLyBUb2dnbGUgaGFsZiB2YWx1ZSBpZiBjbGlja2luZyBzYW1lIHN0YXIgYW5kIGFsbG93SGFsZiBpcyB0cnVlXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5hbGxvd0hhbGYgJiYgcG9zaXRpb24gPT09IE1hdGguY2VpbCh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpKSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlID09PSBwb3NpdGlvbikge1xuICAgICAgICBuZXdWYWx1ZSA9IHBvc2l0aW9uIC0gMC41O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUgPT09IHBvc2l0aW9uIC0gMC41KSB7XG4gICAgICAgIG5ld1ZhbHVlID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHtcbiAgICAgIC8vIENsaWNrIHNhbWUgc3RhciBhZ2FpbiB0byBjbGVhclxuICAgICAgbmV3VmFsdWUgPSAwO1xuICAgIH1cblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlKSB7XG4gICAgICB0aGlzLnJhdGluZ0NoYW5nZS5lbWl0KHtcbiAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblN0YXJIb3Zlcihwb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5yZWFkb25seSB8fCB0aGlzLnJlc29sdmVkUHJvcHMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmhvdmVyVmFsdWUgPSBwb3NpdGlvbjtcbiAgfVxuXG4gIG9uU3RhckxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJWYWx1ZSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmF0aW5nL3JhdGluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFN0YsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRTFFOzs7R0FHRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFO0lBQy9ELEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFO0NBQzVELENBQUM7QUEyQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQWExQjtRQVpRLFlBQU8sR0FBRyxNQUFNLENB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QUFFLE9BQU87UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDOytHQTlJVSxlQUFlO21HQUFmLGVBQWUsb0xBekRoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVCx5eUhBbkNTLFlBQVksK0JBQUUsT0FBTzs7NEZBMERwQixlQUFlO2tCQTdEM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVDt3REEyQlEsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFJSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgUmF0aW5nTWV0YWRhdGEsIFJhdGluZ0NoYW5nZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHN0YXIsIHN0YXJPdXRsaW5lLCBzdGFySGFsZiwgaGVhcnQsIGhlYXJ0T3V0bGluZSwgaGVhcnRIYWxmIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IHN0YXIsIHN0YXJPdXRsaW5lLCBzdGFySGFsZiwgaGVhcnQsIGhlYXJ0T3V0bGluZSwgaGVhcnRIYWxmIH0pO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSDigJQgYXV0by1yZWdpc3RyYWRvcyBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICogbmFtZXNwYWNlIGBSYXRpbmdgLiBDdWJyZSBlbCBhcmlhLWxhYmVsIGRlbCBncnVwbyB5IGRlIGNhZGEgZXN0cmVsbGEuXG4gKi9cbmNvbnN0IFJBVElOR19JMThOID0ge1xuICBlczogeyBncm91cExhYmVsOiAnVmFsb3JhY2nDs24nLCBzdGFyTGFiZWw6ICd7dmFsdWV9IGRlIHttYXh9JyB9LFxuICBlbjogeyBncm91cExhYmVsOiAnUmF0aW5nJywgc3RhckxhYmVsOiAne3ZhbHVlfSBvZiB7bWF4fScgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1yYXRpbmcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJhdGluZy1jb250YWluZXJcIlxuICAgICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJncm91cExhYmVsKClcIlxuICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cInJlc29sdmVkUHJvcHMucmVhZG9ubHlcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzXT1cIidzaXplLScgKyAocmVzb2x2ZWRQcm9wcy5zaXplIHx8ICdtZWRpdW0nKVwiXG4gICAgPlxuICAgICAgQGZvciAoaSBvZiBnZXRTdGFycygpOyB0cmFjayBpKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInJhdGluZy1zdGFyXCJcbiAgICAgICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwiIXJlc29sdmVkUHJvcHMucmVhZG9ubHkgJiYgIXJlc29sdmVkUHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJpIDw9IHJlc29sdmVkUHJvcHMudmFsdWVcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RhckxhYmVsKGkpXCJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXRTdGFyVGFiaW5kZXgoaSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TdGFyQ2xpY2soaSlcIlxuICAgICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwib25BcnJvdygkZXZlbnQsIDEpXCJcbiAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3coJGV2ZW50LCAxKVwiXG4gICAgICAgICAgKGtleWRvd24uYXJyb3dsZWZ0KT1cIm9uQXJyb3coJGV2ZW50LCAtMSlcIlxuICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvbkFycm93KCRldmVudCwgLTEpXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJvblN0YXJIb3ZlcihpKVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25TdGFyTGVhdmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZ2V0U3Rhckljb24oaSlcIiBbY29sb3JdPVwiZ2V0U3RhckNvbG9yKGkpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuc2hvd1ZhbHVlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmF0aW5nLXZhbHVlXCI+e3sgZGlzcGxheVZhbHVlIH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9yYXRpbmcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1yYXRpbmdcbiAqXG4gKiBBIHN0YXIgcmF0aW5nIGNvbXBvbmVudCBmb3IgZmVlZGJhY2sgYW5kIHJldmlld3MuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldDpcbiAqIDx2YWwtcmF0aW5nIHByZXNldD1cInN0YXJzXCIgW3Byb3BzXT1cInsgdmFsdWU6IDMuNSB9XCI+PC92YWwtcmF0aW5nPlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiA8dmFsLXJhdGluZyBbcHJvcHNdPVwie1xuICogICB2YWx1ZTogMy41LFxuICogICBtYXg6IDUsXG4gKiAgIGFsbG93SGFsZjogdHJ1ZVxuICogfVwiIChyYXRpbmdDaGFuZ2UpPVwib25SYXRpbmdDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXJhdGluZz5cbiAqXG4gKiBAaW5wdXQgcHJlc2V0OiBzdHJpbmcgLSBOYW1lIG9mIHByZXNldCB0byBhcHBseVxuICogQGlucHV0IHByb3BzOiBSYXRpbmdNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSByYXRpbmdcbiAqIEBvdXRwdXQgcmF0aW5nQ2hhbmdlOiBSYXRpbmdDaGFuZ2VFdmVudCAtIEVtaXRzIHdoZW4gcmF0aW5nIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJhdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8UmF0aW5nTWV0YWRhdGE+ID0ge307XG5cbiAgcmVzb2x2ZWRQcm9wczogUmF0aW5nTWV0YWRhdGEgPSB7fSBhcyBSYXRpbmdNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcmF0aW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSYXRpbmdDaGFuZ2VFdmVudD4oKTtcblxuICBob3ZlclZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ1JhdGluZycpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdSYXRpbmcnLCBSQVRJTkdfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdyYXRpbmcnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxSYXRpbmdNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgUmF0aW5nTWV0YWRhdGE7XG4gIH1cblxuICBnZXQgZGlzcGxheVZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaG92ZXJWYWx1ZSAhPT0gbnVsbCA/IHRoaXMuaG92ZXJWYWx1ZSA6IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZTtcbiAgfVxuXG4gIGdldFN0YXJzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLnJlc29sdmVkUHJvcHMubWF4IHx8IDU7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IG1heCB9LCAoXywgaSkgPT4gaSArIDEpO1xuICB9XG5cbiAgZ3JvdXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdncm91cExhYmVsJywgJ1JhdGluZycpO1xuICB9XG5cbiAgc3RhckxhYmVsKHBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdzdGFyTGFiZWwnLCAnUmF0aW5nJywge1xuICAgICAgdmFsdWU6IHBvc2l0aW9uLnRvU3RyaW5nKCksXG4gICAgICBtYXg6ICh0aGlzLnJlc29sdmVkUHJvcHMubWF4IHx8IDUpLnRvU3RyaW5nKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUm92aW5nIHRhYmluZGV4OiBzb2xvIHVuYSBlc3RyZWxsYSBlcyB0YWJiYWJsZS4gTGEgZXN0cmVsbGEgZGVsIHZhbG9yXG4gICAqIGFjdHVhbCAobyBsYSBwcmltZXJhIHNpIG5vIGhheSB2YWxvcikgcmVjaWJlIGAwYCwgZWwgcmVzdG8gYC0xYC5cbiAgICovXG4gIGdldFN0YXJUYWJpbmRleChwb3NpdGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnJlYWRvbmx5IHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5kaXNhYmxlZCkgcmV0dXJuIC0xO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlIHx8IDA7XG4gICAgY29uc3QgZm9jdXNJbmRleCA9IHZhbHVlID49IDEgPyBNYXRoLmNlaWwodmFsdWUpIDogMTtcbiAgICByZXR1cm4gcG9zaXRpb24gPT09IGZvY3VzSW5kZXggPyAwIDogLTE7XG4gIH1cblxuICAvKiogTmF2ZWdhY2nDs24gY29uIGZsZWNoYXM6IG11ZXZlIGVsIGZvY28geSBzZWxlY2Npb25hIGxhIGVzdHJlbGxhIHZlY2luYS4gKi9cbiAgb25BcnJvdyhldmVudDogRXZlbnQsIGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnJlYWRvbmx5IHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBtYXggPSB0aGlzLnJlc29sdmVkUHJvcHMubWF4IHx8IDU7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSA+PSAxID8gTWF0aC5jZWlsKHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSkgOiAxO1xuICAgIGNvbnN0IG5leHQgPSBNYXRoLm1pbihtYXgsIE1hdGgubWF4KDEsIGN1cnJlbnQgKyBkZWx0YSkpO1xuICAgIGlmIChuZXh0ID09PSB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMucmF0aW5nQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbmV4dCwgcHJldmlvdXNWYWx1ZTogdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlIH0pO1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGJ1dHRvbnMgPSB0YXJnZXQuY2xvc2VzdCgnLnJhdGluZy1jb250YWluZXInKT8ucXVlcnlTZWxlY3RvckFsbDxIVE1MQnV0dG9uRWxlbWVudD4oJy5yYXRpbmctc3RhcicpO1xuICAgIGJ1dHRvbnM/LltuZXh0IC0gMV0/LmZvY3VzKCk7XG4gIH1cblxuICBnZXRTdGFySWNvbihwb3NpdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaG92ZXJWYWx1ZSAhPT0gbnVsbCA/IHRoaXMuaG92ZXJWYWx1ZSA6IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZTtcbiAgICBjb25zdCBiYXNlSWNvbiA9IHRoaXMucmVzb2x2ZWRQcm9wcy5pY29uIHx8ICdzdGFyJztcbiAgICBjb25zdCBlbXB0eUljb24gPSB0aGlzLnJlc29sdmVkUHJvcHMuaWNvbkVtcHR5IHx8IGAke2Jhc2VJY29ufS1vdXRsaW5lYDtcbiAgICBjb25zdCBoYWxmSWNvbiA9IHRoaXMucmVzb2x2ZWRQcm9wcy5pY29uSGFsZiB8fCBgJHtiYXNlSWNvbn0taGFsZmA7XG5cbiAgICBpZiAocG9zaXRpb24gPD0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlSWNvbjtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5hbGxvd0hhbGYgJiYgcG9zaXRpb24gLSAwLjUgPD0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBoYWxmSWNvbjtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5SWNvbjtcbiAgfVxuXG4gIGdldFN0YXJDb2xvcihwb3NpdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaG92ZXJWYWx1ZSAhPT0gbnVsbCA/IHRoaXMuaG92ZXJWYWx1ZSA6IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZTtcbiAgICBjb25zdCBpc0ZpbGxlZCA9IHBvc2l0aW9uIDw9IHZhbHVlIHx8ICh0aGlzLnJlc29sdmVkUHJvcHMuYWxsb3dIYWxmICYmIHBvc2l0aW9uIC0gMC41IDw9IHZhbHVlKTtcbiAgICByZXR1cm4gaXNGaWxsZWQgPyAodGhpcy5yZXNvbHZlZFByb3BzLmNvbG9yIHx8ICd3YXJuaW5nJykgOiAodGhpcy5yZXNvbHZlZFByb3BzLmVtcHR5Q29sb3IgfHwgJ21lZGl1bScpO1xuICB9XG5cbiAgb25TdGFyQ2xpY2socG9zaXRpb246IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMucmVhZG9ubHkgfHwgdGhpcy5yZXNvbHZlZFByb3BzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICBsZXQgbmV3VmFsdWUgPSBwb3NpdGlvbjtcblxuICAgIC8vIFRvZ2dsZSBoYWxmIHZhbHVlIGlmIGNsaWNraW5nIHNhbWUgc3RhciBhbmQgYWxsb3dIYWxmIGlzIHRydWVcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmFsbG93SGFsZiAmJiBwb3NpdGlvbiA9PT0gTWF0aC5jZWlsKHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUgPT09IHBvc2l0aW9uKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gcG9zaXRpb24gLSAwLjU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSA9PT0gcG9zaXRpb24gLSAwLjUpIHtcbiAgICAgICAgbmV3VmFsdWUgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSkge1xuICAgICAgLy8gQ2xpY2sgc2FtZSBzdGFyIGFnYWluIHRvIGNsZWFyXG4gICAgICBuZXdWYWx1ZSA9IDA7XG4gICAgfVxuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHtcbiAgICAgIHRoaXMucmF0aW5nQ2hhbmdlLmVtaXQoe1xuICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhckhvdmVyKHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnJlYWRvbmx5IHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaG92ZXJWYWx1ZSA9IHBvc2l0aW9uO1xuICB9XG5cbiAgb25TdGFyTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5ob3ZlclZhbHVlID0gbnVsbDtcbiAgfVxufVxuIl19
@@ -130,13 +130,17 @@ export class StepperComponent {
130
130
  [class.vertical]="resolvedProps.orientation === 'vertical'"
131
131
  >
132
132
  @for (step of resolvedProps.steps; track step.value; let i = $index; let isLast = $last) {
133
- <div
133
+ <button
134
+ type="button"
134
135
  class="step"
135
136
  [class.current]="getStepStatus(step, i) === 'current'"
136
137
  [class.completed]="getStepStatus(step, i) === 'completed'"
137
138
  [class.error]="getStepStatus(step, i) === 'error'"
138
139
  [class.disabled]="step.disabled"
139
140
  [class.clickable]="isStepClickable(step, i)"
141
+ [disabled]="!isStepClickable(step, i)"
142
+ [attr.aria-current]="getStepStatus(step, i) === 'current' ? 'step' : null"
143
+ [attr.aria-label]="getStepLabel(step)"
140
144
  (click)="onStepClick(step, i)"
141
145
  >
142
146
  <div class="step-indicator">
@@ -172,10 +176,10 @@ export class StepperComponent {
172
176
  <div class="step-description">{{ step.description }}</div>
173
177
  }
174
178
  </div>
175
- </div>
179
+ </button>
176
180
  }
177
181
  </div>
178
- `, isInline: true, styles: [":host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5;pointer-events:none}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:.875rem;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:1.125rem}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:.875rem;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:.75rem;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
182
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default;padding:0;border:none;background:none;font:inherit;text-align:inherit;color:inherit}.step:focus{outline:none}.step:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5}.step:disabled{cursor:default}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:.875rem;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:1.125rem}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:.875rem;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:.75rem;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
179
183
  }
180
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StepperComponent, decorators: [{
181
185
  type: Component,
@@ -186,13 +190,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
186
190
  [class.vertical]="resolvedProps.orientation === 'vertical'"
187
191
  >
188
192
  @for (step of resolvedProps.steps; track step.value; let i = $index; let isLast = $last) {
189
- <div
193
+ <button
194
+ type="button"
190
195
  class="step"
191
196
  [class.current]="getStepStatus(step, i) === 'current'"
192
197
  [class.completed]="getStepStatus(step, i) === 'completed'"
193
198
  [class.error]="getStepStatus(step, i) === 'error'"
194
199
  [class.disabled]="step.disabled"
195
200
  [class.clickable]="isStepClickable(step, i)"
201
+ [disabled]="!isStepClickable(step, i)"
202
+ [attr.aria-current]="getStepStatus(step, i) === 'current' ? 'step' : null"
203
+ [attr.aria-label]="getStepLabel(step)"
196
204
  (click)="onStepClick(step, i)"
197
205
  >
198
206
  <div class="step-indicator">
@@ -228,10 +236,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
228
236
  <div class="step-description">{{ step.description }}</div>
229
237
  }
230
238
  </div>
231
- </div>
239
+ </button>
232
240
  }
233
241
  </div>
234
- `, styles: [":host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5;pointer-events:none}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:.875rem;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:1.125rem}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:.875rem;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:.75rem;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}\n"] }]
242
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default;padding:0;border:none;background:none;font:inherit;text-align:inherit;color:inherit}.step:focus{outline:none}.step:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5}.step:disabled{cursor:default}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:.875rem;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:1.125rem}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:.875rem;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:.75rem;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}\n"] }]
235
243
  }], propDecorators: { preset: [{
236
244
  type: Input
237
245
  }], props: [{
@@ -239,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
239
247
  }], stepChange: [{
240
248
  type: Output
241
249
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUE2RHhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUF6RjdCO1FBMEZVLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFReEM7O1dBRUc7UUFDTSxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUU5Qzs7V0FFRztRQUNILGtCQUFhLEdBQW9CLEVBQXFCLENBQUM7UUFFN0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBa0Y1RDtJQWhGQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxD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YUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0FwR1UsZ0JBQWdCO21HQUFoQixnQkFBZ0IsaUxBckZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9EVCxpdkVBckRTLFlBQVksK0JBQUUsT0FBTzs7NEZBc0ZwQixnQkFBZ0I7a0JBekY1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQXdDUSxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU9JLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IFN0ZXBwZXJNZXRhZGF0YSwgU3RlcE1ldGFkYXRhLCBTdGVwQ2hhbmdlRXZlbnQsIFN0ZXBTdGF0dXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrLCBjbG9zZSwgZWxsaXBzZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuYWRkSWNvbnMoeyBjaGVja21hcmssIGNsb3NlLCBlbGxpcHNlIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc3RlcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RlcHBlci1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwicmVzb2x2ZWRQcm9wcy5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MudmVydGljYWxdPVwicmVzb2x2ZWRQcm9wcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgPlxuICAgICAgQGZvciAoc3RlcCBvZiByZXNvbHZlZFByb3BzLnN0ZXBzOyB0cmFjayBzdGVwLnZhbHVlOyBsZXQgaSA9ICRpbmRleDsgbGV0IGlzTGFzdCA9ICRsYXN0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ZXBcIlxuICAgICAgICAgIFtjbGFzcy5jdXJyZW50XT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjdXJyZW50J1wiXG4gICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgW2NsYXNzLmVycm9yXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdlcnJvcidcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJzdGVwLmRpc2FibGVkXCJcbiAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImlzU3RlcENsaWNrYWJsZShzdGVwLCBpKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcENsaWNrKHN0ZXAsIGkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWluZGljYXRvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY2lyY2xlXCIgW3N0eWxlLi0tc3RlcC1jb2xvcl09XCJnZXRTdGVwQ29sb3Ioc3RlcCwgaSlcIj5cbiAgICAgICAgICAgICAgQGlmIChnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChzdGVwLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic3RlcC5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocmVzb2x2ZWRQcm9wcy5zaG93TnVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtbnVtYmVyXCI+e3sgaSArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZWxsaXBzZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmICghaXNMYXN0ICYmIHJlc29sdmVkUHJvcHMuY29ubmVjdG9yU3R5bGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwLWNvbm5lY3RvclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRhc2hlZF09XCJyZXNvbHZlZFByb3BzLmNvbm5lY3RvclN0eWxlID09PSAnZGFzaGVkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1sYWJlbFwiPlxuICAgICAgICAgICAgICB7eyBnZXRTdGVwTGFiZWwoc3RlcCkgfX1cbiAgICAgICAgICAgICAgQGlmIChzdGVwLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+KE9wdGlvbmFsKTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHN0ZXAuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtc3RlcHBlclxuICpcbiAqIEEgc3RlcHBlciBjb21wb25lbnQgZm9yIG11bHRpLXN0ZXAgcHJvY2Vzc2VzLlxuICogU3VwcG9ydHMgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgb3JpZW50YXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiA8dmFsLXN0ZXBwZXIgW3Byb3BzXT1cIntcbiAqICAgc3RlcHM6IFtcbiAqICAgICB7IHZhbHVlOiAnaW5mbycsIGxhYmVsOiAnUGVyc29uYWwgSW5mbycgfSxcbiAqICAgICB7IHZhbHVlOiAnYWRkcmVzcycsIGxhYmVsOiAnQWRkcmVzcycgfSxcbiAqICAgICB7IHZhbHVlOiAncGF5bWVudCcsIGxhYmVsOiAnUGF5bWVudCcgfSxcbiAqICAgICB7IHZhbHVlOiAnY29uZmlybScsIGxhYmVsOiAnQ29uZmlybScgfVxuICogICBdLFxuICogICBjdXJyZW50SW5kZXg6IDFcbiAqIH1cIiAoc3RlcENoYW5nZSk9XCJvblN0ZXBDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXN0ZXBwZXI+XG4gKlxuICogQGV4YW1wbGUgVmVydGljYWwgd2l0aCBkZXNjcmlwdGlvbnNcbiAqIDx2YWwtc3RlcHBlciBbcHJvcHNdPVwie1xuICogICBzdGVwczogW1xuICogICAgIHsgdmFsdWU6ICdzdGVwMScsIGxhYmVsOiAnU3RlcCAxJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBoZXJlJyB9LFxuICogICAgIHsgdmFsdWU6ICdzdGVwMicsIGxhYmVsOiAnU3RlcCAyJywgb3B0aW9uYWw6IHRydWUgfVxuICogICBdLFxuICogICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyxcbiAqICAgY3VycmVudEluZGV4OiAwXG4gKiB9XCI+PC92YWwtc3RlcHBlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFN0ZXBwZXJNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdGVwcGVyXG4gKiBAb3V0cHV0IHN0ZXBDaGFuZ2U6IFN0ZXBDaGFuZ2VFdmVudCAtIEVtaXRzIHdoZW4gc3RlcCBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBzdGVwcGVyIGNvbmZpZ3VyYXRpb25zXG4gICAqIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYXBwIGxldmVsIHZpYSBwcm92aWRlVmFsdGVjaFByZXNldHMoKS5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogU3RlcHBlciBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFN0ZXBwZXJNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFN0ZXBwZXJNZXRhZGF0YSA9IHt9IGFzIFN0ZXBwZXJNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcENoYW5nZUV2ZW50PigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnc3RlcHBlcicsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPFN0ZXBwZXJNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgU3RlcHBlck1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jdXJyZW50SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5jdXJyZW50SW5kZXg7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuY3VycmVudFN0ZXApIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuc3RlcHM/LmZpbmRJbmRleCgocykgPT4gcy52YWx1ZSA9PT0gdGhpcy5yZXNvbHZlZFByb3BzLmN1cnJlbnRTdGVwKSA/PyAwO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldFN0ZXBTdGF0dXMoc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogU3RlcFN0YXR1cyB7XG4gICAgaWYgKHN0ZXAuc3RhdHVzKSByZXR1cm4gc3RlcC5zdGF0dXM7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIGlmIChpbmRleCA8IGN1cnJlbnRJbmRleCkgcmV0dXJuICdjb21wbGV0ZWQnO1xuICAgIGlmIChpbmRleCA9PT0gY3VycmVudEluZGV4KSByZXR1cm4gJ2N1cnJlbnQnO1xuICAgIHJldHVybiAncGVuZGluZyc7XG4gIH1cblxuICBnZXRTdGVwQ29sb3Ioc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFN0ZXBTdGF0dXMoc3RlcCwgaW5kZXgpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5yZXNvbHZlZFByb3BzLmNvbG9yIHx8ICdwcmltYXJ5JztcblxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgICAgY2FzZSAnY3VycmVudCc6XG4gICAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLWRhbmdlciknO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItbWVkaXVtKSc7XG4gICAgfVxuICB9XG5cbiAgaXNTdGVwQ2xpY2thYmxlKHN0ZXA6IFN0ZXBNZXRhZGF0YSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGVwLmRpc2FibGVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMubGluZWFyKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4IDw9IGN1cnJlbnRJbmRleCB8fCAoc3RlcC5lZGl0YWJsZSAmJiBpbmRleCA8IGN1cnJlbnRJbmRleCk7XG4gIH1cblxuICBvblN0ZXBDbGljayhzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGVwQ2xpY2thYmxlKHN0ZXAsIGluZGV4KSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IGN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoe1xuICAgICAgc3RlcCxcbiAgICAgIGluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleDogY3VycmVudEluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RlcExhYmVsKHN0ZXA6IFN0ZXBNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ZXAubGFiZWwgfHwgc3RlcC5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFpRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUE3RjdCO1FBOEZVLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFReEM7O1dBRUc7UUFDTSxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUU5Qzs7V0FFRztRQUNILGtCQUFhLEdBQW9CLEVBQXFCLENBQUM7UUFFN0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBa0Y1RDtJQWhGQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUM3QixDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQThCO1lBQ3hFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckcsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFrQixFQUFFLEtBQWE7UUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsSUFBSSxLQUFLLEdBQUcsWUFBWTtZQUFFLE9BQU8sV0FBVyxDQUFDO1FBQzdDLElBQUksS0FBSyxLQUFLLFlBQVk7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUM3QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7UUFFcEQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssV0FBVztnQkFDZCxPQUFPLG1CQUFtQixLQUFLLEdBQUcsQ0FBQztZQUNyQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxtQkFBbUIsS0FBSyxHQUFHLENBQUM7WUFDckMsS0FBSyxPQUFPO2dCQUNWLE9BQU8seUJBQXlCLENBQUM7WUFDbkM7Z0JBQ0UsT0FBTyx5QkFBeUIsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQixFQUFFLEtBQWE7UUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrQixFQUFFLEtBQWE7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksS0FBSyxLQUFLLFlBQVk7WUFBRSxPQUFPO1FBRW5DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUk7WUFDSixLQUFLO1lBQ0wsYUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0FwR1UsZ0JBQWdCO21HQUFoQixnQkFBZ0IsaUxBekZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RFQsc29LQXpEUyxZQUFZLCtCQUFFLE9BQU87OzRGQTBGcEIsZ0JBQWdCO2tCQTdGNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RFQ7OEJBd0NRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgU3RlcHBlck1ldGFkYXRhLCBTdGVwTWV0YWRhdGEsIFN0ZXBDaGFuZ2VFdmVudCwgU3RlcFN0YXR1cyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGVja21hcmssIGNsb3NlLCBlbGxpcHNlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNoZWNrbWFyaywgY2xvc2UsIGVsbGlwc2UgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zdGVwcGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuaG9yaXpvbnRhbF09XCJyZXNvbHZlZFByb3BzLm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnXCJcbiAgICAgIFtjbGFzcy52ZXJ0aWNhbF09XCJyZXNvbHZlZFByb3BzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXCJcbiAgICA+XG4gICAgICBAZm9yIChzdGVwIG9mIHJlc29sdmVkUHJvcHMuc3RlcHM7IHRyYWNrIHN0ZXAudmFsdWU7IGxldCBpID0gJGluZGV4OyBsZXQgaXNMYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic3RlcFwiXG4gICAgICAgICAgW2NsYXNzLmN1cnJlbnRdPVwiZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2N1cnJlbnQnXCJcbiAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnXCJcbiAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInN0ZXAuZGlzYWJsZWRcIlxuICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwiaXNTdGVwQ2xpY2thYmxlKHN0ZXAsIGkpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzU3RlcENsaWNrYWJsZShzdGVwLCBpKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjdXJyZW50JyA/ICdzdGVwJyA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0U3RlcExhYmVsKHN0ZXApXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TdGVwQ2xpY2soc3RlcCwgaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jaXJjbGVcIiBbc3R5bGUuLS1zdGVwLWNvbG9yXT1cImdldFN0ZXBDb2xvcihzdGVwLCBpKVwiPlxuICAgICAgICAgICAgICBAaWYgKGdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHN0ZXAuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzdGVwLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChyZXNvbHZlZFByb3BzLnNob3dOdW1iZXJzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcC1udW1iZXJcIj57eyBpICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKCFpc0xhc3QgJiYgcmVzb2x2ZWRQcm9wcy5jb25uZWN0b3JTdHlsZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0ZXAtY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGFzaGVkXT1cInJlc29sdmVkUHJvcHMuY29ubmVjdG9yU3R5bGUgPT09ICdkYXNoZWQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnXCJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7IGdldFN0ZXBMYWJlbChzdGVwKSB9fVxuICAgICAgICAgICAgICBAaWYgKHN0ZXAub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4oT3B0aW9uYWwpPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoc3RlcC5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPnt7IHN0ZXAuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3N0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1zdGVwcGVyXG4gKlxuICogQSBzdGVwcGVyIGNvbXBvbmVudCBmb3IgbXVsdGktc3RlcCBwcm9jZXNzZXMuXG4gKiBTdXBwb3J0cyBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvcmllbnRhdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIDx2YWwtc3RlcHBlciBbcHJvcHNdPVwie1xuICogICBzdGVwczogW1xuICogICAgIHsgdmFsdWU6ICdpbmZvJywgbGFiZWw6ICdQZXJzb25hbCBJbmZvJyB9LFxuICogICAgIHsgdmFsdWU6ICdhZGRyZXNzJywgbGFiZWw6ICdBZGRyZXNzJyB9LFxuICogICAgIHsgdmFsdWU6ICdwYXltZW50JywgbGFiZWw6ICdQYXltZW50JyB9LFxuICogICAgIHsgdmFsdWU6ICdjb25maXJtJywgbGFiZWw6ICdDb25maXJtJyB9XG4gKiAgIF0sXG4gKiAgIGN1cnJlbnRJbmRleDogMVxuICogfVwiIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZSgkZXZlbnQpXCI+PC92YWwtc3RlcHBlcj5cbiAqXG4gKiBAZXhhbXBsZSBWZXJ0aWNhbCB3aXRoIGRlc2NyaXB0aW9uc1xuICogPHZhbC1zdGVwcGVyIFtwcm9wc109XCJ7XG4gKiAgIHN0ZXBzOiBbXG4gKiAgICAgeyB2YWx1ZTogJ3N0ZXAxJywgbGFiZWw6ICdTdGVwIDEnLCBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIGhlcmUnIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3N0ZXAyJywgbGFiZWw6ICdTdGVwIDInLCBvcHRpb25hbDogdHJ1ZSB9XG4gKiAgIF0sXG4gKiAgIG9yaWVudGF0aW9uOiAndmVydGljYWwnLFxuICogICBjdXJyZW50SW5kZXg6IDBcbiAqIH1cIj48L3ZhbC1zdGVwcGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wczogU3RlcHBlck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN0ZXBwZXJcbiAqIEBvdXRwdXQgc3RlcENoYW5nZTogU3RlcENoYW5nZUV2ZW50IC0gRW1pdHMgd2hlbiBzdGVwIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogUHJlc2V0IG5hbWUgdG8gYXBwbHkuIFByZXNldHMgZGVmaW5lIHJldXNhYmxlIHN0ZXBwZXIgY29uZmlndXJhdGlvbnNcbiAgICogdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwgdmlhIHByb3ZpZGVWYWx0ZWNoUHJlc2V0cygpLlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGVwcGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8U3RlcHBlck1ldGFkYXRhPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlZCBwcm9wcyBhZnRlciBtZXJnaW5nIHByZXNldCArIGV4cGxpY2l0IHByb3BzLlxuICAgKi9cbiAgcmVzb2x2ZWRQcm9wczogU3RlcHBlck1ldGFkYXRhID0ge30gYXMgU3RlcHBlck1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdzdGVwcGVyJywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8U3RlcHBlck1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBTdGVwcGVyTWV0YWRhdGE7XG4gIH1cblxuICBnZXRDdXJyZW50SW5kZXgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmN1cnJlbnRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmN1cnJlbnRJbmRleDtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jdXJyZW50U3RlcCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5zdGVwcz8uZmluZEluZGV4KChzKSA9PiBzLnZhbHVlID09PSB0aGlzLnJlc29sdmVkUHJvcHMuY3VycmVudFN0ZXApID8/IDA7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZ2V0U3RlcFN0YXR1cyhzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiBTdGVwU3RhdHVzIHtcbiAgICBpZiAoc3RlcC5zdGF0dXMpIHJldHVybiBzdGVwLnN0YXR1cztcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgaWYgKGluZGV4IDwgY3VycmVudEluZGV4KSByZXR1cm4gJ2NvbXBsZXRlZCc7XG4gICAgaWYgKGluZGV4ID09PSBjdXJyZW50SW5kZXgpIHJldHVybiAnY3VycmVudCc7XG4gICAgcmV0dXJuICdwZW5kaW5nJztcbiAgfVxuXG4gIGdldFN0ZXBDb2xvcihzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuZ2V0U3RlcFN0YXR1cyhzdGVwLCBpbmRleCk7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnJlc29sdmVkUHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknO1xuXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgICBjYXNlICdjdXJyZW50JzpcbiAgICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtjb2xvcn0pYDtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItZGFuZ2VyKSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1tZWRpdW0pJztcbiAgICB9XG4gIH1cblxuICBpc1N0ZXBDbGlja2FibGUoc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHN0ZXAuZGlzYWJsZWQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy5saW5lYXIpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggPD0gY3VycmVudEluZGV4IHx8IChzdGVwLmVkaXRhYmxlICYmIGluZGV4IDwgY3VycmVudEluZGV4KTtcbiAgfVxuXG4gIG9uU3RlcENsaWNrKHN0ZXA6IFN0ZXBNZXRhZGF0YSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N0ZXBDbGlja2FibGUoc3RlcCwgaW5kZXgpKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gY3VycmVudEluZGV4KSByZXR1cm47XG5cbiAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdCh7XG4gICAgICBzdGVwLFxuICAgICAgaW5kZXgsXG4gICAgICBwcmV2aW91c0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdGVwTGFiZWwoc3RlcDogU3RlcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RlcC5sYWJlbCB8fCBzdGVwLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxufVxuIl19