@reusa/ngx-reusa-app-lib 0.0.1311 → 0.0.1312
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +13 -5
- package/esm2022/lib/components/profile/profile.component.mjs +135 -134
- package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs +20 -20
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs +161 -151
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs
CHANGED
|
@@ -191,30 +191,35 @@ function ProofOfDocumentUploadComponent_form_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
191
191
|
i0.ɵɵadvance(2);
|
|
192
192
|
i0.ɵɵproperty("ngIf", ctx_r0.context != "signature" && ctx_r0.context != "uploadZipCodes");
|
|
193
193
|
} }
|
|
194
|
-
function
|
|
194
|
+
function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
195
195
|
const _r53 = i0.ɵɵgetCurrentView();
|
|
196
196
|
i0.ɵɵelementStart(0, "div", 39);
|
|
197
197
|
i0.ɵɵelement(1, "i", 40);
|
|
198
198
|
i0.ɵɵelementStart(2, "input", 41, 27);
|
|
199
|
-
i0.ɵɵlistener("change", function
|
|
199
|
+
i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_5_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r53); const employer_r40 = i0.ɵɵnextContext(2).$implicit; const ctx_r51 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r51.addFileToEmployerData($event, employer_r40)); });
|
|
200
200
|
i0.ɵɵelementEnd();
|
|
201
201
|
i0.ɵɵelementStart(4, "ion-button", 42);
|
|
202
|
-
i0.ɵɵlistener("click", function
|
|
202
|
+
i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_5_Template_ion_button_click_4_listener() { i0.ɵɵrestoreView(_r53); const _r50 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r50.click()); });
|
|
203
203
|
i0.ɵɵtext(5, " Upload ");
|
|
204
|
+
i0.ɵɵelementEnd();
|
|
205
|
+
i0.ɵɵelementStart(6, "label", 43);
|
|
206
|
+
i0.ɵɵtext(7);
|
|
204
207
|
i0.ɵɵelementEnd()();
|
|
205
208
|
} if (rf & 2) {
|
|
206
209
|
const ctx_r48 = i0.ɵɵnextContext(4);
|
|
207
210
|
i0.ɵɵadvance(2);
|
|
208
211
|
i0.ɵɵproperty("accept", ctx_r48.allowedFileType);
|
|
212
|
+
i0.ɵɵadvance(5);
|
|
213
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r48.iconInfo, " ");
|
|
209
214
|
} }
|
|
210
|
-
function
|
|
215
|
+
function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
211
216
|
const _r57 = i0.ɵɵgetCurrentView();
|
|
212
|
-
i0.ɵɵelementStart(0, "div")(1, "div",
|
|
213
|
-
i0.ɵɵelement(4, "i",
|
|
217
|
+
i0.ɵɵelementStart(0, "div")(1, "div", 44)(2, "div", 45)(3, "span");
|
|
218
|
+
i0.ɵɵelement(4, "i", 46);
|
|
214
219
|
i0.ɵɵtext(5);
|
|
215
220
|
i0.ɵɵelementEnd();
|
|
216
|
-
i0.ɵɵelementStart(6, "ion-button",
|
|
217
|
-
i0.ɵɵlistener("click", function
|
|
221
|
+
i0.ɵɵelementStart(6, "ion-button", 47);
|
|
222
|
+
i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r57); const employer_r40 = i0.ɵɵnextContext(2).$implicit; const ctx_r55 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r55.removeFileFromEmployerData(employer_r40)); });
|
|
218
223
|
i0.ɵɵelement(7, "ion-icon", 21);
|
|
219
224
|
i0.ɵɵelementEnd()()()();
|
|
220
225
|
} if (rf & 2) {
|
|
@@ -225,19 +230,14 @@ function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template(r
|
|
|
225
230
|
function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
226
231
|
i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 35)(2, "h4", 36);
|
|
227
232
|
i0.ɵɵtext(3);
|
|
228
|
-
i0.ɵɵelementEnd();
|
|
229
|
-
i0.ɵɵ
|
|
230
|
-
i0.ɵɵ
|
|
231
|
-
i0.ɵɵelementStart(5, "div", 37);
|
|
232
|
-
i0.ɵɵtemplate(6, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template, 6, 1, "div", 38)(7, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template, 8, 1, "div", 4);
|
|
233
|
+
i0.ɵɵelementEnd()()();
|
|
234
|
+
i0.ɵɵelementStart(4, "div", 37);
|
|
235
|
+
i0.ɵɵtemplate(5, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_5_Template, 8, 2, "div", 38)(6, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template, 8, 1, "div", 4);
|
|
233
236
|
i0.ɵɵelementEnd();
|
|
234
237
|
} if (rf & 2) {
|
|
235
238
|
const employer_r40 = i0.ɵɵnextContext().$implicit;
|
|
236
|
-
const ctx_r42 = i0.ɵɵnextContext(2);
|
|
237
239
|
i0.ɵɵadvance(3);
|
|
238
240
|
i0.ɵɵtextInterpolate(employer_r40.employerName);
|
|
239
|
-
i0.ɵɵadvance(1);
|
|
240
|
-
i0.ɵɵproperty("overlayText", ctx_r42.iconInfo);
|
|
241
241
|
i0.ɵɵadvance(2);
|
|
242
242
|
i0.ɵɵproperty("ngIf", !employer_r40.file);
|
|
243
243
|
i0.ɵɵadvance(1);
|
|
@@ -245,7 +245,7 @@ function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template(rf, ctx
|
|
|
245
245
|
} }
|
|
246
246
|
function ProofOfDocumentUploadComponent_ul_1_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
247
247
|
i0.ɵɵelementStart(0, "li", 32)(1, "p-card", 33);
|
|
248
|
-
i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template,
|
|
248
|
+
i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template, 7, 3, "ng-template", 34);
|
|
249
249
|
i0.ɵɵelementEnd()();
|
|
250
250
|
} }
|
|
251
251
|
function ProofOfDocumentUploadComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -489,7 +489,7 @@ export class ProofOfDocumentUploadComponent {
|
|
|
489
489
|
provide: NG_VALUE_ACCESSOR,
|
|
490
490
|
useExisting: ProofOfDocumentUploadComponent,
|
|
491
491
|
multi: true
|
|
492
|
-
}]), i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[3, "formGroup", 4, "ngIf"], ["class", "no-bullets gap-3", 4, "ngIf"], [3, "formGroup"], ["uploadFileFormDirective", "ngForm"], [4, "ngIf"], ["dataKey", "fileName", "responsiveLayout", "scroll", 3, "value", "loading"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["showDocTypeHeading", ""], ["removeDocTypeHeading", ""], ["pTemplate", "body"], ["pTemplate", "footer"], ["pTemplate", "header"], [1, "flex", "flex-row", "align-items-center"], ["class", "pl-1", 4, "ngIf"], [1, "pl-1"], [2, "margin-top", "2px", "margin-left", "6px", 3, "overlayText"], [3, "overlayText"], ["formArrayName", "tableRowArray"], [3, "formGroupName"], [1, "ion-text-right", 2, "padding-right", "unset"], ["shape", "round", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 3, "click"], ["name", "trash-outline"], ["formControlName", "docType", "optionLabel", "label", "optionValue", "value", "placeholder", "Select a Document Type", "appendTo", "body", 1, "ng-invalid", "ng-dirty", 3, "options", "ngModel", "showClear", "ngClass", "ngModelChange", "onChange", "onClear"], ["class", "file-input-container flex flex-row align-items-center", 4, "ngIf"], [1, "file-input-container", "flex", "flex-row", "align-items-center"], [1, "pr-1"], ["type", "file", 3, "accept", "change"], ["fileInput", ""], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 3, "click"], [1, "action-icon", 3, "icon"], [1, "no-bullets", "gap-3"], ["class", "pb-3", 4, "ngFor", "ngForOf"], [1, "pb-3"], [1, "pb-2", "gap-3"], ["class", "p-3", "pTemplate", "content"], [1, "flex", "flex-row", "align-items-center", "gap-1"], ["stlye", "margin: 0", 1, "m-0"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "border-2", "border-dashed", "border-400", "rounded-sm", "p-2"], ["class", "flex align-items-center justify-content-center flex-column", 4, "ngIf"], [1, "flex", "align-items-center", "justify-content-center", "flex-column"], [1, "pi", "pi-upload", "border-2", "border-circle", "p-2", "m-2", "text-xl", "text-400"], ["id", "employerWorkSearchFileInput", "type", "file", 2, "display", "none", 3, "accept", "change"], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 2, "float", "inline-end", 3, "click"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "p-0", "sm:p-2", "gap-5"], [1, "card", "m-0", "px-6", "flex", "align-items-center", "justify-content-center", "flex-column", "gap-2"], [1, "pi", "pi-file", 2, "color", "#4478AA"], ["aria-label", "Remove Files", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 2, "float", "inline-end", 3, "click"]], template: function ProofOfDocumentUploadComponent_Template(rf, ctx) { if (rf & 1) {
|
|
492
|
+
}]), i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[3, "formGroup", 4, "ngIf"], ["class", "no-bullets gap-3", 4, "ngIf"], [3, "formGroup"], ["uploadFileFormDirective", "ngForm"], [4, "ngIf"], ["dataKey", "fileName", "responsiveLayout", "scroll", 3, "value", "loading"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["showDocTypeHeading", ""], ["removeDocTypeHeading", ""], ["pTemplate", "body"], ["pTemplate", "footer"], ["pTemplate", "header"], [1, "flex", "flex-row", "align-items-center"], ["class", "pl-1", 4, "ngIf"], [1, "pl-1"], [2, "margin-top", "2px", "margin-left", "6px", 3, "overlayText"], [3, "overlayText"], ["formArrayName", "tableRowArray"], [3, "formGroupName"], [1, "ion-text-right", 2, "padding-right", "unset"], ["shape", "round", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 3, "click"], ["name", "trash-outline"], ["formControlName", "docType", "optionLabel", "label", "optionValue", "value", "placeholder", "Select a Document Type", "appendTo", "body", 1, "ng-invalid", "ng-dirty", 3, "options", "ngModel", "showClear", "ngClass", "ngModelChange", "onChange", "onClear"], ["class", "file-input-container flex flex-row align-items-center", 4, "ngIf"], [1, "file-input-container", "flex", "flex-row", "align-items-center"], [1, "pr-1"], ["type", "file", 3, "accept", "change"], ["fileInput", ""], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 3, "click"], [1, "action-icon", 3, "icon"], [1, "no-bullets", "gap-3"], ["class", "pb-3", 4, "ngFor", "ngForOf"], [1, "pb-3"], [1, "pb-2", "gap-3"], ["class", "p-3", "pTemplate", "content"], [1, "flex", "flex-row", "align-items-center", "gap-1"], ["stlye", "margin: 0", 1, "m-0"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "border-2", "border-dashed", "border-400", "rounded-sm", "p-2"], ["class", "flex align-items-center justify-content-center flex-column", 4, "ngIf"], [1, "flex", "align-items-center", "justify-content-center", "flex-column"], [1, "pi", "pi-upload", "border-2", "border-circle", "p-2", "m-2", "text-xl", "text-400"], ["id", "employerWorkSearchFileInput", "type", "file", 2, "display", "none", 3, "accept", "change"], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 2, "float", "inline-end", 3, "click"], [1, "pt-4", 2, "font-size", "12px"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "p-0", "sm:p-2", "gap-5"], [1, "card", "m-0", "px-6", "flex", "align-items-center", "justify-content-center", "flex-column", "gap-2"], [1, "pi", "pi-file", 2, "color", "#4478AA"], ["aria-label", "Remove Files", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 2, "float", "inline-end", 3, "click"]], template: function ProofOfDocumentUploadComponent_Template(rf, ctx) { if (rf & 1) {
|
|
493
493
|
i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_Template, 3, 2, "form", 0)(1, ProofOfDocumentUploadComponent_ul_1_Template, 2, 1, "ul", 1);
|
|
494
494
|
} if (rf & 2) {
|
|
495
495
|
i0.ɵɵproperty("ngIf", !ctx.employerDataModel);
|
|
@@ -503,7 +503,7 @@ export class ProofOfDocumentUploadComponent {
|
|
|
503
503
|
provide: NG_VALUE_ACCESSOR,
|
|
504
504
|
useExisting: ProofOfDocumentUploadComponent,
|
|
505
505
|
multi: true
|
|
506
|
-
}], template: "<form [formGroup]=\"formArray\" #uploadFileFormDirective=\"ngForm\" *ngIf=\"!employerDataModel\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table dataKey=\"fileName\" [value]=\"fileObjectQueue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <div *ngIf = \"docType.length > 0; then showDocTypeHeading; else removeDocTypeHeading\" ></div>\r\n <ng-template #showDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Document Name</th>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Type\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\" style=\"margin-top: 2px; margin-left: 6px; \"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #removeDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Name\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-fileObjectQueue let-rowIndex=\"rowIndex\">\r\n <ng-container formArrayName=\"tableRowArray\">\r\n <tr [formGroupName]=\"rowIndex\">\r\n <td>{{ fileObjectQueue?.fileName }}</td>\r\n <td *ngIf=\"docType.length > 0\">\r\n <p-dropdown [options]=\"docTypeDropdown\" formControlName=\"docType\" [(ngModel)]=\"fileObjectQueue.selectedDocumentType\" \r\n (onChange)=\"changeDocType(fileObjectQueue,$event)\" \r\n optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select a Document Type\" appendTo=body\r\n [style]=\"{'width':'90%'}\"\r\n class=\"ng-invalid ng-dirty\"\r\n [showClear]=\"true\"\r\n (onClear)=\"clearDocType(fileObjectQueue)\"\r\n [ngClass]=\"{'ng-invalid':tableRows.controls[rowIndex].get('docType')?.invalid}\"/>\r\n </td>\r\n <td class=\"ion-text-right\" style=\"padding-right: unset\">\r\n <ion-button shape=\"round\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(fileObjectQueue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"fileObjectQueue.length == 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td *ngIf=\"fileObjectQueue.length > 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> any other document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td></td>\r\n <td >\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n </form>\r\n <ul *ngIf=\"employerDataModel\" class=\"no-bullets gap-3\">\r\n <li class=\"pb-3\" *ngFor=\"let employer of employerDataModel; let i = index\">\r\n <p-card class=\"pb-2 gap-3\">\r\n <ng-template class=\"p-3\" pTemplate=\"content\" let-files let-uploadedFiles=\"uploadedFiles\" let-removeFileCallback=\"removeFileCallback\" let-removeUploadedFileCallback=\"removeUploadedFileCallback\" let-chooseCallback=\"chooseCallback\">\r\n \r\n <ion-row>\r\n <ion-col class=\"flex flex-row align-items-center gap-1\">\r\n <h4 class=\"m-0\" stlye=\"margin: 0\">{{employer.employerName}}</h4>\r\n
|
|
506
|
+
}], template: "<form [formGroup]=\"formArray\" #uploadFileFormDirective=\"ngForm\" *ngIf=\"!employerDataModel\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table dataKey=\"fileName\" [value]=\"fileObjectQueue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <div *ngIf = \"docType.length > 0; then showDocTypeHeading; else removeDocTypeHeading\" ></div>\r\n <ng-template #showDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Document Name</th>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Type\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\" style=\"margin-top: 2px; margin-left: 6px; \"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #removeDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Name\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-fileObjectQueue let-rowIndex=\"rowIndex\">\r\n <ng-container formArrayName=\"tableRowArray\">\r\n <tr [formGroupName]=\"rowIndex\">\r\n <td>{{ fileObjectQueue?.fileName }}</td>\r\n <td *ngIf=\"docType.length > 0\">\r\n <p-dropdown [options]=\"docTypeDropdown\" formControlName=\"docType\" [(ngModel)]=\"fileObjectQueue.selectedDocumentType\" \r\n (onChange)=\"changeDocType(fileObjectQueue,$event)\" \r\n optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select a Document Type\" appendTo=body\r\n [style]=\"{'width':'90%'}\"\r\n class=\"ng-invalid ng-dirty\"\r\n [showClear]=\"true\"\r\n (onClear)=\"clearDocType(fileObjectQueue)\"\r\n [ngClass]=\"{'ng-invalid':tableRows.controls[rowIndex].get('docType')?.invalid}\"/>\r\n </td>\r\n <td class=\"ion-text-right\" style=\"padding-right: unset\">\r\n <ion-button shape=\"round\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(fileObjectQueue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"fileObjectQueue.length == 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td *ngIf=\"fileObjectQueue.length > 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> any other document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td></td>\r\n <td >\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n </form>\r\n <ul *ngIf=\"employerDataModel\" class=\"no-bullets gap-3\">\r\n <li class=\"pb-3\" *ngFor=\"let employer of employerDataModel; let i = index\">\r\n <p-card class=\"pb-2 gap-3\">\r\n <ng-template class=\"p-3\" pTemplate=\"content\" let-files let-uploadedFiles=\"uploadedFiles\" let-removeFileCallback=\"removeFileCallback\" let-removeUploadedFileCallback=\"removeUploadedFileCallback\" let-chooseCallback=\"chooseCallback\">\r\n \r\n <ion-row>\r\n <ion-col class=\"flex flex-row align-items-center gap-1\">\r\n <h4 class=\"m-0\" stlye=\"margin: 0\">{{employer.employerName}}</h4>\r\n </ion-col>\r\n </ion-row>\r\n <div class=\"flex align-items-center justify-content-center flex-column border-2 border-dashed border-400 rounded-sm p-2\">\r\n <div *ngIf=\"!employer.file\" class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-upload border-2 border-circle p-2 m-2 text-xl text-400\"></i>\r\n <input id=\"employerWorkSearchFileInput\" type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addFileToEmployerData($event,employer)\" style=\"display: none\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\" style=\"float:inline-end\">\r\n Upload\r\n </ion-button>\r\n <label class=\"pt-4\" style=\"font-size: 12px;\">\r\n {{iconInfo}}\r\n </label>\r\n </div>\r\n <div *ngIf=\"employer.file\">\r\n\r\n <div class=\"flex align-items-center justify-content-center flex-column p-0 sm:p-2 gap-5\">\r\n <div\r\n class=\"card m-0 px-6 flex align-items-center justify-content-center flex-column gap-2\"\r\n > \r\n <span>\r\n <i class=\"pi pi-file\" style=\"color: #4478AA\"></i>{{ employer.file.fileName }}\r\n </span>\r\n <ion-button aria-label=\"Remove Files\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFileFromEmployerData(employer)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\" style=\"float: inline-end\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n \r\n </ng-template>\r\n </p-card>\r\n </li>\r\n </ul>", styles: [".file-input-container{text-align:right}.file-input-container input[type=file]{display:none}.file-input-container label{border:1px solid #ccc;padding:6px 12px;cursor:pointer}.upload-input-container input[type=file]{display:none}.upload-input-container label{border:1px solid #ccc;cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background:#fff!important;background-color:#fff!important}ol,ul{list-style:none}ul{list-style-type:square}li{color:var(--ion-color-grey)}.ng-invalid{border-color:#f44336}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}.no-bullets{list-style-type:none;padding-left:0}:host ::ng-deep .remove-header .p-fileupload-buttonbar{display:none}:host ::ng-deep .remove-header .p-fileupload-content{border-top-right-radius:4px;border-top-left-radius:4px;padding:1rem}:host ::ng-deep .p-card .p-card-body .p-card-content{padding:1rem!important}.border-400{border-color:#4478aa!important;border-radius:6px}\n"] }]
|
|
507
507
|
}], () => [{ type: i1.UntypedFormBuilder }, { type: i2.ToastController }], { uploadFileFormDirective: [{
|
|
508
508
|
type: ViewChild,
|
|
509
509
|
args: ['uploadFileFormDirective', { static: false }]
|
|
@@ -557,4 +557,4 @@ export class FileObject {
|
|
|
557
557
|
this.employerName = employerName;
|
|
558
558
|
}
|
|
559
559
|
}
|
|
560
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0ksT0FBTyxFQUFpRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDRXhILHNCQUE2Rjs7O0lBT3JGLCtCQUEwQztJQUN4Qyx1Q0FBMEc7SUFDNUcsaUJBQU07OztJQURjLGVBQXdCO0lBQXhCLDhDQUF3Qjs7O0lBTGhELDBCQUFJLFNBQUE7SUFDRSw2QkFBYTtJQUFBLGlCQUFLO0lBQ3RCLDhCQUE2QztJQUMzQywrQkFDQTtJQUFBLDZIQUVNO0lBQ1IsaUJBQUs7SUFDTCxxQkFBUztJQUNYLGlCQUFLOzs7SUFMSyxlQUFxQjtJQUFyQiw4Q0FBcUI7OztJQUxqQywrSEFXYzs7O0lBT1IsK0JBQTBDO0lBQ3hDLHVDQUE4RDtJQUNoRSxpQkFBTTs7O0lBRGMsZUFBd0I7SUFBeEIsOENBQXdCOzs7SUFKaEQsMEJBQUksYUFBQTtJQUVBLCtCQUNBO0lBQUEsNkhBRU07SUFDUixpQkFBSztJQUNMLHFCQUFTLFNBQUE7SUFFWCxp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QUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkcmVuLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCxVbnR5cGVkRm9ybUFycmF5LCBOZ0Zvcm0sIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXB0Y2hhL2NhcHRjaGEuc2VydmljZSc7XHJcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgRG9jVHlwZVVwbG9hZCwgRG9jVXBsb2FkTW9kZWwsIERvY1R5cGVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9maWxldXBsb2FkL0RvY1VwbG9hZE1vZGVsJztcclxuaW1wb3J0IHsgRW1wbG95ZXJEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZXVwbG9hZC9FbXBsb3llckRhdGFNb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IFByb29mT2ZEb2N1bWVudFVwbG9hZENvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb29mT2ZEb2N1bWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbiAgcHVibGljIHNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCd1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyB1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB1cGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWxlczogRXZlbnRFbWl0dGVyPE1hcDxGaWxlLCBzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXBsb2FkRW1wbG95ZXJGaWxlOiBFdmVudEVtaXR0ZXI8RW1wbG95ZXJEYXRhTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBcclxuICBkb2NGb3JtOiBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyPFVudHlwZWRGb3JtR3JvdXA+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDtcclxuICBcclxuICBxdWV1ZTogRmlsZVtdID0gW107XHJcblxyXG4gIGZpbGVPYmplY3RRdWV1ZTogRmlsZU9iamVjdFtdID0gW107XHJcblxyXG4gIG1hcE9mRmlsZXM6IE1hcDxGaWxlLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFsbG93ZWRGaWxlVHlwZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvb2ZPZkFueXRoaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29udGV4dDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dTZXBhcmF0ZUF0dGFjaEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRvY1VwbG9hZE1vZGVsOiBEb2NVcGxvYWRNb2RlbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWREb2N1bWVudFR5cGU6IERvY1R5cGVVcGxvYWQgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRvY1R5cGU6RG9jVHlwZVVwbG9hZFtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGljb25JbmZvOnN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZW1wbG95ZXJEYXRhTW9kZWwgOiBFbXBsb3llckRhdGFNb2RlbFtdO1xyXG4gIGRvY1R5cGVEcm9wZG93bjogRG9jVHlwZURyb3Bkb3duT3B0aW9uW10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRGaWxlRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBmb3JtQXJyYXk6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgaW1hZ2VIdG1sOiBzdHJpbmc7XHJcbiAgZG9jdW1lbnRUeXBlczogRG9jVHlwZVVwbG9hZFtdIHwgdW5kZWZpbmVkO1xyXG4gIGZpbGVUeXBlczogc3RyaW5nW107XHJcbiAgZXhwYW5kZWRSb3dzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgXHJcbiAgICBwdWJsaWMgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIpIHtcclxuICAgICBcclxuICB9XHJcblxyXG4gIGdldCB1cGxvYWRGaWxlQ3RybCgpIHtcclxuICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVGb3JtLmNvbnRyb2xzWyd1cGxvYWRGaWxlQ3RybCddO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdGFibGVSb3dBcnJheTogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXHJcbiAgICAgIF0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5kb2NGb3JtLmVtaXQodGhpcy5mb3JtQXJyYXkpO1xyXG4gICAgaWYgKHRoaXMuZG9jVHlwZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duID0gdGhpcy5kb2NUeXBlLm1hcCgoaSkgPT4gKHtcclxuICAgICAgICBsYWJlbDogaS5kb2NEZXNjcmlwdGlvbixcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZVR5cGVzID0gdGhpcy5hbGxvd2VkRmlsZVR5cGUuc3BsaXQoJywnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG5cclxuICB9O1xyXG4gIHdyaXRlVmFsdWUoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIGdldCB0YWJsZVJvd3MoKTogVW50eXBlZEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuZ2V0KCd0YWJsZVJvd0FycmF5JykgYXMgVW50eXBlZEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZTpGaWxlLCBhcHByb3ZlZEZpbGVUeXBlOnN0cmluZ1tdKTpib29sZWFue1xyXG4gICAgZm9yKGxldCB0eXBlIG9mIGFwcHJvdmVkRmlsZVR5cGUpe1xyXG4gICAgICBpZihmaWxlLnR5cGU9PT10eXBlKXtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBhc3luYyBhZGRUb1F1ZXVlKGV2ZW50KSB7XHJcbiAgICBsZXQgY3VyVXBsZEZpbGVMZW46IG51bWJlciA9IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7XHJcbiAgICBsZXQgcHJlVXBsZEZpbGVMZW46IG51bWJlciA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDtcclxuICAgIGNvbnNvbGUubG9nKCdjdXJVcGxkRmlsZUxlbiA9ICcsIGN1clVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCdwcmVVcGxkRmlsZUxlbiA9ICcsIHByZVVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyA9PSAnLCB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyk7XHJcbiAgICBpZiAodGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MhPT1udWxsICYmKGN1clVwbGRGaWxlTGVuICsgcHJlVXBsZEZpbGVMZW4pID4gdGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MpIHtcclxuICAgICAgdGhpcy5lcnJvcihcIllvdSBjYW4gbm90IHVwbG9hZCBtb3JlIHRoYW4gXCIgKyB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyArIFwiIGZpbGUocykuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgbGV0IGVuY29kZWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdzaXplID0gJywgdGhpcy5nZXRTaXplSW5NQihmaWxlPy5zaXplKSlcclxuICAgICAgaWYodGhpcy5maWxlT2JqZWN0UXVldWUuc29tZShlPT5lLmZpbGVOYW1lPT09IGZpbGUubmFtZSkpe1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0RvY3VtZW50IHdpdGggdGhlIHNhbWUgZmlsZSBuYW1lIGFscmVhZHkgZXhpc3RzLicpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUhPT1udWxsICYmIHRoaXMuZ2V0U2l6ZUluTUIoZmlsZT8uc2l6ZSkgPiB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUpIHtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHNpemUgY2FuIG5vdCBiZSBtb3JlIHRoYW4gJyArIHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSArICcgTUIuJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlLHRoaXMuZmlsZVR5cGVzKSl7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSB0eXBlIG5vdCBhbGxvd2VkJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBlbmNvZGVkID0gYXdhaXQgdG9CYXNlNjQoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IG5ldyBGaWxlT2JqZWN0KHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY1R5cGUsdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jRGVzY3JpcHRpb24sIGZpbGUubmFtZSwgZmlsZS50eXBlLCBlbmNvZGVkKTtcclxuICAgICAgdmFyIHVwbG9hZEZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgIGlmICh0aGlzLmRvY1R5cGUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHVwbG9hZEZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAnZG9jVHlwZSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9ICAgXHJcbiAgICAgIHRoaXMudGFibGVSb3dzLnB1c2godXBsb2FkRmlsZUZvcm0pXHJcbiAgICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlLnB1c2goZmlsZU9iamVjdCk7XHJcbiAgICAgXHJcbiAgICAgIHRoaXMudXBsb2FkLmVtaXQodGhpcy5maWxlT2JqZWN0UXVldWUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZEZpbGVUb0VtcGxveWVyRGF0YShldmVudCxlbXBsb3llcil7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzW2ldO1xyXG4gICAgICBsZXQgZW5jb2RlZDtcclxuICAgICAgaWYgKHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSE9PW51bGwgJiYgdGhpcy5nZXRTaXplSW5NQihmaWxlPy5zaXplKSA+IHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0ZpbGUgc2l6ZSBjYW4gbm90IGJlIG1vcmUgdGhhbiAnICsgdGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplICsgJyBNQi4nKTtcclxuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZighdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUsdGhpcy5maWxlVHlwZXMpKXtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHR5cGUgbm90IGFsbG93ZWQnKTtcclxuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIGVuY29kZWQgPSBhd2FpdCB0b0Jhc2U2NChmaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmaWxlT2JqZWN0ID0gbmV3IEZpbGVPYmplY3QodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jVHlwZSx0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlPy5kb2NEZXNjcmlwdGlvbiwgZmlsZS5uYW1lLCBmaWxlLnR5cGUsIGVuY29kZWQsZW1wbG95ZXIucmVjb3JkSWQsIGVtcGxveWVyLmVtcGxveWVyTmFtZSk7ICAgICAgXHJcbiAgICAgIGVtcGxveWVyLmZpbGUgPSBmaWxlT2JqZWN0XHJcbiAgICAgIHRoaXMudXBsb2FkRW1wbG95ZXJGaWxlLmVtaXQodGhpcy5lbXBsb3llckRhdGFNb2RlbCk7XHJcbiAgICB9XHJcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgfVxyXG4gIFxyXG4gIHJlbW92ZUZpbGVGcm9tRW1wbG95ZXJEYXRhKGVtcGxveWVyKXtcclxuICAgIGVtcGxveWVyLmZpbGUgPSBudWxsXHJcbiAgICB0aGlzLnVwbG9hZEVtcGxveWVyRmlsZS5lbWl0KHRoaXMuZW1wbG95ZXJEYXRhTW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRnJvbVF1ZXVlKGZpbGVUb1JlbW92ZSkge1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGVUb1JlbW92ZS5maWxlTmFtZSkge1xyXG4gICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5kb2NUeXBlRHJvcGRvd24ubGVuZ3RoOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlPT09ZmlsZVRvUmVtb3ZlLmRvY1R5cGUpe1xyXG4gICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgfVxyXG4gICAgIH1cclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnRhYmxlUm93cy5yZW1vdmVBdChpbmRleCk7XHJcbiAgICB0aGlzLm1hcE9mRmlsZXMuZGVsZXRlKGZpbGVUb1JlbW92ZSk7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgdGhpcy51cGxvYWQuZW1pdChBcnJheS5mcm9tKHRoaXMubWFwT2ZGaWxlcy52YWx1ZXMoKSkpO1xyXG4gICAgdGhpcy5maWxlcy5lbWl0KHRoaXMubWFwT2ZGaWxlcyk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRG9jVHlwZShmaWxlLGV2ZW50KXtcclxuXHRcdCAgY29uc29sZS5sb2coXCIxNjYgY2hhbmdlRG9jVHlwZVwiKTtcclxuICAgIGlmKGV2ZW50LnZhbHVlID09PSBudWxsKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgbGV0IHByZXZTZWxlY3RlZERvYyA6IHN0cmluZztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICAgIHByZXZTZWxlY3RlZERvYyA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0uZG9jVHlwZSA9IGV2ZW50LnZhbHVlLmRvY1R5cGU7XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0ubmFtZSA9IGV2ZW50LnZhbHVlLmRvY0Rlc2NyaXB0aW9uO1xyXG5cclxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmRvY1R5cGVEcm9wZG93bi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgIGlmKGV2ZW50LnZhbHVlLmRvY1R5cGU9PT10aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlKXtcclxuICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLnZhbHVlLmRvY1R5cGU9PT1wcmV2U2VsZWN0ZWREb2Mpe1xyXG4gICAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICBjbGVhckRvY1R5cGUoZmlsZSl7XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBsZXQgcHJldlNlbGVjdGVkRG9jIDogc3RyaW5nO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgcHJldlNlbGVjdGVkRG9jID0gdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLmRvY1R5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlID1udWxsO1xyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLm5hbWUgPSBudWxsO1xyXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuZG9jVHlwZURyb3Bkb3duLmxlbmd0aDsgaSsrKXtcclxuICAgICBpZih0aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlPT09cHJldlNlbGVjdGVkRG9jKXtcclxuICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZVF1ZXVlV2l0aFR5cGUoZmlsZU9iamVjdCkge1xyXG4gICAgY29uc29sZS5sb2coXCIxNjYgdXBkYXRlUXVldWVXaXRoVHlwZVwiKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlT2JqZWN0LmZpbGVOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZG9jVHlwZSA9IHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUuZG9jVHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50VG9hc3QobXNnLCBjb2xvcikge1xyXG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0Q29udHJvbGxlci5jcmVhdGUoe1xyXG4gICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxyXG4gICAgICBjb2xvcjogY29sb3IsXHJcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJ1xyXG4gICAgfSk7XHJcbiAgICB0b2FzdC5wcmVzZW50KCk7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKG1zZykge1xyXG4gICAgdGhpcy5wcmVzZW50VG9hc3QobXNnLCAncHJpbWFyeScpO1xyXG4gIH1cclxuXHJcbiAgZXJyb3IobXNnKSB7XHJcbiAgICB0aGlzLnByZXNlbnRUb2FzdChtc2csICdkYW5nZXInKTtcclxuICB9XHJcblxyXG4gIGdldFNpemVJbk1CKG51bTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbnVtIC8gMTAyNCAvIDEwMjRcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbmNvbnN0IHRvQmFzZTY0ID0gZmlsZSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlT2JqZWN0IHtcclxuICBmaWxlOiBGaWxlO1xyXG4gIGRvY1R5cGU6IHN0cmluZztcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XHJcbiAgZmlsZUluQmFzZWQ2NDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuXHRyZWNvcmRJZD86IHN0cmluZztcclxuICBlbXBsb3llck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRvY1R5cGU6IHN0cmluZyxuYW1lOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcsIGNvbnRlbnRUeXBlOiBzdHJpbmcsIGZpbGVJbkJhc2VkNjQ6IHN0cmluZywgcmVjb3JkSWQ/OnN0cmluZywgZW1wbG95ZXJOYW1lPzpzdHJpbmcpIHtcclxuICAgIHRoaXMuZG9jVHlwZSA9IGRvY1R5cGU7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xyXG4gICAgdGhpcy5maWxlSW5CYXNlZDY0ID0gZmlsZUluQmFzZWQ2NDtcclxuICAgIHRoaXMucmVjb3JkSWQgPSByZWNvcmRJZDtcclxuICAgIHRoaXMuZW1wbG95ZXJOYW1lID0gZW1wbG95ZXJOYW1lOyBcclxuICB9XHJcbn1cclxuXHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUFycmF5XCIgI3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgKm5nSWY9XCIhZW1wbG95ZXJEYXRhTW9kZWxcIj5cclxuICAgIDxzZWN0aW9uICpuZ0lmPVwidGhpcy5jb250ZXh0ICE9ICdzaWduYXR1cmUnICYmIHRoaXMuY29udGV4dCAhPSd1cGxvYWRaaXBDb2RlcydcIj5cclxuICAgIDxwLXRhYmxlIGRhdGFLZXk9XCJmaWxlTmFtZVwiIFt2YWx1ZV09XCJmaWxlT2JqZWN0UXVldWVcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW2xvYWRpbmddPVwic2hvd1Byb2dyZXNzXCI+XHJcbiAgICAgIDxkaXYgKm5nSWYgPSBcImRvY1R5cGUubGVuZ3RoID4gMDsgdGhlbiBzaG93RG9jVHlwZUhlYWRpbmc7IGVsc2UgcmVtb3ZlRG9jVHlwZUhlYWRpbmdcIiA+PC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0RvY1R5cGVIZWFkaW5nPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoPkRvY3VtZW50IE5hbWU8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIERvY3VtZW50IFR5cGVcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCIgY2xhc3M9XCJwbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiaWNvbkluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJweDsgbWFyZ2luLWxlZnQ6IDZweDsgXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNyZW1vdmVEb2NUeXBlSGVhZGluZz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgRG9jdW1lbnQgTmFtZVxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9vZk9mQW55dGhpbmdcIiBjbGFzcz1cInBsLTFcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJpY29uSW5mb1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1maWxlT2JqZWN0UXVldWUgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJ0YWJsZVJvd0FycmF5XCI+XHJcbiAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgPHRkPnt7IGZpbGVPYmplY3RRdWV1ZT8uZmlsZU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJkb2NUeXBlLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJkb2NUeXBlRHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJkb2NUeXBlXCIgWyhuZ01vZGVsKV09XCJmaWxlT2JqZWN0UXVldWUuc2VsZWN0ZWREb2N1bWVudFR5cGVcIiBcclxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY2hhbmdlRG9jVHlwZShmaWxlT2JqZWN0UXVldWUsJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBEb2N1bWVudCBUeXBlXCIgYXBwZW5kVG89Ym9keVxyXG4gICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzonOTAlJ31cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmctaW52YWxpZCBuZy1kaXJ0eVwiXHJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAob25DbGVhcik9XCJjbGVhckRvY1R5cGUoZmlsZU9iamVjdFF1ZXVlKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzp0YWJsZVJvd3MuY29udHJvbHNbcm93SW5kZXhdLmdldCgnZG9jVHlwZScpPy5pbnZhbGlkfVwiLz5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IHVuc2V0XCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgcFRvb2x0aXA9XCJSZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlRnJvbVF1ZXVlKGZpbGVPYmplY3RRdWV1ZSlcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgXHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj4gXHJcbiAgICAgICAgPHRyICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJmaWxlT2JqZWN0UXVldWUubGVuZ3RoID09IDBcIiBjbGFzcz1cImZpbGUtaW5wdXQtY29udGFpbmVyIGZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwci0xXCI+PGI+KyBBZGQ8L2I+IGRvY3VtZW50PC9kaXYgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQWRkIEZpbGVzXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ3BsdXMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZCAqbmdJZj1cImZpbGVPYmplY3RRdWV1ZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHItMVwiPjxiPisgQWRkPC9iPiBhbnkgb3RoZXIgZG9jdW1lbnQ8L2RpdiA+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJBZGQgRmlsZXNcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYWwnLCAncGx1cyddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICA8dGQgPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG4gIDwvc2VjdGlvbj5cclxuICA8L2Zvcm0+XHJcbiAgPHVsICpuZ0lmPVwiZW1wbG95ZXJEYXRhTW9kZWxcIiBjbGFzcz1cIm5vLWJ1bGxldHMgZ2FwLTNcIj5cclxuICAgIDxsaSBjbGFzcz1cInBiLTNcIiAqbmdGb3I9XCJsZXQgZW1wbG95ZXIgb2YgZW1wbG95ZXJEYXRhTW9kZWw7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPHAtY2FyZCBjbGFzcz1cInBiLTIgZ2FwLTNcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIGNsYXNzPVwicC0zXCIgcFRlbXBsYXRlPVwiY29udGVudFwiIGxldC1maWxlcyBsZXQtdXBsb2FkZWRGaWxlcz1cInVwbG9hZGVkRmlsZXNcIiBsZXQtcmVtb3ZlRmlsZUNhbGxiYWNrPVwicmVtb3ZlRmlsZUNhbGxiYWNrXCIgbGV0LXJlbW92ZVVwbG9hZGVkRmlsZUNhbGxiYWNrPVwicmVtb3ZlVXBsb2FkZWRGaWxlQ2FsbGJhY2tcIiBsZXQtY2hvb3NlQ2FsbGJhY2s9XCJjaG9vc2VDYWxsYmFja1wiPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtLTBcIiBzdGx5ZT1cIm1hcmdpbjogMFwiPnt7ZW1wbG95ZXIuZW1wbG95ZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJpY29uSW5mb1wiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAycHg7IG1hcmdpbi1sZWZ0OiA2cHg7XCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBib3JkZXItMiBib3JkZXItZGFzaGVkIGJvcmRlci00MDAgcm91bmRlZC1zbSBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlbXBsb3llci5maWxlXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXBsb2FkIGJvcmRlci0yIGJvcmRlci1jaXJjbGUgcC0yIG0tMiB0ZXh0LXhsIHRleHQtNDAwXCI+PC9pPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbXBsb3llcldvcmtTZWFyY2hGaWxlSW5wdXRcIiB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cImFkZEZpbGVUb0VtcGxveWVyRGF0YSgkZXZlbnQsZW1wbG95ZXIpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gYXJpYS1sYWJlbD1cIkFkZCBGaWxlc1wiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgc3R5bGU9XCJmbG9hdDppbmxpbmUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgVXBsb2FkXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVtcGxveWVyLmZpbGVcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIHAtMCBzbTpwLTIgZ2FwLTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgbS0wIHB4LTYgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImNvbG9yOiAjNDQ3OEFBXCI+PC9pPnt7IGVtcGxveWVyLmZpbGUuZmlsZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZW1vdmUgRmlsZXNcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZpbGVGcm9tRW1wbG95ZXJEYXRhKGVtcGxveWVyKVwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cImlvbi1wYWRkaW5nLWxlZnRcIiBzdHlsZT1cImZsb2F0OiBpbmxpbmUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICBcclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWNhcmQ+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+Il19
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0ksT0FBTyxFQUFpRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDRXhILHNCQUE2Rjs7O0lBT3JGLCtCQUEwQztJQUN4Qyx1Q0FBMEc7SUFDNUcsaUJBQU07OztJQURjLGVBQXdCO0lBQXhCLDhDQUF3Qjs7O0lBTGhELDBCQUFJLFNBQUE7SUFDRSw2QkFBYTtJQUFBLGlCQUFLO0lBQ3RCLDhCQUE2QztJQUMzQywrQkFDQTtJQUFBLDZIQUVNO0lBQ1IsaUJBQUs7SUFDTCxxQkFBUztJQUNYLGlCQUFLOzs7SUFMSyxlQUFxQjtJQUFyQiw4Q0FBcUI7OztJQUxqQywrSEFXYzs7O0lBT1IsK0JBQTBDO0lBQ3hDLHVDQUE4RDtJQUNoRSxpQkFBTTs7O0lBRGMsZUFBd0I7SUFBeEIsOENBQXdCOzs7SUFKaEQsMEJBQUksYUFBQTtJQUVBLCtCQUNBO0lBQUEsNkhBRU07SUFDUixpQkFBSztJQUNMLHFCQUFTLFNBQUE7SUFFWCxp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QUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZHJlbiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBFbGVtZW50UmVmICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsVW50eXBlZEZvcm1BcnJheSwgTmdGb3JtLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IERvY1R5cGVVcGxvYWQsIERvY1VwbG9hZE1vZGVsLCBEb2NUeXBlRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZXVwbG9hZC9Eb2NVcGxvYWRNb2RlbCc7XHJcbmltcG9ydCB7IEVtcGxveWVyRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGV1cGxvYWQvRW1wbG95ZXJEYXRhTW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzJyxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBQcm9vZk9mRG9jdW1lbnRVcGxvYWRDb21wb25lbnQsXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9vZk9mRG9jdW1lbnRVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIHB1YmxpYyBzaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndXBsb2FkRmlsZUZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgdXBsb2FkRmlsZUZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsZXM6IEV2ZW50RW1pdHRlcjxNYXA8RmlsZSwgc3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHVwbG9hZEVtcGxveWVyRmlsZTogRXZlbnRFbWl0dGVyPEVtcGxveWVyRGF0YU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgXHJcbiAgZG9jRm9ybTogRXZlbnRFbWl0dGVyPFVudHlwZWRGb3JtR3JvdXA+ID0gbmV3IEV2ZW50RW1pdHRlcjxVbnR5cGVkRm9ybUdyb3VwPigpO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ7XHJcbiAgXHJcbiAgcXVldWU6IEZpbGVbXSA9IFtdO1xyXG5cclxuICBmaWxlT2JqZWN0UXVldWU6IEZpbGVPYmplY3RbXSA9IFtdO1xyXG5cclxuICBtYXBPZkZpbGVzOiBNYXA8RmlsZSwgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd2VkRmlsZVR5cGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHByb29mT2ZBbnl0aGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbnRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93U2VwYXJhdGVBdHRhY2hCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkb2NVcGxvYWRNb2RlbDogRG9jVXBsb2FkTW9kZWwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkRG9jdW1lbnRUeXBlOiBEb2NUeXBlVXBsb2FkID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBkb2NUeXBlOkRvY1R5cGVVcGxvYWRbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBpY29uSW5mbzpzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGVtcGxveWVyRGF0YU1vZGVsIDogRW1wbG95ZXJEYXRhTW9kZWxbXTtcclxuICBkb2NUeXBlRHJvcGRvd246IERvY1R5cGVEcm9wZG93bk9wdGlvbltdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgdXBsb2FkRmlsZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgZm9ybUFycmF5OiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGltYWdlSHRtbDogc3RyaW5nO1xyXG4gIGRvY3VtZW50VHlwZXM6IERvY1R5cGVVcGxvYWRbXSB8IHVuZGVmaW5lZDtcclxuICBmaWxlVHlwZXM6IHN0cmluZ1tdO1xyXG4gIGV4cGFuZGVkUm93czogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIFxyXG4gICAgcHVibGljIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyKSB7XHJcbiAgICAgXHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkRmlsZUN0cmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlRm9ybS5jb250cm9sc1sndXBsb2FkRmlsZUN0cmwnXTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZm9ybUFycmF5ID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRhYmxlUm93QXJyYXk6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW1xyXG4gICAgICBdKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZG9jRm9ybS5lbWl0KHRoaXMuZm9ybUFycmF5KTtcclxuICAgIGlmICh0aGlzLmRvY1R5cGUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmRvY1R5cGVEcm9wZG93biA9IHRoaXMuZG9jVHlwZS5tYXAoKGkpID0+ICh7XHJcbiAgICAgICAgbGFiZWw6IGkuZG9jRGVzY3JpcHRpb24sXHJcbiAgICAgICAgdmFsdWU6IGksXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVUeXBlcyA9IHRoaXMuYWxsb3dlZEZpbGVUeXBlLnNwbGl0KCcsJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHtcclxuXHJcbiAgfTtcclxuICB3cml0ZVZhbHVlKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVSb3dzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUFycmF5LmdldCgndGFibGVSb3dBcnJheScpIGFzIFVudHlwZWRGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBjaGVja0ZpbGVUeXBlKGZpbGU6RmlsZSwgYXBwcm92ZWRGaWxlVHlwZTpzdHJpbmdbXSk6Ym9vbGVhbntcclxuICAgIGZvcihsZXQgdHlwZSBvZiBhcHByb3ZlZEZpbGVUeXBlKXtcclxuICAgICAgaWYoZmlsZS50eXBlPT09dHlwZSl7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgYXN5bmMgYWRkVG9RdWV1ZShldmVudCkge1xyXG4gICAgbGV0IGN1clVwbGRGaWxlTGVuOiBudW1iZXIgPSBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoO1xyXG4gICAgbGV0IHByZVVwbGRGaWxlTGVuOiBudW1iZXIgPSB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7XHJcbiAgICBjb25zb2xlLmxvZygnY3VyVXBsZEZpbGVMZW4gPSAnLCBjdXJVcGxkRmlsZUxlbik7XHJcbiAgICBjb25zb2xlLmxvZygncHJlVXBsZEZpbGVMZW4gPSAnLCBwcmVVcGxkRmlsZUxlbik7XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MgPT0gJywgdGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MpO1xyXG4gICAgaWYgKHRoaXMuZG9jVXBsb2FkTW9kZWwudG90YWxEb2NzIT09bnVsbCAmJihjdXJVcGxkRmlsZUxlbiArIHByZVVwbGRGaWxlTGVuKSA+IHRoaXMuZG9jVXBsb2FkTW9kZWwudG90YWxEb2NzKSB7XHJcbiAgICAgIHRoaXMuZXJyb3IoXCJZb3UgY2FuIG5vdCB1cGxvYWQgbW9yZSB0aGFuIFwiICsgdGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MgKyBcIiBmaWxlKHMpLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdHJ1ZTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbaV07XHJcbiAgICAgIGxldCBlbmNvZGVkO1xyXG4gICAgICBjb25zb2xlLmxvZygnc2l6ZSA9ICcsIHRoaXMuZ2V0U2l6ZUluTUIoZmlsZT8uc2l6ZSkpXHJcbiAgICAgIGlmKHRoaXMuZmlsZU9iamVjdFF1ZXVlLnNvbWUoZT0+ZS5maWxlTmFtZT09PSBmaWxlLm5hbWUpKXtcclxuICAgICAgICB0aGlzLmVycm9yKCdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIGZpbGUgbmFtZSBhbHJlYWR5IGV4aXN0cy4nKTtcclxuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplIT09bnVsbCAmJiB0aGlzLmdldFNpemVJbk1CKGZpbGU/LnNpemUpID4gdGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSBzaXplIGNhbiBub3QgYmUgbW9yZSB0aGFuICcgKyB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUgKyAnIE1CLicpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKCF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSx0aGlzLmZpbGVUeXBlcykpe1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0ZpbGUgdHlwZSBub3QgYWxsb3dlZCcpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgZW5jb2RlZCA9IGF3YWl0IHRvQmFzZTY0KGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBuZXcgRmlsZU9iamVjdCh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlPy5kb2NUeXBlLHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY0Rlc2NyaXB0aW9uLCBmaWxlLm5hbWUsIGZpbGUudHlwZSwgZW5jb2RlZCk7XHJcbiAgICAgIHZhciB1cGxvYWRGaWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICBpZiAodGhpcy5kb2NUeXBlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB1cGxvYWRGaWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgJ2RvY1R5cGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgICAgICB9KTtcclxuICAgICAgfSAgIFxyXG4gICAgICB0aGlzLnRhYmxlUm93cy5wdXNoKHVwbG9hZEZpbGVGb3JtKVxyXG4gICAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZS5wdXNoKGZpbGVPYmplY3QpO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnVwbG9hZC5lbWl0KHRoaXMuZmlsZU9iamVjdFF1ZXVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRGaWxlVG9FbXBsb3llckRhdGEoZXZlbnQsZW1wbG95ZXIpe1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgbGV0IGVuY29kZWQ7XHJcbiAgICAgIGlmICh0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUhPT1udWxsICYmIHRoaXMuZ2V0U2l6ZUluTUIoZmlsZT8uc2l6ZSkgPiB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUpIHtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHNpemUgY2FuIG5vdCBiZSBtb3JlIHRoYW4gJyArIHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSArICcgTUIuJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlLHRoaXMuZmlsZVR5cGVzKSl7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSB0eXBlIG5vdCBhbGxvd2VkJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBlbmNvZGVkID0gYXdhaXQgdG9CYXNlNjQoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IG5ldyBGaWxlT2JqZWN0KHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY1R5cGUsdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jRGVzY3JpcHRpb24sIGZpbGUubmFtZSwgZmlsZS50eXBlLCBlbmNvZGVkLGVtcGxveWVyLnJlY29yZElkLCBlbXBsb3llci5lbXBsb3llck5hbWUpOyAgICAgIFxyXG4gICAgICBlbXBsb3llci5maWxlID0gZmlsZU9iamVjdFxyXG4gICAgICB0aGlzLnVwbG9hZEVtcGxveWVyRmlsZS5lbWl0KHRoaXMuZW1wbG95ZXJEYXRhTW9kZWwpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gIH1cclxuICBcclxuICByZW1vdmVGaWxlRnJvbUVtcGxveWVyRGF0YShlbXBsb3llcil7XHJcbiAgICBlbXBsb3llci5maWxlID0gbnVsbFxyXG4gICAgdGhpcy51cGxvYWRFbXBsb3llckZpbGUuZW1pdCh0aGlzLmVtcGxveWVyRGF0YU1vZGVsKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21RdWV1ZShmaWxlVG9SZW1vdmUpIHtcclxuICAgIGxldCBpbmRleDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlVG9SZW1vdmUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuZG9jVHlwZURyb3Bkb3duLmxlbmd0aDsgaSsrKXtcclxuICAgICAgaWYodGhpcy5kb2NUeXBlRHJvcGRvd25baV0udmFsdWUuZG9jVHlwZT09PWZpbGVUb1JlbW92ZS5kb2NUeXBlKXtcclxuICAgICAgICAgdGhpcy5kb2NUeXBlRHJvcGRvd25baV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgIH1cclxuICAgICB9XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy50YWJsZVJvd3MucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgdGhpcy5tYXBPZkZpbGVzLmRlbGV0ZShmaWxlVG9SZW1vdmUpO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIHRoaXMudXBsb2FkLmVtaXQoQXJyYXkuZnJvbSh0aGlzLm1hcE9mRmlsZXMudmFsdWVzKCkpKTtcclxuICAgIHRoaXMuZmlsZXMuZW1pdCh0aGlzLm1hcE9mRmlsZXMpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZURvY1R5cGUoZmlsZSxldmVudCl7XHJcblx0XHQgIGNvbnNvbGUubG9nKFwiMTY2IGNoYW5nZURvY1R5cGVcIik7XHJcbiAgICBpZihldmVudC52YWx1ZSA9PT0gbnVsbCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBpbmRleDtcclxuICAgIGxldCBwcmV2U2VsZWN0ZWREb2MgOiBzdHJpbmc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVPYmplY3RRdWV1ZVtpXS5maWxlTmFtZSA9PT0gZmlsZS5maWxlTmFtZSkge1xyXG4gICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgICBwcmV2U2VsZWN0ZWREb2MgPSB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0uZG9jVHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLmRvY1R5cGUgPSBldmVudC52YWx1ZS5kb2NUeXBlO1xyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLm5hbWUgPSBldmVudC52YWx1ZS5kb2NEZXNjcmlwdGlvbjtcclxuXHJcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5kb2NUeXBlRHJvcGRvd24ubGVuZ3RoOyBpKyspe1xyXG4gICAgICBpZihldmVudC52YWx1ZS5kb2NUeXBlPT09dGhpcy5kb2NUeXBlRHJvcGRvd25baV0udmFsdWUuZG9jVHlwZSl7XHJcbiAgICAgICAgdGhpcy5kb2NUeXBlRHJvcGRvd25baV0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB9ZWxzZSBpZih0aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlPT09cHJldlNlbGVjdGVkRG9jKXtcclxuICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbiAgY2xlYXJEb2NUeXBlKGZpbGUpe1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgbGV0IHByZXZTZWxlY3RlZERvYyA6IHN0cmluZztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICAgIHByZXZTZWxlY3RlZERvYyA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0uZG9jVHlwZSA9bnVsbDtcclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5uYW1lID0gbnVsbDtcclxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmRvY1R5cGVEcm9wZG93bi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgaWYodGhpcy5kb2NUeXBlRHJvcGRvd25baV0udmFsdWUuZG9jVHlwZT09PXByZXZTZWxlY3RlZERvYyl7XHJcbiAgICAgICAgdGhpcy5kb2NUeXBlRHJvcGRvd25baV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVRdWV1ZVdpdGhUeXBlKGZpbGVPYmplY3QpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiMTY2IHVwZGF0ZVF1ZXVlV2l0aFR5cGVcIik7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVPYmplY3RRdWV1ZVtpXS5maWxlTmFtZSA9PT0gZmlsZU9iamVjdC5maWxlTmFtZSkge1xyXG4gICAgICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmRvY1R5cGUgPSB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlLmRvY1R5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlc2VudFRvYXN0KG1zZywgY29sb3IpIHtcclxuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcclxuICAgICAgbWVzc2FnZTogbXNnLFxyXG4gICAgICBkdXJhdGlvbjogNTAwMCxcclxuICAgICAgY29sb3I6IGNvbG9yLFxyXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbSdcclxuICAgIH0pO1xyXG4gICAgdG9hc3QucHJlc2VudCgpO1xyXG4gIH1cclxuXHJcbiAgc3VjY2Vzcyhtc2cpIHtcclxuICAgIHRoaXMucHJlc2VudFRvYXN0KG1zZywgJ3ByaW1hcnknKTtcclxuICB9XHJcblxyXG4gIGVycm9yKG1zZykge1xyXG4gICAgdGhpcy5wcmVzZW50VG9hc3QobXNnLCAnZGFuZ2VyJyk7XHJcbiAgfVxyXG5cclxuICBnZXRTaXplSW5NQihudW06IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG51bSAvIDEwMjQgLyAxMDI0XHJcbiAgfVxyXG4gIFxyXG59XHJcblxyXG5jb25zdCB0b0Jhc2U2NCA9IGZpbGUgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XHJcbiAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZU9iamVjdCB7XHJcbiAgZmlsZTogRmlsZTtcclxuICBkb2NUeXBlOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxuICBjb250ZW50VHlwZTogc3RyaW5nO1xyXG4gIGZpbGVJbkJhc2VkNjQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcblx0cmVjb3JkSWQ/OiBzdHJpbmc7XHJcbiAgZW1wbG95ZXJOYW1lPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihkb2NUeXBlOiBzdHJpbmcsbmFtZTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nLCBjb250ZW50VHlwZTogc3RyaW5nLCBmaWxlSW5CYXNlZDY0OiBzdHJpbmcsIHJlY29yZElkPzpzdHJpbmcsIGVtcGxveWVyTmFtZT86c3RyaW5nKSB7XHJcbiAgICB0aGlzLmRvY1R5cGUgPSBkb2NUeXBlO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTtcclxuICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcclxuICAgIHRoaXMuZmlsZUluQmFzZWQ2NCA9IGZpbGVJbkJhc2VkNjQ7XHJcbiAgICB0aGlzLnJlY29yZElkID0gcmVjb3JkSWQ7XHJcbiAgICB0aGlzLmVtcGxveWVyTmFtZSA9IGVtcGxveWVyTmFtZTsgXHJcbiAgfVxyXG59XHJcblxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1BcnJheVwiICN1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiICpuZ0lmPVwiIWVtcGxveWVyRGF0YU1vZGVsXCI+XHJcbiAgICA8c2VjdGlvbiAqbmdJZj1cInRoaXMuY29udGV4dCAhPSAnc2lnbmF0dXJlJyAmJiB0aGlzLmNvbnRleHQgIT0ndXBsb2FkWmlwQ29kZXMnXCI+XHJcbiAgICA8cC10YWJsZSBkYXRhS2V5PVwiZmlsZU5hbWVcIiBbdmFsdWVdPVwiZmlsZU9iamVjdFF1ZXVlXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtsb2FkaW5nXT1cInNob3dQcm9ncmVzc1wiPlxyXG4gICAgICA8ZGl2ICpuZ0lmID0gXCJkb2NUeXBlLmxlbmd0aCA+IDA7IHRoZW4gc2hvd0RvY1R5cGVIZWFkaW5nOyBlbHNlIHJlbW92ZURvY1R5cGVIZWFkaW5nXCIgPjwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dEb2NUeXBlSGVhZGluZz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aD5Eb2N1bWVudCBOYW1lPC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICBEb2N1bWVudCBUeXBlXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb29mT2ZBbnl0aGluZ1wiIGNsYXNzPVwicGwtMVwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cImljb25JbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAycHg7IG1hcmdpbi1sZWZ0OiA2cHg7IFwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjcmVtb3ZlRG9jVHlwZUhlYWRpbmc+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIERvY3VtZW50IE5hbWVcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCIgY2xhc3M9XCJwbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiaWNvbkluZm9cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZmlsZU9iamVjdFF1ZXVlIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwidGFibGVSb3dBcnJheVwiPlxyXG4gICAgICAgICAgPHRyIFtmb3JtR3JvdXBOYW1lXT1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBmaWxlT2JqZWN0UXVldWU/LmZpbGVOYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiZG9jVHlwZS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZG9jVHlwZURyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9jVHlwZVwiIFsobmdNb2RlbCldPVwiZmlsZU9iamVjdFF1ZXVlLnNlbGVjdGVkRG9jdW1lbnRUeXBlXCIgXHJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImNoYW5nZURvY1R5cGUoZmlsZU9iamVjdFF1ZXVlLCRldmVudClcIiBcclxuICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgRG9jdW1lbnQgVHlwZVwiIGFwcGVuZFRvPWJvZHlcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzkwJSd9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5nLWludmFsaWQgbmctZGlydHlcIlxyXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xlYXIpPVwiY2xlYXJEb2NUeXBlKGZpbGVPYmplY3RRdWV1ZSlcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbmctaW52YWxpZCc6dGFibGVSb3dzLmNvbnRyb2xzW3Jvd0luZGV4XS5nZXQoJ2RvY1R5cGUnKT8uaW52YWxpZH1cIi8+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiB1bnNldFwiPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZyb21RdWV1ZShmaWxlT2JqZWN0UXVldWUpXCJcclxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+IFxyXG4gICAgICAgIDx0ciAqbmdJZj1cInByb29mT2ZBbnl0aGluZ1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0lmPVwiZmlsZU9iamVjdFF1ZXVlLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHItMVwiPjxiPisgQWRkPC9iPiBkb2N1bWVudDwvZGl2ID5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFkZFRvUXVldWUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gYXJpYS1sYWJlbD1cIkFkZCBGaWxlc1wiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsICdwbHVzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJmaWxlT2JqZWN0UXVldWUubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmlsZS1pbnB1dC1jb250YWluZXIgZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByLTFcIj48Yj4rIEFkZDwvYj4gYW55IG90aGVyIGRvY3VtZW50PC9kaXYgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQWRkIEZpbGVzXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ3BsdXMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgPHRkID5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuICA8L3NlY3Rpb24+XHJcbiAgPC9mb3JtPlxyXG4gIDx1bCAqbmdJZj1cImVtcGxveWVyRGF0YU1vZGVsXCIgY2xhc3M9XCJuby1idWxsZXRzIGdhcC0zXCI+XHJcbiAgICA8bGkgY2xhc3M9XCJwYi0zXCIgKm5nRm9yPVwibGV0IGVtcGxveWVyIG9mIGVtcGxveWVyRGF0YU1vZGVsOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxwLWNhcmQgY2xhc3M9XCJwYi0yIGdhcC0zXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBjbGFzcz1cInAtM1wiIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZmlsZXMgbGV0LXVwbG9hZGVkRmlsZXM9XCJ1cGxvYWRlZEZpbGVzXCIgbGV0LXJlbW92ZUZpbGVDYWxsYmFjaz1cInJlbW92ZUZpbGVDYWxsYmFja1wiIGxldC1yZW1vdmVVcGxvYWRlZEZpbGVDYWxsYmFjaz1cInJlbW92ZVVwbG9hZGVkRmlsZUNhbGxiYWNrXCIgbGV0LWNob29zZUNhbGxiYWNrPVwiY2hvb3NlQ2FsbGJhY2tcIj5cclxuICAgICAgICBcclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibS0wXCIgc3RseWU9XCJtYXJnaW46IDBcIj57e2VtcGxveWVyLmVtcGxveWVyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItNDAwIHJvdW5kZWQtc20gcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZW1wbG95ZXIuZmlsZVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXVwbG9hZCBib3JkZXItMiBib3JkZXItY2lyY2xlIHAtMiBtLTIgdGV4dC14bCB0ZXh0LTQwMFwiPjwvaT5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1wbG95ZXJXb3JrU2VhcmNoRmlsZUlucHV0XCIgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRGaWxlVG9FbXBsb3llckRhdGEoJGV2ZW50LGVtcGxveWVyKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJBZGQgRmlsZXNcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIHN0eWxlPVwiZmxvYXQ6aW5saW5lLWVuZFwiPlxyXG4gICAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInB0LTRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIj5cclxuICAgICAgICAgICAgICB7e2ljb25JbmZvfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVtcGxveWVyLmZpbGVcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIHAtMCBzbTpwLTIgZ2FwLTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgbS0wIHB4LTYgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImNvbG9yOiAjNDQ3OEFBXCI+PC9pPnt7IGVtcGxveWVyLmZpbGUuZmlsZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZW1vdmUgRmlsZXNcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZpbGVGcm9tRW1wbG95ZXJEYXRhKGVtcGxveWVyKVwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cImlvbi1wYWRkaW5nLWxlZnRcIiBzdHlsZT1cImZsb2F0OiBpbmxpbmUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICBcclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWNhcmQ+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+Il19
|