valtech-components 4.0.24 → 4.0.26

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 (25) hide show
  1. package/README.md +31 -262
  2. package/esm2022/lib/components/molecules/modal-shell/modal-shell.component.mjs +3 -3
  3. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
  4. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +5 -5
  5. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +5 -5
  6. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +4 -3
  7. package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +5 -5
  8. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +7 -5
  9. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +6 -5
  10. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +37 -48
  11. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +8 -2
  12. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +15 -3
  13. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +3 -3
  14. package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +7 -7
  15. package/esm2022/lib/services/firebase/messaging.service.mjs +2 -2
  16. package/esm2022/lib/services/refreshable-stream/refreshable-stream.mjs +2 -2
  17. package/esm2022/lib/version.mjs +2 -2
  18. package/fesm2022/valtech-components.mjs +98 -87
  19. package/fesm2022/valtech-components.mjs.map +1 -1
  20. package/lib/components/organisms/article/article.component.d.ts +2 -2
  21. package/lib/components/organisms/landing-steps/landing-steps.component.d.ts +1 -1
  22. package/lib/components/organisms/org-info-sheet/org-info-sheet.component.d.ts +12 -1
  23. package/lib/version.d.ts +1 -1
  24. package/package.json +1 -1
  25. package/src/lib/services/firebase/firebase-messaging-sw.js +0 -145
@@ -1,7 +1,7 @@
1
1
  import { Component, computed, inject, Input } from '@angular/core';
2
2
  import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonToolbar } from '@ionic/angular/standalone';
3
3
  import { addIcons } from 'ionicons';
4
- import { mailOutline, peopleOutline, swapHorizontalOutline } from 'ionicons/icons';
4
+ import { codeSlashOutline, mailOutline, peopleOutline, shieldCheckmarkOutline, swapHorizontalOutline, warningOutline } from 'ionicons/icons';
5
5
  import { ButtonComponent } from '../../atoms/button/button.component';
6
6
  import { DisplayComponent } from '../../atoms/display/display.component';
7
7
  import { TextComponent } from '../../atoms/text/text.component';
@@ -59,7 +59,18 @@ export class OrgInfoSheetComponent {
59
59
  ...this.closeProps,
60
60
  text: this.closeProps.text || this.resolvedCloseLabel(),
61
61
  }));
62
- addIcons({ peopleOutline, swapHorizontalOutline, mailOutline });
62
+ this.resolvedFeatures = computed(() => {
63
+ if (this.features?.length)
64
+ return this.features;
65
+ if (!this.showFeatures)
66
+ return [];
67
+ return [
68
+ { icon: 'people-outline', title: this.tt('featureCollabTitle'), desc: this.tt('featureCollabDesc') },
69
+ { icon: 'swap-horizontal-outline', title: this.tt('featureSwitchTitle'), desc: this.tt('featureSwitchDesc') },
70
+ { icon: 'mail-outline', title: this.tt('featureInviteTitle'), desc: this.tt('featureInviteDesc') },
71
+ ];
72
+ });
73
+ addIcons({ peopleOutline, swapHorizontalOutline, mailOutline, codeSlashOutline, shieldCheckmarkOutline, warningOutline });
63
74
  if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
64
75
  this.i18n.registerContent(DEFAULT_NAMESPACE, ORG_INFO_SHEET_I18N);
65
76
  }
@@ -71,11 +82,11 @@ export class OrgInfoSheetComponent {
71
82
  return this.i18n.t(key, DEFAULT_NAMESPACE);
72
83
  }
73
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OrgInfoSheetComponent, isStandalone: true, selector: "val-org-info-sheet", inputs: { title: "title", subtitle: "subtitle", body: "body", closeLabel: "closeLabel", showFeatures: "showFeatures", closeProps: "closeProps", _modalRef: "_modalRef" }, ngImport: i0, template: `
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OrgInfoSheetComponent, isStandalone: true, selector: "val-org-info-sheet", inputs: { title: "title", subtitle: "subtitle", body: "body", closeLabel: "closeLabel", showFeatures: "showFeatures", features: "features", closeProps: "closeProps", _modalRef: "_modalRef" }, ngImport: i0, template: `
75
86
  <ion-header>
76
87
  <ion-toolbar>
77
88
  <ion-buttons slot="end">
78
- <ion-button fill="clear" color="dark" (click)="dismiss()">
89
+ <ion-button fill="clear" color="dark" shape="round" (click)="dismiss()">
79
90
  <strong>{{ resolvedCloseLabel() }}</strong>
80
91
  </ion-button>
81
92
  </ion-buttons>
@@ -86,29 +97,17 @@ export class OrgInfoSheetComponent {
86
97
  <val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
87
98
  <val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
88
99
 
89
- @if (showFeatures) {
100
+ @if (resolvedFeatures().length > 0) {
90
101
  <div class="info-features">
91
- <div class="info-feature">
92
- <ion-icon name="people-outline" class="info-feature__icon" />
93
- <div>
94
- <div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
95
- <div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
102
+ @for (f of resolvedFeatures(); track $index) {
103
+ <div class="info-feature">
104
+ <ion-icon [name]="f.icon" class="info-feature__icon" />
105
+ <div>
106
+ <div class="info-feature__title">{{ f.title }}</div>
107
+ <div class="info-feature__desc">{{ f.desc }}</div>
108
+ </div>
96
109
  </div>
97
- </div>
98
- <div class="info-feature">
99
- <ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
100
- <div>
101
- <div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
102
- <div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
103
- </div>
104
- </div>
105
- <div class="info-feature">
106
- <ion-icon name="mail-outline" class="info-feature__icon" />
107
- <div>
108
- <div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
109
- <div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
110
- </div>
111
- </div>
110
+ }
112
111
  </div>
113
112
  }
114
113
 
@@ -146,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
146
145
  <ion-header>
147
146
  <ion-toolbar>
148
147
  <ion-buttons slot="end">
149
- <ion-button fill="clear" color="dark" (click)="dismiss()">
148
+ <ion-button fill="clear" color="dark" shape="round" (click)="dismiss()">
150
149
  <strong>{{ resolvedCloseLabel() }}</strong>
151
150
  </ion-button>
152
151
  </ion-buttons>
@@ -157,29 +156,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
157
156
  <val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
158
157
  <val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
159
158
 
160
- @if (showFeatures) {
159
+ @if (resolvedFeatures().length > 0) {
161
160
  <div class="info-features">
162
- <div class="info-feature">
163
- <ion-icon name="people-outline" class="info-feature__icon" />
164
- <div>
165
- <div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
166
- <div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
167
- </div>
168
- </div>
169
- <div class="info-feature">
170
- <ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
171
- <div>
172
- <div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
173
- <div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
161
+ @for (f of resolvedFeatures(); track $index) {
162
+ <div class="info-feature">
163
+ <ion-icon [name]="f.icon" class="info-feature__icon" />
164
+ <div>
165
+ <div class="info-feature__title">{{ f.title }}</div>
166
+ <div class="info-feature__desc">{{ f.desc }}</div>
167
+ </div>
174
168
  </div>
175
- </div>
176
- <div class="info-feature">
177
- <ion-icon name="mail-outline" class="info-feature__icon" />
178
- <div>
179
- <div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
180
- <div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
181
- </div>
182
- </div>
169
+ }
183
170
  </div>
184
171
  }
185
172
 
@@ -209,9 +196,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
209
196
  type: Input
210
197
  }], showFeatures: [{
211
198
  type: Input
199
+ }], features: [{
200
+ type: Input
212
201
  }], closeProps: [{
213
202
  type: Input
214
203
  }], _modalRef: [{
215
204
  type: Input
216
205
  }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUV6Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQWtJSCxNQUFNLE9BQU8scUJBQXFCO0lBZ0NoQztRQS9CUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLGlGQUFpRjtRQUN4RSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3BC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RyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uQnV0dG9ucywgSW9uQ29udGVudCwgSW9uSGVhZGVyLCBJb25JY29uLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IG1haWxPdXRsaW5lLCBwZW9wbGVPdXRsaW5lLCBzd2FwSG9yaXpvbnRhbE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuXG5pbXBvcnQgeyBPUkdfSU5GT19TSEVFVF9JMThOIH0gZnJvbSAnLi9vcmctaW5mby1zaGVldC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnT3JnSW5mb1NoZWV0JztcblxuLyoqXG4gKiBgdmFsLW9yZy1pbmZvLXNoZWV0YCDigJQgc2hlZXQgaW5mb3JtYXRpdm8gXCLCv1F1w6kgc29uIGxhcyBvcmdhbml6YWNpb25lcz9cIi5cbiAqIEV4dHJhw61kbyBkZWwgYE9yZ0luZm9TaGVldENvbXBvbmVudGAgaW5saW5lIGRlIGBBY2NvdW50UGFnZWAgYmFqbyBlbCBwcm9jZXNvIGRlXG4gKiBBRFItMDIxLlxuICpcbiAqIEVsIGNvbnN1bWVyIHBhc2EgYHRpdGxlYC9gc3VidGl0bGVgL2Bib2R5YC9gY2xvc2VMYWJlbGAgeWEgcmVzdWVsdG9zIHBvciBwcm9wc1xuICogKHBhdHLDs24gZGVsIHJlc3RvIGRlIG1vZGFsZXMgZGVsIGZhY3RvcnkpLiBMb3MgdGV4dG9zIGRlIGxvcyAzIGZlYXR1cmVzXG4gKiAoQ29sYWJvcmFjacOzbiAvIENhbWJpbyByw6FwaWRvIC8gSW52aXRhY2lvbmVzKSwgcXVlIGVuIGxhIHZlcnNpw7NuIGlubGluZSBlc3RhYmFuXG4gKiBoYXJkY29kZWQsIGFob3JhIHNlIGF1dG8tcmVzdWVsdmVuIGRlc2RlIGVsIG5hbWVzcGFjZSBgT3JnSW5mb1NoZWV0YFxuICogKGF1dG8tcmVnaXN0cmFkbyBlbiBlbCBjb25zdHJ1Y3RvcikuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AuIEhlYWRlclxuICogY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlbiBgc2xvdD1lbmRgLFxuICogdMOtdHVsby9zdWJ0w610dWxvIGVuIGVsIGJvZHkgY29uIGB2YWwtZGlzcGxheWAvYHZhbC10aXRsZWAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1vcmctaW5mby1zaGVldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvbkljb24sXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHJlc29sdmVkQ2xvc2VMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJlc29sdmVkVGl0bGUoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRTdWJ0aXRsZSgpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuXG4gICAgICBAaWYgKHNob3dGZWF0dXJlcykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVvcGxlLW91dGxpbmVcIiBjbGFzcz1cImluZm8tZmVhdHVyZV9faWNvblwiIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlQ29sbGFiVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX19kZXNjXCI+e3sgdHQoJ2ZlYXR1cmVDb2xsYWJEZXNjJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3dhcC1ob3Jpem9udGFsLW91dGxpbmVcIiBjbGFzcz1cImluZm8tZmVhdHVyZV9faWNvblwiIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlU3dpdGNoVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX19kZXNjXCI+e3sgdHQoJ2ZlYXR1cmVTd2l0Y2hEZXNjJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fdGl0bGVcIj57eyB0dCgnZmVhdHVyZUludml0ZVRpdGxlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IHR0KCdmZWF0dXJlSW52aXRlRGVzYycpIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBmb3IgKHBhcmEgb2YgcGFyYWdyYXBocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFyYSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInNoZWV0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVzb2x2ZWRDbG9zZVByb3BzKClcIiAoY2xpY2spPVwiZGlzbWlzcygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1jb250ZW50IHtcbiAgICAgICAgLyogUGFkZGluZyBnZW5lcm9zbyBwYXJhIGxsZWdhciBhbCBmb25kbzogZWwgc2hlZXQgc2Nyb2xsZWEgZW4gc3VcbiAgICAgICAgICAgYnJlYWtwb2ludCBtw6F4aW1vLCB5IGVsIGJvdMOzbiBkZSBjaWVycmUgZGVsIGZvb3RlciBkZWJlIHF1ZWRhciBwb3JcbiAgICAgICAgICAgZW5jaW1hIGRlbCBzYWZlLWFyZWEgLyBjdWFscXVpZXIgb3ZlcmxheSBmbG90YW50ZS4gKi9cbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogY2FsYyg5NnB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICAgICAgfVxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgdmFsLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBtYXJnaW46IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuaW5mby1mZWF0dXJlLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX190aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fZGVzYyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAuc2hlZXQtZm9vdGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPcmdJbmZvU2hlZXRDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIC8qKiBUw610dWxvIHByaW5jaXBhbCAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gRmFsbGJhY2sgYWwgbmFtZXNwYWNlIHByb3Bpby4gKi9cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgLyoqIFN1YnTDrXR1bG8gKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHN1YnRpdGxlID0gJyc7XG4gIC8qKiBDdWVycG8gZW4gcMOhcnJhZm9zIHNlcGFyYWRvcyBwb3IgZG9ibGUgc2FsdG8gZGUgbMOtbmVhIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiAqL1xuICBASW5wdXQoKSBib2R5ID0gJyc7XG4gIC8qKiBMYWJlbCBkZWwgYm90w7NuIGNlcnJhciAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gRmFsbGJhY2sgYWwgbmFtZXNwYWNlIHByb3Bpby4gKi9cbiAgQElucHV0KCkgY2xvc2VMYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBNdWVzdHJhIGxhcyAzIGZlYXR1cmUtY2FyZHMgZGUgb3JnYW5pemFjaW9uZXMgKGNvbGFib3JhY2nDs24gLyBjYW1iaW8gcsOhcGlkbyAvXG4gICAqIGludml0YWNpb25lcykuIGBmYWxzZWAg4oaSIHNoZWV0IGFydGljbGUtc3R5bGUgKHNvbG8gdMOtdHVsbyArIHN1YnTDrXR1bG8gKyBjdWVycG8pLFxuICAgKiByZXVzYWJsZSBjb21vIGV4cGxhaW5lciBnZW7DqXJpY28gKGVqLiBpbnRlZ3JhY2lvbmVzIC8gQVBJIGtleXMpLiBEZWZhdWx0IGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dGZWF0dXJlcyA9IHRydWU7XG5cbiAgLyoqIFByb3BzIGRlbCBib3TDs24gY2VycmFyIGRlbCBmb290ZXIgKGVsIGNvbnN1bWVyIHB1ZWRlIHBhc2FyIGN1c3RvbSkuICovXG4gIEBJbnB1dCgpIGNsb3NlUHJvcHM6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+ID0ge1xuICAgIHRleHQ6ICdDZXJyYXInLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH07XG5cbiAgLyoqIElueWVjdGFkbyBwb3IgYE1vZGFsU2VydmljZS5vcGVuYCDigJQgcmVmZXJlbmNpYSBwYXJhIGNlcnJhciBkZXNkZSBkZW50cm8uICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoeyBwZW9wbGVPdXRsaW5lLCBzd2FwSG9yaXpvbnRhbE91dGxpbmUsIG1haWxPdXRsaW5lIH0pO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIE9SR19JTkZPX1NIRUVUX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHJlc29sdmVkVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRpdGxlIHx8IHRoaXMudHQoJ3RpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZFN1YnRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdWJ0aXRsZSB8fCB0aGlzLnR0KCdzdWJ0aXRsZScpKTtcbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jbG9zZUxhYmVsIHx8IHRoaXMudHQoJ2Nsb3NlJykpO1xuXG4gIHJlYWRvbmx5IHBhcmFncmFwaHMgPSBjb21wdXRlZDxzdHJpbmdbXT4oKCkgPT4gdGhpcy5ib2R5LnNwbGl0KCdcXG5cXG4nKS5maWx0ZXIoQm9vbGVhbikpO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ2xvc2VQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIC4uLnRoaXMuY2xvc2VQcm9wcyxcbiAgICB0ZXh0OiB0aGlzLmNsb3NlUHJvcHMudGV4dCB8fCB0aGlzLnJlc29sdmVkQ2xvc2VMYWJlbCgpLFxuICB9KSk7XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIERFRkFVTFRfTkFNRVNQQUNFKTtcbiAgfVxufVxuIl19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFzSEgsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEM7UUFsQ1EsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQyxpRkFB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LE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLEVBQUUsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0FyRVUscUJBQXFCO21HQUFyQixxQkFBcUIsOFFBdEd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1QscTRCQXZEQyxTQUFTLG9HQUNULFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsT0FBTywySkFDUCxlQUFlLDBHQUNmLGdCQUFnQiwyRUFDaEIsYUFBYSx3RUFDYixjQUFjOzs0RkF3R0wscUJBQXFCO2tCQXJIakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7d0RBOERRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uSWNvbiwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjb2RlU2xhc2hPdXRsaW5lLCBtYWlsT3V0bGluZSwgcGVvcGxlT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSwgc3dhcEhvcml6b250YWxPdXRsaW5lLCB3YXJuaW5nT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbmltcG9ydCB7IE9SR19JTkZPX1NIRUVUX0kxOE4gfSBmcm9tICcuL29yZy1pbmZvLXNoZWV0LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdPcmdJbmZvU2hlZXQnO1xuXG4vKipcbiAqIGB2YWwtb3JnLWluZm8tc2hlZXRgIOKAlCBzaGVldCBpbmZvcm1hdGl2byBcIsK/UXXDqSBzb24gbGFzIG9yZ2FuaXphY2lvbmVzP1wiLlxuICogRXh0cmHDrWRvIGRlbCBgT3JnSW5mb1NoZWV0Q29tcG9uZW50YCBpbmxpbmUgZGUgYEFjY291bnRQYWdlYCBiYWpvIGVsIHByb2Nlc28gZGVcbiAqIEFEUi0wMjEuXG4gKlxuICogRWwgY29uc3VtZXIgcGFzYSBgdGl0bGVgL2BzdWJ0aXRsZWAvYGJvZHlgL2BjbG9zZUxhYmVsYCB5YSByZXN1ZWx0b3MgcG9yIHByb3BzXG4gKiAocGF0csOzbiBkZWwgcmVzdG8gZGUgbW9kYWxlcyBkZWwgZmFjdG9yeSkuIExvcyB0ZXh0b3MgZGUgbG9zIDMgZmVhdHVyZXNcbiAqIChDb2xhYm9yYWNpw7NuIC8gQ2FtYmlvIHLDoXBpZG8gLyBJbnZpdGFjaW9uZXMpLCBxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lIGVzdGFiYW5cbiAqIGhhcmRjb2RlZCwgYWhvcmEgc2UgYXV0by1yZXN1ZWx2ZW4gZGVzZGUgZWwgbmFtZXNwYWNlIGBPcmdJbmZvU2hlZXRgXG4gKiAoYXV0by1yZWdpc3RyYWRvIGVuIGVsIGNvbnN0cnVjdG9yKS5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYC4gSGVhZGVyXG4gKiBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuIGBzbG90PWVuZGAsXG4gKiB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9yZy1pbmZvLXNoZWV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSWNvbixcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHJlc29sdmVkQ2xvc2VMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJlc29sdmVkVGl0bGUoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRTdWJ0aXRsZSgpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuXG4gICAgICBAaWYgKHJlc29sdmVkRmVhdHVyZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVzXCI+XG4gICAgICAgICAgQGZvciAoZiBvZiByZXNvbHZlZEZlYXR1cmVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZi5pY29uXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX3RpdGxlXCI+e3sgZi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2Rlc2NcIj57eyBmLmRlc2MgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAZm9yIChwYXJhIG9mIHBhcmFncmFwaHMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhcmEsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGVldC1mb290ZXJcIj5cbiAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJlc29sdmVkQ2xvc2VQcm9wcygpXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tY29udGVudCB7XG4gICAgICAgIC8qIFBhZGRpbmcgZ2VuZXJvc28gcGFyYSBsbGVnYXIgYWwgZm9uZG86IGVsIHNoZWV0IHNjcm9sbGVhIGVuIHN1XG4gICAgICAgICAgIGJyZWFrcG9pbnQgbcOheGltbywgeSBlbCBib3TDs24gZGUgY2llcnJlIGRlbCBmb290ZXIgZGViZSBxdWVkYXIgcG9yXG4gICAgICAgICAgIGVuY2ltYSBkZWwgc2FmZS1hcmVhIC8gY3VhbHF1aWVyIG92ZXJsYXkgZmxvdGFudGUuICovXG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IGNhbGMoOTZweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5pbmZvLWZlYXR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmluZm8tZmVhdHVyZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLnNoZWV0LWZvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT3JnSW5mb1NoZWV0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogVMOtdHVsbyBwcmluY2lwYWwgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIC8qKiBTdWJ0w610dWxvIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiBGYWxsYmFjayBhbCBuYW1lc3BhY2UgcHJvcGlvLiAqL1xuICBASW5wdXQoKSBzdWJ0aXRsZSA9ICcnO1xuICAvKiogQ3VlcnBvIGVuIHDDoXJyYWZvcyBzZXBhcmFkb3MgcG9yIGRvYmxlIHNhbHRvIGRlIGzDrW5lYSAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gKi9cbiAgQElucHV0KCkgYm9keSA9ICcnO1xuICAvKiogTGFiZWwgZGVsIGJvdMOzbiBjZXJyYXIgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnJztcblxuICAvKipcbiAgICogTXVlc3RyYSBsYXMgMyBmZWF0dXJlLWNhcmRzIGRlIG9yZ2FuaXphY2lvbmVzIChjb2xhYm9yYWNpw7NuIC8gY2FtYmlvIHLDoXBpZG8gL1xuICAgKiBpbnZpdGFjaW9uZXMpLiBgZmFsc2VgIOKGkiBzaGVldCBhcnRpY2xlLXN0eWxlIChzb2xvIHTDrXR1bG8gKyBzdWJ0w610dWxvICsgY3VlcnBvKSxcbiAgICogcmV1c2FibGUgY29tbyBleHBsYWluZXIgZ2Vuw6lyaWNvIChlai4gaW50ZWdyYWNpb25lcyAvIEFQSSBrZXlzKS4gRGVmYXVsdCBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBzaG93RmVhdHVyZXMgPSB0cnVlO1xuXG4gIC8qKiBDdXN0b20gZmVhdHVyZSBjYXJkcy4gV2hlbiBwcm92aWRlZCwgdGhlc2UgcmVwbGFjZSB0aGUgZGVmYXVsdCBvcmcgZmVhdHVyZXMgKHNob3dGZWF0dXJlcykuICovXG4gIEBJbnB1dCgpIGZlYXR1cmVzPzogQXJyYXk8eyBpY29uOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGRlc2M6IHN0cmluZyB9PjtcblxuICAvKiogUHJvcHMgZGVsIGJvdMOzbiBjZXJyYXIgZGVsIGZvb3RlciAoZWwgY29uc3VtZXIgcHVlZGUgcGFzYXIgY3VzdG9tKS4gKi9cbiAgQElucHV0KCkgY2xvc2VQcm9wczogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4gPSB7XG4gICAgdGV4dDogJ0NlcnJhcicsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyIGRlc2RlIGRlbnRyby4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSwgbWFpbE91dGxpbmUsIGNvZGVTbGFzaE91dGxpbmUsIHNoaWVsZENoZWNrbWFya091dGxpbmUsIHdhcm5pbmdPdXRsaW5lIH0pO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIE9SR19JTkZPX1NIRUVUX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHJlc29sdmVkVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRpdGxlIHx8IHRoaXMudHQoJ3RpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZFN1YnRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdWJ0aXRsZSB8fCB0aGlzLnR0KCdzdWJ0aXRsZScpKTtcbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jbG9zZUxhYmVsIHx8IHRoaXMudHQoJ2Nsb3NlJykpO1xuXG4gIHJlYWRvbmx5IHBhcmFncmFwaHMgPSBjb21wdXRlZDxzdHJpbmdbXT4oKCkgPT4gdGhpcy5ib2R5LnNwbGl0KCdcXG5cXG4nKS5maWx0ZXIoQm9vbGVhbikpO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ2xvc2VQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIC4uLnRoaXMuY2xvc2VQcm9wcyxcbiAgICB0ZXh0OiB0aGlzLmNsb3NlUHJvcHMudGV4dCB8fCB0aGlzLnJlc29sdmVkQ2xvc2VMYWJlbCgpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRGZWF0dXJlcyA9IGNvbXB1dGVkPEFycmF5PHsgaWNvbjogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBkZXNjOiBzdHJpbmcgfT4+KCgpID0+IHtcbiAgICBpZiAodGhpcy5mZWF0dXJlcz8ubGVuZ3RoKSByZXR1cm4gdGhpcy5mZWF0dXJlcztcbiAgICBpZiAoIXRoaXMuc2hvd0ZlYXR1cmVzKSByZXR1cm4gW107XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgaWNvbjogJ3Blb3BsZS1vdXRsaW5lJywgdGl0bGU6IHRoaXMudHQoJ2ZlYXR1cmVDb2xsYWJUaXRsZScpLCBkZXNjOiB0aGlzLnR0KCdmZWF0dXJlQ29sbGFiRGVzYycpIH0sXG4gICAgICB7IGljb246ICdzd2FwLWhvcml6b250YWwtb3V0bGluZScsIHRpdGxlOiB0aGlzLnR0KCdmZWF0dXJlU3dpdGNoVGl0bGUnKSwgZGVzYzogdGhpcy50dCgnZmVhdHVyZVN3aXRjaERlc2MnKSB9LFxuICAgICAgeyBpY29uOiAnbWFpbC1vdXRsaW5lJywgdGl0bGU6IHRoaXMudHQoJ2ZlYXR1cmVJbnZpdGVUaXRsZScpLCBkZXNjOiB0aGlzLnR0KCdmZWF0dXJlSW52aXRlRGVzYycpIH0sXG4gICAgXTtcbiAgfSk7XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIERFRkFVTFRfTkFNRVNQQUNFKTtcbiAgfVxufVxuIl19