@sachin9822/reports-lib 0.0.214 → 0.0.215
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/esm2020/lib/components/accounting-report/accounting-report.component.mjs +19 -1
- package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +21 -1
- package/esm2020/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.mjs +19 -1
- package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +21 -1
- package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +19 -3
- package/esm2020/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.mjs +26 -5
- package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +23 -50
- package/esm2020/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.mjs +1 -1
- package/esm2020/lib/services/report.service.mjs +4 -4
- package/esm2020/lib/shared/search-filter/search-filter.component.mjs +31 -18
- package/fesm2015/sachin9822-reports-lib.mjs +296 -76
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +174 -75
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +13 -0
- package/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.d.ts +1 -0
- package/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.d.ts +2 -3
- package/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.d.ts +0 -1
- package/lib/services/report.service.d.ts +1 -1
- package/lib/shared/search-filter/search-filter.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -29,7 +29,7 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
29
29
|
this.dateType = '';
|
|
30
30
|
this.fromDate = '';
|
|
31
31
|
this.toDate = '';
|
|
32
|
-
this.
|
|
32
|
+
this.businessLine = '';
|
|
33
33
|
this.reportUser = '';
|
|
34
34
|
this.reportTime = '';
|
|
35
35
|
this.reportPeriod = '';
|
|
@@ -61,7 +61,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
61
61
|
'total-row': params => params.data?.isTotalRow
|
|
62
62
|
};
|
|
63
63
|
this.columnDefs = [
|
|
64
|
-
{ headerName: 'Business Unit', field: 'companyFullName', tooltipField: 'companyFullName', minWidth: 70, maxWidth: 100 },
|
|
65
64
|
{ headerName: 'COA Code', field: 'coaCode', tooltipField: 'coaCode', minWidth: 60, maxWidth: 100 },
|
|
66
65
|
{ headerName: 'Account Code', field: 'accountCode', tooltipField: 'accountCode', minWidth: 80, maxWidth: 100 },
|
|
67
66
|
{ headerName: 'Account Description', field: 'accountDescription', tooltipField: 'accountDescription', minWidth: 180, maxWidth: 230 },
|
|
@@ -72,23 +71,8 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
72
71
|
{ headerName: 'Closing Balance Local Amount', field: 'closingBalance', type: 'numericColumn', tooltipField: 'closingBalance' }
|
|
73
72
|
];
|
|
74
73
|
this.rowData = [];
|
|
75
|
-
this.businessUnits = [];
|
|
76
|
-
}
|
|
77
|
-
ngOnInit() {
|
|
78
|
-
this.loadingState = ComponentLoadingStates.Loading;
|
|
79
|
-
this.reportService.GetBusinessUnitForTrialBalanceAccountsReport().subscribe({
|
|
80
|
-
next: (res) => {
|
|
81
|
-
this.businessUnits = res;
|
|
82
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
83
|
-
}, error: (err) => {
|
|
84
|
-
console.error('Error fetching business units:', err);
|
|
85
|
-
this.loadingState = ComponentLoadingStates.Error;
|
|
86
|
-
}, complete: () => {
|
|
87
|
-
console.log("getting business units api completed");
|
|
88
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
74
|
}
|
|
75
|
+
ngOnInit() { }
|
|
92
76
|
getTrialBalanceAccountsReport(req) {
|
|
93
77
|
this.dataReady = false;
|
|
94
78
|
this.trialBalanceReport = null;
|
|
@@ -103,7 +87,7 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
103
87
|
this.accountStatus = req.accountStatus;
|
|
104
88
|
this.currency = req.currency;
|
|
105
89
|
this.dateType = req.dateType == "VD" ? "Value Date" : "Posting Date";
|
|
106
|
-
this.
|
|
90
|
+
this.businessLine = req.businessLine;
|
|
107
91
|
this.rowData = this.flattenReport(report).map(acc => ({
|
|
108
92
|
...acc,
|
|
109
93
|
openingBalance: Number(acc.openingBalance).toFixed(3),
|
|
@@ -123,7 +107,7 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
123
107
|
['Currency:', this.currency],
|
|
124
108
|
['Date Type:', this.dateType],
|
|
125
109
|
['From Date:', this.fromDate],
|
|
126
|
-
['Business
|
|
110
|
+
['Business Line:', this.businessLine],
|
|
127
111
|
['To Date:', this.toDate],
|
|
128
112
|
];
|
|
129
113
|
this.searchCriteria = searchCriteria;
|
|
@@ -141,7 +125,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
141
125
|
sub.coaGroups.forEach(coa => {
|
|
142
126
|
coa.accounts.forEach(account => rows.push(account));
|
|
143
127
|
rows.push({
|
|
144
|
-
companyFullName: '',
|
|
145
128
|
coaCode: '',
|
|
146
129
|
accountCode: 'Total:',
|
|
147
130
|
accountDescription: `${coa.coaDescription}`,
|
|
@@ -154,7 +137,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
154
137
|
});
|
|
155
138
|
});
|
|
156
139
|
rows.push({
|
|
157
|
-
companyFullName: '',
|
|
158
140
|
coaCode: '',
|
|
159
141
|
accountCode: 'Total:',
|
|
160
142
|
accountDescription: `${sub.subCOADescription}`,
|
|
@@ -167,7 +149,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
167
149
|
});
|
|
168
150
|
});
|
|
169
151
|
rows.push({
|
|
170
|
-
companyFullName: '',
|
|
171
152
|
coaCode: '',
|
|
172
153
|
accountCode: 'Total:',
|
|
173
154
|
accountDescription: `${main.mainCOADescription}`,
|
|
@@ -180,7 +161,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
180
161
|
});
|
|
181
162
|
});
|
|
182
163
|
rows.push({
|
|
183
|
-
companyFullName: '',
|
|
184
164
|
coaCode: 'TOTAL:',
|
|
185
165
|
accountCode: '',
|
|
186
166
|
accountDescription: '',
|
|
@@ -330,7 +310,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
330
310
|
// --- headers ---
|
|
331
311
|
const headers = [
|
|
332
312
|
'Sr No',
|
|
333
|
-
'Business Unit',
|
|
334
313
|
'COA Code', 'Account Code', 'Account Description',
|
|
335
314
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
336
315
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -339,7 +318,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
339
318
|
// --- rows ---
|
|
340
319
|
const rows = flatReport.map((acc, i) => [
|
|
341
320
|
i + 1,
|
|
342
|
-
acc.companyFullName,
|
|
343
321
|
acc.coaCode,
|
|
344
322
|
acc.accountCode,
|
|
345
323
|
acc.accountDescription,
|
|
@@ -351,16 +329,15 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
351
329
|
]);
|
|
352
330
|
// --- column widths ---
|
|
353
331
|
const columnStyles = {
|
|
354
|
-
0: { cellWidth:
|
|
332
|
+
0: { cellWidth: 15 },
|
|
355
333
|
1: { cellWidth: 25 },
|
|
356
334
|
2: { cellWidth: 25 },
|
|
357
|
-
3: { cellWidth:
|
|
358
|
-
4: { cellWidth:
|
|
335
|
+
3: { cellWidth: 70 },
|
|
336
|
+
4: { cellWidth: 30 },
|
|
359
337
|
5: { cellWidth: 30 },
|
|
360
|
-
6: { cellWidth:
|
|
361
|
-
7: { cellWidth:
|
|
362
|
-
8: { cellWidth:
|
|
363
|
-
9: { cellWidth: 30 },
|
|
338
|
+
6: { cellWidth: 30 },
|
|
339
|
+
7: { cellWidth: 30 },
|
|
340
|
+
8: { cellWidth: 30 },
|
|
364
341
|
};
|
|
365
342
|
// --- draw table ---
|
|
366
343
|
doc.autoTable({
|
|
@@ -391,9 +368,9 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
391
368
|
if (isTotalRow)
|
|
392
369
|
data.cell.styles.fontStyle = 'bold';
|
|
393
370
|
// highlight negatives in red
|
|
394
|
-
if (data.column.index >
|
|
371
|
+
if (data.column.index > 3) {
|
|
395
372
|
const keyMap = ["openingBalance", "debit", "credit", "netMovement", "closingBalance"];
|
|
396
|
-
const key = keyMap[data.column.index -
|
|
373
|
+
const key = keyMap[data.column.index - 4];
|
|
397
374
|
const raw = rowData[key];
|
|
398
375
|
const num = Number(raw);
|
|
399
376
|
if (!isNaN(num) && num < 0) {
|
|
@@ -428,7 +405,7 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
428
405
|
}
|
|
429
406
|
// --- title ---
|
|
430
407
|
const title = 'Xpress Money - MI Accounts';
|
|
431
|
-
sheet.mergeCells(1, 3, 1,
|
|
408
|
+
sheet.mergeCells(1, 3, 1, 9);
|
|
432
409
|
const titleCell = sheet.getCell('C1');
|
|
433
410
|
titleCell.value = title;
|
|
434
411
|
titleCell.font = { size: 15, bold: true };
|
|
@@ -482,7 +459,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
482
459
|
// --- headers ---
|
|
483
460
|
const headers = [
|
|
484
461
|
'Sr No',
|
|
485
|
-
'Business Unit',
|
|
486
462
|
'COA Code', 'Account Code', 'Account Description',
|
|
487
463
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
488
464
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -505,7 +481,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
505
481
|
});
|
|
506
482
|
return [
|
|
507
483
|
idx + 1,
|
|
508
|
-
acc.companyFullName,
|
|
509
484
|
acc.coaCode,
|
|
510
485
|
acc.accountCode,
|
|
511
486
|
acc.accountDescription,
|
|
@@ -515,28 +490,28 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
515
490
|
});
|
|
516
491
|
rows.forEach(r => {
|
|
517
492
|
const row = sheet.getRow(currentRow++);
|
|
518
|
-
r.slice(0,
|
|
493
|
+
r.slice(0, 9).forEach((val, i) => {
|
|
519
494
|
const cell = row.getCell(i + 1);
|
|
520
495
|
// convert back to number for Excel math but show 3 decimals
|
|
521
|
-
if (i >
|
|
496
|
+
if (i > 3 && val !== '')
|
|
522
497
|
cell.value = parseFloat(val.toString());
|
|
523
498
|
else
|
|
524
499
|
cell.value = val;
|
|
525
500
|
cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };
|
|
526
501
|
// bold total rows
|
|
527
|
-
if (r[
|
|
502
|
+
if (r[9])
|
|
528
503
|
cell.font = { bold: true };
|
|
529
504
|
// negative numbers red
|
|
530
|
-
if (i >
|
|
531
|
-
cell.font = { color: { argb: 'FF0000' }, bold: r[
|
|
505
|
+
if (i > 3 && typeof cell.value === 'number' && cell.value < 0) {
|
|
506
|
+
cell.font = { color: { argb: 'FF0000' }, bold: r[9] ? true : undefined };
|
|
532
507
|
}
|
|
533
508
|
// set number format to show 3 decimals
|
|
534
|
-
if (i >
|
|
509
|
+
if (i > 3)
|
|
535
510
|
cell.numFmt = '0.000';
|
|
536
511
|
});
|
|
537
512
|
});
|
|
538
513
|
// --- column widths ---
|
|
539
|
-
const widths = [8,
|
|
514
|
+
const widths = [8, 15, 15, 40, 20, 20, 20, 20, 20];
|
|
540
515
|
widths.forEach((w, i) => sheet.getColumn(i + 1).width = w);
|
|
541
516
|
// --- save file ---
|
|
542
517
|
workbook.xlsx.writeBuffer().then(buffer => {
|
|
@@ -559,7 +534,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
559
534
|
// --- table headers (add Sr No at start) ---
|
|
560
535
|
const headers = [
|
|
561
536
|
'Sr No',
|
|
562
|
-
'Business Unit',
|
|
563
537
|
'COA Code', 'Account Code', 'Account Description',
|
|
564
538
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
565
539
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -567,7 +541,6 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
567
541
|
// --- table rows (prepend Sr No) ---
|
|
568
542
|
const rows = this.flattenReport(this.trialBalanceReport).map((acc, index) => [
|
|
569
543
|
index + 1,
|
|
570
|
-
acc.companyFullName,
|
|
571
544
|
acc.coaCode,
|
|
572
545
|
acc.accountCode,
|
|
573
546
|
acc.accountDescription,
|
|
@@ -635,9 +608,9 @@ export class TrialBalanceAccountsReportComponent {
|
|
|
635
608
|
fromDate: modal.fromDay,
|
|
636
609
|
toDate: modal.toDay,
|
|
637
610
|
accountStatus: modal.accountStatus.join(','),
|
|
638
|
-
|
|
611
|
+
businessLine: modal.businessLine,
|
|
639
612
|
currency: modal.currency,
|
|
640
|
-
companyCode:
|
|
613
|
+
companyCode: "BH",
|
|
641
614
|
reportPeriod: `${formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US')}`,
|
|
642
615
|
};
|
|
643
616
|
this.getTrialBalanceAccountsReport(req);
|
|
@@ -655,4 +628,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
655
628
|
type: HostListener,
|
|
656
629
|
args: ['window:resize', ['$event']]
|
|
657
630
|
}] } });
|
|
658
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpYWwtYmFsYW5jZS1hY2NvdW50cy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0L3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7QUEyQnhDLE1BQU0sT0FBTyxtQ0FBbUM7SUEyRTlDLFlBQW9CLGFBQTRCLEVBQVUsYUFBNEI7UUFBbEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXhFdEYsZUFBVSxHQUFXLDBCQUEwQixDQUFBO1FBSS9DLDBCQUFxQixHQUFHLHNCQUFzQixDQUFDO1FBQy9DLGlCQUFZLEdBQTJCLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztRQUV2RSx5QkFBb0IsR0FBVyxPQUFPLENBQUM7UUFDdkMsYUFB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QUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDNUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDL0IsWUFBWSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRTtTQUMxSCxDQUFDO1FBRUYsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7Z0lBMXRCVSxtQ0FBbUM7b0hBQW5DLG1DQUFtQyx1SUNwQ2hELGcrQ0F3Qk07MkZEWU8sbUNBQW1DO2tCQUwvQyxTQUFTOytCQUNFLG1DQUFtQztnSUEwTzdDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbkFwaSwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQWNjb3VudERldGFpbCwgVHJpYWxCYWxhbmNlUmVwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0L3RyaWFsLWJhbGFuY2UtYWNjb3VudHMubW9kZWxzJztcclxuaW1wb3J0IHsgUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcclxuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xyXG5pbXBvcnQgKiBhcyBFeGNlbEpTIGZyb20gJ2V4Y2VsanMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LnNlcnZpY2UnO1xyXG5cclxuXHJcbmRlY2xhcmUgbW9kdWxlICdqc3BkZicge1xyXG4gIGludGVyZmFjZSBqc1BERiB7XHJcbiAgICBhdXRvVGFibGU6IChvcHRpb25zOiBhbnkpID0+IGpzUERGO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmlhbEJhbGFuY2VBY2NvdW50c1JlcG9ydFJlcXVlc3REVE8ge1xyXG4gIHllYXI6IG51bWJlcjtcclxuICBkYXRlVHlwZTogc3RyaW5nO1xyXG4gIGZyb21EYXRlOiBzdHJpbmc7XHJcbiAgdG9EYXRlOiBzdHJpbmc7XHJcbiAgYWNjb3VudFN0YXR1czogc3RyaW5nO1xyXG4gIGJ1c2luZXNzVW5pdDogc3RyaW5nO1xyXG4gIGN1cnJlbmN5OiBzdHJpbmc7XHJcbiAgY29tcGFueUNvZGU6IHN0cmluZztcclxuICByZXBvcnRQZXJpb2Q6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdHJpYWwtYmFsYW5jZS1hY2NvdW50cy1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJpYWwtYmFsYW5jZS1hY2NvdW50cy1yZXBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJpYWxCYWxhbmNlQWNjb3VudHNSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgUmVwb3J0TmFtZTogc3RyaW5nID0gXCJUcmlhbCBCYWxhbmNlIC0gQWNjb3VudHNcIlxyXG4gIGdyaWRBcGk6IEdyaWRBcGk7XHJcbiAgbWV0YURhdGFPbmU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgbWV0YURhdGFUd286IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgQ29tcG9uZW50TG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcztcclxuICBsb2FkaW5nU3RhdGU6IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gIHRyaWFsQmFsYW5jZVJlcG9ydDogVHJpYWxCYWxhbmNlUmVwb3J0O1xyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxNTtcclxuICBkYXRhUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdO1xyXG5cclxuICBhY2NvdW50U3RhdHVzOiBzdHJpbmcgPSAnJztcclxuICBjdXJyZW5jeTogc3RyaW5nID0gJyc7XHJcbiAgZGF0ZVR5cGU6IHN0cmluZyA9ICcnO1xyXG4gIGZyb21EYXRlOiBzdHJpbmcgPSAnJztcclxuICB0b0RhdGU6IHN0cmluZyA9ICcnO1xyXG4gIGJ1c2luZXNzVW5pdDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHJlcG9ydFVzZXI6IHN0cmluZyA9ICcnO1xyXG4gIHJlcG9ydFRpbWU6IHN0cmluZyA9ICcnO1xyXG4gIHJlcG9ydFBlcmlvZDogc3RyaW5nID0gJyc7XHJcbiAgaXNGb3JtVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IGZhbHNlLFxyXG4gICAgY2VsbFN0eWxlOiB7XHJcbiAgICAgIHVzZXJTZWxlY3Q6ICd0ZXh0JyxcclxuICAgICAgJ2xpbmUtaGVpZ2h0JzogJzEuMicsXHJcbiAgICAgICd3aGl0ZS1zcGFjZSc6ICdub3JtYWwnLFxyXG4gICAgICAnd29yZC1icmVhayc6ICdub3JtYWwnLFxyXG4gICAgICAnb3ZlcmZsb3ctd3JhcCc6ICdicmVhay13b3JkJyxcclxuICAgIH0sXHJcblxyXG4gICAgd3JhcEhlYWRlclRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVhZGVySGVpZ2h0OiB0cnVlLFxyXG4gICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVpZ2h0OiB0cnVlLFxyXG5cclxuICAgIGNlbGxDbGFzc1J1bGVzOiB7XHJcbiAgICAgICd0b3RhbC1wb3NpdGl2ZSc6IHBhcmFtcyA9PiBwYXJhbXMuZGF0YT8uaXNUb3RhbFJvdyAmJiBwYXJhbXMudmFsdWUgPj0gMCxcclxuICAgICAgJ3RvdGFsLW5lZ2F0aXZlJzogcGFyYW1zID0+IHBhcmFtcy5kYXRhPy5pc1RvdGFsUm93ICYmIHBhcmFtcy52YWx1ZSA8IDAsXHJcbiAgICAgICdwb3NpdGl2ZS12YWx1ZSc6IHBhcmFtcyA9PiAhcGFyYW1zLmRhdGE/LmlzVG90YWxSb3cgJiYgcGFyYW1zLnZhbHVlID49IDAsXHJcbiAgICAgICduZWdhdGl2ZS12YWx1ZSc6IHBhcmFtcyA9PiAhcGFyYW1zLmRhdGE/LmlzVG90YWxSb3cgJiYgcGFyYW1zLnZhbHVlIDwgMCxcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByb3dDbGFzc1J1bGVzID0ge1xyXG4gICAgJ3RvdGFsLXJvdyc6IHBhcmFtcyA9PiBwYXJhbXMuZGF0YT8uaXNUb3RhbFJvd1xyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID1cclxuICAgIFtcclxuICAgICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3MgVW5pdCcsIGZpZWxkOiAnY29tcGFueUZ1bGxOYW1lJywgdG9vbHRpcEZpZWxkOiAnY29tcGFueUZ1bGxOYW1lJywgbWluV2lkdGg6IDcwLCBtYXhXaWR0aDogMTAwIH0sXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0NPQSBDb2RlJywgZmllbGQ6ICdjb2FDb2RlJywgdG9vbHRpcEZpZWxkOiAnY29hQ29kZScsIG1pbldpZHRoOiA2MCwgbWF4V2lkdGg6IDEwMCB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdBY2NvdW50IENvZGUnLCBmaWVsZDogJ2FjY291bnRDb2RlJywgdG9vbHRpcEZpZWxkOiAnYWNjb3VudENvZGUnLCBtaW5XaWR0aDogODAsIG1heFdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBoZWFkZXJOYW1lOiAnQWNjb3VudCBEZXNjcmlwdGlvbicsIGZpZWxkOiAnYWNjb3VudERlc2NyaXB0aW9uJywgdG9vbHRpcEZpZWxkOiAnYWNjb3VudERlc2NyaXB0aW9uJywgbWluV2lkdGg6IDE4MCwgbWF4V2lkdGg6IDIzMCB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdPcGVuaW5nIEJhbGFuY2UgTG9jYWwgQW1vdW50JywgZmllbGQ6ICdvcGVuaW5nQmFsYW5jZScsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnb3BlbmluZ0JhbGFuY2UnIH0sXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0RlYml0cyBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2RlYml0JywgdHlwZTogJ251bWVyaWNDb2x1bW4nLCB0b29sdGlwRmllbGQ6ICdkZWJpdCcgfSxcclxuICAgICAgeyBoZWFkZXJOYW1lOiAnQ3JlZGl0cyBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2NyZWRpdCcsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnY3JlZGl0JyB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdOZXQgTW92ZW1lbnQgTG9jYWwgQW1vdW50JywgZmllbGQ6ICduZXRNb3ZlbWVudCcsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnbmV0TW92ZW1lbnQnIH0sXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0Nsb3NpbmcgQmFsYW5jZSBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2Nsb3NpbmdCYWxhbmNlJywgdHlwZTogJ251bWVyaWNDb2x1bW4nLCB0b29sdGlwRmllbGQ6ICdjbG9zaW5nQmFsYW5jZScgfVxyXG4gICAgXTtcclxuXHJcbiAgcm93RGF0YTogQWNjb3VudERldGFpbFtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaTogQ29sdW1uQXBpO1xyXG4gIGJ1c2luZXNzVW5pdHMgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5yZXBvcnRTZXJ2aWNlLkdldEJ1c2luZXNzVW5pdEZvclRyaWFsQmFsYW5jZUFjY291bnRzUmVwb3J0KCkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5idXNpbmVzc1VuaXRzID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBidXNpbmVzcyB1bml0czonLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkVycm9yO1xyXG4gICAgICAgIH0sIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImdldHRpbmcgYnVzaW5lc3MgdW5pdHMgYXBpIGNvbXBsZXRlZFwiKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUcmlhbEJhbGFuY2VBY2NvdW50c1JlcG9ydChyZXE6IGFueSkge1xyXG5cclxuICAgIHRoaXMuZGF0YVJlYWR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCA9IG51bGw7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuTG9hZGluZztcclxuXHJcbiAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0VHJpYWxCYWxhbmNlQWNjb3VudHNSZXBvcnQocmVxKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVwb3J0OiBUcmlhbEJhbGFuY2VSZXBvcnQpID0+IHtcclxuICAgICAgICB0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCA9IHJlcG9ydDtcclxuICAgICAgICB0aGlzLmRhdGFSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy50cmlhbEJhbGFuY2VSZXBvcnQucmVwb3J0VXNlcjtcclxuICAgICAgICB0aGlzLnJlcG9ydFRpbWUgPSBmb3JtYXREYXRlKG5ldyBEYXRlKCksICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKTtcclxuICAgICAgICB0aGlzLnJlcG9ydFBlcmlvZCA9IHJlcS5yZXBvcnRQZXJpb2Q7XHJcblxyXG4gICAgICAgIHRoaXMuYWNjb3VudFN0YXR1cyA9IHJlcS5hY2NvdW50U3RhdHVzO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3kgPSByZXEuY3VycmVuY3k7XHJcbiAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHJlcS5kYXRlVHlwZSA9PSBcIlZEXCIgPyBcIlZhbHVlIERhdGVcIiA6IFwiUG9zdGluZyBEYXRlXCI7XHJcbiAgICAgICAgdGhpcy5idXNpbmVzc1VuaXQgPSB0aGlzLmJ1c2luZXNzVW5pdHMuZmluZCgoYnUpID0+IGJ1LmNvbXBhbnlDb2RlID09PSByZXEuYnVzaW5lc3NVbml0KS5jb21wYW55RnVsbE5hbWU7XHJcblxyXG4gICAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuZmxhdHRlblJlcG9ydChyZXBvcnQpLm1hcChhY2MgPT4gKHtcclxuICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgIG9wZW5pbmdCYWxhbmNlOiBOdW1iZXIoYWNjLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgZGViaXQ6IE51bWJlcihhY2MuZGViaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBjcmVkaXQ6IE51bWJlcihhY2MuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgbmV0TW92ZW1lbnQ6IE51bWJlcihhY2MubmV0TW92ZW1lbnQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBjbG9zaW5nQmFsYW5jZTogTnVtYmVyKGFjYy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXRhRGF0YU9uZSA9IHtcclxuICAgICAgICAgICdSZXBvcnQgUGVyaW9kJzogdGhpcy5yZXBvcnRQZXJpb2QsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXRhRGF0YVR3byA9IHtcclxuICAgICAgICAgICdSZXBvcnQgVXNlciAmIFRpbWUnOiBgJHt0aGlzLnJlcG9ydFVzZXJ9IEAgJHt0aGlzLnJlcG9ydFRpbWV9YCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICAgICAgWydBY2NvdW50IFN0YXR1czonLCB0aGlzLmFjY291bnRTdGF0dXNdLFxyXG4gICAgICAgICAgWydDdXJyZW5jeTonLCB0aGlzLmN1cnJlbmN5XSxcclxuICAgICAgICAgIFsnRGF0ZSBUeXBlOicsIHRoaXMuZGF0ZVR5cGVdLFxyXG4gICAgICAgICAgWydGcm9tIERhdGU6JywgdGhpcy5mcm9tRGF0ZV0sXHJcbiAgICAgICAgICBbJ0J1c2luZXNzIFVuaXQ6JywgdGhpcy5idXNpbmVzc1VuaXRdLFxyXG4gICAgICAgICAgWydUbyBEYXRlOicsIHRoaXMudG9EYXRlXSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaENyaXRlcmlhID0gc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdHJpYWwgYmFsYW5jZSByZXBvcnQ6JywgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuUmVwb3J0KHJlcG9ydDogVHJpYWxCYWxhbmNlUmVwb3J0KTogQWNjb3VudERldGFpbFtdIHtcclxuICAgIGNvbnN0IHJvd3M6IEFjY291bnREZXRhaWxbXSA9IFtdO1xyXG5cclxuICAgIHJlcG9ydC5tYWluQ09BR3JvdXBzLmZvckVhY2gobWFpbiA9PiB7XHJcbiAgICAgIG1haW4uc3ViQ09BR3JvdXBzLmZvckVhY2goc3ViID0+IHtcclxuICAgICAgICBzdWIuY29hR3JvdXBzLmZvckVhY2goY29hID0+IHtcclxuICAgICAgICAgIGNvYS5hY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4gcm93cy5wdXNoKGFjY291bnQpKTtcclxuXHJcbiAgICAgICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgICAgICBjb21wYW55RnVsbE5hbWU6ICcnLFxyXG4gICAgICAgICAgICBjb2FDb2RlOiAnJyxcclxuICAgICAgICAgICAgYWNjb3VudENvZGU6ICdUb3RhbDonLFxyXG4gICAgICAgICAgICBhY2NvdW50RGVzY3JpcHRpb246IGAke2NvYS5jb2FEZXNjcmlwdGlvbn1gLFxyXG4gICAgICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKGNvYS50b3RhbHMub3BlbmluZ0JhbGFuY2UpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIGRlYml0OiBOdW1iZXIoY29hLnRvdGFscy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgICAgY3JlZGl0OiBOdW1iZXIoY29hLnRvdGFscy5jcmVkaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIoY29hLnRvdGFscy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihjb2EudG90YWxzLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgIGNvbXBhbnlGdWxsTmFtZTogJycsXHJcbiAgICAgICAgICBjb2FDb2RlOiAnJyxcclxuICAgICAgICAgIGFjY291bnRDb2RlOiAnVG90YWw6JyxcclxuICAgICAgICAgIGFjY291bnREZXNjcmlwdGlvbjogYCR7c3ViLnN1YkNPQURlc2NyaXB0aW9ufWAsXHJcbiAgICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKHN1Yi50b3RhbHMub3BlbmluZ0JhbGFuY2UpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBkZWJpdDogTnVtYmVyKHN1Yi50b3RhbHMuZGViaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBjcmVkaXQ6IE51bWJlcihzdWIudG90YWxzLmNyZWRpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIoc3ViLnRvdGFscy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNsb3NpbmdCYWxhbmNlOiBOdW1iZXIoc3ViLnRvdGFscy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgIGNvbXBhbnlGdWxsTmFtZTogJycsXHJcbiAgICAgICAgY29hQ29kZTogJycsXHJcbiAgICAgICAgYWNjb3VudENvZGU6ICdUb3RhbDonLFxyXG4gICAgICAgIGFjY291bnREZXNjcmlwdGlvbjogYCR7bWFpbi5tYWluQ09BRGVzY3JpcHRpb259YCxcclxuICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKG1haW4udG90YWxzLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgIGRlYml0OiBOdW1iZXIobWFpbi50b3RhbHMuZGViaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgY3JlZGl0OiBOdW1iZXIobWFpbi50b3RhbHMuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIobWFpbi50b3RhbHMubmV0TW92ZW1lbnQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihtYWluLnRvdGFscy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcm93cy5wdXNoKHtcclxuICAgICAgY29tcGFueUZ1bGxOYW1lOiAnJyxcclxuICAgICAgY29hQ29kZTogJ1RPVEFMOicsXHJcbiAgICAgIGFjY291bnRDb2RlOiAnJyxcclxuICAgICAgYWNjb3VudERlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgb3BlbmluZ0JhbGFuY2U6IE51bWJlcihyZXBvcnQuZ3JhbmRUb3RhbC5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgZGViaXQ6IE51bWJlcihyZXBvcnQuZ3JhbmRUb3RhbC5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgY3JlZGl0OiBOdW1iZXIocmVwb3J0LmdyYW5kVG90YWwuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICBuZXRNb3ZlbWVudDogTnVtYmVyKHJlcG9ydC5ncmFuZFRvdGFsLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpLFxyXG4gICAgICBjbG9zaW5nQmFsYW5jZTogTnVtYmVyKHJlcG9ydC5ncmFuZFRvdGFsLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcm93cztcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGkgPSBwYXJhbXMuY29sdW1uQXBpO1xyXG5cclxuICAgIGNvbnN0IGFsbENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcclxuICAgIHBhcmFtcy5jb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRDb2xJZCgpKTtcclxuICAgIH0pO1xyXG4gICAgcGFyYW1zLmNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzKTtcclxuICAgIHRoaXMub25SZXNpemUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaSAmJiB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCkge1xyXG4gICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSAoc3RyOiBhbnkpOiBzdHJpbmcgPT5cclxuICAgICAgc3RyXHJcbiAgICAgICAgPy50b1N0cmluZygpXHJcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAucmVwbGFjZSgvLC9nLCAnJylcclxuICAgICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHUyMDBCLVxcdTIwMERcXHVGRUZGXS9nLCAnJylcclxuICAgICAgICAudHJpbSgpO1xyXG5cclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoc2VhcmNoKSB7XHJcbiAgICAgIC8vIGZpbHRlciBmcm9tIGFscmVhZHkgZm9ybWF0dGVkIHJvd0RhdGFcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5mbGF0dGVuUmVwb3J0KHRoaXMudHJpYWxCYWxhbmNlUmVwb3J0KVxyXG4gICAgICAgIC5tYXAoYWNjID0+ICh7XHJcbiAgICAgICAgICAuLi5hY2MsXHJcbiAgICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKGFjYy5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGRlYml0OiBOdW1iZXIoYWNjLmRlYml0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgY3JlZGl0OiBOdW1iZXIoYWNjLmNyZWRpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIoYWNjLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihhY2MuY2xvc2luZ0JhbGFuY2UpLnRvRml4ZWQoMylcclxuICAgICAgICB9KSlcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT5cclxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoaXRlbSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydClcclxuICAgICAgICAubWFwKGFjYyA9PiAoe1xyXG4gICAgICAgICAgLi4uYWNjLFxyXG4gICAgICAgICAgb3BlbmluZ0JhbGFuY2U6IE51bWJlcihhY2Mub3BlbmluZ0JhbGFuY2UpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBkZWJpdDogTnVtYmVyKGFjYy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNyZWRpdDogTnVtYmVyKGFjYy5jcmVkaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBuZXRNb3ZlbWVudDogTnVtYmVyKGFjYy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNsb3NpbmdCYWxhbmNlOiBOdW1iZXIoYWNjLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb1BkZigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cmlhbEJhbGFuY2VSZXBvcnQ/Lm1haW5DT0FHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRpdGxlID0gJ1hwcmVzcyBNb25leSAtIE1JIEFjY291bnRzJztcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ1RyaWFsLUJhbGFuY2UtQWNjb3VudHMtUmF3LnBkZic7XHJcblxyXG4gICAgLy8gLS0tIHBhZ2UgJiBsYXlvdXQgLS0tXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzMxMiwgMjEwXSB9KTtcclxuICAgIGNvbnN0IHBhZ2VXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xyXG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IDE1O1xyXG4gICAgY29uc3QgbG9nb1dpZHRoID0gMzguNCwgbG9nb0hlaWdodCA9IDE3LjUsIGxvZ29YID0gbWFyZ2luTGVmdCwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcbiAgICBsZXQgY3VycmVudFkgPSB0aXRsZVkgKyAxNDtcclxuXHJcbiAgICBjb25zdCBsYWJlbFZhbHVlR2FwID0gMjtcclxuICAgIGNvbnN0IHBhaXJHYXAgPSAxNTtcclxuXHJcbiAgICAvLyAtLS0gbWV0YWRhdGEgLS0tXHJcbiAgICBjb25zdCBtZXRhZGF0YTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZSA6ICcsIGAke3RoaXMucmVwb3J0VXNlcn1AJHt0aGlzLnJlcG9ydFRpbWV9YF0sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgLy8gLS0tIGRyYXcgbG9nbyArIHRpdGxlIC0tLVxyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZT8ubG9nb0Jhc2U2NCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgICAgfSBjYXRjaCB7IH1cclxuICAgIH1cclxuICAgIGRvYy5zZXRGb250U2l6ZSgxNSk7XHJcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuICAgIGRvYy50ZXh0KHRpdGxlLCBwYWdlV2lkdGggLyAyLCB0aXRsZVksIHsgYWxpZ246ICdjZW50ZXInIH0pO1xyXG5cclxuICAgIC8vIC0tLSBkcmF3IG1ldGFkYXRhIC0tLVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDEwKTtcclxuICAgIG1ldGFkYXRhLmZvckVhY2goKFtsYWJlbCwgdmFsdWVdLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHkgPSBjdXJyZW50WSArIGkgKiA2O1xyXG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuICAgICAgZG9jLnRleHQobGFiZWwsIG1hcmdpbkxlZnQsIHkpO1xyXG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ25vcm1hbCcpO1xyXG4gICAgICBjb25zdCBsYWJlbFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChsYWJlbCArICcgJyk7XHJcbiAgICAgIGRvYy50ZXh0KHZhbHVlLCBtYXJnaW5MZWZ0ICsgbGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIHkpO1xyXG4gICAgfSk7XHJcbiAgICBjdXJyZW50WSArPSBtZXRhZGF0YS5sZW5ndGggKiA2ICsgNjtcclxuXHJcbiAgICAvLyAtLS0gZHJhdyBzZWFyY2ggY3JpdGVyaWEgaGVhZGluZyAtLS1cclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQoJ1NlYXJjaCBDcml0ZXJpYTotJywgbWFyZ2luTGVmdCwgY3VycmVudFkpO1xyXG4gICAgY3VycmVudFkgKz0gODtcclxuXHJcbiAgICAvLyAtLS0gZHJhdyBzZWFyY2ggY3JpdGVyaWEgcGFpcnMgLS0tXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaENyaXRlcmlhLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSBzZWFyY2hDcml0ZXJpYVtpXTtcclxuICAgICAgY29uc3QgcmlnaHQgPSBzZWFyY2hDcml0ZXJpYVtpICsgMV07IC8vIG1heSBiZSB1bmRlZmluZWRcclxuXHJcbiAgICAgIC8vIC0tLSBMZWZ0IHNpZGUgLS0tXHJcbiAgICAgIGlmIChsZWZ0KSB7XHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQobGVmdFswXSwgbWFyZ2luTGVmdCwgY3VycmVudFkpO1xyXG4gICAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XHJcbiAgICAgICAgY29uc3QgbGVmdExhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxlZnRbMF0gKyAnICcpO1xyXG4gICAgICAgIGRvYy50ZXh0KGxlZnRbMV0gPz8gJycsIG1hcmdpbkxlZnQgKyBsZWZ0TGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIGN1cnJlbnRZKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gLS0tIFJpZ2h0IHNpZGUgKGlmIGF2YWlsYWJsZSkgLS0tXHJcbiAgICAgIGlmIChyaWdodCkge1xyXG4gICAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgICAgIGRvYy50ZXh0KHJpZ2h0WzBdLCBwYWdlV2lkdGggLyAyLCBjdXJyZW50WSk7XHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgICBjb25zdCByaWdodExhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKHJpZ2h0WzBdICsgJyAnKTtcclxuICAgICAgICBkb2MudGV4dChyaWdodFsxXSA/PyAnJywgcGFnZVdpZHRoIC8gMiArIHJpZ2h0TGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIGN1cnJlbnRZKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY3VycmVudFkgKz0gNjsgLy8gbW92ZSBkb3duIGZvciBuZXh0IGxpbmVcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50WSArPSA0O1xyXG5cclxuICAgIC8vIC0tLSBoZWFkZXJzIC0tLVxyXG4gICAgY29uc3QgaGVhZGVycyA9IFtcclxuICAgICAgJ1NyIE5vJyxcclxuICAgICAgJ0J1c2luZXNzIFVuaXQnLFxyXG4gICAgICAnQ09BIENvZGUnLCAnQWNjb3VudCBDb2RlJywgJ0FjY291bnQgRGVzY3JpcHRpb24nLFxyXG4gICAgICAnT3BlbmluZyBCYWxhbmNlIExvY2FsIEFtdCcsICdEZWJpdHMgTG9jYWwgQW10JywgJ0NyZWRpdHMgTG9jYWwgQW10JyxcclxuICAgICAgJ05ldCBNb3ZlbWVudCBMb2NhbCBBbXQnLCAnQ2xvc2luZyBCYWxhbmNlIExvY2FsIEFtdCdcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgZmxhdFJlcG9ydCA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCk7XHJcblxyXG4gICAgLy8gLS0tIHJvd3MgLS0tXHJcbiAgICBjb25zdCByb3dzOiBhbnlbXVtdID0gZmxhdFJlcG9ydC5tYXAoKGFjYywgaSkgPT4gW1xyXG4gICAgICBpICsgMSxcclxuICAgICAgYWNjLmNvbXBhbnlGdWxsTmFtZSxcclxuICAgICAgYWNjLmNvYUNvZGUsXHJcbiAgICAgIGFjYy5hY2NvdW50Q29kZSxcclxuICAgICAgYWNjLmFjY291bnREZXNjcmlwdGlvbixcclxuICAgICAgYWNjLm9wZW5pbmdCYWxhbmNlICE9IG51bGwgPyBOdW1iZXIoYWNjLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpIDogXCJcIixcclxuICAgICAgYWNjLmRlYml0ICE9IG51bGwgPyBOdW1iZXIoYWNjLmRlYml0KS50b0ZpeGVkKDMpIDogXCJcIixcclxuICAgICAgYWNjLmNyZWRpdCAhPSBudWxsID8gTnVtYmVyKGFjYy5jcmVkaXQpLnRvRml4ZWQoMykgOiBcIlwiLFxyXG4gICAgICBhY2MubmV0TW92ZW1lbnQgIT0gbnVsbCA/IE51bWJlcihhY2MubmV0TW92ZW1lbnQpLnRvRml4ZWQoMykgOiBcIlwiLFxyXG4gICAgICBhY2MuY2xvc2luZ0JhbGFuY2UgIT0gbnVsbCA/IE51bWJlcihhY2MuY2xvc2luZ0JhbGFuY2UpLnRvRml4ZWQoMykgOiBcIlwiXHJcbiAgICBdKTtcclxuXHJcbiAgICAvLyAtLS0gY29sdW1uIHdpZHRocyAtLS1cclxuICAgIGNvbnN0IGNvbHVtblN0eWxlczogeyBba2V5OiBudW1iZXJdOiBhbnkgfSA9IHtcclxuICAgICAgMDogeyBjZWxsV2lkdGg6IDEzIH0sXHJcbiAgICAgIDE6IHsgY2VsbFdpZHRoOiAyNSB9LFxyXG4gICAgICAyOiB7IGNlbGxXaWR0aDogMjUgfSxcclxuICAgICAgMzogeyBjZWxsV2lkdGg6IDI1IH0sXHJcbiAgICAgIDQ6IHsgY2VsbFdpZHRoOiA2MCB9LFxyXG4gICAgICA1OiB7IGNlbGxXaWR0aDogMzAgfSxcclxuICAgICAgNjogeyBjZWxsV2lkdGg6IDI4IH0sXHJcbiAgICAgIDc6IHsgY2VsbFdpZHRoOiAyOCB9LFxyXG4gICAgICA4OiB7IGNlbGxXaWR0aDogMjggfSxcclxuICAgICAgOTogeyBjZWxsV2lkdGg6IDMwIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIC0tLSBkcmF3IHRhYmxlIC0tLVxyXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgIGhlYWQ6IFtoZWFkZXJzXSxcclxuICAgICAgYm9keTogcm93cyxcclxuICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgdGhlbWU6ICdncmlkJyxcclxuICAgICAgaGVhZFN0eWxlczoge1xyXG4gICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLFxyXG4gICAgICAgIHRleHRDb2xvcjogMCxcclxuICAgICAgICBmb250U3R5bGU6ICdib2xkJyxcclxuICAgICAgICBmb250U2l6ZTogOSxcclxuICAgICAgICBoYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgIGNlbGxXaWR0aDogJ3dyYXAnLFxyXG4gICAgICAgIG1pbkNlbGxIZWlnaHQ6IDEwXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHlTdHlsZXM6IHtcclxuICAgICAgICBmb250U2l6ZTogOCxcclxuICAgICAgICBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcclxuICAgICAgICB0ZXh0Q29sb3I6IFswLCAwLCAwXVxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZXM6IHsgY2VsbFBhZGRpbmc6IDIsIG92ZXJmbG93OiAnbGluZWJyZWFrJywgbWluQ2VsbEhlaWdodDogNiB9LFxyXG4gICAgICBjb2x1bW5TdHlsZXMsXHJcbiAgICAgIGRpZFBhcnNlQ2VsbDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gZGF0YS5yb3cuaW5kZXg7XHJcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IGZsYXRSZXBvcnRbcm93SW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IGlzVG90YWxSb3cgPSByb3dEYXRhLmlzVG90YWxSb3c7XHJcblxyXG4gICAgICAgIGlmIChpc1RvdGFsUm93KSBkYXRhLmNlbGwuc3R5bGVzLmZvbnRTdHlsZSA9ICdib2xkJztcclxuXHJcbiAgICAgICAgLy8gaGlnaGxpZ2h0IG5lZ2F0aXZlcyBpbiByZWRcclxuICAgICAgICBpZiAoZGF0YS5jb2x1bW4uaW5kZXggPiA0KSB7XHJcbiAgICAgICAgICBjb25zdCBrZXlNYXAgPSBbXCJvcGVuaW5nQmFsYW5jZVwiLCBcImRlYml0XCIsIFwiY3JlZGl0XCIsIFwibmV0TW92ZW1lbnRcIiwgXCJjbG9zaW5nQmFsYW5jZVwiXTtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IGtleU1hcFtkYXRhLmNvbHVtbi5pbmRleCAtIDVdO1xyXG4gICAgICAgICAgY29uc3QgcmF3ID0gcm93RGF0YVtrZXldO1xyXG4gICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHJhdyk7XHJcbiAgICAgICAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtIDwgMCkge1xyXG4gICAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLnRleHRDb2xvciA9IFsyNTUsIDAsIDBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gLS0tIHBhZ2UgbnVtYmVycyAtLS1cclxuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSAoZG9jIGFzIGFueSkuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWxQYWdlczsgaSsrKSB7XHJcbiAgICAgIGRvYy5zZXRQYWdlKGkpO1xyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoOSk7XHJcbiAgICAgIGNvbnN0IGZvb3RlclkgPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gNjtcclxuICAgICAgZG9jLnRleHQoYFBhZ2UgJHtpfSBvZiAke3RvdGFsUGFnZXN9YCwgcGFnZVdpZHRoIC0gMTUsIGZvb3RlclksIHsgYWxpZ246ICdyaWdodCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLS0tIHNhdmUgUERGIC0tLVxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cmlhbEJhbGFuY2VSZXBvcnQ/Lm1haW5DT0FHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ1RyaWFsLUJhbGFuY2UtQWNjb3VudHMtUmF3Lnhsc3gnO1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ1RyaWFsIEJhbGFuY2UnKTtcclxuXHJcbiAgICBsZXQgY3VycmVudFJvdyA9IDE7XHJcblxyXG4gICAgLy8gLS0tIGFkZCBsb2dvIGlmIGF2YWlsYWJsZSAtLS1cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2U/LmxvZ29CYXNlNjQpIHtcclxuICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5sb2dvQmFzZTY0LnJlcGxhY2UoL15kYXRhOmltYWdlXFwvXFx3KztiYXNlNjQsLywgJycpO1xyXG4gICAgICBjb25zdCBpbWFnZUlkID0gd29ya2Jvb2suYWRkSW1hZ2UoeyBiYXNlNjQ6IGJhc2U2NERhdGEsIGV4dGVuc2lvbjogJ3BuZycgfSk7XHJcbiAgICAgIHNoZWV0LmFkZEltYWdlKGltYWdlSWQsIHsgdGw6IHsgY29sOiAwLCByb3c6IDAgfSwgZXh0OiB7IHdpZHRoOiAxMjAsIGhlaWdodDogNjAgfSwgZWRpdEFzOiAnb25lQ2VsbCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLS0tIHRpdGxlIC0tLVxyXG4gICAgY29uc3QgdGl0bGUgPSAnWHByZXNzIE1vbmV5IC0gTUkgQWNjb3VudHMnO1xyXG4gICAgc2hlZXQubWVyZ2VDZWxscygxLCAzLCAxLCAxMCk7XHJcbiAgICBjb25zdCB0aXRsZUNlbGwgPSBzaGVldC5nZXRDZWxsKCdDMScpO1xyXG4gICAgdGl0bGVDZWxsLnZhbHVlID0gdGl0bGU7XHJcbiAgICB0aXRsZUNlbGwuZm9udCA9IHsgc2l6ZTogMTUsIGJvbGQ6IHRydWUgfTtcclxuICAgIHRpdGxlQ2VsbC5hbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdjZW50ZXInLCB2ZXJ0aWNhbDogJ21pZGRsZScgfTtcclxuICAgIGN1cnJlbnRSb3cgPSA0O1xyXG5cclxuICAgIC8vIC0tLSBtZXRhZGF0YSAtLS1cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFBlcmlvZDonLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICAgIFsnUmVwb3J0IFVzZXIgJiBUaW1lIDogJywgYCR7dGhpcy5yZXBvcnRVc2VyfUAke3RoaXMucmVwb3J0VGltZX1gXSxcclxuICAgIF07XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSkgPT4ge1xyXG4gICAgICBzaGVldC5tZXJnZUNlbGxzKGN1cnJlbnRSb3csIDEsIGN1cnJlbnRSb3csIDYpO1xyXG4gICAgICBjb25zdCByb3cgPSBzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgcm93LmdldENlbGwoMSkudmFsdWUgPSB7IHJpY2hUZXh0OiBbeyB0ZXh0OiBsYWJlbCArICcgJywgZm9udDogeyBib2xkOiB0cnVlIH0gfSwgeyB0ZXh0OiB2YWx1ZSB9XSB9O1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgd3JhcFRleHQ6IHRydWUgfTtcclxuICAgIH0pO1xyXG4gICAgY3VycmVudFJvdysrO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgaGVhZGluZyAtLS1cclxuICAgIHNoZWV0Lm1lcmdlQ2VsbHMoY3VycmVudFJvdywgMSwgY3VycmVudFJvdywgNik7XHJcbiAgICBzaGVldC5nZXRDZWxsKGN1cnJlbnRSb3csIDEpLnZhbHVlID0gJ1NlYXJjaCBDcml0ZXJpYTotJztcclxuICAgIHNoZWV0LmdldENlbGwoY3VycmVudFJvdywgMSkuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgY3VycmVudFJvdyArPSAyO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWFyY2hDcml0ZXJpYS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICBjb25zdCBsZWZ0ID0gc2VhcmNoQ3JpdGVyaWFbaV07XHJcbiAgICAgIGNvbnN0IHJpZ2h0ID0gc2VhcmNoQ3JpdGVyaWFbaSArIDFdOyAvLyBtYXkgYmUgdW5kZWZpbmVkXHJcbiAgICAgIGNvbnN0IHJvdyA9IHNoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG5cclxuICAgICAgLy8gTGVmdCBjZWxsXHJcbiAgICAgIHNoZWV0Lm1lcmdlQ2VsbHMocm93Lm51bWJlciwgMSwgcm93Lm51bWJlciwgMyk7XHJcbiAgICAgIHJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgIHJpY2hUZXh0OiBbXHJcbiAgICAgICAgICB7IHRleHQ6IChsZWZ0Py5bMF0gPz8gJycpICsgJyAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgeyB0ZXh0OiBsZWZ0Py5bMV0gPz8gJycgfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgcm93LmdldENlbGwoMSkuYWxpZ25tZW50ID0geyB3cmFwVGV4dDogdHJ1ZSwgdmVydGljYWw6ICdtaWRkbGUnIH07XHJcblxyXG4gICAgICAvLyBSaWdodCBjZWxsIChvbmx5IGlmIHByZXNlbnQpXHJcbiAgICAgIGlmIChyaWdodCkge1xyXG4gICAgICAgIHNoZWV0Lm1lcmdlQ2VsbHMocm93Lm51bWJlciwgNCwgcm93Lm51bWJlciwgNik7XHJcbiAgICAgICAgcm93LmdldENlbGwoNCkudmFsdWUgPSB7XHJcbiAgICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgICB7IHRleHQ6IChyaWdodD8uWzBdID8/ICcnKSArICcgJywgZm9udDogeyBib2xkOiB0cnVlIH0gfSxcclxuICAgICAgICAgICAgeyB0ZXh0OiByaWdodD8uWzFdID8/ICcnIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJvdy5nZXRDZWxsKDQpLmFsaWdubWVudCA9IHsgd3JhcFRleHQ6IHRydWUsIHZlcnRpY2FsOiAnbWlkZGxlJyB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gLS0tIGhlYWRlcnMgLS0tXHJcbiAgICBjb25zdCBoZWFkZXJzID0gW1xyXG4gICAgICAnU3IgTm8nLFxyXG4gICAgICAnQnVzaW5lc3MgVW5pdCcsXHJcbiAgICAgICdDT0EgQ29kZScsICdBY2NvdW50IENvZGUnLCAnQWNjb3VudCBEZXNjcmlwdGlvbicsXHJcbiAgICAgICdPcGVuaW5nIEJhbGFuY2UgTG9jYWwgQW10JywgJ0RlYml0cyBMb2NhbCBBbXQnLCAnQ3JlZGl0cyBMb2NhbCBBbXQnLFxyXG4gICAgICAnTmV0IE1vdmVtZW50IExvY2FsIEFtdCcsICdDbG9zaW5nIEJhbGFuY2UgTG9jYWwgQW10J1xyXG4gICAgXTtcclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHNoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgaGVhZGVycy5mb3JFYWNoKChoLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGwgPSBoZWFkZXJSb3cuZ2V0Q2VsbChpICsgMSk7XHJcbiAgICAgIGNlbGwudmFsdWUgPSBoO1xyXG4gICAgICBjZWxsLmZvbnQgPSB7IGJvbGQ6IHRydWUgfTtcclxuICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdjZW50ZXInLCB2ZXJ0aWNhbDogJ21pZGRsZScsIHdyYXBUZXh0OiB0cnVlIH07XHJcbiAgICAgIGNlbGwuZmlsbCA9IHsgdHlwZTogJ3BhdHRlcm4nLCBwYXR0ZXJuOiAnc29saWQnLCBmZ0NvbG9yOiB7IGFyZ2I6ICdEQ0RDREMnIH0gfTtcclxuICAgICAgY2VsbC5ib3JkZXIgPSB7IHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0gfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIC0tLSByb3dzIHdpdGggMyBkZWNpbWFscyBmb3IgbnVtZXJpYyBjb2x1bW5zIC0tLVxyXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCkubWFwKChhY2MsIGlkeCkgPT4ge1xyXG4gICAgICBjb25zdCBudW1lcmljQ29sdW1ucyA9IFsnb3BlbmluZ0JhbGFuY2UnLCAnZGViaXQnLCAnY3JlZGl0JywgJ25ldE1vdmVtZW50JywgJ2Nsb3NpbmdCYWxhbmNlJ107XHJcbiAgICAgIGNvbnN0IHJvd0RhdGEgPSBudW1lcmljQ29sdW1ucy5tYXAoY29sID0+IHtcclxuICAgICAgICBjb25zdCB2YWwgPSBOdW1iZXIoYWNjW2NvbF0pO1xyXG4gICAgICAgIHJldHVybiAhaXNOYU4odmFsKSA/IHZhbC50b0ZpeGVkKDMpIDogJyc7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGlkeCArIDEsXHJcbiAgICAgICAgYWNjLmNvbXBhbnlGdWxsTmFtZSxcclxuICAgICAgICBhY2MuY29hQ29kZSxcclxuICAgICAgICBhY2MuYWNjb3VudENvZGUsXHJcbiAgICAgICAgYWNjLmFjY291bnREZXNjcmlwdGlvbixcclxuICAgICAgICAuLi5yb3dEYXRhLFxyXG4gICAgICAgIGFjYy5pc1RvdGFsUm93IHx8IGZhbHNlXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdyA9IHNoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByLnNsaWNlKDAsIDEwKS5mb3JFYWNoKCh2YWwsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgIC8vIGNvbnZlcnQgYmFjayB0byBudW1iZXIgZm9yIEV4Y2VsIG1hdGggYnV0IHNob3cgMyBkZWNpbWFsc1xyXG4gICAgICAgIGlmIChpID4gNCAmJiB2YWwgIT09ICcnKSBjZWxsLnZhbHVlID0gcGFyc2VGbG9hdCh2YWwudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgZWxzZSBjZWxsLnZhbHVlID0gdmFsO1xyXG5cclxuICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG5cclxuICAgICAgICAvLyBib2xkIHRvdGFsIHJvd3NcclxuICAgICAgICBpZiAoclsxMF0pIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAvLyBuZWdhdGl2ZSBudW1iZXJzIHJlZFxyXG4gICAgICAgIGlmIChpID4gNCAmJiB0eXBlb2YgY2VsbC52YWx1ZSA9PT0gJ251bWJlcicgJiYgY2VsbC52YWx1ZSA8IDApIHtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgY29sb3I6IHsgYXJnYjogJ0ZGMDAwMCcgfSwgYm9sZDogclsxMF0gPyB0cnVlIDogdW5kZWZpbmVkIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgbnVtYmVyIGZvcm1hdCB0byBzaG93IDMgZGVjaW1hbHNcclxuICAgICAgICBpZiAoaSA+IDQpIGNlbGwubnVtRm10ID0gJzAuMDAwJztcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAtLS0gY29sdW1uIHdpZHRocyAtLS1cclxuICAgIGNvbnN0IHdpZHRocyA9IFs4LCAxNiwgMTUsIDE1LCA0MCwgMjAsIDIwLCAyMCwgMjAsIDIwXTtcclxuICAgIHdpZHRocy5mb3JFYWNoKCh3LCBpKSA9PiBzaGVldC5nZXRDb2x1bW4oaSArIDEpLndpZHRoID0gdyk7XHJcblxyXG4gICAgLy8gLS0tIHNhdmUgZmlsZSAtLS1cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pO1xyXG4gICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9Dc3YoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudHJpYWxCYWxhbmNlUmVwb3J0Py5tYWluQ09BR3JvdXBzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdUcmlhbC1CYWxhbmNlLUFjY291bnRzLVJhdy5jc3YnO1xyXG5cclxuICAgIC8vIC0tLSBtZXRhZGF0YSAtLS1cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFRpdGxlOicsICdYcHJlc3MgTW9uZXkgLSBNSSBBY2NvdW50cyddLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZSA6ICcsIGAke3RoaXMucmVwb3J0VXNlcn1AJHt0aGlzLnJlcG9ydFRpbWV9YF0sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgLy8gLS0tIHRhYmxlIGhlYWRlcnMgKGFkZCBTciBObyBhdCBzdGFydCkgLS0tXHJcbiAgICBjb25zdCBoZWFkZXJzID0gW1xyXG4gICAgICAnU3IgTm8nLFxyXG4gICAgICAnQnVzaW5lc3MgVW5pdCcsXHJcbiAgICAgICdDT0EgQ29kZScsICdBY2NvdW50IENvZGUnLCAnQWNjb3VudCBEZXNjcmlwdGlvbicsXHJcbiAgICAgICdPcGVuaW5nIEJhbGFuY2UgTG9jYWwgQW10JywgJ0RlYml0cyBMb2NhbCBBbXQnLCAnQ3JlZGl0cyBMb2NhbCBBbXQnLFxyXG4gICAgICAnTmV0IE1vdmVtZW50IExvY2FsIEFtdCcsICdDbG9zaW5nIEJhbGFuY2UgTG9jYWwgQW10J1xyXG4gICAgXTtcclxuXHJcbiAgICAvLyAtLS0gdGFibGUgcm93cyAocHJlcGVuZCBTciBObykgLS0tXHJcbiAgICBjb25zdCByb3dzOiBhbnlbXVtdID0gdGhpcy5mbGF0dGVuUmVwb3J0KHRoaXMudHJpYWxCYWxhbmNlUmVwb3J0KS5tYXAoKGFjYywgaW5kZXgpID0+IFtcclxuICAgICAgaW5kZXggKyAxLCAvLyBTciBOb1xyXG4gICAgICBhY2MuY29tcGFueUZ1bGxOYW1lLFxyXG4gICAgICBhY2MuY29hQ29kZSxcclxuICAgICAgYWNjLmFjY291bnRDb2RlLFxyXG4gICAgICBhY2MuYWNjb3VudERlc2NyaXB0aW9uLFxyXG4gICAgICBOdW1iZXIoYWNjLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICBOdW1iZXIoYWNjLmRlYml0KS50b0ZpeGVkKDMpLFxyXG4gICAgICBOdW1iZXIoYWNjLmNyZWRpdCkudG9GaXhlZCgzKSxcclxuICAgICAgTnVtYmVyKGFjYy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgTnVtYmVyKGFjYy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKVxyXG4gICAgXSk7XHJcblxyXG4gICAgLy8gLS0tIGhlbHBlciB0byBlc2NhcGUgQ1NWIHZhbHVlcyAtLS1cclxuICAgIGNvbnN0IGVzY2FwZUNzdiA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XHJcbiAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHJldHVybiBzdHIuaW5jbHVkZXMoJywnKSB8fCBzdHIuaW5jbHVkZXMoJ1wiJykgfHwgc3RyLmluY2x1ZGVzKCdcXG4nKVxyXG4gICAgICAgID8gYFwiJHtzdHIucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImBcclxuICAgICAgICA6IHN0cjtcclxuICAgIH07XHJcblxyXG4gICAgLy8gLS0tIGJ1aWxkIENTViBjb250ZW50IC0tLVxyXG4gICAgbGV0IGNzdkNvbnRlbnQgPSAnJztcclxuXHJcbiAgICAvLyBtZXRhZGF0YVxyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY3N2Q29udGVudCArPSBgJHtlc2NhcGVDc3YobGFiZWwpfSR7ZXNjYXBlQ3N2KHZhbHVlKX0sXFxuYDtcclxuICAgIH0pO1xyXG4gICAgY3N2Q29udGVudCArPSAnXFxuJzsgLy8gZ2FwXHJcblxyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSBoZWFkaW5nIC0tLVxyXG4gICAgY3N2Q29udGVudCArPSAnU2VhcmNoIENyaXRlcmlhOi1cXG4nO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgKDIgcGVyIHJvdywgZHluYW1pYykgLS0tXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaENyaXRlcmlhLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSBzZWFyY2hDcml0ZXJpYVtpXTtcclxuICAgICAgY29uc3QgcmlnaHQgPSBzZWFyY2hDcml0ZXJpYVtpICsgMV07XHJcblxyXG4gICAgICAvLyBMZWZ0IHNpZGVcclxuICAgICAgaWYgKGxlZnQpIGNzdkNvbnRlbnQgKz0gYCR7ZXNjYXBlQ3N2KGxlZnRbMF0pfSAke2VzY2FwZUNzdihsZWZ0WzFdKX0sYDtcclxuXHJcbiAgICAgIC8vIFJpZ2h0IHNpZGVcclxuICAgICAgaWYgKHJpZ2h0KSBjc3ZDb250ZW50ICs9IGAgJHtlc2NhcGVDc3YocmlnaHRbMF0pfSAke2VzY2FwZUNzdihyaWdodFsxXSl9LGA7XHJcblxyXG4gICAgICBjc3ZDb250ZW50ICs9ICdcXG4nO1xyXG4gICAgfVxyXG4gICAgY3N2Q29udGVudCArPSAnXFxuJzsgLy8gYmxhbmsgbGluZSBhZnRlciBjcml0ZXJpYVxyXG5cclxuICAgIC8vIHRhYmxlIGhlYWRlcnNcclxuICAgIGNzdkNvbnRlbnQgKz0gaGVhZGVycy5tYXAoaCA9PiBlc2NhcGVDc3YoaCkpLmpvaW4oJywnKSArICdcXG4nO1xyXG5cclxuICAgIC8vIHRhYmxlIHJvd3NcclxuICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICBjc3ZDb250ZW50ICs9IHJvdy5tYXAoY2VsbCA9PiBlc2NhcGVDc3YoY2VsbCkpLmpvaW4oJywnKSArICdcXG4nO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gLS0tIHRyaWdnZXIgZG93bmxvYWQgLS0tXHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NzdkNvbnRlbnRdLCB7IHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcclxuICAgIGxpbmsuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXBvcnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHBheWxvYWQ/Lm1vZGFsIHx8IHBheWxvYWQ7XHJcblxyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IGZvcm1hdERhdGUobW9kYWwuZnJvbURhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IGZvcm1hdERhdGUobW9kYWwudG9EYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpO1xyXG5cclxuICAgIGNvbnN0IHJlcTogVHJpYWxCYWxhbmNlQWNjb3VudHNSZXBvcnRSZXF1ZXN0RFRPID0ge1xyXG4gICAgICB5ZWFyOiBOdW1iZXIobW9kYWwuZmluYW5jaWFsWWVhciksXHJcbiAgICAgIGRhdGVUeXBlOiBtb2RhbC5kYXRlVHlwZSxcclxuICAgICAgZnJvbURhdGU6IG1vZGFsLmZyb21EYXksXHJcbiAgICAgIHRvRGF0ZTogbW9kYWwudG9EYXksXHJcbiAgICAgIGFjY291bnRTdGF0dXM6IG1vZGFsLmFjY291bnRTdGF0dXMuam9pbignLCcpLFxyXG4gICAgICBidXNpbmVzc1VuaXQ6IG1vZGFsLmJ1c2luZXNzVW5pdCxcclxuICAgICAgY3VycmVuY3k6IG1vZGFsLmN1cnJlbmN5LFxyXG4gICAgICBjb21wYW55Q29kZTogbW9kYWwuYnVzaW5lc3NVbml0LFxyXG4gICAgICByZXBvcnRQZXJpb2Q6IGAke2Zvcm1hdERhdGUobW9kYWwuZnJvbURhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKG1vZGFsLnRvRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKX1gLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdldFRyaWFsQmFsYW5jZUFjY291bnRzUmVwb3J0KHJlcSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtVmFsaWQoaXNWYWxpZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1WYWxpZCA9IGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bGliLXNlYXJjaC1maWx0ZXIgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIChzZWFyY2hDbGlja2VkKT1cImdldFJlcG9ydCgkZXZlbnQpXCJcclxuICAoZm9ybVZhbGlkKT1cImhhbmRsZUZvcm1WYWxpZCgkZXZlbnQpXCI+PC9saWItc2VhcmNoLWZpbHRlcj5cclxuPGFwcC1sb2FkZXIgY2xhc3M9XCJcIiAqbmdJZj1cImxvYWRpbmdTdGF0ZSA9PSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJkYXRhUmVhZHkgJiYgdHJpYWxCYWxhbmNlUmVwb3J0Py5tYWluQ09BR3JvdXBzPy5sZW5ndGggPiAwICYmaXNGb3JtVmFsaWRcIj5cclxuICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIidYcHJlc3MgTW9uZXkgLSBNSSBBY2NvdW50cydcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIlxyXG4gICAgW21ldGFEYXRhT25lXT1cIm1ldGFEYXRhT25lXCIgW21ldGFEYXRhVHdvXT1cIm1ldGFEYXRhVHdvXCIgKGV4cG9ydEV2ZW50KT1cImhhbmRsZUV4cG9ydCgkZXZlbnQpXCJcclxuICAgIChzZWFyY2hFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgKm5nSWY9XCJyb3dEYXRhICYmIHJvd0RhdGEubGVuZ3RoID4gMFwiPlxyXG4gICAgPGxpYi1wYWdlLXNpemUtc2VsZWN0b3IgW3RvdGFsRW50cmllc109XCJyb3dEYXRhPy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlcIj48L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcblxyXG4gICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZSB0cmFuc2FjdGlvbi1ncmlkXCIgc3R5bGU9XCJoZWlnaHQ6IDM4MHB4O1wiIFtkb21MYXlvdXRdPVwiJ25vcm1hbCdcIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbcm93Q2xhc3NSdWxlc109XCJyb3dDbGFzc1J1bGVzXCJcclxuICAgICAgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnZVNpemVcIiBbcm93SGVpZ2h0XT1cIjIwXCJcclxuICAgICAgW2hlYWRlckhlaWdodF09XCIyMlwiIChwYWdpbmF0aW9uQ2hhbmdlZCk9XCJvblJlc2l6ZSgpXCI+PC9hZy1ncmlkLWFuZ3VsYXI+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJ0cmlhbEJhbGFuY2VSZXBvcnQ/Lm1haW5DT0FHcm91cHM/Lmxlbmd0aD09MFwiPlxyXG4gIE5vIERhdGEgZm91bmQgbWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWEuXHJcbjwvZGl2PiJdfQ==
|
|
631
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpYWwtYmFsYW5jZS1hY2NvdW50cy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0L3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7QUEyQnhDLE1BQU0sT0FBTyxtQ0FBbUM7SUF5RTlDLFlBQW9CLGFBQTRCLEVBQVUsYUFBNEI7UUFBbEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXRFdEYsZUFBVSxHQUFXLDBCQUEwQixDQUFBO1FBSS9DLDBCQUFxQixHQUFHLHNCQUFzQixDQUFDO1FBQy9DLGlCQUFZLEdBQTJCLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztRQUV2RSx5QkFBb0IsR0FBVyxPQUFPLENBQUM7UUFDdkMsYUFB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QUssQ0FBQyxRQUFRO1lBQ3hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFlBQVksRUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUU7U0FDMUgsQ0FBQztRQUVGLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWdCO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7O2dJQTdyQlUsbUNBQW1DO29IQUFuQyxtQ0FBbUMsdUlDcENoRCxnK0NBd0JNOzJGRFlPLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxtQ0FBbUM7Z0lBb043QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkaW5nU3RhdGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBvbmVudC1sb2FkaW5nLXN0YXRlcyc7XHJcbmltcG9ydCB7IEFjY291bnREZXRhaWwsIFRyaWFsQmFsYW5jZVJlcG9ydCB9IGZyb20gJy4uLy4uL21vZGVscy90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC90cmlhbC1iYWxhbmNlLWFjY291bnRzLm1vZGVscyc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XHJcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0ICogYXMgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2V4cG9ydC5zZXJ2aWNlJztcclxuXHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJpYWxCYWxhbmNlQWNjb3VudHNSZXBvcnRSZXF1ZXN0RFRPIHtcclxuICB5ZWFyOiBudW1iZXI7XHJcbiAgZGF0ZVR5cGU6IHN0cmluZztcclxuICBmcm9tRGF0ZTogc3RyaW5nO1xyXG4gIHRvRGF0ZTogc3RyaW5nO1xyXG4gIGFjY291bnRTdGF0dXM6IHN0cmluZztcclxuICBidXNpbmVzc0xpbmU6IHN0cmluZztcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XHJcbiAgcmVwb3J0UGVyaW9kOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJpYWwtYmFsYW5jZS1hY2NvdW50cy1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyaWFsLWJhbGFuY2UtYWNjb3VudHMtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyaWFsQmFsYW5jZUFjY291bnRzUmVwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiVHJpYWwgQmFsYW5jZSAtIEFjY291bnRzXCJcclxuICBncmlkQXBpOiBHcmlkQXBpO1xyXG4gIG1ldGFEYXRhT25lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIG1ldGFEYXRhVHdvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICB0cmlhbEJhbGFuY2VSZXBvcnQ6IFRyaWFsQmFsYW5jZVJlcG9ydDtcclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbjogc3RyaW5nID0gJ2V4Y2VsJztcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcbiAgZGF0YVJlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoQ3JpdGVyaWE6IFtzdHJpbmcsIHN0cmluZ11bXTtcclxuXHJcbiAgYWNjb3VudFN0YXR1czogc3RyaW5nID0gJyc7XHJcbiAgY3VycmVuY3k6IHN0cmluZyA9ICcnO1xyXG4gIGRhdGVUeXBlOiBzdHJpbmcgPSAnJztcclxuICBmcm9tRGF0ZTogc3RyaW5nID0gJyc7XHJcbiAgdG9EYXRlOiBzdHJpbmcgPSAnJztcclxuICBidXNpbmVzc0xpbmU6IHN0cmluZyA9ICcnO1xyXG5cclxuICByZXBvcnRVc2VyOiBzdHJpbmcgPSAnJztcclxuICByZXBvcnRUaW1lOiBzdHJpbmcgPSAnJztcclxuICByZXBvcnRQZXJpb2Q6IHN0cmluZyA9ICcnO1xyXG4gIGlzRm9ybVZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZToge1xyXG4gICAgICB1c2VyU2VsZWN0OiAndGV4dCcsXHJcbiAgICAgICdsaW5lLWhlaWdodCc6ICcxLjInLFxyXG4gICAgICAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJyxcclxuICAgICAgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJyxcclxuICAgICAgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcsXHJcbiAgICB9LFxyXG5cclxuICAgIHdyYXBIZWFkZXJUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlYWRlckhlaWdodDogdHJ1ZSxcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZSxcclxuXHJcbiAgICBjZWxsQ2xhc3NSdWxlczoge1xyXG4gICAgICAndG90YWwtcG9zaXRpdmUnOiBwYXJhbXMgPT4gcGFyYW1zLmRhdGE/LmlzVG90YWxSb3cgJiYgcGFyYW1zLnZhbHVlID49IDAsXHJcbiAgICAgICd0b3RhbC1uZWdhdGl2ZSc6IHBhcmFtcyA9PiBwYXJhbXMuZGF0YT8uaXNUb3RhbFJvdyAmJiBwYXJhbXMudmFsdWUgPCAwLFxyXG4gICAgICAncG9zaXRpdmUtdmFsdWUnOiBwYXJhbXMgPT4gIXBhcmFtcy5kYXRhPy5pc1RvdGFsUm93ICYmIHBhcmFtcy52YWx1ZSA+PSAwLFxyXG4gICAgICAnbmVnYXRpdmUtdmFsdWUnOiBwYXJhbXMgPT4gIXBhcmFtcy5kYXRhPy5pc1RvdGFsUm93ICYmIHBhcmFtcy52YWx1ZSA8IDAsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcm93Q2xhc3NSdWxlcyA9IHtcclxuICAgICd0b3RhbC1yb3cnOiBwYXJhbXMgPT4gcGFyYW1zLmRhdGE/LmlzVG90YWxSb3dcclxuICB9O1xyXG5cclxuICBjb2x1bW5EZWZzOiBDb2xEZWZbXSA9XHJcbiAgICBbXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0NPQSBDb2RlJywgZmllbGQ6ICdjb2FDb2RlJywgdG9vbHRpcEZpZWxkOiAnY29hQ29kZScsIG1pbldpZHRoOiA2MCwgbWF4V2lkdGg6IDEwMCB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdBY2NvdW50IENvZGUnLCBmaWVsZDogJ2FjY291bnRDb2RlJywgdG9vbHRpcEZpZWxkOiAnYWNjb3VudENvZGUnLCBtaW5XaWR0aDogODAsIG1heFdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBoZWFkZXJOYW1lOiAnQWNjb3VudCBEZXNjcmlwdGlvbicsIGZpZWxkOiAnYWNjb3VudERlc2NyaXB0aW9uJywgdG9vbHRpcEZpZWxkOiAnYWNjb3VudERlc2NyaXB0aW9uJywgbWluV2lkdGg6IDE4MCwgbWF4V2lkdGg6IDIzMCB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdPcGVuaW5nIEJhbGFuY2UgTG9jYWwgQW1vdW50JywgZmllbGQ6ICdvcGVuaW5nQmFsYW5jZScsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnb3BlbmluZ0JhbGFuY2UnIH0sXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0RlYml0cyBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2RlYml0JywgdHlwZTogJ251bWVyaWNDb2x1bW4nLCB0b29sdGlwRmllbGQ6ICdkZWJpdCcgfSxcclxuICAgICAgeyBoZWFkZXJOYW1lOiAnQ3JlZGl0cyBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2NyZWRpdCcsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnY3JlZGl0JyB9LFxyXG4gICAgICB7IGhlYWRlck5hbWU6ICdOZXQgTW92ZW1lbnQgTG9jYWwgQW1vdW50JywgZmllbGQ6ICduZXRNb3ZlbWVudCcsIHR5cGU6ICdudW1lcmljQ29sdW1uJywgdG9vbHRpcEZpZWxkOiAnbmV0TW92ZW1lbnQnIH0sXHJcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0Nsb3NpbmcgQmFsYW5jZSBMb2NhbCBBbW91bnQnLCBmaWVsZDogJ2Nsb3NpbmdCYWxhbmNlJywgdHlwZTogJ251bWVyaWNDb2x1bW4nLCB0b29sdGlwRmllbGQ6ICdjbG9zaW5nQmFsYW5jZScgfVxyXG4gICAgXTtcclxuXHJcbiAgcm93RGF0YTogQWNjb3VudERldGFpbFtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaTogQ29sdW1uQXBpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydFNlcnZpY2U6IFJlcG9ydFNlcnZpY2UsIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gIGdldFRyaWFsQmFsYW5jZUFjY291bnRzUmVwb3J0KHJlcTogYW55KSB7XHJcblxyXG4gICAgdGhpcy5kYXRhUmVhZHkgPSBmYWxzZTtcclxuICAgIHRoaXMudHJpYWxCYWxhbmNlUmVwb3J0ID0gbnVsbDtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRUcmlhbEJhbGFuY2VBY2NvdW50c1JlcG9ydChyZXEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXBvcnQ6IFRyaWFsQmFsYW5jZVJlcG9ydCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHJpYWxCYWxhbmNlUmVwb3J0ID0gcmVwb3J0O1xyXG4gICAgICAgIHRoaXMuZGF0YVJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlcG9ydFVzZXIgPSB0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydC5yZXBvcnRVc2VyO1xyXG4gICAgICAgIHRoaXMucmVwb3J0VGltZSA9IGZvcm1hdERhdGUobmV3IERhdGUoKSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpO1xyXG4gICAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gcmVxLnJlcG9ydFBlcmlvZDtcclxuXHJcbiAgICAgICAgdGhpcy5hY2NvdW50U3RhdHVzID0gcmVxLmFjY291bnRTdGF0dXM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHJlcS5jdXJyZW5jeTtcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0gcmVxLmRhdGVUeXBlID09IFwiVkRcIiA/IFwiVmFsdWUgRGF0ZVwiIDogXCJQb3N0aW5nIERhdGVcIjtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzTGluZSA9IHJlcS5idXNpbmVzc0xpbmU7XHJcblxyXG4gICAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuZmxhdHRlblJlcG9ydChyZXBvcnQpLm1hcChhY2MgPT4gKHtcclxuICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgIG9wZW5pbmdCYWxhbmNlOiBOdW1iZXIoYWNjLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgZGViaXQ6IE51bWJlcihhY2MuZGViaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBjcmVkaXQ6IE51bWJlcihhY2MuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgbmV0TW92ZW1lbnQ6IE51bWJlcihhY2MubmV0TW92ZW1lbnQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBjbG9zaW5nQmFsYW5jZTogTnVtYmVyKGFjYy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXRhRGF0YU9uZSA9IHtcclxuICAgICAgICAgICdSZXBvcnQgUGVyaW9kJzogdGhpcy5yZXBvcnRQZXJpb2QsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXRhRGF0YVR3byA9IHtcclxuICAgICAgICAgICdSZXBvcnQgVXNlciAmIFRpbWUnOiBgJHt0aGlzLnJlcG9ydFVzZXJ9IEAgJHt0aGlzLnJlcG9ydFRpbWV9YCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICAgICAgWydBY2NvdW50IFN0YXR1czonLCB0aGlzLmFjY291bnRTdGF0dXNdLFxyXG4gICAgICAgICAgWydDdXJyZW5jeTonLCB0aGlzLmN1cnJlbmN5XSxcclxuICAgICAgICAgIFsnRGF0ZSBUeXBlOicsIHRoaXMuZGF0ZVR5cGVdLFxyXG4gICAgICAgICAgWydGcm9tIERhdGU6JywgdGhpcy5mcm9tRGF0ZV0sXHJcbiAgICAgICAgICBbJ0J1c2luZXNzIExpbmU6JywgdGhpcy5idXNpbmVzc0xpbmVdLFxyXG4gICAgICAgICAgWydUbyBEYXRlOicsIHRoaXMudG9EYXRlXSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaENyaXRlcmlhID0gc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdHJpYWwgYmFsYW5jZSByZXBvcnQ6JywgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuUmVwb3J0KHJlcG9ydDogVHJpYWxCYWxhbmNlUmVwb3J0KTogQWNjb3VudERldGFpbFtdIHtcclxuICAgIGNvbnN0IHJvd3M6IEFjY291bnREZXRhaWxbXSA9IFtdO1xyXG5cclxuICAgIHJlcG9ydC5tYWluQ09BR3JvdXBzLmZvckVhY2gobWFpbiA9PiB7XHJcbiAgICAgIG1haW4uc3ViQ09BR3JvdXBzLmZvckVhY2goc3ViID0+IHtcclxuICAgICAgICBzdWIuY29hR3JvdXBzLmZvckVhY2goY29hID0+IHtcclxuICAgICAgICAgIGNvYS5hY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4gcm93cy5wdXNoKGFjY291bnQpKTtcclxuXHJcbiAgICAgICAgICByb3dzLnB1c2goe1xyXG4gICAgICAgICAgICBjb2FDb2RlOiAnJyxcclxuICAgICAgICAgICAgYWNjb3VudENvZGU6ICdUb3RhbDonLFxyXG4gICAgICAgICAgICBhY2NvdW50RGVzY3JpcHRpb246IGAke2NvYS5jb2FEZXNjcmlwdGlvbn1gLFxyXG4gICAgICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKGNvYS50b3RhbHMub3BlbmluZ0JhbGFuY2UpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIGRlYml0OiBOdW1iZXIoY29hLnRvdGFscy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgICAgY3JlZGl0OiBOdW1iZXIoY29hLnRvdGFscy5jcmVkaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIoY29hLnRvdGFscy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihjb2EudG90YWxzLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgIGNvYUNvZGU6ICcnLFxyXG4gICAgICAgICAgYWNjb3VudENvZGU6ICdUb3RhbDonLFxyXG4gICAgICAgICAgYWNjb3VudERlc2NyaXB0aW9uOiBgJHtzdWIuc3ViQ09BRGVzY3JpcHRpb259YCxcclxuICAgICAgICAgIG9wZW5pbmdCYWxhbmNlOiBOdW1iZXIoc3ViLnRvdGFscy5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGRlYml0OiBOdW1iZXIoc3ViLnRvdGFscy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNyZWRpdDogTnVtYmVyKHN1Yi50b3RhbHMuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgbmV0TW92ZW1lbnQ6IE51bWJlcihzdWIudG90YWxzLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihzdWIudG90YWxzLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgY29hQ29kZTogJycsXHJcbiAgICAgICAgYWNjb3VudENvZGU6ICdUb3RhbDonLFxyXG4gICAgICAgIGFjY291bnREZXNjcmlwdGlvbjogYCR7bWFpbi5tYWluQ09BRGVzY3JpcHRpb259YCxcclxuICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKG1haW4udG90YWxzLm9wZW5pbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICAgIGRlYml0OiBOdW1iZXIobWFpbi50b3RhbHMuZGViaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgY3JlZGl0OiBOdW1iZXIobWFpbi50b3RhbHMuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIobWFpbi50b3RhbHMubmV0TW92ZW1lbnQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihtYWluLnRvdGFscy5jbG9zaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcm93cy5wdXNoKHtcclxuICAgICAgY29hQ29kZTogJ1RPVEFMOicsXHJcbiAgICAgIGFjY291bnRDb2RlOiAnJyxcclxuICAgICAgYWNjb3VudERlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgb3BlbmluZ0JhbGFuY2U6IE51bWJlcihyZXBvcnQuZ3JhbmRUb3RhbC5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgZGViaXQ6IE51bWJlcihyZXBvcnQuZ3JhbmRUb3RhbC5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgY3JlZGl0OiBOdW1iZXIocmVwb3J0LmdyYW5kVG90YWwuY3JlZGl0KS50b0ZpeGVkKDMpLFxyXG4gICAgICBuZXRNb3ZlbWVudDogTnVtYmVyKHJlcG9ydC5ncmFuZFRvdGFsLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpLFxyXG4gICAgICBjbG9zaW5nQmFsYW5jZTogTnVtYmVyKHJlcG9ydC5ncmFuZFRvdGFsLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpLFxyXG4gICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcm93cztcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGkgPSBwYXJhbXMuY29sdW1uQXBpO1xyXG5cclxuICAgIGNvbnN0IGFsbENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcclxuICAgIHBhcmFtcy5jb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRDb2xJZCgpKTtcclxuICAgIH0pO1xyXG4gICAgcGFyYW1zLmNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzKTtcclxuICAgIHRoaXMub25SZXNpemUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaSAmJiB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCkge1xyXG4gICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSAoc3RyOiBhbnkpOiBzdHJpbmcgPT5cclxuICAgICAgc3RyXHJcbiAgICAgICAgPy50b1N0cmluZygpXHJcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAucmVwbGFjZSgvLC9nLCAnJylcclxuICAgICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHUyMDBCLVxcdTIwMERcXHVGRUZGXS9nLCAnJylcclxuICAgICAgICAudHJpbSgpO1xyXG5cclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoc2VhcmNoKSB7XHJcbiAgICAgIC8vIGZpbHRlciBmcm9tIGFscmVhZHkgZm9ybWF0dGVkIHJvd0RhdGFcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5mbGF0dGVuUmVwb3J0KHRoaXMudHJpYWxCYWxhbmNlUmVwb3J0KVxyXG4gICAgICAgIC5tYXAoYWNjID0+ICh7XHJcbiAgICAgICAgICAuLi5hY2MsXHJcbiAgICAgICAgICBvcGVuaW5nQmFsYW5jZTogTnVtYmVyKGFjYy5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGRlYml0OiBOdW1iZXIoYWNjLmRlYml0KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgY3JlZGl0OiBOdW1iZXIoYWNjLmNyZWRpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIG5ldE1vdmVtZW50OiBOdW1iZXIoYWNjLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgY2xvc2luZ0JhbGFuY2U6IE51bWJlcihhY2MuY2xvc2luZ0JhbGFuY2UpLnRvRml4ZWQoMylcclxuICAgICAgICB9KSlcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT5cclxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoaXRlbSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydClcclxuICAgICAgICAubWFwKGFjYyA9PiAoe1xyXG4gICAgICAgICAgLi4uYWNjLFxyXG4gICAgICAgICAgb3BlbmluZ0JhbGFuY2U6IE51bWJlcihhY2Mub3BlbmluZ0JhbGFuY2UpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBkZWJpdDogTnVtYmVyKGFjYy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNyZWRpdDogTnVtYmVyKGFjYy5jcmVkaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICBuZXRNb3ZlbWVudDogTnVtYmVyKGFjYy5uZXRNb3ZlbWVudCkudG9GaXhlZCgzKSxcclxuICAgICAgICAgIGNsb3NpbmdCYWxhbmNlOiBOdW1iZXIoYWNjLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb1BkZigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cmlhbEJhbGFuY2VSZXBvcnQ/Lm1haW5DT0FHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRpdGxlID0gJ1hwcmVzcyBNb25leSAtIE1JIEFjY291bnRzJztcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ1RyaWFsLUJhbGFuY2UtQWNjb3VudHMtUmF3LnBkZic7XHJcblxyXG4gICAgLy8gLS0tIHBhZ2UgJiBsYXlvdXQgLS0tXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzMxMiwgMjEwXSB9KTtcclxuICAgIGNvbnN0IHBhZ2VXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xyXG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IDE1O1xyXG4gICAgY29uc3QgbG9nb1dpZHRoID0gMzguNCwgbG9nb0hlaWdodCA9IDE3LjUsIGxvZ29YID0gbWFyZ2luTGVmdCwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcbiAgICBsZXQgY3VycmVudFkgPSB0aXRsZVkgKyAxNDtcclxuXHJcbiAgICBjb25zdCBsYWJlbFZhbHVlR2FwID0gMjtcclxuICAgIGNvbnN0IHBhaXJHYXAgPSAxNTtcclxuXHJcbiAgICAvLyAtLS0gbWV0YWRhdGEgLS0tXHJcbiAgICBjb25zdCBtZXRhZGF0YTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZSA6ICcsIGAke3RoaXMucmVwb3J0VXNlcn1AJHt0aGlzLnJlcG9ydFRpbWV9YF0sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgLy8gLS0tIGRyYXcgbG9nbyArIHRpdGxlIC0tLVxyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZT8ubG9nb0Jhc2U2NCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgICAgfSBjYXRjaCB7IH1cclxuICAgIH1cclxuICAgIGRvYy5zZXRGb250U2l6ZSgxNSk7XHJcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuICAgIGRvYy50ZXh0KHRpdGxlLCBwYWdlV2lkdGggLyAyLCB0aXRsZVksIHsgYWxpZ246ICdjZW50ZXInIH0pO1xyXG5cclxuICAgIC8vIC0tLSBkcmF3IG1ldGFkYXRhIC0tLVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDEwKTtcclxuICAgIG1ldGFkYXRhLmZvckVhY2goKFtsYWJlbCwgdmFsdWVdLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHkgPSBjdXJyZW50WSArIGkgKiA2O1xyXG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuICAgICAgZG9jLnRleHQobGFiZWwsIG1hcmdpbkxlZnQsIHkpO1xyXG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ25vcm1hbCcpO1xyXG4gICAgICBjb25zdCBsYWJlbFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChsYWJlbCArICcgJyk7XHJcbiAgICAgIGRvYy50ZXh0KHZhbHVlLCBtYXJnaW5MZWZ0ICsgbGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIHkpO1xyXG4gICAgfSk7XHJcbiAgICBjdXJyZW50WSArPSBtZXRhZGF0YS5sZW5ndGggKiA2ICsgNjtcclxuXHJcbiAgICAvLyAtLS0gZHJhdyBzZWFyY2ggY3JpdGVyaWEgaGVhZGluZyAtLS1cclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQoJ1NlYXJjaCBDcml0ZXJpYTotJywgbWFyZ2luTGVmdCwgY3VycmVudFkpO1xyXG4gICAgY3VycmVudFkgKz0gODtcclxuXHJcbiAgICAvLyAtLS0gZHJhdyBzZWFyY2ggY3JpdGVyaWEgcGFpcnMgLS0tXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaENyaXRlcmlhLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSBzZWFyY2hDcml0ZXJpYVtpXTtcclxuICAgICAgY29uc3QgcmlnaHQgPSBzZWFyY2hDcml0ZXJpYVtpICsgMV07IC8vIG1heSBiZSB1bmRlZmluZWRcclxuXHJcbiAgICAgIC8vIC0tLSBMZWZ0IHNpZGUgLS0tXHJcbiAgICAgIGlmIChsZWZ0KSB7XHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQobGVmdFswXSwgbWFyZ2luTGVmdCwgY3VycmVudFkpO1xyXG4gICAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XHJcbiAgICAgICAgY29uc3QgbGVmdExhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxlZnRbMF0gKyAnICcpO1xyXG4gICAgICAgIGRvYy50ZXh0KGxlZnRbMV0gPz8gJycsIG1hcmdpbkxlZnQgKyBsZWZ0TGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIGN1cnJlbnRZKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gLS0tIFJpZ2h0IHNpZGUgKGlmIGF2YWlsYWJsZSkgLS0tXHJcbiAgICAgIGlmIChyaWdodCkge1xyXG4gICAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgICAgIGRvYy50ZXh0KHJpZ2h0WzBdLCBwYWdlV2lkdGggLyAyLCBjdXJyZW50WSk7XHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgICBjb25zdCByaWdodExhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKHJpZ2h0WzBdICsgJyAnKTtcclxuICAgICAgICBkb2MudGV4dChyaWdodFsxXSA/PyAnJywgcGFnZVdpZHRoIC8gMiArIHJpZ2h0TGFiZWxXaWR0aCArIGxhYmVsVmFsdWVHYXAsIGN1cnJlbnRZKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY3VycmVudFkgKz0gNjsgLy8gbW92ZSBkb3duIGZvciBuZXh0IGxpbmVcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50WSArPSA0O1xyXG5cclxuICAgIC8vIC0tLSBoZWFkZXJzIC0tLVxyXG4gICAgY29uc3QgaGVhZGVycyA9IFtcclxuICAgICAgJ1NyIE5vJyxcclxuICAgICAgJ0NPQSBDb2RlJywgJ0FjY291bnQgQ29kZScsICdBY2NvdW50IERlc2NyaXB0aW9uJyxcclxuICAgICAgJ09wZW5pbmcgQmFsYW5jZSBMb2NhbCBBbXQnLCAnRGViaXRzIExvY2FsIEFtdCcsICdDcmVkaXRzIExvY2FsIEFtdCcsXHJcbiAgICAgICdOZXQgTW92ZW1lbnQgTG9jYWwgQW10JywgJ0Nsb3NpbmcgQmFsYW5jZSBMb2NhbCBBbXQnXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IGZsYXRSZXBvcnQgPSB0aGlzLmZsYXR0ZW5SZXBvcnQodGhpcy50cmlhbEJhbGFuY2VSZXBvcnQpO1xyXG5cclxuICAgIC8vIC0tLSByb3dzIC0tLVxyXG4gICAgY29uc3Qgcm93czogYW55W11bXSA9IGZsYXRSZXBvcnQubWFwKChhY2MsIGkpID0+IFtcclxuICAgICAgaSArIDEsXHJcbiAgICAgIGFjYy5jb2FDb2RlLFxyXG4gICAgICBhY2MuYWNjb3VudENvZGUsXHJcbiAgICAgIGFjYy5hY2NvdW50RGVzY3JpcHRpb24sXHJcbiAgICAgIGFjYy5vcGVuaW5nQmFsYW5jZSAhPSBudWxsID8gTnVtYmVyKGFjYy5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSA6IFwiXCIsXHJcbiAgICAgIGFjYy5kZWJpdCAhPSBudWxsID8gTnVtYmVyKGFjYy5kZWJpdCkudG9GaXhlZCgzKSA6IFwiXCIsXHJcbiAgICAgIGFjYy5jcmVkaXQgIT0gbnVsbCA/IE51bWJlcihhY2MuY3JlZGl0KS50b0ZpeGVkKDMpIDogXCJcIixcclxuICAgICAgYWNjLm5ldE1vdmVtZW50ICE9IG51bGwgPyBOdW1iZXIoYWNjLm5ldE1vdmVtZW50KS50b0ZpeGVkKDMpIDogXCJcIixcclxuICAgICAgYWNjLmNsb3NpbmdCYWxhbmNlICE9IG51bGwgPyBOdW1iZXIoYWNjLmNsb3NpbmdCYWxhbmNlKS50b0ZpeGVkKDMpIDogXCJcIlxyXG4gICAgXSk7XHJcblxyXG4gICAgLy8gLS0tIGNvbHVtbiB3aWR0aHMgLS0tXHJcbiAgICBjb25zdCBjb2x1bW5TdHlsZXM6IHsgW2tleTogbnVtYmVyXTogYW55IH0gPSB7XHJcbiAgICAgIDA6IHsgY2VsbFdpZHRoOiAxNSB9LFxyXG4gICAgICAxOiB7IGNlbGxXaWR0aDogMjUgfSxcclxuICAgICAgMjogeyBjZWxsV2lkdGg6IDI1IH0sXHJcbiAgICAgIDM6IHsgY2VsbFdpZHRoOiA3MCB9LFxyXG4gICAgICA0OiB7IGNlbGxXaWR0aDogMzAgfSxcclxuICAgICAgNTogeyBjZWxsV2lkdGg6IDMwIH0sXHJcbiAgICAgIDY6IHsgY2VsbFdpZHRoOiAzMCB9LFxyXG4gICAgICA3OiB7IGNlbGxXaWR0aDogMzAgfSxcclxuICAgICAgODogeyBjZWxsV2lkdGg6IDMwIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIC0tLSBkcmF3IHRhYmxlIC0tLVxyXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgIGhlYWQ6IFtoZWFkZXJzXSxcclxuICAgICAgYm9keTogcm93cyxcclxuICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgdGhlbWU6ICdncmlkJyxcclxuICAgICAgaGVhZFN0eWxlczoge1xyXG4gICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLFxyXG4gICAgICAgIHRleHRDb2xvcjogMCxcclxuICAgICAgICBmb250U3R5bGU6ICdib2xkJyxcclxuICAgICAgICBmb250U2l6ZTogOSxcclxuICAgICAgICBoYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgIGNlbGxXaWR0aDogJ3dyYXAnLFxyXG4gICAgICAgIG1pbkNlbGxIZWlnaHQ6IDEwXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHlTdHlsZXM6IHtcclxuICAgICAgICBmb250U2l6ZTogOCxcclxuICAgICAgICBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcclxuICAgICAgICB0ZXh0Q29sb3I6IFswLCAwLCAwXVxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZXM6IHsgY2VsbFBhZGRpbmc6IDIsIG92ZXJmbG93OiAnbGluZWJyZWFrJywgbWluQ2VsbEhlaWdodDogNiB9LFxyXG4gICAgICBjb2x1bW5TdHlsZXMsXHJcbiAgICAgIGRpZFBhcnNlQ2VsbDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gZGF0YS5yb3cuaW5kZXg7XHJcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IGZsYXRSZXBvcnRbcm93SW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IGlzVG90YWxSb3cgPSByb3dEYXRhLmlzVG90YWxSb3c7XHJcblxyXG4gICAgICAgIGlmIChpc1RvdGFsUm93KSBkYXRhLmNlbGwuc3R5bGVzLmZvbnRTdHlsZSA9ICdib2xkJztcclxuXHJcbiAgICAgICAgLy8gaGlnaGxpZ2h0IG5lZ2F0aXZlcyBpbiByZWRcclxuICAgICAgICBpZiAoZGF0YS5jb2x1bW4uaW5kZXggPiAzKSB7XHJcbiAgICAgICAgICBjb25zdCBrZXlNYXAgPSBbXCJvcGVuaW5nQmFsYW5jZVwiLCBcImRlYml0XCIsIFwiY3JlZGl0XCIsIFwibmV0TW92ZW1lbnRcIiwgXCJjbG9zaW5nQmFsYW5jZVwiXTtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IGtleU1hcFtkYXRhLmNvbHVtbi5pbmRleCAtIDRdO1xyXG4gICAgICAgICAgY29uc3QgcmF3ID0gcm93RGF0YVtrZXldO1xyXG4gICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHJhdyk7XHJcbiAgICAgICAgICBpZiAoIWlzTmFOKG51bSkgJiYgbnVtIDwgMCkge1xyXG4gICAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLnRleHRDb2xvciA9IFsyNTUsIDAsIDBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gLS0tIHBhZ2UgbnVtYmVycyAtLS1cclxuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSAoZG9jIGFzIGFueSkuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWxQYWdlczsgaSsrKSB7XHJcbiAgICAgIGRvYy5zZXRQYWdlKGkpO1xyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoOSk7XHJcbiAgICAgIGNvbnN0IGZvb3RlclkgPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gNjtcclxuICAgICAgZG9jLnRleHQoYFBhZ2UgJHtpfSBvZiAke3RvdGFsUGFnZXN9YCwgcGFnZVdpZHRoIC0gMTUsIGZvb3RlclksIHsgYWxpZ246ICdyaWdodCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLS0tIHNhdmUgUERGIC0tLVxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cmlhbEJhbGFuY2VSZXBvcnQ/Lm1haW5DT0FHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ1RyaWFsLUJhbGFuY2UtQWNjb3VudHMtUmF3Lnhsc3gnO1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ1RyaWFsIEJhbGFuY2UnKTtcclxuXHJcbiAgICBsZXQgY3VycmVudFJvdyA9IDE7XHJcblxyXG4gICAgLy8gLS0tIGFkZCBsb2dvIGlmIGF2YWlsYWJsZSAtLS1cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2U/LmxvZ29CYXNlNjQpIHtcclxuICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5sb2dvQmFzZTY0LnJlcGxhY2UoL15kYXRhOmltYWdlXFwvXFx3KztiYXNlNjQsLywgJycpO1xyXG4gICAgICBjb25zdCBpbWFnZUlkID0gd29ya2Jvb2suYWRkSW1hZ2UoeyBiYXNlNjQ6IGJhc2U2NERhdGEsIGV4dGVuc2lvbjogJ3BuZycgfSk7XHJcbiAgICAgIHNoZWV0LmFkZEltYWdlKGltYWdlSWQsIHsgdGw6IHsgY29sOiAwLCByb3c6IDAgfSwgZXh0OiB7IHdpZHRoOiAxMjAsIGhlaWdodDogNjAgfSwgZWRpdEFzOiAnb25lQ2VsbCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLS0tIHRpdGxlIC0tLVxyXG4gICAgY29uc3QgdGl0bGUgPSAnWHByZXNzIE1vbmV5IC0gTUkgQWNjb3VudHMnO1xyXG4gICAgc2hlZXQubWVyZ2VDZWxscygxLCAzLCAxLCA5KTtcclxuICAgIGNvbnN0IHRpdGxlQ2VsbCA9IHNoZWV0LmdldENlbGwoJ0MxJyk7XHJcbiAgICB0aXRsZUNlbGwudmFsdWUgPSB0aXRsZTtcclxuICAgIHRpdGxlQ2VsbC5mb250ID0geyBzaXplOiAxNSwgYm9sZDogdHJ1ZSB9O1xyXG4gICAgdGl0bGVDZWxsLmFsaWdubWVudCA9IHsgaG9yaXpvbnRhbDogJ2NlbnRlcicsIHZlcnRpY2FsOiAnbWlkZGxlJyB9O1xyXG4gICAgY3VycmVudFJvdyA9IDQ7XHJcblxyXG4gICAgLy8gLS0tIG1ldGFkYXRhIC0tLVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgUGVyaW9kOicsIHRoaXMucmVwb3J0UGVyaW9kXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUgOiAnLCBgJHt0aGlzLnJlcG9ydFVzZXJ9QCR7dGhpcy5yZXBvcnRUaW1lfWBdLFxyXG4gICAgXTtcclxuICAgIG1ldGFkYXRhLmZvckVhY2goKFtsYWJlbCwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIHNoZWV0Lm1lcmdlQ2VsbHMoY3VycmVudFJvdywgMSwgY3VycmVudFJvdywgNik7XHJcbiAgICAgIGNvbnN0IHJvdyA9IHNoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHsgcmljaFRleHQ6IFt7IHRleHQ6IGxhYmVsICsgJyAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LCB7IHRleHQ6IHZhbHVlIH1dIH07XHJcbiAgICAgIHJvdy5nZXRDZWxsKDEpLmFsaWdubWVudCA9IHsgdmVydGljYWw6ICdtaWRkbGUnLCB3cmFwVGV4dDogdHJ1ZSB9O1xyXG4gICAgfSk7XHJcbiAgICBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSBoZWFkaW5nIC0tLVxyXG4gICAgc2hlZXQubWVyZ2VDZWxscyhjdXJyZW50Um93LCAxLCBjdXJyZW50Um93LCA2KTtcclxuICAgIHNoZWV0LmdldENlbGwoY3VycmVudFJvdywgMSkudmFsdWUgPSAnU2VhcmNoIENyaXRlcmlhOi0nO1xyXG4gICAgc2hlZXQuZ2V0Q2VsbChjdXJyZW50Um93LCAxKS5mb250ID0geyBib2xkOiB0cnVlIH07XHJcbiAgICBjdXJyZW50Um93ICs9IDI7XHJcblxyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhID0gdGhpcy5zZWFyY2hDcml0ZXJpYTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaENyaXRlcmlhLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSBzZWFyY2hDcml0ZXJpYVtpXTtcclxuICAgICAgY29uc3QgcmlnaHQgPSBzZWFyY2hDcml0ZXJpYVtpICsgMV07IC8vIG1heSBiZSB1bmRlZmluZWRcclxuICAgICAgY29uc3Qgcm93ID0gc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcblxyXG4gICAgICAvLyBMZWZ0IGNlbGxcclxuICAgICAgc2hlZXQubWVyZ2VDZWxscyhyb3cubnVtYmVyLCAxLCByb3cubnVtYmVyLCAzKTtcclxuICAgICAgcm93LmdldENlbGwoMSkudmFsdWUgPSB7XHJcbiAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgIHsgdGV4dDogKGxlZnQ/LlswXSA/PyAnJykgKyAnICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGxlZnQ/LlsxXSA/PyAnJyB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS5hbGlnbm1lbnQgPSB7IHdyYXBUZXh0OiB0cnVlLCB2ZXJ0aWNhbDogJ21pZGRsZScgfTtcclxuXHJcbiAgICAgIC8vIFJpZ2h0IGNlbGwgKG9ubHkgaWYgcHJlc2VudClcclxuICAgICAgaWYgKHJpZ2h0KSB7XHJcbiAgICAgICAgc2hlZXQubWVyZ2VDZWxscyhyb3cubnVtYmVyLCA0LCByb3cubnVtYmVyLCA2KTtcclxuICAgICAgICByb3cuZ2V0Q2VsbCg0KS52YWx1ZSA9IHtcclxuICAgICAgICAgIHJpY2hUZXh0OiBbXHJcbiAgICAgICAgICAgIHsgdGV4dDogKHJpZ2h0Py5bMF0gPz8gJycpICsgJyAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHJpZ2h0Py5bMV0gPz8gJycgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcm93LmdldENlbGwoNCkuYWxpZ25tZW50ID0geyB3cmFwVGV4dDogdHJ1ZSwgdmVydGljYWw6ICdtaWRkbGUnIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAvLyAtLS0gaGVhZGVycyAtLS1cclxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXHJcbiAgICAgICdTciBObycsXHJcbiAgICAgICdDT0EgQ29kZScsICdBY2NvdW50IENvZGUnLCAnQWNjb3VudCBEZXNjcmlwdGlvbicsXHJcbiAgICAgICdPcGVuaW5nIEJhbGFuY2UgTG9jYWwgQW10JywgJ0RlYml0cyBMb2NhbCBBbXQnLCAnQ3JlZGl0cyBMb2NhbCBBbXQnLFxyXG4gICAgICAnTmV0IE1vdmVtZW50IExvY2FsIEFtdCcsICdDbG9zaW5nIEJhbGFuY2UgTG9jYWwgQW10J1xyXG4gICAgXTtcclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHNoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgaGVhZGVycy5mb3JFYWNoKChoLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGwgPSBoZWFkZXJSb3cuZ2V0Q2VsbChpICsgMSk7XHJcbiAgICAgIGNlbGwudmFsdWUgPSBoO1xyXG4gICAgICBjZWxsLmZvbnQgPSB7IGJvbGQ6IHRydWUgfTtcclxuICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdjZW50ZXInLCB2ZXJ0aWNhbDogJ21pZGRsZScsIHdyYXBUZXh0OiB0cnVlIH07XHJcbiAgICAgIGNlbGwuZmlsbCA9IHsgdHlwZTogJ3BhdHRlcm4nLCBwYXR0ZXJuOiAnc29saWQnLCBmZ0NvbG9yOiB7IGFyZ2I6ICdEQ0RDREMnIH0gfTtcclxuICAgICAgY2VsbC5ib3JkZXIgPSB7IHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0gfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIC0tLSByb3dzIHdpdGggMyBkZWNpbWFscyBmb3IgbnVtZXJpYyBjb2x1bW5zIC0tLVxyXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCkubWFwKChhY2MsIGlkeCkgPT4ge1xyXG4gICAgICBjb25zdCBudW1lcmljQ29sdW1ucyA9IFsnb3BlbmluZ0JhbGFuY2UnLCAnZGViaXQnLCAnY3JlZGl0JywgJ25ldE1vdmVtZW50JywgJ2Nsb3NpbmdCYWxhbmNlJ107XHJcbiAgICAgIGNvbnN0IHJvd0RhdGEgPSBudW1lcmljQ29sdW1ucy5tYXAoY29sID0+IHtcclxuICAgICAgICBjb25zdCB2YWwgPSBOdW1iZXIoYWNjW2NvbF0pO1xyXG4gICAgICAgIHJldHVybiAhaXNOYU4odmFsKSA/IHZhbC50b0ZpeGVkKDMpIDogJyc7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGlkeCArIDEsXHJcbiAgICAgICAgYWNjLmNvYUNvZGUsXHJcbiAgICAgICAgYWNjLmFjY291bnRDb2RlLFxyXG4gICAgICAgIGFjYy5hY2NvdW50RGVzY3JpcHRpb24sXHJcbiAgICAgICAgLi4ucm93RGF0YSxcclxuICAgICAgICBhY2MuaXNUb3RhbFJvdyB8fCBmYWxzZVxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCByb3cgPSBzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgci5zbGljZSgwLCA5KS5mb3JFYWNoKCh2YWwsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgIC8vIGNvbnZlcnQgYmFjayB0byBudW1iZXIgZm9yIEV4Y2VsIG1hdGggYnV0IHNob3cgMyBkZWNpbWFsc1xyXG4gICAgICAgIGlmIChpID4gMyAmJiB2YWwgIT09ICcnKSBjZWxsLnZhbHVlID0gcGFyc2VGbG9hdCh2YWwudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgZWxzZSBjZWxsLnZhbHVlID0gdmFsO1xyXG5cclxuICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG5cclxuICAgICAgICAvLyBib2xkIHRvdGFsIHJvd3NcclxuICAgICAgICBpZiAocls5XSkgY2VsbC5mb250ID0geyBib2xkOiB0cnVlIH07XHJcblxyXG4gICAgICAgIC8vIG5lZ2F0aXZlIG51bWJlcnMgcmVkXHJcbiAgICAgICAgaWYgKGkgPiAzICYmIHR5cGVvZiBjZWxsLnZhbHVlID09PSAnbnVtYmVyJyAmJiBjZWxsLnZhbHVlIDwgMCkge1xyXG4gICAgICAgICAgY2VsbC5mb250ID0geyBjb2xvcjogeyBhcmdiOiAnRkYwMDAwJyB9LCBib2xkOiByWzldID8gdHJ1ZSA6IHVuZGVmaW5lZCB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IG51bWJlciBmb3JtYXQgdG8gc2hvdyAzIGRlY2ltYWxzXHJcbiAgICAgICAgaWYgKGkgPiAzKSBjZWxsLm51bUZtdCA9ICcwLjAwMCc7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gLS0tIGNvbHVtbiB3aWR0aHMgLS0tXHJcbiAgICBjb25zdCB3aWR0aHMgPSBbOCwgMTUsIDE1LCA0MCwgMjAsIDIwLCAyMCwgMjAsIDIwXTtcclxuICAgIHdpZHRocy5mb3JFYWNoKCh3LCBpKSA9PiBzaGVldC5nZXRDb2x1bW4oaSArIDEpLndpZHRoID0gdyk7XHJcblxyXG4gICAgLy8gLS0tIHNhdmUgZmlsZSAtLS1cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pO1xyXG4gICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9Dc3YoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudHJpYWxCYWxhbmNlUmVwb3J0Py5tYWluQ09BR3JvdXBzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdUcmlhbC1CYWxhbmNlLUFjY291bnRzLVJhdy5jc3YnO1xyXG5cclxuICAgIC8vIC0tLSBtZXRhZGF0YSAtLS1cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFRpdGxlOicsICdYcHJlc3MgTW9uZXkgLSBNSSBBY2NvdW50cyddLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZSA6ICcsIGAke3RoaXMucmVwb3J0VXNlcn1AJHt0aGlzLnJlcG9ydFRpbWV9YF0sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgLy8gLS0tIHRhYmxlIGhlYWRlcnMgKGFkZCBTciBObyBhdCBzdGFydCkgLS0tXHJcbiAgICBjb25zdCBoZWFkZXJzID0gW1xyXG4gICAgICAnU3IgTm8nLFxyXG4gICAgICAnQ09BIENvZGUnLCAnQWNjb3VudCBDb2RlJywgJ0FjY291bnQgRGVzY3JpcHRpb24nLFxyXG4gICAgICAnT3BlbmluZyBCYWxhbmNlIExvY2FsIEFtdCcsICdEZWJpdHMgTG9jYWwgQW10JywgJ0NyZWRpdHMgTG9jYWwgQW10JyxcclxuICAgICAgJ05ldCBNb3ZlbWVudCBMb2NhbCBBbXQnLCAnQ2xvc2luZyBCYWxhbmNlIExvY2FsIEFtdCdcclxuICAgIF07XHJcblxyXG4gICAgLy8gLS0tIHRhYmxlIHJvd3MgKHByZXBlbmQgU3IgTm8pIC0tLVxyXG4gICAgY29uc3Qgcm93czogYW55W11bXSA9IHRoaXMuZmxhdHRlblJlcG9ydCh0aGlzLnRyaWFsQmFsYW5jZVJlcG9ydCkubWFwKChhY2MsIGluZGV4KSA9PiBbXHJcbiAgICAgIGluZGV4ICsgMSwgLy8gU3IgTm9cclxuICAgICAgYWNjLmNvYUNvZGUsXHJcbiAgICAgIGFjYy5hY2NvdW50Q29kZSxcclxuICAgICAgYWNjLmFjY291bnREZXNjcmlwdGlvbixcclxuICAgICAgTnVtYmVyKGFjYy5vcGVuaW5nQmFsYW5jZSkudG9GaXhlZCgzKSxcclxuICAgICAgTnVtYmVyKGFjYy5kZWJpdCkudG9GaXhlZCgzKSxcclxuICAgICAgTnVtYmVyKGFjYy5jcmVkaXQpLnRvRml4ZWQoMyksXHJcbiAgICAgIE51bWJlcihhY2MubmV0TW92ZW1lbnQpLnRvRml4ZWQoMyksXHJcbiAgICAgIE51bWJlcihhY2MuY2xvc2luZ0JhbGFuY2UpLnRvRml4ZWQoMylcclxuICAgIF0pO1xyXG5cclxuICAgIC8vIC0tLSBoZWxwZXIgdG8gZXNjYXBlIENTViB2YWx1ZXMgLS0tXHJcbiAgICBjb25zdCBlc2NhcGVDc3YgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xyXG4gICAgICBjb25zdCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICByZXR1cm4gc3RyLmluY2x1ZGVzKCcsJykgfHwgc3RyLmluY2x1ZGVzKCdcIicpIHx8IHN0ci5pbmNsdWRlcygnXFxuJylcclxuICAgICAgICA/IGBcIiR7c3RyLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgXHJcbiAgICAgICAgOiBzdHI7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIC0tLSBidWlsZCBDU1YgY29udGVudCAtLS1cclxuICAgIGxldCBjc3ZDb250ZW50ID0gJyc7XHJcblxyXG4gICAgLy8gbWV0YWRhdGFcclxuICAgIG1ldGFkYXRhLmZvckVhY2goKFtsYWJlbCwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGNzdkNvbnRlbnQgKz0gYCR7ZXNjYXBlQ3N2KGxhYmVsKX0ke2VzY2FwZUNzdih2YWx1ZSl9LFxcbmA7XHJcbiAgICB9KTtcclxuICAgIGNzdkNvbnRlbnQgKz0gJ1xcbic7IC8vIGdhcFxyXG5cclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgaGVhZGluZyAtLS1cclxuICAgIGNzdkNvbnRlbnQgKz0gJ1NlYXJjaCBDcml0ZXJpYTotXFxuJztcclxuXHJcbiAgICAvLyAtLS0gc2VhcmNoIGNyaXRlcmlhICgyIHBlciByb3csIGR5bmFtaWMpIC0tLVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWFyY2hDcml0ZXJpYS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICBjb25zdCBsZWZ0ID0gc2VhcmNoQ3JpdGVyaWFbaV07XHJcbiAgICAgIGNvbnN0IHJpZ2h0ID0gc2VhcmNoQ3JpdGVyaWFbaSArIDFdO1xyXG5cclxuICAgICAgLy8gTGVmdCBzaWRlXHJcbiAgICAgIGlmIChsZWZ0KSBjc3ZDb250ZW50ICs9IGAke2VzY2FwZUNzdihsZWZ0WzBdKX0gJHtlc2NhcGVDc3YobGVmdFsxXSl9LGA7XHJcblxyXG4gICAgICAvLyBSaWdodCBzaWRlXHJcbiAgICAgIGlmIChyaWdodCkgY3N2Q29udGVudCArPSBgICR7ZXNjYXBlQ3N2KHJpZ2h0WzBdKX0gJHtlc2NhcGVDc3YocmlnaHRbMV0pfSxgO1xyXG5cclxuICAgICAgY3N2Q29udGVudCArPSAnXFxuJztcclxuICAgIH1cclxuICAgIGNzdkNvbnRlbnQgKz0gJ1xcbic7IC8vIGJsYW5rIGxpbmUgYWZ0ZXIgY3JpdGVyaWFcclxuXHJcbiAgICAvLyB0YWJsZSBoZWFkZXJzXHJcbiAgICBjc3ZDb250ZW50ICs9IGhlYWRlcnMubWFwKGggPT4gZXNjYXBlQ3N2KGgpKS5qb2luKCcsJykgKyAnXFxuJztcclxuXHJcbiAgICAvLyB0YWJsZSByb3dzXHJcbiAgICByb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgY3N2Q29udGVudCArPSByb3cubWFwKGNlbGwgPT4gZXNjYXBlQ3N2KGNlbGwpKS5qb2luKCcsJykgKyAnXFxuJztcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIC0tLSB0cmlnZ2VyIGRvd25sb2FkIC0tLVxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZDb250ZW50XSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICBsaW5rLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVwb3J0KHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWwgPSBwYXlsb2FkPy5tb2RhbCB8fCBwYXlsb2FkO1xyXG5cclxuICAgIHRoaXMuZnJvbURhdGUgPSBmb3JtYXREYXRlKG1vZGFsLmZyb21EYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpO1xyXG4gICAgdGhpcy50b0RhdGUgPSBmb3JtYXREYXRlKG1vZGFsLnRvRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKTtcclxuXHJcbiAgICBjb25zdCByZXE6IFRyaWFsQmFsYW5jZUFjY291bnRzUmVwb3J0UmVxdWVzdERUTyA9IHtcclxuICAgICAgeWVhcjogTnVtYmVyKG1vZGFsLmZpbmFuY2lhbFllYXIpLFxyXG4gICAgICBkYXRlVHlwZTogbW9kYWwuZGF0ZVR5cGUsXHJcbiAgICAgIGZyb21EYXRlOiBtb2RhbC5mcm9tRGF5LFxyXG4gICAgICB0b0RhdGU6IG1vZGFsLnRvRGF5LFxyXG4gICAgICBhY2NvdW50U3RhdHVzOiBtb2RhbC5hY2NvdW50U3RhdHVzLmpvaW4oJywnKSxcclxuICAgICAgYnVzaW5lc3NMaW5lOiBtb2RhbC5idXNpbmVzc0xpbmUsXHJcbiAgICAgIGN1cnJlbmN5OiBtb2RhbC5jdXJyZW5jeSxcclxuICAgICAgY29tcGFueUNvZGU6IFwiQkhcIixcclxuICAgICAgcmVwb3J0UGVyaW9kOiBgJHtmb3JtYXREYXRlKG1vZGFsLmZyb21EYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpfSAtICR7Zm9ybWF0RGF0ZShtb2RhbC50b0RhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZXRUcmlhbEJhbGFuY2VBY2NvdW50c1JlcG9ydChyZXEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9ybVZhbGlkKGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb3JtVmFsaWQgPSBpc1ZhbGlkO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiAoc2VhcmNoQ2xpY2tlZCk9XCJnZXRSZXBvcnQoJGV2ZW50KVwiXHJcbiAgKGZvcm1WYWxpZCk9XCJoYW5kbGVGb3JtVmFsaWQoJGV2ZW50KVwiPjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcbjxhcHAtbG9hZGVyIGNsYXNzPVwiXCIgKm5nSWY9XCJsb2FkaW5nU3RhdGUgPT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiZGF0YVJlYWR5ICYmIHRyaWFsQmFsYW5jZVJlcG9ydD8ubWFpbkNPQUdyb3Vwcz8ubGVuZ3RoID4gMCAmJmlzRm9ybVZhbGlkXCI+XHJcbiAgPGxpYi1tZXRhZGF0YSBbcmVwb3J0TmFtZV09XCInWHByZXNzIE1vbmV5IC0gTUkgQWNjb3VudHMnXCIgW3Nob3dtZXRhRGF0YU9uZV09XCJ0cnVlXCIgW3Nob3dtZXRhRGF0YVR3b109XCJ0cnVlXCJcclxuICAgIFttZXRhRGF0YU9uZV09XCJtZXRhRGF0YU9uZVwiIFttZXRhRGF0YVR3b109XCJtZXRhRGF0YVR3b1wiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiXHJcbiAgICAoc2VhcmNoRXZlbnQpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG5cclxuICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiICpuZ0lmPVwicm93RGF0YSAmJiByb3dEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwicm93RGF0YT8ubGVuZ3RoXCIgW2RlZmF1bHRTaXplXT1cIicxNSdcIlxyXG4gICAgICBbZ3JpZEFwaV09XCJncmlkQXBpXCI+PC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgdHJhbnNhY3Rpb24tZ3JpZFwiIHN0eWxlPVwiaGVpZ2h0OiAzODBweDtcIiBbZG9tTGF5b3V0XT1cIidub3JtYWwnXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIiBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW3Jvd0NsYXNzUnVsZXNdPVwicm93Q2xhc3NSdWxlc1wiXHJcbiAgICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3Jvd0hlaWdodF09XCIyMFwiXHJcbiAgICAgIFtoZWFkZXJIZWlnaHRdPVwiMjJcIiAocGFnaW5hdGlvbkNoYW5nZWQpPVwib25SZXNpemUoKVwiPjwvYWctZ3JpZC1hbmd1bGFyPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbXQtM1wiICpuZ0lmPVwidHJpYWxCYWxhbmNlUmVwb3J0Py5tYWluQ09BR3JvdXBzPy5sZW5ndGg9PTBcIj5cclxuICBObyBEYXRhIGZvdW5kIG1hdGNoaW5nIHlvdXIgc2VhcmNoIGNyaXRlcmlhLlxyXG48L2Rpdj4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// trial-balance-accounts.model.ts
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpYWwtYmFsYW5jZS1hY2NvdW50cy5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRzLWxpYi9zcmMvbGliL21vZGVscy90cmlhbC1iYWxhbmNlLWFjY291bnRzLXJlcG9ydC90cmlhbC1iYWxhbmNlLWFjY291bnRzLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmlhbC1iYWxhbmNlLWFjY291bnRzLm1vZGVsLnRzXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyaWFsQmFsYW5jZVJlcG9ydCB7XHJcbiAgcmVwb3J0VXNlcjogc3RyaW5nO1xyXG4gIG1haW5DT0FHcm91cHM6IE1haW5DT0FHcm91cFtdO1xyXG4gIGdyYW5kVG90YWw6IFRyaWFsQmFsYW5jZVRvdGFscztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYWluQ09BR3JvdXAge1xyXG4gIG1haW5DT0FEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIHN1YkNPQUdyb3VwczogU3ViQ09BR3JvdXBbXTtcclxuICB0b3RhbHM6IFRyaWFsQmFsYW5jZVRvdGFscztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdWJDT0FHcm91cCB7XHJcbiAgc3ViQ09BRGVzY3JpcHRpb246IHN0cmluZztcclxuICBjb2FHcm91cHM6IENPQUdyb3VwW107XHJcbiAgdG90YWxzOiBUcmlhbEJhbGFuY2VUb3RhbHM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ09BR3JvdXAge1xyXG4gIGNvYURlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgYWNjb3VudHM6IEFjY291bnREZXRhaWxbXTtcclxuICB0b3RhbHM6IFRyaWFsQmFsYW5jZVRvdGFscztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50RGV0YWlsIHtcclxuICBjb2FDb2RlOiBzdHJpbmc7XHJcbiAgYWNjb3VudENvZGU6IHN0cmluZztcclxuICBhY2NvdW50RGVzY3JpcHRpb246IHN0cmluZztcclxuICBvcGVuaW5nQmFsYW5jZTogc3RyaW5nO1xyXG4gIGRlYml0OiBzdHJpbmc7XHJcbiAgY3JlZGl0OiBzdHJpbmc7XHJcbiAgbmV0TW92ZW1lbnQ6IHN0cmluZztcclxuICBjbG9zaW5nQmFsYW5jZTogc3RyaW5nO1xyXG4gIGlzVG90YWxSb3c/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyaWFsQmFsYW5jZVRvdGFscyB7XHJcbiAgb3BlbmluZ0JhbGFuY2U6IG51bWJlcjtcclxuICBkZWJpdDogbnVtYmVyO1xyXG4gIGNyZWRpdDogbnVtYmVyO1xyXG4gIG5ldE1vdmVtZW50OiBudW1iZXI7XHJcbiAgY2xvc2luZ0JhbGFuY2U6IG51bWJlcjtcclxufVxyXG4iXX0=
|