valtech-components 4.0.13 → 4.0.14
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.
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +157 -72
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +17 -9
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +169 -77
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +4 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
2
2
|
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { IonButton, IonButtons,
|
|
3
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonSpinner, IonTextarea, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
4
|
import { addIcons } from 'ionicons';
|
|
5
|
-
import { cloudUploadOutline } from 'ionicons/icons';
|
|
5
|
+
import { cloudUploadOutline, documentTextOutline } from 'ionicons/icons';
|
|
6
6
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
7
7
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
8
8
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
9
|
-
import {
|
|
9
|
+
import { CheckInputComponent } from '../../molecules/check-input/check-input.component';
|
|
10
|
+
import { RadioInputComponent } from '../../molecules/radio-input/radio-input.component';
|
|
10
11
|
import { ComponentStates, InputType } from '../../types';
|
|
11
12
|
import { I18nService } from '../../../services/i18n';
|
|
12
13
|
import { OrgService } from '../../../services/org/org.service';
|
|
@@ -14,7 +15,7 @@ import { MEMBER_IMPORT_MODAL_I18N } from './member-import-modal.i18n';
|
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@angular/forms";
|
|
16
17
|
const DEFAULT_NAMESPACE = 'Settings.ImportModal';
|
|
17
|
-
addIcons({ cloudUploadOutline });
|
|
18
|
+
addIcons({ cloudUploadOutline, documentTextOutline });
|
|
18
19
|
/**
|
|
19
20
|
* `val-member-import-modal` — panel de carga masiva de miembros (ADR-023 fase 6).
|
|
20
21
|
*
|
|
@@ -35,13 +36,13 @@ export class MemberImportModalComponent {
|
|
|
35
36
|
/** Namespace i18n. */
|
|
36
37
|
this.i18nNamespace = DEFAULT_NAMESPACE;
|
|
37
38
|
this.csv = '';
|
|
38
|
-
this.
|
|
39
|
+
this.importMode = signal('file');
|
|
39
40
|
this.onConflictControl = new FormControl('assignRole');
|
|
40
|
-
this.
|
|
41
|
+
this.sendActivationControl = new FormControl(true);
|
|
42
|
+
this.conflictRadioProps = computed(() => ({
|
|
41
43
|
control: this.onConflictControl,
|
|
42
44
|
label: '',
|
|
43
|
-
|
|
44
|
-
type: InputType.SELECT,
|
|
45
|
+
type: InputType.RADIO,
|
|
45
46
|
state: ComponentStates.ENABLED,
|
|
46
47
|
options: [
|
|
47
48
|
{ id: 'assignRole', name: this.t('conflictAssign'), order: 0 },
|
|
@@ -49,6 +50,13 @@ export class MemberImportModalComponent {
|
|
|
49
50
|
{ id: 'error', name: this.t('conflictError'), order: 2 },
|
|
50
51
|
],
|
|
51
52
|
}));
|
|
53
|
+
this.sendActivationProps = computed(() => ({
|
|
54
|
+
control: this.sendActivationControl,
|
|
55
|
+
label: this.t('sendActivation'),
|
|
56
|
+
type: InputType.CHECK,
|
|
57
|
+
state: ComponentStates.ENABLED,
|
|
58
|
+
labelPlacement: 'end',
|
|
59
|
+
}));
|
|
52
60
|
this.submitting = signal(false);
|
|
53
61
|
this.errorMsg = signal('');
|
|
54
62
|
this.results = signal(null);
|
|
@@ -119,7 +127,7 @@ export class MemberImportModalComponent {
|
|
|
119
127
|
.importMembers(this.orgId, {
|
|
120
128
|
users,
|
|
121
129
|
onConflict: (this.onConflictControl.value ?? 'assignRole'),
|
|
122
|
-
sendActivation: this.
|
|
130
|
+
sendActivation: this.sendActivationControl.value ?? true,
|
|
123
131
|
})
|
|
124
132
|
.subscribe({
|
|
125
133
|
next: res => {
|
|
@@ -148,6 +156,7 @@ export class MemberImportModalComponent {
|
|
|
148
156
|
this.fileName.set('');
|
|
149
157
|
this.errorMsg.set('');
|
|
150
158
|
this.results.set(null);
|
|
159
|
+
this.importMode.set('file');
|
|
151
160
|
}
|
|
152
161
|
dismiss() {
|
|
153
162
|
this._modalRef?.dismiss(null, 'cancel');
|
|
@@ -169,10 +178,9 @@ export class MemberImportModalComponent {
|
|
|
169
178
|
|
|
170
179
|
<ion-content class="ion-padding">
|
|
171
180
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
181
|
+
<val-title [props]="{ content: t('subtitle'), size: 'large', color: '', bold: false }" />
|
|
172
182
|
|
|
173
183
|
@if (!results()) {
|
|
174
|
-
<val-title [props]="{ content: t('hint'), size: 'large', color: '', bold: false }" />
|
|
175
|
-
|
|
176
184
|
@if (rolesHint()) {
|
|
177
185
|
<val-text
|
|
178
186
|
class="import-roles-hint"
|
|
@@ -180,40 +188,79 @@ export class MemberImportModalComponent {
|
|
|
180
188
|
/>
|
|
181
189
|
}
|
|
182
190
|
|
|
183
|
-
<!--
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
<
|
|
187
|
-
<
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
191
|
+
<!-- Selector de método de importación -->
|
|
192
|
+
<div class="import-section">
|
|
193
|
+
<val-title [props]="{ content: t('importMethodLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
194
|
+
<div class="import-method-cards">
|
|
195
|
+
<button
|
|
196
|
+
type="button"
|
|
197
|
+
class="import-method-card"
|
|
198
|
+
[class.import-method-card--active]="importMode() === 'file'"
|
|
199
|
+
(click)="importMode.set('file')"
|
|
200
|
+
>
|
|
201
|
+
<ion-icon name="cloud-upload-outline" class="import-method-card__icon" />
|
|
202
|
+
<span class="import-method-card__title">{{ t('importMethodFile') }}</span>
|
|
203
|
+
<span class="import-method-card__hint">{{ t('importMethodFileHint') }}</span>
|
|
204
|
+
</button>
|
|
205
|
+
<button
|
|
206
|
+
type="button"
|
|
207
|
+
class="import-method-card"
|
|
208
|
+
[class.import-method-card--active]="importMode() === 'paste'"
|
|
209
|
+
(click)="importMode.set('paste')"
|
|
210
|
+
>
|
|
211
|
+
<ion-icon name="document-text-outline" class="import-method-card__icon" />
|
|
212
|
+
<span class="import-method-card__title">{{ t('importMethodPaste') }}</span>
|
|
213
|
+
<span class="import-method-card__hint">{{ t('importMethodPasteHint') }}</span>
|
|
214
|
+
</button>
|
|
215
|
+
</div>
|
|
192
216
|
</div>
|
|
193
217
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
218
|
+
<!-- Subida de archivo (label trick — gesto confiable en iOS/PWA) -->
|
|
219
|
+
@if (importMode() === 'file') {
|
|
220
|
+
<div class="import-section">
|
|
221
|
+
<label class="import-upload__btn">
|
|
222
|
+
<ion-icon name="cloud-upload-outline" />
|
|
223
|
+
<span>{{ t('uploadFile') }}</span>
|
|
224
|
+
<input type="file" accept=".csv,text/csv,text/plain" (change)="onFileSelected($event)" />
|
|
225
|
+
</label>
|
|
226
|
+
@if (fileName()) {
|
|
227
|
+
<p class="import-file-loaded">
|
|
228
|
+
{{ t('fileLoaded').replace('{name}', fileName()) }}
|
|
229
|
+
</p>
|
|
230
|
+
}
|
|
231
|
+
</div>
|
|
198
232
|
}
|
|
199
233
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
234
|
+
<!-- Pegar CSV -->
|
|
235
|
+
@if (importMode() === 'paste') {
|
|
236
|
+
<div class="import-section">
|
|
237
|
+
<ion-textarea
|
|
238
|
+
class="import-csv"
|
|
239
|
+
[autoGrow]="true"
|
|
240
|
+
[rows]="6"
|
|
241
|
+
[placeholder]="t('csvPlaceholder')"
|
|
242
|
+
[(ngModel)]="csv"
|
|
243
|
+
/>
|
|
244
|
+
</div>
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
<!-- Si hubo carga de archivo, mostrar textarea de solo lectura para revisar -->
|
|
248
|
+
@if (importMode() === 'file' && csv) {
|
|
249
|
+
<div class="import-section">
|
|
250
|
+
<ion-textarea class="import-csv" [autoGrow]="true" [rows]="4" [readonly]="true" [value]="csv" />
|
|
251
|
+
</div>
|
|
252
|
+
}
|
|
207
253
|
|
|
208
|
-
<!--
|
|
209
|
-
<div class="
|
|
210
|
-
<val-title [props]="{ content: t('onConflictLabel'), size: 'small', color: 'dark', bold:
|
|
211
|
-
<val-
|
|
254
|
+
<!-- Conflicto: radio buttons -->
|
|
255
|
+
<div class="import-section">
|
|
256
|
+
<val-title [props]="{ content: t('onConflictLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
257
|
+
<val-radio-input [props]="conflictRadioProps()" />
|
|
212
258
|
</div>
|
|
213
259
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
260
|
+
<!-- Activación: val-check-input -->
|
|
261
|
+
<div class="import-section">
|
|
262
|
+
<val-check-input [props]="sendActivationProps()" />
|
|
263
|
+
</div>
|
|
217
264
|
|
|
218
265
|
@if (errorMsg()) {
|
|
219
266
|
<p class="import-error">{{ errorMsg() }}</p>
|
|
@@ -250,7 +297,7 @@ export class MemberImportModalComponent {
|
|
|
250
297
|
</div>
|
|
251
298
|
}
|
|
252
299
|
</ion-content>
|
|
253
|
-
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:
|
|
300
|
+
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: var(--ion-color-light);border-radius:10px;font-family:monospace;font-size:.8125rem}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:.875rem}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:.75rem;color:var(--ion-color-danger, #c0392b)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["preset", "props"] }] }); }
|
|
254
301
|
}
|
|
255
302
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberImportModalComponent, decorators: [{
|
|
256
303
|
type: Component,
|
|
@@ -263,13 +310,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
263
310
|
IonButton,
|
|
264
311
|
IonContent,
|
|
265
312
|
IonTextarea,
|
|
266
|
-
IonCheckbox,
|
|
267
313
|
IonSpinner,
|
|
268
314
|
IonIcon,
|
|
269
315
|
DisplayComponent,
|
|
270
316
|
TextComponent,
|
|
271
317
|
TitleComponent,
|
|
272
|
-
|
|
318
|
+
RadioInputComponent,
|
|
319
|
+
CheckInputComponent,
|
|
273
320
|
], template: `
|
|
274
321
|
<ion-header>
|
|
275
322
|
<ion-toolbar>
|
|
@@ -283,10 +330,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
283
330
|
|
|
284
331
|
<ion-content class="ion-padding">
|
|
285
332
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
333
|
+
<val-title [props]="{ content: t('subtitle'), size: 'large', color: '', bold: false }" />
|
|
286
334
|
|
|
287
335
|
@if (!results()) {
|
|
288
|
-
<val-title [props]="{ content: t('hint'), size: 'large', color: '', bold: false }" />
|
|
289
|
-
|
|
290
336
|
@if (rolesHint()) {
|
|
291
337
|
<val-text
|
|
292
338
|
class="import-roles-hint"
|
|
@@ -294,40 +340,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
294
340
|
/>
|
|
295
341
|
}
|
|
296
342
|
|
|
297
|
-
<!--
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
<
|
|
301
|
-
<
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
343
|
+
<!-- Selector de método de importación -->
|
|
344
|
+
<div class="import-section">
|
|
345
|
+
<val-title [props]="{ content: t('importMethodLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
346
|
+
<div class="import-method-cards">
|
|
347
|
+
<button
|
|
348
|
+
type="button"
|
|
349
|
+
class="import-method-card"
|
|
350
|
+
[class.import-method-card--active]="importMode() === 'file'"
|
|
351
|
+
(click)="importMode.set('file')"
|
|
352
|
+
>
|
|
353
|
+
<ion-icon name="cloud-upload-outline" class="import-method-card__icon" />
|
|
354
|
+
<span class="import-method-card__title">{{ t('importMethodFile') }}</span>
|
|
355
|
+
<span class="import-method-card__hint">{{ t('importMethodFileHint') }}</span>
|
|
356
|
+
</button>
|
|
357
|
+
<button
|
|
358
|
+
type="button"
|
|
359
|
+
class="import-method-card"
|
|
360
|
+
[class.import-method-card--active]="importMode() === 'paste'"
|
|
361
|
+
(click)="importMode.set('paste')"
|
|
362
|
+
>
|
|
363
|
+
<ion-icon name="document-text-outline" class="import-method-card__icon" />
|
|
364
|
+
<span class="import-method-card__title">{{ t('importMethodPaste') }}</span>
|
|
365
|
+
<span class="import-method-card__hint">{{ t('importMethodPasteHint') }}</span>
|
|
366
|
+
</button>
|
|
367
|
+
</div>
|
|
306
368
|
</div>
|
|
307
369
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
370
|
+
<!-- Subida de archivo (label trick — gesto confiable en iOS/PWA) -->
|
|
371
|
+
@if (importMode() === 'file') {
|
|
372
|
+
<div class="import-section">
|
|
373
|
+
<label class="import-upload__btn">
|
|
374
|
+
<ion-icon name="cloud-upload-outline" />
|
|
375
|
+
<span>{{ t('uploadFile') }}</span>
|
|
376
|
+
<input type="file" accept=".csv,text/csv,text/plain" (change)="onFileSelected($event)" />
|
|
377
|
+
</label>
|
|
378
|
+
@if (fileName()) {
|
|
379
|
+
<p class="import-file-loaded">
|
|
380
|
+
{{ t('fileLoaded').replace('{name}', fileName()) }}
|
|
381
|
+
</p>
|
|
382
|
+
}
|
|
383
|
+
</div>
|
|
312
384
|
}
|
|
313
385
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
386
|
+
<!-- Pegar CSV -->
|
|
387
|
+
@if (importMode() === 'paste') {
|
|
388
|
+
<div class="import-section">
|
|
389
|
+
<ion-textarea
|
|
390
|
+
class="import-csv"
|
|
391
|
+
[autoGrow]="true"
|
|
392
|
+
[rows]="6"
|
|
393
|
+
[placeholder]="t('csvPlaceholder')"
|
|
394
|
+
[(ngModel)]="csv"
|
|
395
|
+
/>
|
|
396
|
+
</div>
|
|
397
|
+
}
|
|
321
398
|
|
|
322
|
-
<!--
|
|
323
|
-
|
|
324
|
-
<
|
|
325
|
-
|
|
399
|
+
<!-- Si hubo carga de archivo, mostrar textarea de solo lectura para revisar -->
|
|
400
|
+
@if (importMode() === 'file' && csv) {
|
|
401
|
+
<div class="import-section">
|
|
402
|
+
<ion-textarea class="import-csv" [autoGrow]="true" [rows]="4" [readonly]="true" [value]="csv" />
|
|
403
|
+
</div>
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
<!-- Conflicto: radio buttons -->
|
|
407
|
+
<div class="import-section">
|
|
408
|
+
<val-title [props]="{ content: t('onConflictLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
409
|
+
<val-radio-input [props]="conflictRadioProps()" />
|
|
326
410
|
</div>
|
|
327
411
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
412
|
+
<!-- Activación: val-check-input -->
|
|
413
|
+
<div class="import-section">
|
|
414
|
+
<val-check-input [props]="sendActivationProps()" />
|
|
415
|
+
</div>
|
|
331
416
|
|
|
332
417
|
@if (errorMsg()) {
|
|
333
418
|
<p class="import-error">{{ errorMsg() }}</p>
|
|
@@ -364,7 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
364
449
|
</div>
|
|
365
450
|
}
|
|
366
451
|
</ion-content>
|
|
367
|
-
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:
|
|
452
|
+
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: var(--ion-color-light);border-radius:10px;font-family:monospace;font-size:.8125rem}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:.875rem}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:.75rem;color:var(--ion-color-danger, #c0392b)}\n"] }]
|
|
368
453
|
}], ctorParameters: () => [], propDecorators: { orgId: [{
|
|
369
454
|
type: Input
|
|
370
455
|
}], availableRoles: [{
|
|
@@ -376,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
376
461
|
}], i18nNamespace: [{
|
|
377
462
|
type: Input
|
|
378
463
|
}] } });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBaUIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHL0QsT0FBTyxFQUFFLHdCQUF3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QUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQTNKVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixpT0E5TjNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEZULDJvRUE5R0MsV0FBVyw4VkFDWCxtQkFBbUIsK0JBQ25CLFNBQVMsb0dBQ1QsVUFBVSxtRkFDVixVQUFVLDhFQUNWLFNBQVMsb1BBQ1QsVUFBVSx3S0FDVixXQUFXLGlhQUNYLFdBQVcscU1BQ1gsVUFBVSx5R0FDVixPQUFPLDJKQUNQLGdCQUFnQiwyRUFDaEIsYUFBYSx3RUFDYixjQUFjLHlFQUNkLHVCQUF1Qjs7NEZBZ09kLDBCQUEwQjtrQkFsUHRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxVQUFVO3dCQUNWLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsdUJBQXVCO3FCQUN4QixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEZUO3dEQXFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNoZWNrYm94LFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvblNwaW5uZXIsXG4gIElvblRleHRhcmVhLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2xvdWRVcGxvYWRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1wb3J0TWVtYmVyc1Jlc3BvbnNlLCBJbXBvcnRPbkNvbmZsaWN0LCBJbXBvcnRSb3dSZXN1bHQsIEltcG9ydFVzZXJSb3cgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuXG5pbXBvcnQgeyBNRU1CRVJfSU1QT1JUX01PREFMX0kxOE4gfSBmcm9tICcuL21lbWJlci1pbXBvcnQtbW9kYWwuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkltcG9ydE1vZGFsJztcblxuYWRkSWNvbnMoeyBjbG91ZFVwbG9hZE91dGxpbmUgfSk7XG5cbi8qKlxuICogYHZhbC1tZW1iZXItaW1wb3J0LW1vZGFsYCDigJQgcGFuZWwgZGUgY2FyZ2EgbWFzaXZhIGRlIG1pZW1icm9zIChBRFItMDIzIGZhc2UgNikuXG4gKlxuICogRWwgYWRtaW4gcGVnYSB1biBDU1YgKGBlbWFpbCxub21icmUscm9sYCk7IGVsIG1vZGFsIGxvIHBhcnNlYSBhIGZpbGFzIHkgbGxhbWFcbiAqIGBPcmdTZXJ2aWNlLmltcG9ydE1lbWJlcnNgLiBNdWVzdHJhIGVsIHJlc3VsdGFkbyBwb3ItZmlsYSAocGFydGlhbCBzdWNjZXNzKTpcbiAqIGBjcmVhdGVkYCAvIGBhc3NpZ25lZGAgLyBgc2tpcHBlZGAgLyBgZXJyb3JgLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSkuXG4gKlxuICogQXV0by1yZWdpc3RyYSBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gYFNldHRpbmdzLkltcG9ydE1vZGFsYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbWJlci1pbXBvcnQtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvblRleHRhcmVhLFxuICAgIElvbkNoZWNrYm94LFxuICAgIElvblNwaW5uZXIsXG4gICAgSW9uSWNvbixcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgU2VhcmNoU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG5cbiAgICAgIEBpZiAoIXJlc3VsdHMoKSkge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ2hpbnQnKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCIgLz5cblxuICAgICAgICBAaWYgKHJvbGVzSGludCgpKSB7XG4gICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICBjbGFzcz1cImltcG9ydC1yb2xlcy1oaW50XCJcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJvbGVzSGludCgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ21lZGl1bScsIGJvbGQ6IGZhbHNlIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFN1YmlkYSBkZSBhcmNoaXZvOiBsYWJlbCBuYXRpdm8gZW52dWVsdmUgZWwgaW5wdXQgKGxhYmVsIHRyaWNrLCBpZ3VhbFxuICAgICAgICAgICAgIHF1ZSB2YWwtYXR0YWNobWVudC11cGxvYWRlcikg4oaSIGdlc3RvIGNvbmZpYWJsZSBlbiBpT1MvUFdBLiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC11cGxvYWRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbXBvcnQtdXBsb2FkX19idG5cIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvdWQtdXBsb2FkLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgndXBsb2FkRmlsZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmNzdix0ZXh0L2Nzdix0ZXh0L3BsYWluXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXVwbG9hZF9faGludFwiPnt7IHQoJ29yUGFzdGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChmaWxlTmFtZSgpKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJpbXBvcnQtZmlsZS1sb2FkZWRcIj5cbiAgICAgICAgICAgIHt7IHQoJ2ZpbGVMb2FkZWQnKS5yZXBsYWNlKCd7bmFtZX0nLCBmaWxlTmFtZSgpKSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpb24tdGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cImltcG9ydC1jc3ZcIlxuICAgICAgICAgIFthdXRvR3Jvd109XCJ0cnVlXCJcbiAgICAgICAgICBbcm93c109XCI2XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY3N2UGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjc3ZcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDwhLS0gU2VsZWN0b3IgZGUgY29uZmxpY3RvOiB2YWwtdGl0bGUgKyB2YWwtc2VsZWN0LWlucHV0IChtaXNtbyBwYXRyw7NuIHF1ZSBpbnZpdGUgbW9kYWwpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmxpY3Qtc2VsZWN0LXdyYXBcIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ29uQ29uZmxpY3RMYWJlbCcpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXNlbGVjdC1pbnB1dCBbcHJvcHNdPVwiY29uZmxpY3RTZWxlY3RQcm9wcygpXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlvbi1jaGVja2JveCBjbGFzcz1cImltcG9ydC1hY3RpdmF0aW9uXCIgbGFiZWxQbGFjZW1lbnQ9XCJlbmRcIiBbKG5nTW9kZWwpXT1cInNlbmRBY3RpdmF0aW9uXCI+XG4gICAgICAgICAge3sgdCgnc2VuZEFjdGl2YXRpb24nKSB9fVxuICAgICAgICA8L2lvbi1jaGVja2JveD5cblxuICAgICAgICBAaWYgKGVycm9yTXNnKCkpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImltcG9ydC1lcnJvclwiPnt7IGVycm9yTXNnKCkgfX08L3A+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LWFjdGlvbnNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGNvbG9yPVwiZGFya1wiIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nKClcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAgICAgIEBpZiAoc3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiZG90c1wiIC8+XG4gICAgICAgICAgICAgICZuYnNwO3t7IHQoJ3N1Ym1pdHRpbmcnKSB9fVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IHQoJ3N1Ym1pdCcpIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8IS0tIFJlc3VsdGFkb3MgLS0+XG4gICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogc3VtbWFyeUxhYmVsKCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogdHJ1ZSB9XCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1yZXN1bHRzXCI+XG4gICAgICAgICAgQGZvciAociBvZiByZXN1bHRzKCkhLnJlc3VsdHM7IHRyYWNrIHIuZW1haWwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtcm93IGltcG9ydC1yb3ctLXt7IHIuc3RhdHVzIH19XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fZW1haWxcIj57eyByLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX3N0YXR1c1wiPnt7IHN0YXR1c0xhYmVsKHIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHIucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19yZWFzb25cIj57eyByLnJlYXNvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgICAgICB7eyB0KCdhZ2FpbicpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICB2YWwtZGlzcGxheSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICB2YWwtdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm9sZXMtaGludCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgfVxuICAgICAgLyogRWwgaW5wdXQgbmF0aXZvIHF1ZWRhIG9jdWx0bzsgZWwgbGFiZWwgcmVlbnbDrWEgZWwgY2xpYyAobGFiZWwgdHJpY2spLiAqL1xuICAgICAgLmltcG9ydC11cGxvYWRfX2J0biBpbnB1dFt0eXBlPSdmaWxlJ10ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2hpbnQge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1maWxlLWxvYWRlZCB7XG4gICAgICAgIG1hcmdpbjogMCAwIDE2cHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNmI2ZTc2KTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtY3N2IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC8qIExhYmVsIGRlIGNhbXBvIOKAlCBtaXNtbyBlc3RpbG8gcXVlIC5maWVsZC1uYW1lIGVuIHZhbC1mb3JtICovXG4gICAgICAuY29uZmxpY3Qtc2VsZWN0LXdyYXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuICAgICAgLmNvbmZsaWN0LXNlbGVjdC13cmFwIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWFjdGl2YXRpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtZXJyb3Ige1xuICAgICAgICBtYXJnaW46IDAgMCAxMnB4IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzAzOTJiKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcmVzdWx0cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW46IDEycHggMDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bztcbiAgICAgICAgZ3JpZC1yb3ctZ2FwOiAycHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tY3JlYXRlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tYXNzaWduZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3ctLXNraXBwZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tZXJyb3Ige1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fZW1haWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3dfX3N0YXR1cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fcmVhc29uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG5cbiAgLyoqIE9yZyBkZXN0aW5vIGRlbCBpbXBvcnQuICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIE5vbWJyZXMgZGUgcm9sZXMgZGlzcG9uaWJsZXMgKHBhcmEgZWwgaGludCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ2FsbGJhY2sgdHJhcyB1bmEgaW1wb3J0YWNpw7NuIGV4aXRvc2EgKOKJpTEgZmlsYSBwcm9jZXNhZGEpIOKAlCByZWZyZXNjYSBsYSBsaXN0YS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKCkgPT4gdm9pZDtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4bi4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIGNzdiA9ICcnO1xuICBzZW5kQWN0aXZhdGlvbiA9IHRydWU7XG5cbiAgcmVhZG9ubHkgb25Db25mbGljdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignYXNzaWduUm9sZScpO1xuXG4gIHJlYWRvbmx5IGNvbmZsaWN0U2VsZWN0UHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPElucHV0TWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMub25Db25mbGljdENvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgbGFiZWw6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ29uQ29uZmxpY3RMYWJlbCcpLFxuICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHsgaWQ6ICdhc3NpZ25Sb2xlJywgbmFtZTogdGhpcy50KCdjb25mbGljdEFzc2lnbicpLCBvcmRlcjogMCB9LFxuICAgICAgeyBpZDogJ3NraXAnLCBuYW1lOiB0aGlzLnQoJ2NvbmZsaWN0U2tpcCcpLCBvcmRlcjogMSB9LFxuICAgICAgeyBpZDogJ2Vycm9yJywgbmFtZTogdGhpcy50KCdjb25mbGljdEVycm9yJyksIG9yZGVyOiAyIH0sXG4gICAgXSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHN1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvck1zZyA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlc3VsdHMgPSBzaWduYWw8SW1wb3J0TWVtYmVyc1Jlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBOb21icmUgZGVsIGFyY2hpdm8gQ1NWIGNhcmdhZG8gKHZhY8OtbyBzaSBzZSBwZWfDsyBtYW51YWxtZW50ZSkuICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lID0gc2lnbmFsKCcnKTtcblxuICByZWFkb25seSByb2xlc0hpbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYXZhaWxhYmxlUm9sZXMubGVuZ3RoID8gYCR7dGhpcy50KCdyb2xlc0F2YWlsYWJsZScpfSAke3RoaXMuYXZhaWxhYmxlUm9sZXMuam9pbignLCAnKX1gIDogJydcbiAgKTtcblxuICByZWFkb25seSBzdW1tYXJ5TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMucmVzdWx0cygpPy5zdW1tYXJ5O1xuICAgIGlmICghcykgcmV0dXJuIHRoaXMudCgnc3VtbWFyeScpO1xuICAgIHJldHVybiBgJHt0aGlzLnQoJ3N1bW1hcnknKX06ICR7cy5jcmVhdGVkfSAke3RoaXMudCgnY3JlYXRlZCcpfSDCtyAke3MuYXNzaWduZWR9ICR7dGhpcy50KFxuICAgICAgJ2Fzc2lnbmVkJ1xuICAgICl9IMK3ICR7cy5za2lwcGVkfSAke3RoaXMudCgnc2tpcHBlZCcpfSDCtyAke3MuZmFpbGVkfSAke3RoaXMudCgnZmFpbGVkJyl9YDtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UodGhpcy5pMThuTmFtZXNwYWNlKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCh0aGlzLmkxOG5OYW1lc3BhY2UsIE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhcmdhIHVuIGFyY2hpdm8gQ1NWIHNlbGVjY2lvbmFkbzogbGVlIHN1IHRleHRvIGFsIHRleHRhcmVhIChgY3N2YCkuICovXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuY3N2ID0gU3RyaW5nKHJlYWRlci5yZXN1bHQgPz8gJycpO1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQoZmlsZS5uYW1lKTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4gdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdmaWxlUmVhZEVycm9yJykpO1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgIC8vIFBlcm1pdGUgcmUtc2VsZWNjaW9uYXIgZWwgbWlzbW8gYXJjaGl2byAoZWwgY2hhbmdlIG5vIGRpc3BhcmEgc2kgbm8gc2UgbGltcGlhKS5cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqIFBhcnNlYSBlbCBDU1YgcGVnYWRvIGEgZmlsYXMge2VtYWlsLG5hbWUscm9sZU5hbWV9LiBUb2xlcmEgaGVhZGVyLiAqL1xuICBwcml2YXRlIHBhcnNlQ3N2KCk6IEltcG9ydFVzZXJSb3dbXSB7XG4gICAgY29uc3Qgcm93czogSW1wb3J0VXNlclJvd1tdID0gW107XG4gICAgZm9yIChjb25zdCByYXcgb2YgdGhpcy5jc3Yuc3BsaXQoL1xccj9cXG4vKSkge1xuICAgICAgY29uc3QgbGluZSA9IHJhdy50cmltKCk7XG4gICAgICBpZiAoIWxpbmUpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgY29scyA9IGxpbmUuc3BsaXQoJywnKS5tYXAoYyA9PiBjLnRyaW0oKSk7XG4gICAgICBjb25zdCBlbWFpbCA9IChjb2xzWzBdID8/ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgLy8gU2FsdGFyIGhlYWRlciAocHJpbWVyYSBjb2wgXCJlbWFpbFwiKSBvIGzDrW5lYXMgc2luIEAuXG4gICAgICBpZiAoIWVtYWlsIHx8ICFlbWFpbC5pbmNsdWRlcygnQCcpKSBjb250aW51ZTtcbiAgICAgIHJvd3MucHVzaCh7IGVtYWlsLCBuYW1lOiBjb2xzWzFdID8/ICcnLCByb2xlTmFtZTogY29sc1syXSA/PyAnJyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5wYXJzZUNzdigpO1xuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9Sb3dzJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodXNlcnMuc29tZSh1ID0+ICF1LnJvbGVOYW1lKSkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdwYXJzZUVycm9yJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAuaW1wb3J0TWVtYmVycyh0aGlzLm9yZ0lkLCB7XG4gICAgICAgIHVzZXJzLFxuICAgICAgICBvbkNvbmZsaWN0OiAodGhpcy5vbkNvbmZsaWN0Q29udHJvbC52YWx1ZSA/PyAnYXNzaWduUm9sZScpIGFzIEltcG9ydE9uQ29uZmxpY3QsXG4gICAgICAgIHNlbmRBY3RpdmF0aW9uOiB0aGlzLnNlbmRBY3RpdmF0aW9uLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0cy5zZXQocmVzKTtcbiAgICAgICAgICAvLyBSZWZyZXNjYXIgbGlzdGEgZGVsIGNvbnN1bWVyIHNpIGh1Ym8gYWx0YXMvYXNpZ25hY2lvbmVzIGVmZWN0aXZhcy5cbiAgICAgICAgICBpZiAocmVzLnN1bW1hcnkuY3JlYXRlZCArIHJlcy5zdW1tYXJ5LmFzc2lnbmVkID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvck1zZy5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyB0aGlzLnQoJ2dlbmVyaWNFcnJvcicpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdHVzTGFiZWwocjogSW1wb3J0Um93UmVzdWx0KTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy50KHIuc3RhdHVzID09PSAnZXJyb3InID8gJ2ZhaWxlZCcgOiByLnN0YXR1cyk7XG4gICAgaWYgKHIuc3RhdHVzID09PSAnY3JlYXRlZCcgJiYgci5hY3RpdmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7YmFzZX0gwrcgJHt0aGlzLnQoci5hY3RpdmF0aW9uID09PSAnc2VudCcgPyAnYWN0aXZhdGlvblNlbnQnIDogJ2FjdGl2YXRpb25QZW5kaW5nJyl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNzdiA9ICcnO1xuICAgIHRoaXMuZmlsZU5hbWUuc2V0KCcnKTtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgdGhpcy5yZXN1bHRzLnNldChudWxsKTtcbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxV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QUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0lUO3dEQThKUSxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVGV4dGFyZWEsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG91ZFVwbG9hZE91dGxpbmUsIGRvY3VtZW50VGV4dE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY2hlY2staW5wdXQvY2hlY2staW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBJbXBvcnRNZW1iZXJzUmVzcG9uc2UsIEltcG9ydE9uQ29uZmxpY3QsIEltcG9ydFJvd1Jlc3VsdCwgSW1wb3J0VXNlclJvdyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5cbmltcG9ydCB7IE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4TiB9IGZyb20gJy4vbWVtYmVyLWltcG9ydC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuSW1wb3J0TW9kYWwnO1xuXG5hZGRJY29ucyh7IGNsb3VkVXBsb2FkT3V0bGluZSwgZG9jdW1lbnRUZXh0T3V0bGluZSB9KTtcblxuLyoqXG4gKiBgdmFsLW1lbWJlci1pbXBvcnQtbW9kYWxgIOKAlCBwYW5lbCBkZSBjYXJnYSBtYXNpdmEgZGUgbWllbWJyb3MgKEFEUi0wMjMgZmFzZSA2KS5cbiAqXG4gKiBFbCBhZG1pbiBwZWdhIHVuIENTViAoYGVtYWlsLG5vbWJyZSxyb2xgKTsgZWwgbW9kYWwgbG8gcGFyc2VhIGEgZmlsYXMgeSBsbGFtYVxuICogYE9yZ1NlcnZpY2UuaW1wb3J0TWVtYmVyc2AuIE11ZXN0cmEgZWwgcmVzdWx0YWRvIHBvci1maWxhIChwYXJ0aWFsIHN1Y2Nlc3MpOlxuICogYGNyZWF0ZWRgIC8gYGFzc2lnbmVkYCAvIGBza2lwcGVkYCAvIGBlcnJvcmAuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KS5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBgU2V0dGluZ3MuSW1wb3J0TW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtYmVyLWltcG9ydC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3N1YnRpdGxlJyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIEBpZiAoIXJlc3VsdHMoKSkge1xuICAgICAgICBAaWYgKHJvbGVzSGludCgpKSB7XG4gICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICBjbGFzcz1cImltcG9ydC1yb2xlcy1oaW50XCJcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJvbGVzSGludCgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ21lZGl1bScsIGJvbGQ6IGZhbHNlIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFNlbGVjdG9yIGRlIG3DqXRvZG8gZGUgaW1wb3J0YWNpw7NuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ2ltcG9ydE1ldGhvZExhYmVsJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZHNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlXT1cImltcG9ydE1vZGUoKSA9PT0gJ2ZpbGUnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZGUuc2V0KCdmaWxlJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3VkLXVwbG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9fdGl0bGVcIj57eyB0KCdpbXBvcnRNZXRob2RGaWxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX19oaW50XCI+e3sgdCgnaW1wb3J0TWV0aG9kRmlsZUhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRcIlxuICAgICAgICAgICAgICBbY2xhc3MuaW1wb3J0LW1ldGhvZC1jYXJkLS1hY3RpdmVdPVwiaW1wb3J0TW9kZSgpID09PSAncGFzdGUnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZGUuc2V0KCdwYXN0ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC10ZXh0LW91dGxpbmVcIiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9faWNvblwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX190aXRsZVwiPnt7IHQoJ2ltcG9ydE1ldGhvZFBhc3RlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX19oaW50XCI+e3sgdCgnaW1wb3J0TWV0aG9kUGFzdGVIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTdWJpZGEgZGUgYXJjaGl2byAobGFiZWwgdHJpY2sg4oCUIGdlc3RvIGNvbmZpYWJsZSBlbiBpT1MvUFdBKSAtLT5cbiAgICAgICAgQGlmIChpbXBvcnRNb2RlKCkgPT09ICdmaWxlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW1wb3J0LXVwbG9hZF9fYnRuXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvdWQtdXBsb2FkLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCd1cGxvYWRGaWxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi5jc3YsdGV4dC9jc3YsdGV4dC9wbGFpblwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgQGlmIChmaWxlTmFtZSgpKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaW1wb3J0LWZpbGUtbG9hZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnZmlsZUxvYWRlZCcpLnJlcGxhY2UoJ3tuYW1lfScsIGZpbGVOYW1lKCkpIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUGVnYXIgQ1NWIC0tPlxuICAgICAgICBAaWYgKGltcG9ydE1vZGUoKSA9PT0gJ3Bhc3RlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgICAgICBjbGFzcz1cImltcG9ydC1jc3ZcIlxuICAgICAgICAgICAgICBbYXV0b0dyb3ddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3dzXT1cIjZcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY3N2UGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3N2XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFNpIGh1Ym8gY2FyZ2EgZGUgYXJjaGl2bywgbW9zdHJhciB0ZXh0YXJlYSBkZSBzb2xvIGxlY3R1cmEgcGFyYSByZXZpc2FyIC0tPlxuICAgICAgICBAaWYgKGltcG9ydE1vZGUoKSA9PT0gJ2ZpbGUnICYmIGNzdikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGlvbi10ZXh0YXJlYSBjbGFzcz1cImltcG9ydC1jc3ZcIiBbYXV0b0dyb3ddPVwidHJ1ZVwiIFtyb3dzXT1cIjRcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFt2YWx1ZV09XCJjc3ZcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBDb25mbGljdG86IHJhZGlvIGJ1dHRvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnb25Db25mbGljdExhYmVsJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiY29uZmxpY3RSYWRpb1Byb3BzKClcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFjdGl2YWNpw7NuOiB2YWwtY2hlY2staW5wdXQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtY2hlY2staW5wdXQgW3Byb3BzXT1cInNlbmRBY3RpdmF0aW9uUHJvcHMoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZXJyb3JNc2coKSkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiaW1wb3J0LWVycm9yXCI+e3sgZXJyb3JNc2coKSB9fTwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtYWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgY29sb3I9XCJkYXJrXCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICAgICAgQGlmIChzdWJtaXR0aW5nKCkpIHtcbiAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgICAgICAgICAgJm5ic3A7e3sgdCgnc3VibWl0dGluZycpIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgdCgnc3VibWl0JykgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gUmVzdWx0YWRvcyAtLT5cbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiBzdW1tYXJ5TGFiZWwoKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiB0cnVlIH1cIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXJlc3VsdHNcIj5cbiAgICAgICAgICBAZm9yIChyIG9mIHJlc3VsdHMoKSEucmVzdWx0czsgdHJhY2sgci5lbWFpbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1yb3cgaW1wb3J0LXJvdy0te3sgci5zdGF0dXMgfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19lbWFpbFwiPnt7IHIuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fc3RhdHVzXCI+e3sgc3RhdHVzTGFiZWwocikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoci5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX3JlYXNvblwiPnt7IHIucmVhc29uIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LWFjdGlvbnNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cInJlc2V0KClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2FnYWluJykgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvbGVzLWhpbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI4cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXNlY3Rpb24gdmFsLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtbWV0aG9kLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCAjZDdkOGRhKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLFxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtbWV0aG9kLWNhcmQ6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZikgNiUsIHZhcigtLWlvbi1jb2xvci1saWdodCkpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNmI2ZTc2KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlIC5pbXBvcnQtbWV0aG9kLWNhcmRfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9faGludCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2J0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG46aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG4gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuIGlucHV0W3R5cGU9J2ZpbGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWZpbGUtbG9hZGVkIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAwO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUsICM2YjZlNzYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1jc3Yge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNjMDM5MmIpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yZXN1bHRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1hcmdpbjogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvO1xuICAgICAgICBncmlkLXJvdy1nYXA6IDJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tY3JlYXRlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tYXNzaWduZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3ctLXNraXBwZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tZXJyb3Ige1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fZW1haWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3dfX3N0YXR1cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fcmVhc29uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG5cbiAgLyoqIE9yZyBkZXN0aW5vIGRlbCBpbXBvcnQuICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIE5vbWJyZXMgZGUgcm9sZXMgZGlzcG9uaWJsZXMgKHBhcmEgZWwgaGludCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ2FsbGJhY2sgdHJhcyB1bmEgaW1wb3J0YWNpw7NuIGV4aXRvc2EgKOKJpTEgZmlsYSBwcm9jZXNhZGEpIOKAlCByZWZyZXNjYSBsYSBsaXN0YS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKCkgPT4gdm9pZDtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4bi4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIGNzdiA9ICcnO1xuXG4gIHJlYWRvbmx5IGltcG9ydE1vZGUgPSBzaWduYWw8J2ZpbGUnIHwgJ3Bhc3RlJz4oJ2ZpbGUnKTtcblxuICByZWFkb25seSBvbkNvbmZsaWN0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCdhc3NpZ25Sb2xlJyk7XG4gIHJlYWRvbmx5IHNlbmRBY3RpdmF0aW9uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBjb25mbGljdFJhZGlvUHJvcHMgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgY29udHJvbDogdGhpcy5vbkNvbmZsaWN0Q29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUkFESU8sXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsgaWQ6ICdhc3NpZ25Sb2xlJywgbmFtZTogdGhpcy50KCdjb25mbGljdEFzc2lnbicpLCBvcmRlcjogMCB9LFxuICAgICAgICAgIHsgaWQ6ICdza2lwJywgbmFtZTogdGhpcy50KCdjb25mbGljdFNraXAnKSwgb3JkZXI6IDEgfSxcbiAgICAgICAgICB7IGlkOiAnZXJyb3InLCBuYW1lOiB0aGlzLnQoJ2NvbmZsaWN0RXJyb3InKSwgb3JkZXI6IDIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pIGFzIElucHV0TWV0YWRhdGFcbiAgKTtcblxuICByZWFkb25seSBzZW5kQWN0aXZhdGlvblByb3BzID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICh7XG4gICAgICAgIGNvbnRyb2w6IHRoaXMuc2VuZEFjdGl2YXRpb25Db250cm9sIGFzIEZvcm1Db250cm9sLFxuICAgICAgICBsYWJlbDogdGhpcy50KCdzZW5kQWN0aXZhdGlvbicpLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuQ0hFQ0ssXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgbGFiZWxQbGFjZW1lbnQ6ICdlbmQnLFxuICAgICAgfSkgYXMgSW5wdXRNZXRhZGF0YVxuICApO1xuXG4gIHJlYWRvbmx5IHN1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvck1zZyA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlc3VsdHMgPSBzaWduYWw8SW1wb3J0TWVtYmVyc1Jlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBOb21icmUgZGVsIGFyY2hpdm8gQ1NWIGNhcmdhZG8gKHZhY8OtbyBzaSBzZSBwZWfDsyBtYW51YWxtZW50ZSkuICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lID0gc2lnbmFsKCcnKTtcblxuICByZWFkb25seSByb2xlc0hpbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYXZhaWxhYmxlUm9sZXMubGVuZ3RoID8gYCR7dGhpcy50KCdyb2xlc0F2YWlsYWJsZScpfSAke3RoaXMuYXZhaWxhYmxlUm9sZXMuam9pbignLCAnKX1gIDogJydcbiAgKTtcblxuICByZWFkb25seSBzdW1tYXJ5TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMucmVzdWx0cygpPy5zdW1tYXJ5O1xuICAgIGlmICghcykgcmV0dXJuIHRoaXMudCgnc3VtbWFyeScpO1xuICAgIHJldHVybiBgJHt0aGlzLnQoJ3N1bW1hcnknKX06ICR7cy5jcmVhdGVkfSAke3RoaXMudCgnY3JlYXRlZCcpfSDCtyAke3MuYXNzaWduZWR9ICR7dGhpcy50KFxuICAgICAgJ2Fzc2lnbmVkJ1xuICAgICl9IMK3ICR7cy5za2lwcGVkfSAke3RoaXMudCgnc2tpcHBlZCcpfSDCtyAke3MuZmFpbGVkfSAke3RoaXMudCgnZmFpbGVkJyl9YDtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UodGhpcy5pMThuTmFtZXNwYWNlKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCh0aGlzLmkxOG5OYW1lc3BhY2UsIE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhcmdhIHVuIGFyY2hpdm8gQ1NWIHNlbGVjY2lvbmFkbzogbGVlIHN1IHRleHRvIGFsIHRleHRhcmVhIChgY3N2YCkuICovXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuY3N2ID0gU3RyaW5nKHJlYWRlci5yZXN1bHQgPz8gJycpO1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQoZmlsZS5uYW1lKTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4gdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdmaWxlUmVhZEVycm9yJykpO1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgIC8vIFBlcm1pdGUgcmUtc2VsZWNjaW9uYXIgZWwgbWlzbW8gYXJjaGl2byAoZWwgY2hhbmdlIG5vIGRpc3BhcmEgc2kgbm8gc2UgbGltcGlhKS5cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqIFBhcnNlYSBlbCBDU1YgcGVnYWRvIGEgZmlsYXMge2VtYWlsLG5hbWUscm9sZU5hbWV9LiBUb2xlcmEgaGVhZGVyLiAqL1xuICBwcml2YXRlIHBhcnNlQ3N2KCk6IEltcG9ydFVzZXJSb3dbXSB7XG4gICAgY29uc3Qgcm93czogSW1wb3J0VXNlclJvd1tdID0gW107XG4gICAgZm9yIChjb25zdCByYXcgb2YgdGhpcy5jc3Yuc3BsaXQoL1xccj9cXG4vKSkge1xuICAgICAgY29uc3QgbGluZSA9IHJhdy50cmltKCk7XG4gICAgICBpZiAoIWxpbmUpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgY29scyA9IGxpbmUuc3BsaXQoJywnKS5tYXAoYyA9PiBjLnRyaW0oKSk7XG4gICAgICBjb25zdCBlbWFpbCA9IChjb2xzWzBdID8/ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgLy8gU2FsdGFyIGhlYWRlciAocHJpbWVyYSBjb2wgXCJlbWFpbFwiKSBvIGzDrW5lYXMgc2luIEAuXG4gICAgICBpZiAoIWVtYWlsIHx8ICFlbWFpbC5pbmNsdWRlcygnQCcpKSBjb250aW51ZTtcbiAgICAgIHJvd3MucHVzaCh7IGVtYWlsLCBuYW1lOiBjb2xzWzFdID8/ICcnLCByb2xlTmFtZTogY29sc1syXSA/PyAnJyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5wYXJzZUNzdigpO1xuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9Sb3dzJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodXNlcnMuc29tZSh1ID0+ICF1LnJvbGVOYW1lKSkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdwYXJzZUVycm9yJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAuaW1wb3J0TWVtYmVycyh0aGlzLm9yZ0lkLCB7XG4gICAgICAgIHVzZXJzLFxuICAgICAgICBvbkNvbmZsaWN0OiAodGhpcy5vbkNvbmZsaWN0Q29udHJvbC52YWx1ZSA/PyAnYXNzaWduUm9sZScpIGFzIEltcG9ydE9uQ29uZmxpY3QsXG4gICAgICAgIHNlbmRBY3RpdmF0aW9uOiB0aGlzLnNlbmRBY3RpdmF0aW9uQ29udHJvbC52YWx1ZSA/PyB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0cy5zZXQocmVzKTtcbiAgICAgICAgICAvLyBSZWZyZXNjYXIgbGlzdGEgZGVsIGNvbnN1bWVyIHNpIGh1Ym8gYWx0YXMvYXNpZ25hY2lvbmVzIGVmZWN0aXZhcy5cbiAgICAgICAgICBpZiAocmVzLnN1bW1hcnkuY3JlYXRlZCArIHJlcy5zdW1tYXJ5LmFzc2lnbmVkID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvck1zZy5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyB0aGlzLnQoJ2dlbmVyaWNFcnJvcicpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdHVzTGFiZWwocjogSW1wb3J0Um93UmVzdWx0KTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy50KHIuc3RhdHVzID09PSAnZXJyb3InID8gJ2ZhaWxlZCcgOiByLnN0YXR1cyk7XG4gICAgaWYgKHIuc3RhdHVzID09PSAnY3JlYXRlZCcgJiYgci5hY3RpdmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7YmFzZX0gwrcgJHt0aGlzLnQoci5hY3RpdmF0aW9uID09PSAnc2VudCcgPyAnYWN0aXZhdGlvblNlbnQnIDogJ2FjdGl2YXRpb25QZW5kaW5nJyl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNzdiA9ICcnO1xuICAgIHRoaXMuZmlsZU5hbWUuc2V0KCcnKTtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgdGhpcy5yZXN1bHRzLnNldChudWxsKTtcbiAgICB0aGlzLmltcG9ydE1vZGUuc2V0KCdmaWxlJyk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,14 +5,18 @@
|
|
|
5
5
|
export const MEMBER_IMPORT_MODAL_I18N = {
|
|
6
6
|
es: {
|
|
7
7
|
title: 'Importar miembros',
|
|
8
|
-
|
|
8
|
+
subtitle: 'Carga un archivo CSV o pega el contenido directamente. Cada fila debe tener email, nombre y rol. Los cambios se aplican al instante.',
|
|
9
9
|
csvPlaceholder: 'email,nombre,rol\nana@x.com,Ana,editor\nbeto@x.com,Beto,viewer',
|
|
10
|
+
importMethodLabel: '¿Cómo deseas importar?',
|
|
11
|
+
importMethodFile: 'Por archivo',
|
|
12
|
+
importMethodFileHint: 'Sube un archivo .csv desde tu equipo',
|
|
13
|
+
importMethodPaste: 'Pegar contenido',
|
|
14
|
+
importMethodPasteHint: 'Escribe o pega el CSV directamente',
|
|
10
15
|
uploadFile: 'Subir archivo CSV',
|
|
11
|
-
orPaste: 'o pega el CSV abajo',
|
|
12
16
|
fileLoaded: 'Archivo cargado: {name}',
|
|
13
17
|
fileReadError: 'No se pudo leer el archivo.',
|
|
14
18
|
rolesAvailable: 'Roles disponibles:',
|
|
15
|
-
onConflictLabel: '
|
|
19
|
+
onConflictLabel: '¿Qué hacer si el email ya existe?',
|
|
16
20
|
conflictAssign: 'Asignar el rol',
|
|
17
21
|
conflictSkip: 'Omitir',
|
|
18
22
|
conflictError: 'Marcar error',
|
|
@@ -20,7 +24,7 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
20
24
|
submit: 'Importar',
|
|
21
25
|
submitting: 'Importando...',
|
|
22
26
|
parseError: 'No se pudo interpretar el CSV. Revisa el formato.',
|
|
23
|
-
noRows: '
|
|
27
|
+
noRows: 'Agrega al menos una fila válida (email y rol).',
|
|
24
28
|
summary: 'Resumen',
|
|
25
29
|
created: 'creados',
|
|
26
30
|
assigned: 'asignados',
|
|
@@ -37,14 +41,18 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
37
41
|
},
|
|
38
42
|
en: {
|
|
39
43
|
title: 'Import members',
|
|
40
|
-
|
|
44
|
+
subtitle: 'Upload a CSV file or paste the content directly. Each row must include email, name and role. Changes are applied immediately.',
|
|
41
45
|
csvPlaceholder: 'email,name,role\nana@x.com,Ana,editor\nbeto@x.com,Beto,viewer',
|
|
46
|
+
importMethodLabel: 'How do you want to import?',
|
|
47
|
+
importMethodFile: 'From file',
|
|
48
|
+
importMethodFileHint: 'Upload a .csv file from your device',
|
|
49
|
+
importMethodPaste: 'Paste content',
|
|
50
|
+
importMethodPasteHint: 'Type or paste the CSV directly',
|
|
42
51
|
uploadFile: 'Upload CSV file',
|
|
43
|
-
orPaste: 'or paste the CSV below',
|
|
44
52
|
fileLoaded: 'File loaded: {name}',
|
|
45
53
|
fileReadError: "Couldn't read the file.",
|
|
46
54
|
rolesAvailable: 'Available roles:',
|
|
47
|
-
onConflictLabel: '
|
|
55
|
+
onConflictLabel: 'What to do if the email already exists?',
|
|
48
56
|
conflictAssign: 'Assign the role',
|
|
49
57
|
conflictSkip: 'Skip',
|
|
50
58
|
conflictError: 'Mark as error',
|
|
@@ -52,7 +60,7 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
52
60
|
submit: 'Import',
|
|
53
61
|
submitting: 'Importing...',
|
|
54
62
|
parseError: "Couldn't parse the CSV. Check the format.",
|
|
55
|
-
noRows: '
|
|
63
|
+
noRows: 'Add at least one valid row (email and role).',
|
|
56
64
|
summary: 'Summary',
|
|
57
65
|
created: 'created',
|
|
58
66
|
assigned: 'assigned',
|
|
@@ -68,4 +76,4 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
68
76
|
genericError: "Couldn't complete the import. Try again.",
|
|
69
77
|
},
|
|
70
78
|
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9tZW1iZXItaW1wb3J0LW1vZGFsL21lbWJlci1pbXBvcnQtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDeEQsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixRQUFRLEVBQ04sc0lBQXNJO1FBQ3hJLGNBQWMsRUFBRSxnRUFBZ0U7UUFDaEYsaUJBQWlCLEVBQUUsd0JBQXdCO1FBQzNDLGdCQUFnQixFQUFFLGFBQWE7UUFDL0Isb0JBQW9CLEVBQUUsc0NBQXNDO1FBQzVELGlCQUFpQixFQUFFLGlCQUFpQjtRQUNwQyxxQkFBcUIsRUFBRSxvQ0FBb0M7UUFDM0QsVUFBVSxFQUFFLG1CQUFtQjtRQUMvQixVQUFVLEVBQUUseUJBQXlCO1FBQ3JDLGFBQWEsRUFBRSw2QkFBNkI7UUFDNUMsY0FBYyxFQUFFLG9CQUFvQjtRQUNwQyxlQUFlLEVBQUUsbUNBQW1DO1FBQ3BELGNBQWMsRUFBRSxnQkFBZ0I7UUFDaEMsWUFBWSxFQUFFLFFBQVE7UUFDdEIsYUFBYSxFQUFFLGNBQWM7UUFDN0IsY0FBYyxFQUFFLGlEQUFpRDtRQUNqRSxNQUFNLEVBQUUsVUFBVTtRQUNsQixVQUFVLEVBQUUsZUFBZTtRQUMzQixVQUFVLEVBQUUsbURBQW1EO1FBQy9ELE1BQU0sRUFBRSxnREFBZ0Q7UUFDeEQsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsUUFBUSxFQUFFLFdBQVc7UUFDckIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsY0FBYyxFQUFFLG9CQUFvQjtRQUNwQyxpQkFBaUIsRUFBRSxzQkFBc0I7UUFDekMsS0FBSyxFQUFFLG9CQUFvQjtRQUMzQixLQUFLLEVBQUUsUUFBUTtRQUNmLFlBQVksRUFBRSx3REFBd0Q7S0FDdkU7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLFFBQVEsRUFDTiwrSEFBK0g7UUFDakksY0FBYyxFQUFFLCtEQUErRDtRQUMvRSxpQkFBaUIsRUFBRSw0QkFBNEI7UUFDL0MsZ0JBQWdCLEVBQUUsV0FBVztRQUM3QixvQkFBb0IsRUFBRSxxQ0FBcUM7UUFDM0QsaUJBQWlCLEVBQUUsZUFBZTtRQUNsQyxxQkFBcUIsRUFBRSxnQ0FBZ0M7UUFDdkQsVUFBVSxFQUFFLGlCQUFpQjtRQUM3QixVQUFVLEVBQUUscUJBQXFCO1FBQ2pDLGFBQWEsRUFBRSx5QkFBeUI7UUFDeEMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxlQUFlLEVBQUUseUNBQXlDO1FBQzFELGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsWUFBWSxFQUFFLE1BQU07UUFDcEIsYUFBYSxFQUFFLGVBQWU7UUFDOUIsY0FBYyxFQUFFLHVDQUF1QztRQUN2RCxNQUFNLEVBQUUsUUFBUTtRQUNoQixVQUFVLEVBQUUsY0FBYztRQUMxQixVQUFVLEVBQUUsMkNBQTJDO1FBQ3ZELE1BQU0sRUFBRSw4Q0FBOEM7UUFDdEQsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsY0FBYyxFQUFFLGlCQUFpQjtRQUNqQyxpQkFBaUIsRUFBRSxvQkFBb0I7UUFDdkMsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixLQUFLLEVBQUUsT0FBTztRQUNkLFlBQVksRUFBRSwwQ0FBMEM7S0FDekQ7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1tZW1iZXItaW1wb3J0LW1vZGFsYCAoQURSLTAyMykuXG4gKiBBdXRvLXJlZ2lzdHJhZG9zIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBgU2V0dGluZ3MuSW1wb3J0TW9kYWxgLlxuICovXG5leHBvcnQgY29uc3QgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnSW1wb3J0YXIgbWllbWJyb3MnLFxuICAgIHN1YnRpdGxlOlxuICAgICAgJ0NhcmdhIHVuIGFyY2hpdm8gQ1NWIG8gcGVnYSBlbCBjb250ZW5pZG8gZGlyZWN0YW1lbnRlLiBDYWRhIGZpbGEgZGViZSB0ZW5lciBlbWFpbCwgbm9tYnJlIHkgcm9sLiBMb3MgY2FtYmlvcyBzZSBhcGxpY2FuIGFsIGluc3RhbnRlLicsXG4gICAgY3N2UGxhY2Vob2xkZXI6ICdlbWFpbCxub21icmUscm9sXFxuYW5hQHguY29tLEFuYSxlZGl0b3JcXG5iZXRvQHguY29tLEJldG8sdmlld2VyJyxcbiAgICBpbXBvcnRNZXRob2RMYWJlbDogJ8K/Q8OzbW8gZGVzZWFzIGltcG9ydGFyPycsXG4gICAgaW1wb3J0TWV0aG9kRmlsZTogJ1BvciBhcmNoaXZvJyxcbiAgICBpbXBvcnRNZXRob2RGaWxlSGludDogJ1N1YmUgdW4gYXJjaGl2byAuY3N2IGRlc2RlIHR1IGVxdWlwbycsXG4gICAgaW1wb3J0TWV0aG9kUGFzdGU6ICdQZWdhciBjb250ZW5pZG8nLFxuICAgIGltcG9ydE1ldGhvZFBhc3RlSGludDogJ0VzY3JpYmUgbyBwZWdhIGVsIENTViBkaXJlY3RhbWVudGUnLFxuICAgIHVwbG9hZEZpbGU6ICdTdWJpciBhcmNoaXZvIENTVicsXG4gICAgZmlsZUxvYWRlZDogJ0FyY2hpdm8gY2FyZ2Fkbzoge25hbWV9JyxcbiAgICBmaWxlUmVhZEVycm9yOiAnTm8gc2UgcHVkbyBsZWVyIGVsIGFyY2hpdm8uJyxcbiAgICByb2xlc0F2YWlsYWJsZTogJ1JvbGVzIGRpc3BvbmlibGVzOicsXG4gICAgb25Db25mbGljdExhYmVsOiAnwr9RdcOpIGhhY2VyIHNpIGVsIGVtYWlsIHlhIGV4aXN0ZT8nLFxuICAgIGNvbmZsaWN0QXNzaWduOiAnQXNpZ25hciBlbCByb2wnLFxuICAgIGNvbmZsaWN0U2tpcDogJ09taXRpcicsXG4gICAgY29uZmxpY3RFcnJvcjogJ01hcmNhciBlcnJvcicsXG4gICAgc2VuZEFjdGl2YXRpb246ICdFbnZpYXIgZW1haWwgZGUgYWN0aXZhY2nDs24gYSBsYXMgY3VlbnRhcyBudWV2YXMnLFxuICAgIHN1Ym1pdDogJ0ltcG9ydGFyJyxcbiAgICBzdWJtaXR0aW5nOiAnSW1wb3J0YW5kby4uLicsXG4gICAgcGFyc2VFcnJvcjogJ05vIHNlIHB1ZG8gaW50ZXJwcmV0YXIgZWwgQ1NWLiBSZXZpc2EgZWwgZm9ybWF0by4nLFxuICAgIG5vUm93czogJ0FncmVnYSBhbCBtZW5vcyB1bmEgZmlsYSB2w6FsaWRhIChlbWFpbCB5IHJvbCkuJyxcbiAgICBzdW1tYXJ5OiAnUmVzdW1lbicsXG4gICAgY3JlYXRlZDogJ2NyZWFkb3MnLFxuICAgIGFzc2lnbmVkOiAnYXNpZ25hZG9zJyxcbiAgICBza2lwcGVkOiAnb21pdGlkb3MnLFxuICAgIGZhaWxlZDogJ2NvbiBlcnJvcicsXG4gICAgY29sRW1haWw6ICdFbWFpbCcsXG4gICAgY29sU3RhdHVzOiAnRXN0YWRvJyxcbiAgICBjb2xEZXRhaWw6ICdEZXRhbGxlJyxcbiAgICBhY3RpdmF0aW9uU2VudDogJ2FjdGl2YWNpw7NuIGVudmlhZGEnLFxuICAgIGFjdGl2YXRpb25QZW5kaW5nOiAnYWN0aXZhY2nDs24gcGVuZGllbnRlJyxcbiAgICBhZ2FpbjogJ0ltcG9ydGFyIG90cm8gbG90ZScsXG4gICAgY2xvc2U6ICdDZXJyYXInLFxuICAgIGdlbmVyaWNFcnJvcjogJ05vIHNlIHB1ZG8gY29tcGxldGFyIGxhIGltcG9ydGFjacOzbi4gSW50ZW50YSBkZSBudWV2by4nLFxuICB9LFxuICBlbjoge1xuICAgIHRpdGxlOiAnSW1wb3J0IG1lbWJlcnMnLFxuICAgIHN1YnRpdGxlOlxuICAgICAgJ1VwbG9hZCBhIENTViBmaWxlIG9yIHBhc3RlIHRoZSBjb250ZW50IGRpcmVjdGx5LiBFYWNoIHJvdyBtdXN0IGluY2x1ZGUgZW1haWwsIG5hbWUgYW5kIHJvbGUuIENoYW5nZXMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkuJyxcbiAgICBjc3ZQbGFjZWhvbGRlcjogJ2VtYWlsLG5hbWUscm9sZVxcbmFuYUB4LmNvbSxBbmEsZWRpdG9yXFxuYmV0b0B4LmNvbSxCZXRvLHZpZXdlcicsXG4gICAgaW1wb3J0TWV0aG9kTGFiZWw6ICdIb3cgZG8geW91IHdhbnQgdG8gaW1wb3J0PycsXG4gICAgaW1wb3J0TWV0aG9kRmlsZTogJ0Zyb20gZmlsZScsXG4gICAgaW1wb3J0TWV0aG9kRmlsZUhpbnQ6ICdVcGxvYWQgYSAuY3N2IGZpbGUgZnJvbSB5b3VyIGRldmljZScsXG4gICAgaW1wb3J0TWV0aG9kUGFzdGU6ICdQYXN0ZSBjb250ZW50JyxcbiAgICBpbXBvcnRNZXRob2RQYXN0ZUhpbnQ6ICdUeXBlIG9yIHBhc3RlIHRoZSBDU1YgZGlyZWN0bHknLFxuICAgIHVwbG9hZEZpbGU6ICdVcGxvYWQgQ1NWIGZpbGUnLFxuICAgIGZpbGVMb2FkZWQ6ICdGaWxlIGxvYWRlZDoge25hbWV9JyxcbiAgICBmaWxlUmVhZEVycm9yOiBcIkNvdWxkbid0IHJlYWQgdGhlIGZpbGUuXCIsXG4gICAgcm9sZXNBdmFpbGFibGU6ICdBdmFpbGFibGUgcm9sZXM6JyxcbiAgICBvbkNvbmZsaWN0TGFiZWw6ICdXaGF0IHRvIGRvIGlmIHRoZSBlbWFpbCBhbHJlYWR5IGV4aXN0cz8nLFxuICAgIGNvbmZsaWN0QXNzaWduOiAnQXNzaWduIHRoZSByb2xlJyxcbiAgICBjb25mbGljdFNraXA6ICdTa2lwJyxcbiAgICBjb25mbGljdEVycm9yOiAnTWFyayBhcyBlcnJvcicsXG4gICAgc2VuZEFjdGl2YXRpb246ICdTZW5kIGFjdGl2YXRpb24gZW1haWwgdG8gbmV3IGFjY291bnRzJyxcbiAgICBzdWJtaXQ6ICdJbXBvcnQnLFxuICAgIHN1Ym1pdHRpbmc6ICdJbXBvcnRpbmcuLi4nLFxuICAgIHBhcnNlRXJyb3I6IFwiQ291bGRuJ3QgcGFyc2UgdGhlIENTVi4gQ2hlY2sgdGhlIGZvcm1hdC5cIixcbiAgICBub1Jvd3M6ICdBZGQgYXQgbGVhc3Qgb25lIHZhbGlkIHJvdyAoZW1haWwgYW5kIHJvbGUpLicsXG4gICAgc3VtbWFyeTogJ1N1bW1hcnknLFxuICAgIGNyZWF0ZWQ6ICdjcmVhdGVkJyxcbiAgICBhc3NpZ25lZDogJ2Fzc2lnbmVkJyxcbiAgICBza2lwcGVkOiAnc2tpcHBlZCcsXG4gICAgZmFpbGVkOiAnZmFpbGVkJyxcbiAgICBjb2xFbWFpbDogJ0VtYWlsJyxcbiAgICBjb2xTdGF0dXM6ICdTdGF0dXMnLFxuICAgIGNvbERldGFpbDogJ0RldGFpbCcsXG4gICAgYWN0aXZhdGlvblNlbnQ6ICdhY3RpdmF0aW9uIHNlbnQnLFxuICAgIGFjdGl2YXRpb25QZW5kaW5nOiAnYWN0aXZhdGlvbiBwZW5kaW5nJyxcbiAgICBhZ2FpbjogJ0ltcG9ydCBhbm90aGVyIGJhdGNoJyxcbiAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICBnZW5lcmljRXJyb3I6IFwiQ291bGRuJ3QgY29tcGxldGUgdGhlIGltcG9ydC4gVHJ5IGFnYWluLlwiLFxuICB9LFxufTtcbiJdfQ==
|