valtech-components 4.0.140 → 4.0.142

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.
@@ -8,10 +8,11 @@ import { TextComponent } from '../../atoms/text/text.component';
8
8
  import { TitleComponent } from '../../atoms/title/title.component';
9
9
  import { UserAvatarComponent } from '../../atoms/user-avatar/user-avatar.component';
10
10
  import { SearchSelectorComponent } from '../../molecules/select-input/select-input.component';
11
+ import { SkeletonLayoutComponent } from '../skeleton-layout/skeleton-layout.component';
11
12
  import { ComponentStates, InputType } from '../../types';
12
13
  import { I18nService } from '../../../services/i18n';
13
14
  import { OrgService } from '../../../services/org/org.service';
14
- import { PermissionCatalogService, createPermissionLabeler, } from '../../../services/org/permission-catalog.service';
15
+ import { PermissionCatalogService, createPermissionLabeler, groupPermissionsByScope, } from '../../../services/org/permission-catalog.service';
15
16
  import { ToastService } from '../../../services/toast.service';
16
17
  import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
17
18
  import { ConfirmationDialogService } from '../../../services/confirmation-dialog/confirmation-dialog.service';
@@ -45,6 +46,16 @@ export class MemberDetailModalComponent {
45
46
  this.catalog = inject(PermissionCatalogService);
46
47
  /** Labeler de permisos con la SSOT del backend (catálogo). Se llena al cargar. */
47
48
  this.permLabeler = signal(null);
49
+ /** Catálogo del backend (define el alcance de cada recurso para agrupar). */
50
+ this.catalogResp = signal(null);
51
+ /**
52
+ * `true` mientras el catálogo aún no llegó (y hay `orgId` para pedirlo, sin
53
+ * error). Mientras tanto, la sección de permisos muestra skeleton — evita el
54
+ * parpadeo inglés→español del fallback humanizado antes de tener los labels es.
55
+ * Sin `orgId` el catálogo nunca se pide → `false` desde el arranque (se renderiza
56
+ * con el fallback, sin skeleton infinito).
57
+ */
58
+ this.permsLoading = signal(false);
48
59
  /** Organización a la que pertenece el miembro. */
49
60
  this.orgId = '';
50
61
  /** Si true, habilita cambio de rol y eliminación. */
@@ -76,6 +87,31 @@ export class MemberDetailModalComponent {
76
87
  const role = this.availableRoles.find(r => r.id === roleId || r.name === roleId);
77
88
  return role?.permissions ?? [];
78
89
  });
90
+ /**
91
+ * Permisos del rol actual agrupados por alcance (app actual / organización /
92
+ * otras apps) con sus labels ya resueltos — mismo patrón que `val-permissions-view`.
93
+ * Si el catálogo no cargó (sin `orgId` o falló), agrupa con un catálogo vacío:
94
+ * sin scope no se pueden clasificar los recursos → cae a un único grupo `org`
95
+ * con el labeler humanizado, manteniendo los chips visibles.
96
+ */
97
+ this.permissionGroups = computed(() => {
98
+ this.i18n.lang();
99
+ const perms = this.permissionsForCurrentRole();
100
+ if (perms.length === 0)
101
+ return [];
102
+ const catalog = this.catalogResp();
103
+ const labels = {
104
+ app: this.t('groupApp'),
105
+ org: this.t('groupOrg'),
106
+ other: this.t('groupOther'),
107
+ appLabel: (appId) => this.appLabel(appId),
108
+ };
109
+ if (catalog) {
110
+ return groupPermissionsByScope(perms, catalog, catalog.appId, this.permissionLabel.bind(this), labels);
111
+ }
112
+ // Sin catálogo: no hay scope → un solo grupo "organización" con el fallback.
113
+ return [{ key: 'org', label: labels.org, scope: 'org', perms: perms.map(p => this.permissionLabel(p)) }];
114
+ });
79
115
  this.roleSelectProps = computed(() => ({
80
116
  control: this.roleControl,
81
117
  label: '',
@@ -113,15 +149,31 @@ export class MemberDetailModalComponent {
113
149
  if (v && v !== this.currentRole())
114
150
  void this.onChangeRole(v);
115
151
  });
116
- // Catálogo del backend = SSOT de los labels de permisos (ADR-024). Si falla,
117
- // `permissionLabel` cae al fallback humanizado (no rompe el modal).
152
+ // Catálogo del backend = SSOT de los labels de permisos + del alcance para
153
+ // agrupar (ADR-024). Mientras carga mostramos skeleton (mata el parpadeo
154
+ // inglés→español del fallback). Si falla, `permissionLabel` cae al fallback
155
+ // humanizado (no rompe el modal). Sin `orgId` el catálogo nunca se pide →
156
+ // permsLoading queda false (se renderiza con el fallback, sin skeleton infinito).
118
157
  if (this.orgId) {
158
+ this.permsLoading.set(true);
119
159
  this.catalog.getCatalog(this.orgId).subscribe({
120
- next: catalog => this.permLabeler.set(createPermissionLabeler(catalog, this.i18n.lang(), { allLabel: this.t('permAll') })),
121
- error: () => { },
160
+ next: catalog => {
161
+ this.catalogResp.set(catalog);
162
+ this.permLabeler.set(createPermissionLabeler(catalog, this.i18n.lang(), { allLabel: this.t('permAll') }));
163
+ this.permsLoading.set(false);
164
+ },
165
+ error: () => {
166
+ this.permsLoading.set(false);
167
+ },
122
168
  });
123
169
  }
124
170
  }
171
+ /** Resuelve el nombre legible de una app por su appId (key `app_{id}`). */
172
+ appLabel(appId) {
173
+ const key = `app_${appId}`;
174
+ const label = this.t(key);
175
+ return label === key ? appId : label;
176
+ }
125
177
  permissionLabel(perm) {
126
178
  // SSOT = catálogo del backend. Hasta que cargue (o si falló), fallback a un
127
179
  // labeler vacío que humaniza el código crudo (evita salidas vacías como
@@ -262,12 +314,24 @@ export class MemberDetailModalComponent {
262
314
  }
263
315
  </div>
264
316
 
265
- @if (permissionsForCurrentRole().length > 0) {
317
+ @if (permsLoading()) {
266
318
  <div class="perms-section">
267
319
  <span class="perms-label">{{ t('permissionsTitle') }}</span>
268
- <div class="perms-list">
269
- @for (perm of permissionsForCurrentRole(); track perm) {
270
- <span class="perm-chip">{{ permissionLabel(perm) }}</span>
320
+ <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
321
+ </div>
322
+ } @else if (permissionsForCurrentRole().length > 0) {
323
+ <div class="perms-section">
324
+ <span class="perms-label">{{ t('permissionsTitle') }}</span>
325
+ <div class="perm-groups">
326
+ @for (g of permissionGroups(); track g.key) {
327
+ <div [class]="'perm-group perm-group--' + g.scope">
328
+ <span class="perm-group__badge">{{ g.label }}</span>
329
+ <div class="perm-chips">
330
+ @for (p of g.perms; track p) {
331
+ <span class="perm-chip">{{ p }}</span>
332
+ }
333
+ </div>
334
+ </div>
271
335
  }
272
336
  </div>
273
337
  </div>
@@ -285,7 +349,7 @@ export class MemberDetailModalComponent {
285
349
  </ion-button>
286
350
  </div>
287
351
  </ion-content>
288
- `, isInline: true, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perms-list{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;font-weight:500;padding:3px 10px;border-radius:20px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .12));color:var(--ion-color-dark);background:transparent}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}.modal-close-bottom{margin-top:16px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
352
+ `, isInline: true, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perm-groups{display:flex;flex-direction:column;gap:12px}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-medium-shade, var(--ion-color-medium));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;padding:3px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark)}.perm-group--app .perm-chip{background:rgba(var(--ion-color-primary-rgb),.08)}.perm-group--other .perm-chip{background:rgba(var(--ion-color-tertiary-rgb),.08)}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}.modal-close-bottom{margin-top:16px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
289
353
  }
290
354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberDetailModalComponent, decorators: [{
291
355
  type: Component,
@@ -299,6 +363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
299
363
  ButtonComponent,
300
364
  DisplayComponent,
301
365
  SearchSelectorComponent,
366
+ SkeletonLayoutComponent,
302
367
  TextComponent,
303
368
  TitleComponent,
304
369
  UserAvatarComponent,
@@ -359,12 +424,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
359
424
  }
360
425
  </div>
361
426
 
362
- @if (permissionsForCurrentRole().length > 0) {
427
+ @if (permsLoading()) {
428
+ <div class="perms-section">
429
+ <span class="perms-label">{{ t('permissionsTitle') }}</span>
430
+ <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
431
+ </div>
432
+ } @else if (permissionsForCurrentRole().length > 0) {
363
433
  <div class="perms-section">
364
434
  <span class="perms-label">{{ t('permissionsTitle') }}</span>
365
- <div class="perms-list">
366
- @for (perm of permissionsForCurrentRole(); track perm) {
367
- <span class="perm-chip">{{ permissionLabel(perm) }}</span>
435
+ <div class="perm-groups">
436
+ @for (g of permissionGroups(); track g.key) {
437
+ <div [class]="'perm-group perm-group--' + g.scope">
438
+ <span class="perm-group__badge">{{ g.label }}</span>
439
+ <div class="perm-chips">
440
+ @for (p of g.perms; track p) {
441
+ <span class="perm-chip">{{ p }}</span>
442
+ }
443
+ </div>
444
+ </div>
368
445
  }
369
446
  </div>
370
447
  </div>
@@ -382,7 +459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
382
459
  </ion-button>
383
460
  </div>
384
461
  </ion-content>
385
- `, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perms-list{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;font-weight:500;padding:3px 10px;border-radius:20px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .12));color:var(--ion-color-dark);background:transparent}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}.modal-close-bottom{margin-top:16px}\n"] }]
462
+ `, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perm-groups{display:flex;flex-direction:column;gap:12px}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-medium-shade, var(--ion-color-medium));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;padding:3px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark)}.perm-group--app .perm-chip{background:rgba(var(--ion-color-primary-rgb),.08)}.perm-group--other .perm-chip{background:rgba(var(--ion-color-tertiary-rgb),.08)}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}.modal-close-bottom{margin-top:16px}\n"] }]
386
463
  }], ctorParameters: () => [], propDecorators: { _modalRef: [{
387
464
  type: Input
388
465
  }], member: [{
@@ -400,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
400
477
  }], i18nNamespace: [{
401
478
  type: Input
402
479
  }] } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsd0JBQXdCLEVB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R0csS0FBSztzQkFBYixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlLFxuICBQZXJtaXNzaW9uTGFiZWxlcixcbiAgY3JlYXRlUGVybWlzc2lvbkxhYmVsZXIsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IHJlc29sdmVSb2xlTGFiZWxGcm9tTGlzdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBNZW1iZXJEZXRhaWwsIE9yZ1JvbGVXaXRoUGVybWlzc2lvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1FTUJFUl9ERVRBSUxfTU9EQUxfSTE4TiB9IGZyb20gJy4vbWVtYmVyLWRldGFpbC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuTWVtYmVyRGV0YWlsJztcblxuLyoqXG4gKiBgdmFsLW1lbWJlci1kZXRhaWwtbW9kYWxgIOKAlCBkZXRhbGxlIGRlIG1pZW1icm8gZGUgb3JnYW5pemFjacOzbjogcGVyZmlsLCByb2wgeVxuICogcGVybWlzb3MuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIFNpIGBjYW5NYW5hZ2VgIGVzIHRydWUsIHBlcm1pdGUgY2FtYmlhciBlbCByb2wgKHbDrWEgYE9yZ1NlcnZpY2UuY2hhbmdlTWVtYmVyUm9sZWApXG4gKiB5IHF1aXRhciBhbCBtaWVtYnJvICh2w61hIGBPcmdTZXJ2aWNlLnJlbW92ZU1lbWJlcmAsIGNvbiBjb25maXJtYWNpw7NuIGRlc3RydWN0aXZhKS5cbiAqIExvcyBwZXJtaXNvcyBkZWwgcm9sIGFjdHVhbCBzZSBtdWVzdHJhbiBjdWFuZG8gZWwgY29uc3VtZXIgbG9zIHByb3ZlZSBlblxuICogYGF2YWlsYWJsZVJvbGVzYC5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYCArIGNhbGxiYWNrXG4gKiBgb25DaGFuZ2VkYC4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXIgdGV4dG8gZW5cbiAqIGBzbG90PWVuZGAsIGlkZW50aWRhZCBlbiBlbCBib2R5IGNvbiBgdmFsLXVzZXItYXZhdGFyYC9gdmFsLWRpc3BsYXlgL2B2YWwtdGl0bGVgLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIGBTZXR0aW5ncy5NZW1iZXJEZXRhaWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtYmVyLWRldGFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgU2VhcmNoU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBVc2VyQXZhdGFyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVtYmVyLWhlYWRcIj5cbiAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBuYW1lOiBtZW1iZXIubmFtZSxcbiAgICAgICAgICAgIGF2YXRhclVybDogbWVtYmVyLmF2YXRhcixcbiAgICAgICAgICAgIGVtYWlsOiBtZW1iZXIuZW1haWwsXG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogZGlzcGxheU5hbWUoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBjb250ZW50OiBzdWJ0aXRsZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChjYW5NYW5hZ2UpIHtcbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBjb250ZW50OiB0KCdyb2xlTGFiZWwnKSxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IGRhdGEtdGVzdGlkPVwibWVtYmVyLXJvbGUtc2VsZWN0XCIgW3Byb3BzXT1cInJvbGVTZWxlY3RQcm9wcygpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHQoJ3JvbGVIaW50JyksXG4gICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtcmVhZG9ubHktbGFiZWxcIj57eyB0KCdyb2xlUmVhZG9ubHknKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbWJlci1yb2xlLWJhZGdlXCI+e3sgY3VycmVudFJvbGVMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChwZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlKCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGVybXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybXMtbGFiZWxcIj57eyB0KCdwZXJtaXNzaW9uc1RpdGxlJykgfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1zLWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHBlcm0gb2YgcGVybWlzc2lvbnNGb3JDdXJyZW50Um9sZSgpOyB0cmFjayBwZXJtKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwXCI+e3sgcGVybWlzc2lvbkxhYmVsKHBlcm0pIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChjYW5NYW5hZ2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbW92ZS1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJlbW92ZUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY2xvc2UtYm90dG9tXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgIHt7IHQoJ2Nsb3NlJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNvbnRlbnQge1xuICAgICAgICAtLXBhZGRpbmctYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLm1lbWJlci1oZWFkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICB2YWwtdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb2xlLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5yb2xlLXJlYWRvbmx5LWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAubWVtYmVyLXJvbGUtYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgMTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAucGVybXMtc2VjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtcy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLnBlcm1zLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICAgIC5yZW1vdmUtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgICAubW9kYWwtY2xvc2UtYm90dG9tIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZW1iZXJEZXRhaWxNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgY2F0YWxvZyA9IGluamVjdChQZXJtaXNzaW9uQ2F0YWxvZ1NlcnZpY2UpO1xuXG4gIC8qKiBMYWJlbGVyIGRlIHBlcm1pc29zIGNvbiBsYSBTU09UIGRlbCBiYWNrZW5kIChjYXTDoWxvZ28pLiBTZSBsbGVuYSBhbCBjYXJnYXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGVybUxhYmVsZXIgPSBzaWduYWw8UGVybWlzc2lvbkxhYmVsZXIgfCBudWxsPihudWxsKTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyIGRlc2RlIGRlbnRyby4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICAvKiogTWllbWJybyBhIG1vc3RyYXIgKHBhc2FkbyBwb3IgYGNvbXBvbmVudFByb3BzYCkuICovXG4gIEBJbnB1dCgpIG1lbWJlciE6IE1lbWJlckRldGFpbDtcblxuICAvKiogT3JnYW5pemFjacOzbiBhIGxhIHF1ZSBwZXJ0ZW5lY2UgZWwgbWllbWJyby4gKi9cbiAgQElucHV0KCkgb3JnSWQgPSAnJztcblxuICAvKiogU2kgdHJ1ZSwgaGFiaWxpdGEgY2FtYmlvIGRlIHJvbCB5IGVsaW1pbmFjacOzbi4gKi9cbiAgQElucHV0KCkgY2FuTWFuYWdlID0gZmFsc2U7XG5cbiAgLyoqIFNpIHRydWUsIGVsIG1pZW1icm8gbW9zdHJhZG8gZXMgZWwgcHJvcGlvIHVzdWFyaW8uICovXG4gIEBJbnB1dCgpIGlzU2VsZiA9IGZhbHNlO1xuXG4gIC8qKiBSb2xlcyBkaXNwb25pYmxlcyAoY29uIHBlcm1pc29zIG9wY2lvbmFsZXMpIHBhcmEgZWwgc2VsZWN0b3IgZGUgcm9sLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogT3JnUm9sZVdpdGhQZXJtaXNzaW9uc1tdID0gW1xuICAgIHsgaWQ6ICd2aWV3ZXInLCBuYW1lOiAndmlld2VyJyB9LFxuICAgIHsgaWQ6ICdlZGl0b3InLCBuYW1lOiAnZWRpdG9yJyB9LFxuICAgIHsgaWQ6ICdhZG1pbicsIG5hbWU6ICdhZG1pbicgfSxcbiAgXTtcblxuICAvKiogQ2FsbGJhY2sgdHJhcyBjYW1iaWFyIHJvbCBvIHF1aXRhciBhbCBtaWVtYnJvIChwYXNhZG8gcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvbkNoYW5nZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICByZWFkb25seSB3b3JraW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VycmVudFJvbGUgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgcm9sZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcm9sZVN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBkaXNwbGF5TmFtZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVtYmVyPy5uYW1lIHx8IHRoaXMubWVtYmVyPy5oYW5kbGUgfHwgdGhpcy5tZW1iZXI/LmVtYWlsIHx8ICfigJQnKTtcblxuICByZWFkb25seSBzdWJ0aXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1NlbGYpIHJldHVybiB0aGlzLnQoJ3N1YnRpdGxlU2VsZicpO1xuICAgIGlmICh0aGlzLm1lbWJlcj8uaGFuZGxlKSByZXR1cm4gJ0AnICsgdGhpcy5tZW1iZXIuaGFuZGxlO1xuICAgIHJldHVybiB0aGlzLm1lbWJlcj8uZW1haWwgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRSb2xlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVMYWJlbCh0aGlzLmN1cnJlbnRSb2xlKCkpKTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICBjb25zdCByb2xlSWQgPSB0aGlzLmN1cnJlbnRSb2xlKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuYXZhaWxhYmxlUm9sZXMuZmluZChyID0+IHIuaWQgPT09IHJvbGVJZCB8fCByLm5hbWUgPT09IHJvbGVJZCk7XG4gICAgcmV0dXJuIHJvbGU/LnBlcm1pc3Npb25zID8/IFtdO1xuICB9KTtcblxuICByZWFkb25seSByb2xlU2VsZWN0UHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPElucHV0TWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMucm9sZUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgbGFiZWw6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3JvbGVMYWJlbCcpLFxuICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgc3RhdGU6IHRoaXMud29ya2luZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgb3B0aW9uczogdGhpcy5hdmFpbGFibGVSb2xlcy5tYXAociA9PiAoe1xuICAgICAgaWQ6IHIuaWQsXG4gICAgICBuYW1lOiB0aGlzLnJvbGVMYWJlbChyLm5hbWUpLFxuICAgICAgb3JkZXI6IDAsXG4gICAgfSkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVtb3ZlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUN0YScpLFxuICAgIHRva2VuOiAnbWVtYmVyLXJlbW92ZScsXG4gICAgY29sb3I6ICdkYW5nZXInLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLndvcmtpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhERUZBVUxUX05BTUVTUEFDRSwgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMubWVtYmVyPy5yb2xlcz8uWzBdID8/ICcnO1xuICAgIC8vIFJlc29sdmUgdGhlIHJvbGUgbmFtZSB0byBpdHMgVVVJRCAtLSB0aGUgc2VsZWN0IHVzZXMgci5pZCAoVVVJRCkgYXMgdmFsdWVcbiAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5hdmFpbGFibGVSb2xlcy5maW5kKHIgPT4gci5uYW1lID09PSByb2xlTmFtZSk7XG4gICAgY29uc3Qgcm9sZUlkID0gbWF0Y2hlZD8uaWQgPz8gcm9sZU5hbWU7XG4gICAgdGhpcy5jdXJyZW50Um9sZS5zZXQocm9sZUlkKTtcbiAgICB0aGlzLnJvbGVDb250cm9sLnNldFZhbHVlKHJvbGVJZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMucm9sZVN1YiA9IHRoaXMucm9sZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIGlmICh2ICYmIHYgIT09IHRoaXMuY3VycmVudFJvbGUoKSkgdm9pZCB0aGlzLm9uQ2hhbmdlUm9sZSh2KTtcbiAgICB9KTtcbiAgICAvLyBDYXTDoWxvZ28gZGVsIGJhY2tlbmQgPSBTU09UIGRlIGxvcyBsYWJlbHMgZGUgcGVybWlzb3MgKEFEUi0wMjQpLiBTaSBmYWxsYSxcbiAgICAvLyBgcGVybWlzc2lvbkxhYmVsYCBjYWUgYWwgZmFsbGJhY2sgaHVtYW5pemFkbyAobm8gcm9tcGUgZWwgbW9kYWwpLlxuICAgIGlmICh0aGlzLm9yZ0lkKSB7XG4gICAgICB0aGlzLmNhdGFsb2cuZ2V0Q2F0YWxvZyh0aGlzLm9yZ0lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBjYXRhbG9nID0+XG4gICAgICAgICAgdGhpcy5wZXJtTGFiZWxlci5zZXQoY3JlYXRlUGVybWlzc2lvbkxhYmVsZXIoY2F0YWxvZywgdGhpcy5pMThuLmxhbmcoKSwgeyBhbGxMYWJlbDogdGhpcy50KCdwZXJtQWxsJykgfSkpLFxuICAgICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwZXJtaXNzaW9uTGFiZWwocGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTU09UID0gY2F0w6Fsb2dvIGRlbCBiYWNrZW5kLiBIYXN0YSBxdWUgY2FyZ3VlIChvIHNpIGZhbGzDsyksIGZhbGxiYWNrIGEgdW5cbiAgICAvLyBsYWJlbGVyIHZhY8OtbyBxdWUgaHVtYW5pemEgZWwgY8OzZGlnbyBjcnVkbyAoZXZpdGEgc2FsaWRhcyB2YWPDrWFzIGNvbW9cbiAgICAvLyBcIjogR2VzdGlvbmFyXCIpLiBFbCBgKjoqYCB5IHdpbGRjYXJkcyB1c2FuIGVsIGxhYmVsIGkxOG4gYHBlcm1BbGxgLlxuICAgIGNvbnN0IGxhYmVsZXIgPVxuICAgICAgdGhpcy5wZXJtTGFiZWxlcigpID8/XG4gICAgICBjcmVhdGVQZXJtaXNzaW9uTGFiZWxlcih7IHBlcm1pc3Npb25zOiBbXSwgYWN0aW9uTGFiZWxzOiB7fSB9LCB0aGlzLmkxOG4ubGFuZygpLCB7XG4gICAgICAgIGFsbExhYmVsOiB0aGlzLnQoJ3Blcm1BbGwnKSxcbiAgICAgIH0pO1xuICAgIHJldHVybiBsYWJlbGVyKHBlcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkNoYW5nZVJvbGUobmV3Um9sZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UuY2hhbmdlTWVtYmVyUm9sZSh0aGlzLm9yZ0lkLCB0aGlzLm1lbWJlci51c2VySWQsIG5ld1JvbGVJZCkpO1xuICAgICAgdGhpcy5jdXJyZW50Um9sZS5zZXQobmV3Um9sZUlkKTtcbiAgICAgIHRoaXMubWVtYmVyID0geyAuLi50aGlzLm1lbWJlciwgcm9sZXM6IFtuZXdSb2xlSWRdIH07XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoYW5nZVJvbGVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlZD8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnJvbGVDb250cm9sLnNldFZhbHVlKHRoaXMuY3VycmVudFJvbGUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLmNoYW5nZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2NoYW5nZVJvbGVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJlbW92ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1UaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdyZW1vdmVDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1PaycpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50KCdjYW5jZWxDdGEnKSB9LFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0LmNvbmZpcm1lZCkgcmV0dXJuO1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5yZW1vdmVNZW1iZXIodGhpcy5vcmdJZCwgdGhpcy5tZW1iZXIudXNlcklkKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3JlbW92ZVN1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25DaGFuZ2VkPy4oKTtcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLnJlbW92ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAncmVtb3ZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcm9sZUxhYmVsKHJvbGVJZE9yTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVJvbGVMYWJlbEZyb21MaXN0KHJvbGVJZE9yTmFtZSwgdGhpcy5hdmFpbGFibGVSb2xlcywgdGhpcy5pMThuLmxhbmcoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVB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LENBQUM7K0dBdFBVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDZSQXROM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEZULDhqRUExR0MsU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxVQUFVLHVLQUNWLG1CQUFtQiwrQkFDbkIsZUFBZSwwR0FDZixnQkFBZ0IsMkVBQ2hCLHVCQUF1QiwwRkFDdkIsdUJBQXVCLG1GQUN2QixhQUFhLHdFQUNiLGNBQWMseUVBQ2QsbUJBQW1COzs0RkF3TlYsMEJBQTBCO2tCQXhPdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0RlQ7d0RBa0pRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL3NrZWxldG9uLWxheW91dC9za2VsZXRvbi1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlLFxuICBQZXJtaXNzaW9uQ2F0YWxvZ1Jlc3BvbnNlLFxuICBQZXJtaXNzaW9uTGFiZWxlcixcbiAgUGVybWlzc2lvblNjb3BlR3JvdXAsXG4gIGNyZWF0ZVBlcm1pc3Npb25MYWJlbGVyLFxuICBncm91cFBlcm1pc3Npb25zQnlTY29wZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3Blcm1pc3Npb24tY2F0YWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgcmVzb2x2ZVJvbGVMYWJlbEZyb21MaXN0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IE1lbWJlckRldGFpbCwgT3JnUm9sZVdpdGhQZXJtaXNzaW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOIH0gZnJvbSAnLi9tZW1iZXItZGV0YWlsLW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5NZW1iZXJEZXRhaWwnO1xuXG4vKipcbiAqIGB2YWwtbWVtYmVyLWRldGFpbC1tb2RhbGAg4oCUIGRldGFsbGUgZGUgbWllbWJybyBkZSBvcmdhbml6YWNpw7NuOiBwZXJmaWwsIHJvbCB5XG4gKiBwZXJtaXNvcy4gUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogU2kgYGNhbk1hbmFnZWAgZXMgdHJ1ZSwgcGVybWl0ZSBjYW1iaWFyIGVsIHJvbCAodsOtYSBgT3JnU2VydmljZS5jaGFuZ2VNZW1iZXJSb2xlYClcbiAqIHkgcXVpdGFyIGFsIG1pZW1icm8gKHbDrWEgYE9yZ1NlcnZpY2UucmVtb3ZlTWVtYmVyYCwgY29uIGNvbmZpcm1hY2nDs24gZGVzdHJ1Y3RpdmEpLlxuICogTG9zIHBlcm1pc29zIGRlbCByb2wgYWN0dWFsIHNlIG11ZXN0cmFuIGN1YW5kbyBlbCBjb25zdW1lciBsb3MgcHJvdmVlIGVuXG4gKiBgYXZhaWxhYmxlUm9sZXNgLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgICsgY2FsbGJhY2tcbiAqIGBvbkNoYW5nZWRgLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlblxuICogYHNsb3Q9ZW5kYCwgaWRlbnRpZGFkIGVuIGVsIGJvZHkgY29uIGB2YWwtdXNlci1hdmF0YXJgL2B2YWwtZGlzcGxheWAvYHZhbC10aXRsZWAuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZVxuICogYFNldHRpbmdzLk1lbWJlckRldGFpbGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZW1iZXItZGV0YWlsLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFVzZXJBdmF0YXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZW1iZXItaGVhZFwiPlxuICAgICAgICA8dmFsLXVzZXItYXZhdGFyXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIG5hbWU6IG1lbWJlci5uYW1lLFxuICAgICAgICAgICAgYXZhdGFyVXJsOiBtZW1iZXIuYXZhdGFyLFxuICAgICAgICAgICAgZW1haWw6IG1lbWJlci5lbWFpbCxcbiAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiBkaXNwbGF5TmFtZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN1YnRpdGxlKCksXG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICcnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvbGUtc2VjdGlvblwiPlxuICAgICAgICBAaWYgKGNhbk1hbmFnZSkge1xuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHQoJ3JvbGVMYWJlbCcpLFxuICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHZhbC1zZWxlY3QtaW5wdXQgZGF0YS10ZXN0aWQ9XCJtZW1iZXItcm9sZS1zZWxlY3RcIiBbcHJvcHNdPVwicm9sZVNlbGVjdFByb3BzKClcIiAvPlxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogdCgncm9sZUhpbnQnKSxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm9sZS1yZWFkb25seS1sYWJlbFwiPnt7IHQoJ3JvbGVSZWFkb25seScpIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtYmVyLXJvbGUtYmFkZ2VcIj57eyBjdXJyZW50Um9sZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHBlcm1zTG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtcy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtcy1sYWJlbFwiPnt7IHQoJ3Blcm1pc3Npb25zVGl0bGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogMyB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChwZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlKCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGVybXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybXMtbGFiZWxcIj57eyB0KCdwZXJtaXNzaW9uc1RpdGxlJykgfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tZ3JvdXBzXCI+XG4gICAgICAgICAgICBAZm9yIChnIG9mIHBlcm1pc3Npb25Hcm91cHMoKTsgdHJhY2sgZy5rZXkpIHtcbiAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Blcm0tZ3JvdXAgcGVybS1ncm91cC0tJyArIGcuc2NvcGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tZ3JvdXBfX2JhZGdlXCI+e3sgZy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgQGZvciAocCBvZiBnLnBlcm1zOyB0cmFjayBwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwXCI+e3sgcCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGNhbk1hbmFnZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVtb3ZlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvblJlbW92ZSgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jbG9zZS1ib3R0b21cIj5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAge3sgdCgnY2xvc2UnKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tY29udGVudCB7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDI0cHg7XG4gICAgICB9XG4gICAgICAubWVtYmVyLWhlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLnJvbGUtc2VjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLnJvbGUtcmVhZG9ubHktbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5tZW1iZXItcm9sZS1iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxMiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5wZXJtcy1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLnBlcm1zLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLyogQmFkZ2UgZGUgYWxjYW5jZSBkZWwgZ3J1cG8g4oCUIGNvbG9yIGNvbXVuaWNhIHNpIGVsIHBlcm1pc28gZXMgZ2VuZXJhbCxcbiAgICAgICAgIGRlIGxhIGFwcCBhY3R1YWwsIG8gZGUgb3RyYSBhcHAuIElkw6ludGljbyBhIHZhbC1wZXJtaXNzaW9ucy12aWV3LiAqL1xuICAgICAgLnBlcm0tZ3JvdXBfX2JhZGdlIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgcGFkZGluZzogM3B4IDlweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tZ3JvdXAtLWFwcCAucGVybS1ncm91cF9fYmFkZ2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuICAgICAgLnBlcm0tZ3JvdXAtLW9yZyAucGVybS1ncm91cF9fYmFkZ2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQtc2hhZGUsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuICAgICAgLnBlcm0tZ3JvdXAtLW90aGVyIC5wZXJtLWdyb3VwX19iYWRnZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXBzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXAge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLyogVGludGUgc3V0aWwgZGUgbG9zIGNoaXBzIHNlZ8O6biBhbGNhbmNlLCBlbiBsw61uZWEgY29uIGVsIGJhZGdlLiAqL1xuICAgICAgLnBlcm0tZ3JvdXAtLWFwcCAucGVybS1jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwLS1vdGhlciAucGVybS1jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItdGVydGlhcnktcmdiKSwgMC4wOCk7XG4gICAgICB9XG4gICAgICAucmVtb3ZlLXNlY3Rpb24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgICAgfVxuICAgICAgLm1vZGFsLWNsb3NlLWJvdHRvbSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVyRGV0YWlsTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcblxuICAvKiogTGFiZWxlciBkZSBwZXJtaXNvcyBjb24gbGEgU1NPVCBkZWwgYmFja2VuZCAoY2F0w6Fsb2dvKS4gU2UgbGxlbmEgYWwgY2FyZ2FyLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1MYWJlbGVyID0gc2lnbmFsPFBlcm1pc3Npb25MYWJlbGVyIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIENhdMOhbG9nbyBkZWwgYmFja2VuZCAoZGVmaW5lIGVsIGFsY2FuY2UgZGUgY2FkYSByZWN1cnNvIHBhcmEgYWdydXBhcikuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ1Jlc3AgPSBzaWduYWw8UGVybWlzc2lvbkNhdGFsb2dSZXNwb25zZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgbWllbnRyYXMgZWwgY2F0w6Fsb2dvIGHDum4gbm8gbGxlZ8OzICh5IGhheSBgb3JnSWRgIHBhcmEgcGVkaXJsbywgc2luXG4gICAqIGVycm9yKS4gTWllbnRyYXMgdGFudG8sIGxhIHNlY2Npw7NuIGRlIHBlcm1pc29zIG11ZXN0cmEgc2tlbGV0b24g4oCUIGV2aXRhIGVsXG4gICAqIHBhcnBhZGVvIGluZ2zDqXPihpJlc3Bhw7FvbCBkZWwgZmFsbGJhY2sgaHVtYW5pemFkbyBhbnRlcyBkZSB0ZW5lciBsb3MgbGFiZWxzIGVzLlxuICAgKiBTaW4gYG9yZ0lkYCBlbCBjYXTDoWxvZ28gbnVuY2Egc2UgcGlkZSDihpIgYGZhbHNlYCBkZXNkZSBlbCBhcnJhbnF1ZSAoc2UgcmVuZGVyaXphXG4gICAqIGNvbiBlbCBmYWxsYmFjaywgc2luIHNrZWxldG9uIGluZmluaXRvKS5cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1zTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIElueWVjdGFkbyBwb3IgYE1vZGFsU2VydmljZS5vcGVuYCDigJQgcmVmZXJlbmNpYSBwYXJhIGNlcnJhciBkZXNkZSBkZW50cm8uICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIE1pZW1icm8gYSBtb3N0cmFyIChwYXNhZG8gcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBtZW1iZXIhOiBNZW1iZXJEZXRhaWw7XG5cbiAgLyoqIE9yZ2FuaXphY2nDs24gYSBsYSBxdWUgcGVydGVuZWNlIGVsIG1pZW1icm8uICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIFNpIHRydWUsIGhhYmlsaXRhIGNhbWJpbyBkZSByb2wgeSBlbGltaW5hY2nDs24uICovXG4gIEBJbnB1dCgpIGNhbk1hbmFnZSA9IGZhbHNlO1xuXG4gIC8qKiBTaSB0cnVlLCBlbCBtaWVtYnJvIG1vc3RyYWRvIGVzIGVsIHByb3BpbyB1c3VhcmlvLiAqL1xuICBASW5wdXQoKSBpc1NlbGYgPSBmYWxzZTtcblxuICAvKiogUm9sZXMgZGlzcG9uaWJsZXMgKGNvbiBwZXJtaXNvcyBvcGNpb25hbGVzKSBwYXJhIGVsIHNlbGVjdG9yIGRlIHJvbC4gKi9cbiAgQElucHV0KCkgYXZhaWxhYmxlUm9sZXM6IE9yZ1JvbGVXaXRoUGVybWlzc2lvbnNbXSA9IFtcbiAgICB7IGlkOiAndmlld2VyJywgbmFtZTogJ3ZpZXdlcicgfSxcbiAgICB7IGlkOiAnZWRpdG9yJywgbmFtZTogJ2VkaXRvcicgfSxcbiAgICB7IGlkOiAnYWRtaW4nLCBuYW1lOiAnYWRtaW4nIH0sXG4gIF07XG5cbiAgLyoqIENhbGxiYWNrIHRyYXMgY2FtYmlhciByb2wgbyBxdWl0YXIgYWwgbWllbWJybyAocGFzYWRvIHBvciBgY29tcG9uZW50UHJvcHNgKS4gKi9cbiAgQElucHV0KCkgb25DaGFuZ2VkPzogKCkgPT4gdm9pZDtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gY29uIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcmVhZG9ubHkgd29ya2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRSb2xlID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IHJvbGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHJvbGVTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbWJlcj8ubmFtZSB8fCB0aGlzLm1lbWJlcj8uaGFuZGxlIHx8IHRoaXMubWVtYmVyPy5lbWFpbCB8fCAn4oCUJyk7XG5cbiAgcmVhZG9ubHkgc3VidGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNTZWxmKSByZXR1cm4gdGhpcy50KCdzdWJ0aXRsZVNlbGYnKTtcbiAgICBpZiAodGhpcy5tZW1iZXI/LmhhbmRsZSkgcmV0dXJuICdAJyArIHRoaXMubWVtYmVyLmhhbmRsZTtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXI/LmVtYWlsID8/ICcnO1xuICB9KTtcblxuICByZWFkb25seSBjdXJyZW50Um9sZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yb2xlTGFiZWwodGhpcy5jdXJyZW50Um9sZSgpKSk7XG5cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnNGb3JDdXJyZW50Um9sZSA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XG4gICAgY29uc3Qgcm9sZUlkID0gdGhpcy5jdXJyZW50Um9sZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLmF2YWlsYWJsZVJvbGVzLmZpbmQociA9PiByLmlkID09PSByb2xlSWQgfHwgci5uYW1lID09PSByb2xlSWQpO1xuICAgIHJldHVybiByb2xlPy5wZXJtaXNzaW9ucyA/PyBbXTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFBlcm1pc29zIGRlbCByb2wgYWN0dWFsIGFncnVwYWRvcyBwb3IgYWxjYW5jZSAoYXBwIGFjdHVhbCAvIG9yZ2FuaXphY2nDs24gL1xuICAgKiBvdHJhcyBhcHBzKSBjb24gc3VzIGxhYmVscyB5YSByZXN1ZWx0b3Mg4oCUIG1pc21vIHBhdHLDs24gcXVlIGB2YWwtcGVybWlzc2lvbnMtdmlld2AuXG4gICAqIFNpIGVsIGNhdMOhbG9nbyBubyBjYXJnw7MgKHNpbiBgb3JnSWRgIG8gZmFsbMOzKSwgYWdydXBhIGNvbiB1biBjYXTDoWxvZ28gdmFjw61vOlxuICAgKiBzaW4gc2NvcGUgbm8gc2UgcHVlZGVuIGNsYXNpZmljYXIgbG9zIHJlY3Vyc29zIOKGkiBjYWUgYSB1biDDum5pY28gZ3J1cG8gYG9yZ2BcbiAgICogY29uIGVsIGxhYmVsZXIgaHVtYW5pemFkbywgbWFudGVuaWVuZG8gbG9zIGNoaXBzIHZpc2libGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbkdyb3VwcyA9IGNvbXB1dGVkPFBlcm1pc3Npb25TY29wZUdyb3VwW10+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IHBlcm1zID0gdGhpcy5wZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlKCk7XG4gICAgaWYgKHBlcm1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGNhdGFsb2cgPSB0aGlzLmNhdGFsb2dSZXNwKCk7XG4gICAgY29uc3QgbGFiZWxzID0ge1xuICAgICAgYXBwOiB0aGlzLnQoJ2dyb3VwQXBwJyksXG4gICAgICBvcmc6IHRoaXMudCgnZ3JvdXBPcmcnKSxcbiAgICAgIG90aGVyOiB0aGlzLnQoJ2dyb3VwT3RoZXInKSxcbiAgICAgIGFwcExhYmVsOiAoYXBwSWQ6IHN0cmluZykgPT4gdGhpcy5hcHBMYWJlbChhcHBJZCksXG4gICAgfTtcbiAgICBpZiAoY2F0YWxvZykge1xuICAgICAgcmV0dXJuIGdyb3VwUGVybWlzc2lvbnNCeVNjb3BlKHBlcm1zLCBjYXRhbG9nLCBjYXRhbG9nLmFwcElkLCB0aGlzLnBlcm1pc3Npb25MYWJlbC5iaW5kKHRoaXMpLCBsYWJlbHMpO1xuICAgIH1cbiAgICAvLyBTaW4gY2F0w6Fsb2dvOiBubyBoYXkgc2NvcGUg4oaSIHVuIHNvbG8gZ3J1cG8gXCJvcmdhbml6YWNpw7NuXCIgY29uIGVsIGZhbGxiYWNrLlxuICAgIHJldHVybiBbeyBrZXk6ICdvcmcnLCBsYWJlbDogbGFiZWxzLm9yZywgc2NvcGU6ICdvcmcnLCBwZXJtczogcGVybXMubWFwKHAgPT4gdGhpcy5wZXJtaXNzaW9uTGFiZWwocCkpIH1dO1xuICB9KTtcblxuICByZWFkb25seSByb2xlU2VsZWN0UHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPElucHV0TWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMucm9sZUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgbGFiZWw6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3JvbGVMYWJlbCcpLFxuICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgc3RhdGU6IHRoaXMud29ya2luZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgb3B0aW9uczogdGhpcy5hdmFpbGFibGVSb2xlcy5tYXAociA9PiAoe1xuICAgICAgaWQ6IHIuaWQsXG4gICAgICBuYW1lOiB0aGlzLnJvbGVMYWJlbChyLm5hbWUpLFxuICAgICAgb3JkZXI6IDAsXG4gICAgfSkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVtb3ZlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUN0YScpLFxuICAgIHRva2VuOiAnbWVtYmVyLXJlbW92ZScsXG4gICAgY29sb3I6ICdkYW5nZXInLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLndvcmtpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhERUZBVUxUX05BTUVTUEFDRSwgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMubWVtYmVyPy5yb2xlcz8uWzBdID8/ICcnO1xuICAgIC8vIFJlc29sdmUgdGhlIHJvbGUgbmFtZSB0byBpdHMgVVVJRCAtLSB0aGUgc2VsZWN0IHVzZXMgci5pZCAoVVVJRCkgYXMgdmFsdWVcbiAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5hdmFpbGFibGVSb2xlcy5maW5kKHIgPT4gci5uYW1lID09PSByb2xlTmFtZSk7XG4gICAgY29uc3Qgcm9sZUlkID0gbWF0Y2hlZD8uaWQgPz8gcm9sZU5hbWU7XG4gICAgdGhpcy5jdXJyZW50Um9sZS5zZXQocm9sZUlkKTtcbiAgICB0aGlzLnJvbGVDb250cm9sLnNldFZhbHVlKHJvbGVJZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMucm9sZVN1YiA9IHRoaXMucm9sZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIGlmICh2ICYmIHYgIT09IHRoaXMuY3VycmVudFJvbGUoKSkgdm9pZCB0aGlzLm9uQ2hhbmdlUm9sZSh2KTtcbiAgICB9KTtcbiAgICAvLyBDYXTDoWxvZ28gZGVsIGJhY2tlbmQgPSBTU09UIGRlIGxvcyBsYWJlbHMgZGUgcGVybWlzb3MgKyBkZWwgYWxjYW5jZSBwYXJhXG4gICAgLy8gYWdydXBhciAoQURSLTAyNCkuIE1pZW50cmFzIGNhcmdhIG1vc3RyYW1vcyBza2VsZXRvbiAobWF0YSBlbCBwYXJwYWRlb1xuICAgIC8vIGluZ2zDqXPihpJlc3Bhw7FvbCBkZWwgZmFsbGJhY2spLiBTaSBmYWxsYSwgYHBlcm1pc3Npb25MYWJlbGAgY2FlIGFsIGZhbGxiYWNrXG4gICAgLy8gaHVtYW5pemFkbyAobm8gcm9tcGUgZWwgbW9kYWwpLiBTaW4gYG9yZ0lkYCBlbCBjYXTDoWxvZ28gbnVuY2Egc2UgcGlkZSDihpJcbiAgICAvLyBwZXJtc0xvYWRpbmcgcXVlZGEgZmFsc2UgKHNlIHJlbmRlcml6YSBjb24gZWwgZmFsbGJhY2ssIHNpbiBza2VsZXRvbiBpbmZpbml0bykuXG4gICAgaWYgKHRoaXMub3JnSWQpIHtcbiAgICAgIHRoaXMucGVybXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuY2F0YWxvZy5nZXRDYXRhbG9nKHRoaXMub3JnSWQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGNhdGFsb2cgPT4ge1xuICAgICAgICAgIHRoaXMuY2F0YWxvZ1Jlc3Auc2V0KGNhdGFsb2cpO1xuICAgICAgICAgIHRoaXMucGVybUxhYmVsZXIuc2V0KGNyZWF0ZVBlcm1pc3Npb25MYWJlbGVyKGNhdGFsb2csIHRoaXMuaTE4bi5sYW5nKCksIHsgYWxsTGFiZWw6IHRoaXMudCgncGVybUFsbCcpIH0pKTtcbiAgICAgICAgICB0aGlzLnBlcm1zTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGVybXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzdWVsdmUgZWwgbm9tYnJlIGxlZ2libGUgZGUgdW5hIGFwcCBwb3Igc3UgYXBwSWQgKGtleSBgYXBwX3tpZH1gKS4gKi9cbiAgYXBwTGFiZWwoYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5ID0gYGFwcF8ke2FwcElkfWA7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gbGFiZWwgPT09IGtleSA/IGFwcElkIDogbGFiZWw7XG4gIH1cblxuICBwZXJtaXNzaW9uTGFiZWwocGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTU09UID0gY2F0w6Fsb2dvIGRlbCBiYWNrZW5kLiBIYXN0YSBxdWUgY2FyZ3VlIChvIHNpIGZhbGzDsyksIGZhbGxiYWNrIGEgdW5cbiAgICAvLyBsYWJlbGVyIHZhY8OtbyBxdWUgaHVtYW5pemEgZWwgY8OzZGlnbyBjcnVkbyAoZXZpdGEgc2FsaWRhcyB2YWPDrWFzIGNvbW9cbiAgICAvLyBcIjogR2VzdGlvbmFyXCIpLiBFbCBgKjoqYCB5IHdpbGRjYXJkcyB1c2FuIGVsIGxhYmVsIGkxOG4gYHBlcm1BbGxgLlxuICAgIGNvbnN0IGxhYmVsZXIgPVxuICAgICAgdGhpcy5wZXJtTGFiZWxlcigpID8/XG4gICAgICBjcmVhdGVQZXJtaXNzaW9uTGFiZWxlcih7IHBlcm1pc3Npb25zOiBbXSwgYWN0aW9uTGFiZWxzOiB7fSB9LCB0aGlzLmkxOG4ubGFuZygpLCB7XG4gICAgICAgIGFsbExhYmVsOiB0aGlzLnQoJ3Blcm1BbGwnKSxcbiAgICAgIH0pO1xuICAgIHJldHVybiBsYWJlbGVyKHBlcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkNoYW5nZVJvbGUobmV3Um9sZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UuY2hhbmdlTWVtYmVyUm9sZSh0aGlzLm9yZ0lkLCB0aGlzLm1lbWJlci51c2VySWQsIG5ld1JvbGVJZCkpO1xuICAgICAgdGhpcy5jdXJyZW50Um9sZS5zZXQobmV3Um9sZUlkKTtcbiAgICAgIHRoaXMubWVtYmVyID0geyAuLi50aGlzLm1lbWJlciwgcm9sZXM6IFtuZXdSb2xlSWRdIH07XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoYW5nZVJvbGVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlZD8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnJvbGVDb250cm9sLnNldFZhbHVlKHRoaXMuY3VycmVudFJvbGUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLmNoYW5nZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2NoYW5nZVJvbGVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJlbW92ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1UaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdyZW1vdmVDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1PaycpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50KCdjYW5jZWxDdGEnKSB9LFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0LmNvbmZpcm1lZCkgcmV0dXJuO1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5yZW1vdmVNZW1iZXIodGhpcy5vcmdJZCwgdGhpcy5tZW1iZXIudXNlcklkKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3JlbW92ZVN1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25DaGFuZ2VkPy4oKTtcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLnJlbW92ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAncmVtb3ZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcm9sZUxhYmVsKHJvbGVJZE9yTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVJvbGVMYWJlbEZyb21MaXN0KHJvbGVJZE9yTmFtZSwgdGhpcy5hdmFpbGFibGVSb2xlcywgdGhpcy5pMThuLmxhbmcoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
@@ -24,6 +24,12 @@ export const MEMBER_DETAIL_MODAL_I18N = {
24
24
  removeSuccess: 'Miembro eliminado.',
25
25
  removeError: 'No se pudo eliminar al miembro.',
26
26
  permissionsTitle: 'Permisos del rol',
27
+ // Grupos de alcance (mismas keys/valores que val-permissions-view)
28
+ groupApp: 'Permisos de la app',
29
+ groupOrg: 'Permisos de la organización',
30
+ groupOther: 'Otras apps',
31
+ app_showcase: 'Showcase',
32
+ app_bingo: 'Bingo',
27
33
  permAll: 'Todo',
28
34
  permUsers: 'Usuarios',
29
35
  permDocuments: 'Documentos',
@@ -77,6 +83,11 @@ export const MEMBER_DETAIL_MODAL_I18N = {
77
83
  removeSuccess: 'Member removed.',
78
84
  removeError: 'Could not remove member.',
79
85
  permissionsTitle: 'Role permissions',
86
+ groupApp: 'App permissions',
87
+ groupOrg: 'Organization permissions',
88
+ groupOther: 'Other apps',
89
+ app_showcase: 'Showcase',
90
+ app_bingo: 'Bingo',
80
91
  permAll: 'All',
81
92
  permUsers: 'Users',
82
93
  permDocuments: 'Documents',
@@ -111,4 +122,4 @@ export const MEMBER_DETAIL_MODAL_I18N = {
111
122
  permImport: 'Import',
112
123
  },
113
124
  };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9tZW1iZXItZGV0YWlsLW1vZGFsL21lbWJlci1kZXRhaWwtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3hELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsUUFBUSxFQUFFLG1EQUFtRDtRQUM3RCxZQUFZLEVBQUUsd0JBQXdCO1FBQ3RDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLFNBQVMsRUFBRSwyQkFBMkI7UUFDdEMsa0JBQWtCLEVBQUUsZ0JBQWdCO1FBQ3BDLG9CQUFvQixFQUFFLDRDQUE0QztRQUNsRSxlQUFlLEVBQUUsUUFBUTtRQUN6QixTQUFTLEVBQUUsVUFBVTtRQUNyQixpQkFBaUIsRUFBRSxrQkFBa0I7UUFDckMsZUFBZSxFQUFFLDRCQUE0QjtRQUM3QyxhQUFhLEVBQUUsb0JBQW9CO1FBQ25DLFdBQVcsRUFBRSxpQ0FBaUM7UUFDOUMsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLE9BQU8sRUFBRSxNQUFNO1FBQ2YsU0FBUyxFQUFFLFVBQVU7UUFDckIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixRQUFRLEVBQUUsY0FBYztRQUN4QixXQUFXLEVBQUUsVUFBVTtRQUN2QixhQUFhLEVBQUUsb0JBQW9CO1FBQ25DLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUsNEJBQTRCO1FBQ2hELFlBQVksRUFBRSxhQUFhO1FBQzNCLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLFVBQVUsRUFBRSxXQUFXO1FBQ3ZCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFdBQVcsRUFBRSxtQkFBbUI7UUFDaEMsVUFBVSxFQUFFLFFBQVE7UUFDcEIsVUFBVSxFQUFFLFVBQVU7UUFDdEIsV0FBVyxFQUFFLFFBQVE7UUFDckIsV0FBVyxFQUFFLFdBQVc7UUFDeEIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsaUJBQWlCLEVBQUUsd0JBQXdCO1FBQzNDLFVBQVUsRUFBRSxVQUFVO0tBQ3ZCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLE9BQU87UUFDZCxZQUFZLEVBQUUsS0FBSztRQUNuQixTQUFTLEVBQUUsTUFBTTtRQUNqQixRQUFRLEVBQUUsZ0RBQWdEO1FBQzFELFlBQVksRUFBRSwwQkFBMEI7UUFDeEMsVUFBVSxFQUFFLFFBQVE7UUFDcEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsY0FBYyxFQUFFLGFBQWE7UUFDN0IsU0FBUyxFQUFFLDBCQUEwQjtRQUNyQyxrQkFBa0IsRUFBRSxlQUFlO1FBQ25DLG9CQUFvQixFQUFFLDJDQUEyQztRQUNqRSxlQUFlLEVBQUUsUUFBUTtRQUN6QixTQUFTLEVBQUUsUUFBUTtRQUNuQixpQkFBaUIsRUFBRSxlQUFlO1FBQ2xDLGVBQWUsRUFBRSx3QkFBd0I7UUFDekMsYUFBYSxFQUFFLGlCQUFpQjtRQUNoQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsUUFBUSxFQUFFLE1BQU07UUFDaEIsV0FBVyxFQUFFLFVBQVU7UUFDdkIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsV0FBVyxFQUFFLFVBQVU7UUFDdkIsa0JBQWtCLEVBQUUsaUJBQWlCO1FBQ3JDLFlBQVksRUFBRSxVQUFVO1FBQ3hCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFlBQVksRUFBRSxVQUFVO1FBQ3hCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGNBQWMsRUFBRSxZQUFZO1FBQzVCLGlCQUFpQixFQUFFLGdCQUFnQjtRQUNuQyxVQUFVLEVBQUUsUUFBUTtLQUNyQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLW1lbWJlci1kZXRhaWwtbW9kYWxgLiBBdXRvLXJlZ2lzdHJhZG9zXG4gKiBlbiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuTWVtYmVyRGV0YWlsYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgZWwgbW9kYWwgdXNhLlxuICovXG5leHBvcnQgY29uc3QgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICBzdWJ0aXRsZVNlbGY6ICdUw7onLFxuICAgIHJvbGVMYWJlbDogJ1JvbCcsXG4gICAgcm9sZUhpbnQ6ICdDYW1iaWEgZWwgcm9sIGRlIGVzdGUgbWllbWJybyBlbiBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgcm9sZVJlYWRvbmx5OiAnUm9sIGVuIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIHJvbGVWaWV3ZXI6ICdWaXNvcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJlbW92ZUN0YTogJ1F1aXRhciBkZSBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICByZW1vdmVDb25maXJtVGl0bGU6ICdRdWl0YXIgbWllbWJybycsXG4gICAgcmVtb3ZlQ29uZmlybU1lc3NhZ2U6ICfCv1F1aXRhciBhIGVzdGUgbWllbWJybyBkZSBsYSBvcmdhbml6YWNpw7NuPycsXG4gICAgcmVtb3ZlQ29uZmlybU9rOiAnUXVpdGFyJyxcbiAgICBjYW5jZWxDdGE6ICdDYW5jZWxhcicsXG4gICAgY2hhbmdlUm9sZVN1Y2Nlc3M6ICdSb2wgYWN0dWFsaXphZG8uJyxcbiAgICBjaGFuZ2VSb2xlRXJyb3I6ICdObyBzZSBwdWRvIGNhbWJpYXIgZWwgcm9sLicsXG4gICAgcmVtb3ZlU3VjY2VzczogJ01pZW1icm8gZWxpbWluYWRvLicsXG4gICAgcmVtb3ZlRXJyb3I6ICdObyBzZSBwdWRvIGVsaW1pbmFyIGFsIG1pZW1icm8uJyxcbiAgICBwZXJtaXNzaW9uc1RpdGxlOiAnUGVybWlzb3MgZGVsIHJvbCcsXG4gICAgcGVybUFsbDogJ1RvZG8nLFxuICAgIHBlcm1Vc2VyczogJ1VzdWFyaW9zJyxcbiAgICBwZXJtRG9jdW1lbnRzOiAnRG9jdW1lbnRvcycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnUGxhbnRpbGxhcycsXG4gICAgcGVybVJiYWM6ICdDb250cm9sIGRlIGFjY2VzbycsXG4gICAgcGVybUFwcHM6ICdBcGxpY2FjaW9uZXMnLFxuICAgIHBlcm1BcGlLZXlzOiAnQVBJIEtleXMnLFxuICAgIHBlcm1FbWFpbExvZ3M6ICdSZWdpc3Ryb3MgZGUgZW1haWwnLFxuICAgIHBlcm1TbXNMb2dzOiAnUmVnaXN0cm9zIGRlIFNNUycsXG4gICAgcGVybUNvbW1zVGVtcGxhdGVzOiAnUGxhbnRpbGxhcyBkZSBjb211bmljYWNpw7NuJyxcbiAgICBwZXJtUmVxdWVzdHM6ICdTb2xpY2l0dWRlcycsXG4gICAgcGVybU1lbWJlcnM6ICdNaWVtYnJvcycsXG4gICAgcGVybUFjY291bnRzOiAnQ3VlbnRhcycsXG4gICAgcGVybVN1cHBvcnQ6ICdTb3BvcnRlJyxcbiAgICBwZXJtQmluZ286ICdCaW5nbycsXG4gICAgcGVybVJlYWQ6ICdMZWVyJyxcbiAgICBwZXJtV3JpdGU6ICdFc2NyaWJpcicsXG4gICAgcGVybUNyZWF0ZTogJ0NyZWFyJyxcbiAgICBwZXJtRGVsZXRlOiAnRWxpbWluYXInLFxuICAgIHBlcm1NYW5hZ2U6ICdHZXN0aW9uYXInLFxuICAgIHBlcm1FZGl0OiAnRWRpdGFyJyxcbiAgICBwZXJtU2VsbDogJ1ZlbmRlcicsXG4gICAgcGVybUNoZWNraW46ICdSZWdpc3RyYXIgZW50cmFkYScsXG4gICAgcGVybVNldHRsZTogJ1JlbmRpcicsXG4gICAgcGVybUV4cG9ydDogJ0V4cG9ydGFyJyxcbiAgICBwZXJtT3BlcmF0ZTogJ09wZXJhcicsXG4gICAgcGVybVN1c3BlbmQ6ICdTdXNwZW5kZXInLFxuICAgIHBlcm1SZWFjdGl2YXRlOiAnUmVhY3RpdmFyJyxcbiAgICBwZXJtUmVzZXRQYXNzd29yZDogJ1Jlc3RhYmxlY2VyIGNvbnRyYXNlw7FhJyxcbiAgICBwZXJtSW1wb3J0OiAnSW1wb3J0YXInLFxuICB9LFxuICBlbjoge1xuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIHN1YnRpdGxlU2VsZjogJ1lvdScsXG4gICAgcm9sZUxhYmVsOiAnUm9sZScsXG4gICAgcm9sZUhpbnQ6IFwiQ2hhbmdlIHRoaXMgbWVtYmVyJ3Mgcm9sZSBpbiB0aGUgb3JnYW5pemF0aW9uLlwiLFxuICAgIHJvbGVSZWFkb25seTogJ1JvbGUgaW4gdGhlIG9yZ2FuaXphdGlvbicsXG4gICAgcm9sZVZpZXdlcjogJ1ZpZXdlcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJlbW92ZUN0YTogJ1JlbW92ZSBmcm9tIG9yZ2FuaXphdGlvbicsXG4gICAgcmVtb3ZlQ29uZmlybVRpdGxlOiAnUmVtb3ZlIG1lbWJlcicsXG4gICAgcmVtb3ZlQ29uZmlybU1lc3NhZ2U6ICdSZW1vdmUgdGhpcyBtZW1iZXIgZnJvbSB0aGUgb3JnYW5pemF0aW9uPycsXG4gICAgcmVtb3ZlQ29uZmlybU9rOiAnUmVtb3ZlJyxcbiAgICBjYW5jZWxDdGE6ICdDYW5jZWwnLFxuICAgIGNoYW5nZVJvbGVTdWNjZXNzOiAnUm9sZSB1cGRhdGVkLicsXG4gICAgY2hhbmdlUm9sZUVycm9yOiAnQ291bGQgbm90IGNoYW5nZSByb2xlLicsXG4gICAgcmVtb3ZlU3VjY2VzczogJ01lbWJlciByZW1vdmVkLicsXG4gICAgcmVtb3ZlRXJyb3I6ICdDb3VsZCBub3QgcmVtb3ZlIG1lbWJlci4nLFxuICAgIHBlcm1pc3Npb25zVGl0bGU6ICdSb2xlIHBlcm1pc3Npb25zJyxcbiAgICBwZXJtQWxsOiAnQWxsJyxcbiAgICBwZXJtVXNlcnM6ICdVc2VycycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50cycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnVGVtcGxhdGVzJyxcbiAgICBwZXJtUmJhYzogJ0FjY2VzcyBjb250cm9sJyxcbiAgICBwZXJtQXBwczogJ0FwcHMnLFxuICAgIHBlcm1BcGlLZXlzOiAnQVBJIEtleXMnLFxuICAgIHBlcm1FbWFpbExvZ3M6ICdFbWFpbCBsb2dzJyxcbiAgICBwZXJtU21zTG9nczogJ1NNUyBsb2dzJyxcbiAgICBwZXJtQ29tbXNUZW1wbGF0ZXM6ICdDb21tcyB0ZW1wbGF0ZXMnLFxuICAgIHBlcm1SZXF1ZXN0czogJ1JlcXVlc3RzJyxcbiAgICBwZXJtTWVtYmVyczogJ01lbWJlcnMnLFxuICAgIHBlcm1BY2NvdW50czogJ0FjY291bnRzJyxcbiAgICBwZXJtU3VwcG9ydDogJ1N1cHBvcnQnLFxuICAgIHBlcm1CaW5nbzogJ0JpbmdvJyxcbiAgICBwZXJtUmVhZDogJ1JlYWQnLFxuICAgIHBlcm1Xcml0ZTogJ1dyaXRlJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXRlJyxcbiAgICBwZXJtRGVsZXRlOiAnRGVsZXRlJyxcbiAgICBwZXJtTWFuYWdlOiAnTWFuYWdlJyxcbiAgICBwZXJtRWRpdDogJ0VkaXQnLFxuICAgIHBlcm1TZWxsOiAnU2VsbCcsXG4gICAgcGVybUNoZWNraW46ICdDaGVjay1pbicsXG4gICAgcGVybVNldHRsZTogJ1NldHRsZScsXG4gICAgcGVybUV4cG9ydDogJ0V4cG9ydCcsXG4gICAgcGVybU9wZXJhdGU6ICdPcGVyYXRlJyxcbiAgICBwZXJtU3VzcGVuZDogJ1N1c3BlbmQnLFxuICAgIHBlcm1SZWFjdGl2YXRlOiAnUmVhY3RpdmF0ZScsXG4gICAgcGVybVJlc2V0UGFzc3dvcmQ6ICdSZXNldCBwYXNzd29yZCcsXG4gICAgcGVybUltcG9ydDogJ0ltcG9ydCcsXG4gIH0sXG59O1xuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9tZW1iZXItZGV0YWlsLW1vZGFsL21lbWJlci1kZXRhaWwtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3hELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsUUFBUSxFQUFFLG1EQUFtRDtRQUM3RCxZQUFZLEVBQUUsd0JBQXdCO1FBQ3RDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLFNBQVMsRUFBRSwyQkFBMkI7UUFDdEMsa0JBQWtCLEVBQUUsZ0JBQWdCO1FBQ3BDLG9CQUFvQixFQUFFLDRDQUE0QztRQUNsRSxlQUFlLEVBQUUsUUFBUTtRQUN6QixTQUFTLEVBQUUsVUFBVTtRQUNyQixpQkFBaUIsRUFBRSxrQkFBa0I7UUFDckMsZUFBZSxFQUFFLDRCQUE0QjtRQUM3QyxhQUFhLEVBQUUsb0JBQW9CO1FBQ25DLFdBQVcsRUFBRSxpQ0FBaUM7UUFDOUMsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLG1FQUFtRTtRQUNuRSxRQUFRLEVBQUUsb0JBQW9CO1FBQzlCLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsVUFBVSxFQUFFLFlBQVk7UUFDeEIsWUFBWSxFQUFFLFVBQVU7UUFDeEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsT0FBTyxFQUFFLE1BQU07UUFDZixTQUFTLEVBQUUsVUFBVTtRQUNyQixhQUFhLEVBQUUsWUFBWTtRQUMzQixTQUFTLEVBQUUsT0FBTztRQUNsQixT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LGdCQUFnQjtRQUNuQyxVQUFVLEVBQUUsUUFBUTtLQUNyQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLW1lbWJlci1kZXRhaWwtbW9kYWxgLiBBdXRvLXJlZ2lzdHJhZG9zXG4gKiBlbiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuTWVtYmVyRGV0YWlsYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgZWwgbW9kYWwgdXNhLlxuICovXG5leHBvcnQgY29uc3QgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICBzdWJ0aXRsZVNlbGY6ICdUw7onLFxuICAgIHJvbGVMYWJlbDogJ1JvbCcsXG4gICAgcm9sZUhpbnQ6ICdDYW1iaWEgZWwgcm9sIGRlIGVzdGUgbWllbWJybyBlbiBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgcm9sZVJlYWRvbmx5OiAnUm9sIGVuIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIHJvbGVWaWV3ZXI6ICdWaXNvcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJlbW92ZUN0YTogJ1F1aXRhciBkZSBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICByZW1vdmVDb25maXJtVGl0bGU6ICdRdWl0YXIgbWllbWJybycsXG4gICAgcmVtb3ZlQ29uZmlybU1lc3NhZ2U6ICfCv1F1aXRhciBhIGVzdGUgbWllbWJybyBkZSBsYSBvcmdhbml6YWNpw7NuPycsXG4gICAgcmVtb3ZlQ29uZmlybU9rOiAnUXVpdGFyJyxcbiAgICBjYW5jZWxDdGE6ICdDYW5jZWxhcicsXG4gICAgY2hhbmdlUm9sZVN1Y2Nlc3M6ICdSb2wgYWN0dWFsaXphZG8uJyxcbiAgICBjaGFuZ2VSb2xlRXJyb3I6ICdObyBzZSBwdWRvIGNhbWJpYXIgZWwgcm9sLicsXG4gICAgcmVtb3ZlU3VjY2VzczogJ01pZW1icm8gZWxpbWluYWRvLicsXG4gICAgcmVtb3ZlRXJyb3I6ICdObyBzZSBwdWRvIGVsaW1pbmFyIGFsIG1pZW1icm8uJyxcbiAgICBwZXJtaXNzaW9uc1RpdGxlOiAnUGVybWlzb3MgZGVsIHJvbCcsXG4gICAgLy8gR3J1cG9zIGRlIGFsY2FuY2UgKG1pc21hcyBrZXlzL3ZhbG9yZXMgcXVlIHZhbC1wZXJtaXNzaW9ucy12aWV3KVxuICAgIGdyb3VwQXBwOiAnUGVybWlzb3MgZGUgbGEgYXBwJyxcbiAgICBncm91cE9yZzogJ1Blcm1pc29zIGRlIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIGdyb3VwT3RoZXI6ICdPdHJhcyBhcHBzJyxcbiAgICBhcHBfc2hvd2Nhc2U6ICdTaG93Y2FzZScsXG4gICAgYXBwX2JpbmdvOiAnQmluZ28nLFxuICAgIHBlcm1BbGw6ICdUb2RvJyxcbiAgICBwZXJtVXNlcnM6ICdVc3VhcmlvcycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50b3MnLFxuICAgIHBlcm1Sb2xlczogJ1JvbGVzJyxcbiAgICBwZXJtTWVkaWE6ICdNZWRpYScsXG4gICAgcGVybVRlbXBsYXRlczogJ1BsYW50aWxsYXMnLFxuICAgIHBlcm1SYmFjOiAnQ29udHJvbCBkZSBhY2Nlc28nLFxuICAgIHBlcm1BcHBzOiAnQXBsaWNhY2lvbmVzJyxcbiAgICBwZXJtQXBpS2V5czogJ0FQSSBLZXlzJyxcbiAgICBwZXJtRW1haWxMb2dzOiAnUmVnaXN0cm9zIGRlIGVtYWlsJyxcbiAgICBwZXJtU21zTG9nczogJ1JlZ2lzdHJvcyBkZSBTTVMnLFxuICAgIHBlcm1Db21tc1RlbXBsYXRlczogJ1BsYW50aWxsYXMgZGUgY29tdW5pY2FjacOzbicsXG4gICAgcGVybVJlcXVlc3RzOiAnU29saWNpdHVkZXMnLFxuICAgIHBlcm1NZW1iZXJzOiAnTWllbWJyb3MnLFxuICAgIHBlcm1BY2NvdW50czogJ0N1ZW50YXMnLFxuICAgIHBlcm1TdXBwb3J0OiAnU29wb3J0ZScsXG4gICAgcGVybUJpbmdvOiAnQmluZ28nLFxuICAgIHBlcm1SZWFkOiAnTGVlcicsXG4gICAgcGVybVdyaXRlOiAnRXNjcmliaXInLFxuICAgIHBlcm1DcmVhdGU6ICdDcmVhcicsXG4gICAgcGVybURlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICBwZXJtTWFuYWdlOiAnR2VzdGlvbmFyJyxcbiAgICBwZXJtRWRpdDogJ0VkaXRhcicsXG4gICAgcGVybVNlbGw6ICdWZW5kZXInLFxuICAgIHBlcm1DaGVja2luOiAnUmVnaXN0cmFyIGVudHJhZGEnLFxuICAgIHBlcm1TZXR0bGU6ICdSZW5kaXInLFxuICAgIHBlcm1FeHBvcnQ6ICdFeHBvcnRhcicsXG4gICAgcGVybU9wZXJhdGU6ICdPcGVyYXInLFxuICAgIHBlcm1TdXNwZW5kOiAnU3VzcGVuZGVyJyxcbiAgICBwZXJtUmVhY3RpdmF0ZTogJ1JlYWN0aXZhcicsXG4gICAgcGVybVJlc2V0UGFzc3dvcmQ6ICdSZXN0YWJsZWNlciBjb250cmFzZcOxYScsXG4gICAgcGVybUltcG9ydDogJ0ltcG9ydGFyJyxcbiAgfSxcbiAgZW46IHtcbiAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICBzdWJ0aXRsZVNlbGY6ICdZb3UnLFxuICAgIHJvbGVMYWJlbDogJ1JvbGUnLFxuICAgIHJvbGVIaW50OiBcIkNoYW5nZSB0aGlzIG1lbWJlcidzIHJvbGUgaW4gdGhlIG9yZ2FuaXphdGlvbi5cIixcbiAgICByb2xlUmVhZG9ubHk6ICdSb2xlIGluIHRoZSBvcmdhbml6YXRpb24nLFxuICAgIHJvbGVWaWV3ZXI6ICdWaWV3ZXInLFxuICAgIHJvbGVFZGl0b3I6ICdFZGl0b3InLFxuICAgIHJvbGVBZG1pbjogJ0FkbWluJyxcbiAgICByb2xlU3VwZXJBZG1pbjogJ1N1cGVyIEFkbWluJyxcbiAgICByZW1vdmVDdGE6ICdSZW1vdmUgZnJvbSBvcmdhbml6YXRpb24nLFxuICAgIHJlbW92ZUNvbmZpcm1UaXRsZTogJ1JlbW92ZSBtZW1iZXInLFxuICAgIHJlbW92ZUNvbmZpcm1NZXNzYWdlOiAnUmVtb3ZlIHRoaXMgbWVtYmVyIGZyb20gdGhlIG9yZ2FuaXphdGlvbj8nLFxuICAgIHJlbW92ZUNvbmZpcm1PazogJ1JlbW92ZScsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsJyxcbiAgICBjaGFuZ2VSb2xlU3VjY2VzczogJ1JvbGUgdXBkYXRlZC4nLFxuICAgIGNoYW5nZVJvbGVFcnJvcjogJ0NvdWxkIG5vdCBjaGFuZ2Ugcm9sZS4nLFxuICAgIHJlbW92ZVN1Y2Nlc3M6ICdNZW1iZXIgcmVtb3ZlZC4nLFxuICAgIHJlbW92ZUVycm9yOiAnQ291bGQgbm90IHJlbW92ZSBtZW1iZXIuJyxcbiAgICBwZXJtaXNzaW9uc1RpdGxlOiAnUm9sZSBwZXJtaXNzaW9ucycsXG4gICAgZ3JvdXBBcHA6ICdBcHAgcGVybWlzc2lvbnMnLFxuICAgIGdyb3VwT3JnOiAnT3JnYW5pemF0aW9uIHBlcm1pc3Npb25zJyxcbiAgICBncm91cE90aGVyOiAnT3RoZXIgYXBwcycsXG4gICAgYXBwX3Nob3djYXNlOiAnU2hvd2Nhc2UnLFxuICAgIGFwcF9iaW5nbzogJ0JpbmdvJyxcbiAgICBwZXJtQWxsOiAnQWxsJyxcbiAgICBwZXJtVXNlcnM6ICdVc2VycycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50cycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnVGVtcGxhdGVzJyxcbiAgICBwZXJtUmJhYzogJ0FjY2VzcyBjb250cm9sJyxcbiAgICBwZXJtQXBwczogJ0FwcHMnLFxuICAgIHBlcm1BcGlLZXlzOiAnQVBJIEtleXMnLFxuICAgIHBlcm1FbWFpbExvZ3M6ICdFbWFpbCBsb2dzJyxcbiAgICBwZXJtU21zTG9nczogJ1NNUyBsb2dzJyxcbiAgICBwZXJtQ29tbXNUZW1wbGF0ZXM6ICdDb21tcyB0ZW1wbGF0ZXMnLFxuICAgIHBlcm1SZXF1ZXN0czogJ1JlcXVlc3RzJyxcbiAgICBwZXJtTWVtYmVyczogJ01lbWJlcnMnLFxuICAgIHBlcm1BY2NvdW50czogJ0FjY291bnRzJyxcbiAgICBwZXJtU3VwcG9ydDogJ1N1cHBvcnQnLFxuICAgIHBlcm1CaW5nbzogJ0JpbmdvJyxcbiAgICBwZXJtUmVhZDogJ1JlYWQnLFxuICAgIHBlcm1Xcml0ZTogJ1dyaXRlJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXRlJyxcbiAgICBwZXJtRGVsZXRlOiAnRGVsZXRlJyxcbiAgICBwZXJtTWFuYWdlOiAnTWFuYWdlJyxcbiAgICBwZXJtRWRpdDogJ0VkaXQnLFxuICAgIHBlcm1TZWxsOiAnU2VsbCcsXG4gICAgcGVybUNoZWNraW46ICdDaGVjay1pbicsXG4gICAgcGVybVNldHRsZTogJ1NldHRsZScsXG4gICAgcGVybUV4cG9ydDogJ0V4cG9ydCcsXG4gICAgcGVybU9wZXJhdGU6ICdPcGVyYXRlJyxcbiAgICBwZXJtU3VzcGVuZDogJ1N1c3BlbmQnLFxuICAgIHBlcm1SZWFjdGl2YXRlOiAnUmVhY3RpdmF0ZScsXG4gICAgcGVybVJlc2V0UGFzc3dvcmQ6ICdSZXNldCBwYXNzd29yZCcsXG4gICAgcGVybUltcG9ydDogJ0ltcG9ydCcsXG4gIH0sXG59O1xuIl19