@unifylib/ui-lib 1.1.45 → 1.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/esm2022/lib/base-model/column-def.model.mjs +2 -2
  2. package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +2 -2
  3. package/esm2022/lib/components/advanced-filter/field-filter/field-filter.component.mjs +6 -3
  4. package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +16 -3
  5. package/esm2022/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.mjs +2 -2
  6. package/esm2022/lib/components/base-form/base-form.component.mjs +2 -2
  7. package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +24 -3
  8. package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +2 -2
  9. package/esm2022/lib/components/base-table/base-table.component.mjs +2 -1
  10. package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +2 -2
  11. package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +2 -2
  12. package/esm2022/lib/components/report-form/report-form.component.mjs +2 -2
  13. package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +2 -2
  14. package/esm2022/lib/services/backend-service.mjs +3 -3
  15. package/fesm2022/iq-ui-lib.mjs +53 -15
  16. package/fesm2022/iq-ui-lib.mjs.map +1 -1
  17. package/fesm2022/unifylib-ui-lib.mjs +55 -17
  18. package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
  19. package/lib/components/advanced-filter/field-filter/field-filter.component.d.ts +2 -1
  20. package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +2 -0
  21. package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +4 -2
  22. package/package.json +1 -1
@@ -47,7 +47,7 @@ export class BaseInputDialogComponent extends BaseUtils {
47
47
  this.dialogRef.close(null);
48
48
  }
49
49
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseInputDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseInputDialogComponent, isStandalone: true, selector: "lib-base-input-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title-row\">\r\n <div class=\"full-column\">\r\n <app-title-bar [pageTitle]=\"getTitle()\"></app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isLoaded\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fieldsInfo\"\r\n [editable]=\"true\"\r\n [item]=\"default\"\r\n (formUpdated)=\"captureForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"button-row\">\r\n <div class=\"half-column\"></div>\r\n <div class=\"half-column right-align\">\r\n <div class=\"button-group\">\r\n <ng-container>\r\n <button\r\n mat-stroked-button\r\n class=\"btn-none-background-primary\"\r\n type=\"button\"\r\n (click)=\"doCancel('cancel')\"\r\n id=\"base-input-cancel-btn\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <button\r\n [ngClass]=\"saveDisabled() ? 'btn-none-background-primary' : 'btn-background-primary'\"\r\n [disabled]=\"saveDisabled()\"\r\n mat-stroked-button\r\n type=\"button\"\r\n (click)=\"doSave('save')\"\r\n id=\"base-input-save-btn\">\r\n Save\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".container{display:flex;flex-direction:column;width:98%}.title-row{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;width:100%;margin:2vh 0}.full-column{flex:1 1 100%;display:flex;flex-direction:column}.button-row{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;width:100%;margin-top:2vh}.half-column{flex:0 0 49%;display:flex;flex-direction:column}.right-align{align-items:flex-end}.button-group{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:10px;margin:1% 2%}@media (max-width: 768px){.button-row{flex-direction:column}.half-column{flex:1 1 100%}.right-align{align-items:center}.button-group{justify-content:center;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseInputDialogComponent, isStandalone: true, selector: "lib-base-input-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title-row\">\r\n <div class=\"full-column\">\r\n <app-title-bar [pageTitle]=\"getTitle()\"></app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isLoaded\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fieldsInfo\"\r\n [editable]=\"true\"\r\n [item]=\"default\"\r\n (formUpdated)=\"captureForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"button-row\">\r\n <div class=\"half-column\"></div>\r\n <div class=\"half-column right-align\">\r\n <div class=\"button-group\">\r\n <ng-container>\r\n <button\r\n mat-stroked-button\r\n class=\"btn-none-background-primary\"\r\n type=\"button\"\r\n (click)=\"doCancel('cancel')\"\r\n id=\"base-input-cancel-btn\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <button\r\n [ngClass]=\"saveDisabled() ? 'btn-none-background-primary' : 'btn-background-primary'\"\r\n [disabled]=\"saveDisabled()\"\r\n mat-stroked-button\r\n type=\"button\"\r\n (click)=\"doSave('save')\"\r\n id=\"base-input-save-btn\">\r\n Save\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".container{display:flex;flex-direction:column;width:98%}.title-row{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;width:100%;margin:2vh 0}.full-column{flex:1 1 100%;display:flex;flex-direction:column}.button-row{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;width:100%;margin-top:2vh}.half-column{flex:0 0 49%;display:flex;flex-direction:column}.right-align{align-items:flex-end}.button-group{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:10px;margin:1% 2%}@media (max-width: 768px){.button-row{flex-direction:column}.half-column{flex:1 1 100%}.right-align{align-items:center}.button-group{justify-content:center;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseInputDialogComponent, decorators: [{
53
53
  type: Component,
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
69
69
  type: Inject,
70
70
  args: [MAT_DIALOG_DATA]
71
71
  }] }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWlucHV0LWRpYWxvZy9iYXNlLWlucHV0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtaW5wdXQtZGlhbG9nL2Jhc2UtaW5wdXQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFZLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBc0JuRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQU1yRCxZQUFtQixTQUFpRCxFQUN4QixJQUFTO1FBQ25ELEtBQUssRUFBRSxDQUFBO1FBRlUsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUpyRCxhQUFRLEdBQVksS0FBSyxDQUFDO0lBTTFCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBaUI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBekNVLHdCQUF3Qiw4Q0FPZixlQUFlO21HQVB4Qix3QkFBd0Isd0dDbENyQywrOUNBK0NBLDB4QkQ3QkksSUFBSSw2RkFDSixPQUFPLG1GQUNQLGFBQWEsOEJBQ2IsbUJBQW1CLDhCQUNuQixlQUFlLDhCQUNmLGNBQWMsK0JBQ2QsdUJBQXVCLGtaQUN2QixlQUFlLCtCQUdmLGlCQUFpQixxZUFDakIsU0FBUzs7NEZBS0Esd0JBQXdCO2tCQXBCcEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixTQUFTO3FCQUNWOzswQkFXWSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZUZvcm1DYW52YXNDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RmllbGRJbmZvLCBQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iYXNlLWlucHV0LWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIE1hdEJ1dHRvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtaW5wdXQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmFzZS1pbnB1dC1kaWFsb2cuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VJbnB1dERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VVdGlscyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZmllbGRzSW5mbzogRmllbGRJbmZvW107XHJcbiAgZGVmYXVsdDogYW55O1xyXG4gIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxCYXNlSW5wdXREaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcbiAgICBzdXBlcigpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdkYXRhJyAsdGhpcy5kYXRhKTtcclxuICAgIHRoaXMuZmllbGRzSW5mbyA9IHRoaXMuZGF0YS5maWVsZHNJbmZvO1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZGF0YS5lbGVtZW50O1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIGNhcHR1cmVGb3JtKCRldmVudDogRm9ybUdyb3VwKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9ICRldmVudDtcclxuICB9XHJcblxyXG4gIHNhdmVEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtR3JvdXA/LnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgJy5wb3BfdXBfdGl0bGUnO1xyXG4gIH1cclxuXHJcbiAgZG9TYXZlKHNhdmU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuZGVmYXVsdD8uaWQ7XHJcbiAgICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG4gICAgICB0aGlzLmRlZmF1bHQuaWQgPSBpZDtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5kZWZhdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvQ2FuY2VsKGNhbmNlbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1yb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdWxsLWNvbHVtblwiPlxyXG4gICAgICA8YXBwLXRpdGxlLWJhciBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIj48L2FwcC10aXRsZS1iYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVkXCI+XHJcbiAgICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNJbmZvXCJcclxuICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxyXG4gICAgICBbaXRlbV09XCJkZWZhdWx0XCJcclxuICAgICAgKGZvcm1VcGRhdGVkKT1cImNhcHR1cmVGb3JtKCRldmVudClcIj5cclxuICAgIDwvYXBwLWJhc2UtZm9ybS1jYW52YXM+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhhbGYtY29sdW1uXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoYWxmLWNvbHVtbiByaWdodC1hbGlnblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1ub25lLWJhY2tncm91bmQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQ2FuY2VsKCdjYW5jZWwnKVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJiYXNlLWlucHV0LWNhbmNlbC1idG5cIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2F2ZURpc2FibGVkKCkgPyAnYnRuLW5vbmUtYmFja2dyb3VuZC1wcmltYXJ5JyA6ICdidG4tYmFja2dyb3VuZC1wcmltYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNhdmVEaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG9TYXZlKCdzYXZlJylcIlxyXG4gICAgICAgICAgICAgIGlkPVwiYmFzZS1pbnB1dC1zYXZlLWJ0blwiPlxyXG4gICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWlucHV0LWRpYWxvZy9iYXNlLWlucHV0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtaW5wdXQtZGlhbG9nL2Jhc2UtaW5wdXQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFZLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBc0JuRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQU1yRCxZQUFtQixTQUFpRCxFQUN4QixJQUFTO1FBQ25ELEtBQUssRUFBRSxDQUFBO1FBRlUsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUpyRCxhQUFRLEdBQVksS0FBSyxDQUFDO0lBTTFCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBaUI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBekNVLHdCQUF3Qiw4Q0FPZixlQUFlO21HQVB4Qix3QkFBd0Isd0dDbENyQywrOUNBK0NBLDB4QkQ3QkksSUFBSSw2RkFDSixPQUFPLG1GQUNQLGFBQWEsOEJBQ2IsbUJBQW1CLDhCQUNuQixlQUFlLDhCQUNmLGNBQWMsK0JBQ2QsdUJBQXVCLHNhQUN2QixlQUFlLCtCQUdmLGlCQUFpQixxZUFDakIsU0FBUzs7NEZBS0Esd0JBQXdCO2tCQXBCcEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixTQUFTO3FCQUNWOzswQkFXWSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZUZvcm1DYW52YXNDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RmllbGRJbmZvLCBQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iYXNlLWlucHV0LWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIE1hdEJ1dHRvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtaW5wdXQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmFzZS1pbnB1dC1kaWFsb2cuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VJbnB1dERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VVdGlscyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZmllbGRzSW5mbzogRmllbGRJbmZvW107XHJcbiAgZGVmYXVsdDogYW55O1xyXG4gIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxCYXNlSW5wdXREaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcbiAgICBzdXBlcigpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdkYXRhJyAsdGhpcy5kYXRhKTtcclxuICAgIHRoaXMuZmllbGRzSW5mbyA9IHRoaXMuZGF0YS5maWVsZHNJbmZvO1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZGF0YS5lbGVtZW50O1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIGNhcHR1cmVGb3JtKCRldmVudDogRm9ybUdyb3VwKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9ICRldmVudDtcclxuICB9XHJcblxyXG4gIHNhdmVEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtR3JvdXA/LnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgJy5wb3BfdXBfdGl0bGUnO1xyXG4gIH1cclxuXHJcbiAgZG9TYXZlKHNhdmU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuZGVmYXVsdD8uaWQ7XHJcbiAgICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG4gICAgICB0aGlzLmRlZmF1bHQuaWQgPSBpZDtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5kZWZhdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvQ2FuY2VsKGNhbmNlbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1yb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdWxsLWNvbHVtblwiPlxyXG4gICAgICA8YXBwLXRpdGxlLWJhciBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIj48L2FwcC10aXRsZS1iYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVkXCI+XHJcbiAgICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNJbmZvXCJcclxuICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxyXG4gICAgICBbaXRlbV09XCJkZWZhdWx0XCJcclxuICAgICAgKGZvcm1VcGRhdGVkKT1cImNhcHR1cmVGb3JtKCRldmVudClcIj5cclxuICAgIDwvYXBwLWJhc2UtZm9ybS1jYW52YXM+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhhbGYtY29sdW1uXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoYWxmLWNvbHVtbiByaWdodC1hbGlnblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1ub25lLWJhY2tncm91bmQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQ2FuY2VsKCdjYW5jZWwnKVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJiYXNlLWlucHV0LWNhbmNlbC1idG5cIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2F2ZURpc2FibGVkKCkgPyAnYnRuLW5vbmUtYmFja2dyb3VuZC1wcmltYXJ5JyA6ICdidG4tYmFja2dyb3VuZC1wcmltYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNhdmVEaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG9TYXZlKCdzYXZlJylcIlxyXG4gICAgICAgICAgICAgIGlkPVwiYmFzZS1pbnB1dC1zYXZlLWJ0blwiPlxyXG4gICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -468,6 +468,7 @@ export class BaseTableComponent extends BaseUtils {
468
468
  if ($event) {
469
469
  this.pendingFilters = [];
470
470
  this.advancedAppliedFilter = [];
471
+ this.searchStr = '';
471
472
  this.loadData();
472
473
  }
473
474
  }
@@ -625,4 +626,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
625
626
  }], clickRoutePage: [{
626
627
  type: Output
627
628
  }] } });
628
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtdGFibGUvYmFzZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtdGFibGUvYmFzZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FB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QUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFhRyxRQUFRO3NCQURoQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUVOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLGNBQWM7c0JBRGIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUdQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsY0FBYztzQkFEYixNQUFNO2dCQUlQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFRUCxVQUFVO3NCQURULE1BQU07Z0JBUVAsY0FBYztzQkFEYixLQUFLO2dCQVNOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGVmZmVjdCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtNYXRTb3J0TW9kdWxlLCBTb3J0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xyXG5pbXBvcnQge1xyXG4gIEN1cnJlbmN5UGlwZSxcclxuICBEYXRlUGlwZSxcclxuICBEZWNpbWFsUGlwZSxcclxuICBOZ0NsYXNzLFxyXG4gIE5nRm9yT2YsXHJcbiAgTmdJZixcclxuICBOZ1N0eWxlLFxyXG4gIE5nU3dpdGNoLFxyXG4gIE5nU3dpdGNoQ2FzZSxcclxuICBOZ1N3aXRjaERlZmF1bHRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRCdXR0b24sIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge05neFBhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJuZ3gtcGFnaW5hdGlvblwiO1xyXG5pbXBvcnQge0J1dHRvbkFjdGlvbnNDb21wb25lbnR9IGZyb20gXCIuLi9idXR0b24tYWN0aW9ucy9idXR0b24tYWN0aW9ucy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTaGFyZURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJpZ2dlci1mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCYXNlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9iYWNrZW5kLXNlcnZpY2VcIjtcclxuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpbHRlci5tb2RlbFwiO1xyXG5pbXBvcnQge0ZpbHRlclJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpbHRlci1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uQWN0aW9uU2V0dGluZ3MsXHJcbiAgRU1QVFlfUEFHRV9JTkZPLFxyXG4gIEZpZWxkSW5mbyxcclxuICBGUk9OVF9FTkRfQ09MVU1OX1RZUEVTLFxyXG4gIFBhZ2VJbmZvLFxyXG4gIFRBQkxFX1JFQ09SRF9BQ1RJT04sXHJcbiAgVGFibGVDb2x1bW5cclxufSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge1JlcG9ydFJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3JlcG9ydC1yZXF1ZXN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7VGFibGVQYWdlVXNlckFjdGlvbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvdGFibGUtcGFnZS11c2VyLWFjdGlvbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtXb3JrZmxvd30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvd29ya2Zsb3cvd29ya2Zsb3cubW9kZWxcIjtcclxuaW1wb3J0IHtSZXNwb25zZUVudmVsb3B9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3Jlc3BvbnNlLWVudmVsb3AubW9kZWxcIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtNYXRMYWJlbH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UGFnaW5hdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRDaGVja2JveH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7RmlsdGVyQnVpbGRlckNvbXBvbmVudH0gZnJvbSBcIi4uL2FkdmFuY2VkLWZpbHRlci9maWx0ZXItYnVpbGRlci9maWx0ZXItYnVpbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmFzZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmFzZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nU3R5bGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdFNvcnRNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICAgIE5neFBhZ2luYXRpb25Nb2R1bGUsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBOZ1N3aXRjaERlZmF1bHQsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdEJ1dHRvbixcclxuICAgIEJ1dHRvbkFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBNYXRMYWJlbCxcclxuICAgIFRpdGxlQmFyQ29tcG9uZW50LFxyXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50LFxyXG4gICAgRGVjaW1hbFBpcGUsXHJcbiAgICBNYXRDaGVja2JveCxcclxuICAgIEZpbHRlckJ1aWxkZXJDb21wb25lbnQsXHJcbiAgICBNYXRNZW51VHJpZ2dlcixcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbSxcclxuXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVV0aWxzIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgdHlwZXM6IHN0cmluZ1tdID0gW1wicGRmXCIsIFwiY3N2XCIsIFwieGxzeFwiXVxyXG4gIGNvbGxlY3Rpb24gPSB7Y291bnQ6IDYwLCBkYXRhOiBbXX07XHJcbiAgY29uZmlnID0ge1xyXG4gICAgaXRlbXNQZXJQYWdlOiAxNSxcclxuICAgIGN1cnJlbnRQYWdlOiAxLFxyXG4gICAgdG90YWxJdGVtczogdGhpcy5jb2xsZWN0aW9uLmNvdW50XHJcbiAgfTtcclxuICBwdWJsaWMgbWF4U2l6ZTogbnVtYmVyID0gNztcclxuICBwdWJsaWMgZGlyZWN0aW9uTGlua3M6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhdXRvSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNwb25zaXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgbGFiZWxzOiBhbnkgPSB7XHJcbiAgICBwcmV2aW91c0xhYmVsOiAnPCcsXHJcbiAgICBuZXh0TGFiZWw6ICc+JyxcclxuICAgIHNjcmVlblJlYWRlclBhZ2luYXRpb25MYWJlbDogJ1BhZ2luYXRpb24nLFxyXG4gICAgc2NyZWVuUmVhZGVyUGFnZUxhYmVsOiAncGFnZScsXHJcbiAgICBzY3JlZW5SZWFkZXJDdXJyZW50TGFiZWw6IGBZb3UncmUgb24gcGFnZWBcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlckZpZWxkczogRmllbGRJbmZvW107XHJcbiAgQElucHV0KCkgbm9EYXRhRm91bmRTdmdQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbm9EYXRhRm91bmRUaXRsZSA9ICdub0RhdGFGb3VuZFRpdGxlJztcclxuICBASW5wdXQoKSBub0RhdGFGb3VuZFN1YnRpdGxlID0gJ25vRGF0YUZvdW5kU3VidGl0bGUnO1xyXG4gIEBJbnB1dCgpIG5vUmVzdWx0U3ZnUGF0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGl0bGUgPSAnbm9SZXN1bHRUaXRsZSc7XHJcbiAgQElucHV0KCkgbm9SZXN1bHRTdWJ0aXRsZSA9ICdub1Jlc3VsdFN1YnRpdGxlJztcclxuICB0b3RhbEVsZW1lbnRzID0gMDtcclxuICBwYWdlc0NvdW50ID0gMDtcclxuICBwYWdlSW5kZXggPSAxO1xyXG4gIHBhZ2VTaXplID0gMTU7XHJcbiAgbW9iaWxlRGlzcGxheWVkSXRlbXMgPSAwO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRTdGF0dXNGaWx0ZXI6IEZpbHRlcltdID0gW107XHJcbiAgYWR2YW5jZWRBcHBsaWVkRmlsdGVyOiBhbnlbXSA9IFtdO1xyXG4gIHBlbmRpbmdGaWx0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHNlYXJjaFN0cjogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBmaWx0ZXJSZXF1ZXN0OiBGaWx0ZXJSZXF1ZXN0ID0gbmV3IEZpbHRlclJlcXVlc3QoKTtcclxuICBwcml2YXRlIHRpbWVyOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBvdmVycmlkZSBwYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZW5hYmxlUGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbW9iaWxlUGFnZVNpemU6IG51bWJlciA9IDI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbW9iaWxlTG9hZE1vcmVJbmNyZW1lbnQ6IG51bWJlciA9IDI7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGE/OiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBASW5wdXQoKVxyXG4gIGxpc3RBY3Rpb246IEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBleHRyYUFjdGlvbnM6IEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBidXR0b25zRGlzcGxheU1vZGU6ICdkcm9wZG93bicgfCAnbGlzdCcgPSAnZHJvcGRvd24nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSAvL0B0cy1pZ25vcmVcclxuICBwYXRoUGFyYW06IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBleHRyYUJ1dHRvbjogIEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkFjdGlvblNldHRpbmdzPigpO1xyXG5cclxuICBASW5wdXQoKSAvL0B0cy1pZ25vcmVcclxuICBlbmZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlzUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0ID0gbmV3IFJlcG9ydFJlcXVlc3Qoe30pO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlcGFyYXRlRW5kcG9pbnREYXRhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBtYW5hZ2VhYmxlUGFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHRvdGFsUGFnZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXNlckFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGh5cGVyTGlua0FjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBleHRyYUFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZENvbHVtbjogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBsaXN0QWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncywgcm93OiBhbnkgLCBpc1BlbmRpbmc6IGJvb2xlYW59PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgYWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncyxcclxuICAgIHJvdzogYW55LFxyXG4gICAgaXNQZW5kaW5nOiBib29sZWFuXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2hvd0RpYWxvZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgdXNlZFdvcmtmbG93ITogV29ya2Zsb3c7XHJcblxyXG4gIG1vZGU6YW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbWl6ZWREYXRhPzogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xyXG4gIG5vRGF0YUZvdW5kID0gZmFsc2U7XHJcbiAgdG90YWxSZXF1aXJlZENvdW50SXRlbSA9IDA7XHJcblxyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGlja1JvdXRlUGFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgcHVibGljIHNoYXJlRGF0YVNlcnZpY2U6IFNoYXJlRGF0YVNlcnZpY2UsXHJcbiAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXHJcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICB0aGlzLmZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucGFnZUluZm8ubGF6eUxvYWREYXRhICE9PSB0cnVlIHx8IHRoaXMuZW5mb3JjZVJlZnJlc2ggPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmlzRW1wdHlJdGVtcyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA8PSAwO1xyXG4gICAgaWYgKHRoaXMuY3VzdG9taXplZERhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5jdXN0b21pemVkRGF0YTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMubWFuYWdlYWJsZVBhZ2VzKSB7XHJcbiAgICAgIHRoaXMucGFnZXNDb3VudCA9IHRoaXMudG90YWxQYWdlc0NvdW50O1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMuY3VycmVudFBhZ2VJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVNb2JpbGVQYWdlU2l6ZSgpO1xyXG4gICAgdGhpcy5tb2JpbGVEaXNwbGF5ZWRJdGVtcyA9IHRoaXMucGFnZVNpemU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLnBhZ2VTaXplID4gdGhpcy5tb2JpbGVQYWdlU2l6ZSkge1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5tb2JpbGVQYWdlU2l6ZTtcclxuICAgICAgaWYgKHRoaXMucmVwb3J0UmVxdWVzdD8uZmlsdGVyUmVxdWVzdCkge1xyXG4gICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5tb2JpbGVQYWdlU2l6ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQ7XHJcbiAgICB0aGlzLmdldE5leHQodGhpcy5wYWdlSW5kZXggLSAxKTtcclxuICAgIGlmICh0aGlzLm1hbmFnZWFibGVQYWdlcykge1xyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZXh0cmFjdEZpZWxkTmFtZShlbGVtZW50OiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgIGlmIChwcm9wZXJ0eT8uaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICByZXR1cm4gcHJvcGVydHkuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRbcHJvcGVydHldKSAmJiBjLmFycmF5U3ViUHJvcGVydHkgKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZXMgPSBlbGVtZW50W3Byb3BlcnR5XS5tYXAoZiA9PiBmW2MuYXJyYXlTdWJQcm9wZXJ0eV0pO1xyXG4gICAgICAgIHJldHVybiAgZmllbGRWYWx1ZXMuam9pbignLCAnKTtcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50W3Byb3BlcnR5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGVDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5idWlsZEdyb3VwcygpXHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnZpc2libGUpLm1hcChjb2x1bW4gPT4gY29sdW1uLnByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlQ29sdW1uc0FycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKGMgPT4gYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydERpcmVjdGlvbihwcm9wZXJ0eTogc3RyaW5nKTogJ2FzYycgfCAnZGVzYycgfCAnJyB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRSZXF1ZXN0Py5maWx0ZXJSZXF1ZXN0Py5zb3J0S2V5ID09PSBwcm9wZXJ0eSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Quc29ydERpcmVjdGlvbiA9PT0gJ0FTQycgPyAnYXNjJyA6ICdkZXNjJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGhhbmRsZVNvcnRDbGljayhwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBDT0xVTU4gPSB0aGlzLmdldENvbHVtbihwcm9wZXJ0eSk7XHJcbiAgICBpZiAoIUNPTFVNTiB8fCAhQ09MVU1OLmVuYWJsZVNvcnRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IENVUlJFTlRfRElSRUNUSU9OID0gdGhpcy5nZXRTb3J0RGlyZWN0aW9uKHByb3BlcnR5KTtcclxuICAgIGxldCBORVdfRElSRUNUSU9OOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnO1xyXG5cclxuICAgIGlmIChDVVJSRU5UX0RJUkVDVElPTiA9PT0gJ2FzYycpIHtcclxuICAgICAgTkVXX0RJUkVDVElPTiA9ICdkZXNjJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uU29ydEFjdGlvbih7XHJcbiAgICAgIGFjdGl2ZTogcHJvcGVydHksXHJcbiAgICAgIGRpcmVjdGlvbjogTkVXX0RJUkVDVElPTlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0U3RhdGU6IGFueSA9IHt9O1xyXG5cclxuICBnZXROZXh0KHBhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgfVxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAxOyAvLyByZXNldCB0byBmaXJzdCBwYWdlIG9uIHBhZ2Ugc2l6ZSBjaGFuZ2VcclxuICAgIHRoaXMubW9iaWxlRGlzcGxheWVkSXRlbXMgPSAwO1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5nZXROZXh0KDApO1xyXG4gIH1cclxuXHJcbiAgb25Mb2FkTW9yZShpdGVtc1RvTG9hZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGlzcGxheWVkID0gdGhpcy5tb2JpbGVEaXNwbGF5ZWRJdGVtcyB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggfHwgdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZVNpemUgPSBNYXRoLm1pbihjdXJyZW50RGlzcGxheWVkICsgaXRlbXNUb0xvYWQsIHRoaXMudG90YWxFbGVtZW50cyk7XHJcbiAgICB0aGlzLm1vYmlsZURpc3BsYXllZEl0ZW1zID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB0aGlzLmxvYWREYXRhKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YShza2lwTW9iaWxlUmVzZXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG5cclxuICAgIGlmICghc2tpcE1vYmlsZVJlc2V0KSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KHRoaXMucGFnZVNpemUgfHwgdGhpcy5wYWdlSW5mby5wYWdlU2l6ZSk7XHJcbiAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IHRoaXMuc2VhcmNoU3RyO1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW1xyXG4gICAgICAgIC4uLih0aGlzLmFkdmFuY2VkQXBwbGllZEZpbHRlciB8fCBbXSksXHJcbiAgICAgICAgLi4uKHRoaXMuZmlsdGVycyB8fCBbXSkuZmlsdGVyKGYgPT5cclxuICAgICAgICAgICEodGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgfHwgW10pLnNvbWUoYSA9PiBhLmZpZWxkID09PSBmLmZpZWxkTmFtZSlcclxuICAgICAgICApXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgaWYgKHRoaXMuc2VwYXJhdGVFbmRwb2ludERhdGEgfHwgIXRoaXMucGFnZUluZm8uYXBpVXJpIHx8IHRoaXMucGFnZUluZm8uYXBpVXJpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuc2VwYXJhdGVFbmRwb2ludERhdGE7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5yZXBvcnRSZXF1ZXN0ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZighdGhpcy5tYW5hZ2VhYmxlUGFnZXMpICB7XHJcbiAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IEZST05UX0VORF9DT0xVTU5fVFlQRVMuaW5kZXhPZihjLnR5cGUpIDwgMCApLm1hcChjID0+IGMucHJvcGVydHkpIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGVuZGluZ1BhZ2UgPSB0aGlzLmlzUGVuZGluZztcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IHRoaXMuc2VhcmNoU3RyO1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgLi4uKHRoaXMuYWR2YW5jZWRBcHBsaWVkRmlsdGVyIHx8IFtdKSxcclxuICAgICAgICAgICAgLi4uKHRoaXMuZmlsdGVycyB8fCBbXSkuZmlsdGVyKGYgPT5cclxuICAgICAgICAgICAgICAhKHRoaXMuYWR2YW5jZWRBcHBsaWVkRmlsdGVyIHx8IFtdKS5zb21lKGEgPT4gYS5maWVsZCA9PT0gZi5maWVsZE5hbWUpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0SXRlbXNCeUZpbHRlcih0aGlzLnJlcG9ydFJlcXVlc3Q/LmZpbHRlclJlcXVlc3QsIHRoaXMucGFnZUluZm8uYXBpVXJpKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VFbnZlbG9wZSA9IG5ldyBSZXNwb25zZUVudmVsb3AocmVzcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRW52ZWxvcGUudmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZXF1aXJlZENvdW50SXRlbSA9IHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gcmVzcG9uc2VFbnZlbG9wZS5ib2R5Lmxlbmd0aCA8IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHJlc3BvbnNlRW52ZWxvcGUuYm9keTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoIDw9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXNwb25zZUVudmVsb3BlLnRvdGFsU2l6ZSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlc0NvdW50ID0gTWF0aC5jZWlsKHRoaXMudG90YWxFbGVtZW50cyAvIHRoaXMucGFnZVNpemUpIHx8IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9ICh0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggfHwgMCkgKyAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcudG90YWxJdGVtcyA9IHJlc3BvbnNlRW52ZWxvcGUudG90YWxTaXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlRGlzcGxheWVkSXRlbXMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0Rlc2NyaXB0aW9uKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0U3RhdHVzRGVzY3JpcHRpb24oZWxlbWVudCwgdGhpcy51c2VkV29ya2Zsb3cpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVUeXBlKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuc3RhdGVUeXBlXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1c3RvbWl6ZWREYXRhXCJdICYmICFjaGFuZ2VzW1wiY3VzdG9taXplZERhdGFcIl0uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gY2hhbmdlc1tcImN1c3RvbWl6ZWREYXRhXCJdLmN1cnJlbnRWYWx1ZT8uZGF0YSB8fCBbXTsgIC8vIFVwZGF0ZSBkYXRhIHNvdXJjZSB3aXRoIG5ldyBkYXRhXHJcbiAgICAgIHRoaXMucGFnZXNDb3VudD10aGlzLnRvdGFsUGFnZXNDb3VudDtcclxuICAgICAgdGhpcy5wYWdlSW5kZXg9dGhpcy5jdXJyZW50UGFnZUluZGV4O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJlbmZvcmNlUmVmcmVzaFwiXSAmJiAhY2hhbmdlc1tcImVuZm9yY2VSZWZyZXNoXCJdLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcImlzUGVuZGluZ1wiXSAmJiAhY2hhbmdlc1tcImlzUGVuZGluZ1wiXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDcm9wcGVkVGV4dChlbGVtZW50VmFsdWU6IGFueSwgc3ViV2lkdGg6IG51bWJlciA9IDIwKSB7XHJcbiAgICByZXR1cm4gZWxlbWVudFZhbHVlICYmIGVsZW1lbnRWYWx1ZS5sZW5ndGggPiBzdWJXaWR0aCA/IGVsZW1lbnRWYWx1ZS5zdWJzdHJpbmcoMCwgc3ViV2lkdGgpICsgXCIuLi5cIiA6IGVsZW1lbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIGVtaXRFdmVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZy5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEZvcm1hdChjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4pIHtcclxuICAgIHJldHVybiBjb2x1bW4/LmZvcm1hdCB8fCAnZC9NL3l5eXksIGg6bW0gYSc7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25MaXN0Q2xpY2tlZChsaXN0QWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncywgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RBY3Rpb25DbGlja2VkLmVtaXQoe2FjdGlvbjpsaXN0QWN0aW9uLCByb3c6IGVsZW1lbnQsIGlzUGVuZGluZzogdGhpcy5pc1BlbmRpbmd9KTtcclxuICB9XHJcblxyXG4gIGh5cGVyTGlua0NsaWNrZWQoYWN0aW9uTmFtZTogc3RyaW5nLCBlbGVtZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IFRBQkxFX1JFQ09SRF9BQ1RJT047XHJcbiAgICBhY3Rpb24uYWN0aW9uS2V5ID0gYWN0aW9uTmFtZTtcclxuICAgIGFjdGlvbi5pdGVtID0gZWxlbWVudDtcclxuICAgIGFjdGlvbi5wYWdlSW5mbyA9IHRoaXMucGFnZUluZm87XHJcbiAgICB0aGlzLmh5cGVyTGlua0FjdGlvbi5lbWl0KGFjdGlvbilcclxuICB9XHJcblxyXG5cclxuICBlbWl0Um91dGVQYWdlKGVsZW1lbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNsaWNrUm91dGVQYWdlLmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEl0ZW0ocm93OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnBhZ2VJbmZvLnNlbGZSb3V0aW5nKSB7XHJcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmlzUGVuZGluZyA/ICdwZW5kaW5nJyA6ICd2aWV3JztcclxuICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYWdlSW5mby5saXN0Um91dGVQYXRoIHx8IHRoaXMucm91dGVyLnVybH0vdmlld2A7XHJcblxyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRJZCA9IHRoaXMuYmFja2VuZFNlcnZpY2UuZW5jcnlwdChTdHJpbmcocm93LmlkKSk7XHJcbiAgICAgIGNvbnN0IGVuY3J5cHRlZE1vZGUgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQobW9kZSk7XHJcblxyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRSb3cgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkocm93KSk7XHJcblxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRva2VuOiBlbmNyeXB0ZWRJZCwgbW9kZTogZW5jcnlwdGVkTW9kZSB9LFxyXG4gICAgICAgIHN0YXRlOiB7IHJhdzogZW5jcnlwdGVkUm93IH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBhY3Rpb24gPSBTRUxFQ1RfUkVDT1JEX0FDVElPTjtcclxuICAgIC8vIGFjdGlvbi5pZCA9IHJvdz8uaWQ7XHJcbiAgICAvLyBhY3Rpb24uaXRlbSA9IHJvdztcclxuICAgIC8vIHRoaXMudXNlckFjdGlvbi5lbWl0KGFjdGlvbilcclxuICB9XHJcblxyXG4gIG9wZW5OZXdUYWIocm93KSB7XHJcbiAgICBpZiAoIXRoaXMucGFnZUluZm8uZW1iZWRlZFRhYmxlT25seSkge1xyXG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5pc1BlbmRpbmcgPyAncGVuZGluZycgOiAndmlldyc7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMucGFnZUluZm8ubGlzdFJvdXRlUGF0aH0vJHttb2RlfWAgKyAnLycgKyByb3c/LmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmlld01vZGVDaGFuZ2VkUmVjZWl2ZWQoaXNQZW5kaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN3aXRjaFZpZXdNb2RlKGlzUGVuZGluZyk7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hWaWV3TW9kZShpc1BlbmRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNQZW5kaW5nID0gaXNQZW5kaW5nO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgb25BZGROZXdBY3Rpb24oJGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMucGFnZUluZm8ubGlzdFJvdXRlUGF0aCB8fCB0aGlzLnJvdXRlci51cmx9L3ZpZXdgO1xyXG4gICAgY29uc3QgZW5jcnlwdGVkSWQgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoXCItMVwiKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZE1vZGUgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoXCJwZW5kaW5nXCIpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3VybH1gXSxcclxuICAgICAgeyBxdWVyeVBhcmFtczogeyB0b2tlbjogZW5jcnlwdGVkSWQgLCBtb2RlIDogZW5jcnlwdGVkTW9kZSB9IH0pO1xyXG5cclxuICAgIC8vIGNvbnN0IGFjdGlvbiA9IFNFTEVDVF9SRUNPUkRfQUNUSU9OO1xyXG4gICAgLy8gYWN0aW9uLmlkID0gcm93Py5pZDtcclxuICAgIC8vIGFjdGlvbi5pdGVtID0gcm93O1xyXG4gICAgLy8gdGhpcy51c2VyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgc2hvd0FkZE5ldygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VJbmZvLmhhc0FkZEJ1dHRvbiA7XHJcbiAgfVxyXG5cclxuICBvbkV4dHJhQnV0dGlvbkFjdGlvbigkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leHRyYUFjdGlvbi5lbWl0KCRldmVudCk7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzR3JvdXBzKCkge1xyXG4gICAgbGV0IGIgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KHAgPT4gcC5ncm91cCk7XHJcbiAgICByZXR1cm4gYiA+PSAwO1xyXG4gIH1cclxuICBncm91cE5hbWVzOiBhbnkgPSBbXVxyXG4gIGdyb3VwU3BhbnM6IE1hcDxzdHJpbmcsIG51bWJlcj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGJ1aWxkR3JvdXBzKCl7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgdGhpcy5ncm91cE5hbWVzID0gW107XHJcbiAgICB0aGlzLmdyb3VwU3BhbnMuY2xlYXIoKTtcclxuICAgIGlmKHRoaXMuaGFzR3JvdXBzKCkgPT09IGZhbHNlKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlID09PSB0cnVlKVxyXG4gICAgICAuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5ncm91cCA9PT0gXCItXCIpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBOYW1lcy5wdXNoKGNvdW50LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgdGhpcy5pbnNlcnRJbk1hcChjb3VudCk7XHJcbiAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZ3JvdXBOYW1lcy5pbmNsdWRlcyhjb2x1bW4uZ3JvdXApKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwTmFtZXMucHVzaChjb2x1bW4uZ3JvdXApO1xyXG4gICAgICAgICAgdGhpcy5pbnNlcnRJbk1hcChjb2x1bW4uZ3JvdXApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluc2VydEluTWFwKGNvbHVtbi5ncm91cCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0SW5NYXAoa2V5KXtcclxuICAgIGlmKHRoaXMuZ3JvdXBTcGFucy5oYXMoa2V5KSl7XHJcbiAgICAgIHRoaXMuZ3JvdXBTcGFucy5zZXQoa2V5LnRvU3RyaW5nKCksIHRoaXMuZ3JvdXBTcGFucy5nZXQoa2V5KSArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cFNwYW5zLnNldChrZXkudG9TdHJpbmcoKSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0h1bWFuTWFkZShzdHIpe1xyXG4gICAgcmV0dXJuIGlzTmFOKHN0cik7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25CdXR0b25DbGlja2VkKGFjdGlvbktleTogc3RyaW5nLCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb25LZXkgPT09ICduYXZpZ2F0ZScpIHtcclxuICAgICAgdGhpcy5oYW5kbGVOYXZpZ2F0ZUFjdGlvbihpdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdFRhYmxlQWN0aW9uKGFjdGlvbktleSwgaXRlbSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU5hdmlnYXRlQWN0aW9uKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgbW9kZSA9IHRoaXMuaXNQZW5kaW5nID8gJ3BlbmRpbmcnIDogJ3ZpZXcnO1xyXG4gICAgY29uc3QgYmFzZVBhdGggPSB0aGlzLnBhZ2VJbmZvLmxpc3RSb3V0ZVBhdGggfHwgdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgY29uc3QgdXJsID0gYCR7YmFzZVBhdGh9L3ZpZXdgO1xyXG5cclxuICAgIGNvbnN0IGVuY3J5cHRlZElkID0gdGhpcy5iYWNrZW5kU2VydmljZS5lbmNyeXB0KGl0ZW0uaWQudG9TdHJpbmcoKSk7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWRNb2RlID0gdGhpcy5iYWNrZW5kU2VydmljZS5lbmNyeXB0KG1vZGUpO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRva2VuOiBlbmNyeXB0ZWRJZCwgbW9kZTogZW5jcnlwdGVkTW9kZSB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFRhYmxlQWN0aW9uKGFjdGlvbktleTogc3RyaW5nLCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IFRBQkxFX1JFQ09SRF9BQ1RJT047XHJcbiAgICBhY3Rpb24uYWN0aW9uS2V5ID0gYWN0aW9uS2V5O1xyXG4gICAgYWN0aW9uLml0ZW0gPSBpdGVtO1xyXG4gICAgYWN0aW9uLnBhZ2VJbmZvID0gdGhpcy5wYWdlSW5mbztcclxuICAgIHRoaXMudXNlckFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0UmVwb3J0KHJlcG9ydFR5cGU6IGFueSkge1xyXG4gICAgY29uc3QgbXlGaWx0ZXJzID0gdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Q7XHJcbiAgICBjb25zdCByZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5jb2x1bW5zLCB0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLmxpc3RfdGl0bGUnLFxyXG4gICAgICBteUZpbHRlcnMsIHJlcG9ydFR5cGUsIHRoaXMucGFnZUluZm8sIHRoaXMuc2VhcmNoU3RyLCAnTEFORFNDQVBFJyk7XHJcbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRvd25sb2FkUmVwb3J0KHJlcG9ydFJlcXVlc3QsIHRoaXMucGFnZUluZm8uYXBpVXJpKTtcclxuICB9XHJcblxyXG4gIGdldEljb24oc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgY2FzZSAncGFzcyc6IHJldHVybiAnY2hlY2tfY2lyY2xlJztcclxuICAgICAgY2FzZSAnd2FybmluZyc6IHJldHVybiAnd2FybmluZyc7XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzogcmV0dXJuICdlcnJvcic7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnaGVscCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25DaGVja2VkQ2xpY2tlZChwcm9wZXJ0eTogc3RyaW5nLCBlbGVtZW50KSB7XHJcbiAgICBlbGVtZW50W3Byb3BlcnR5XT0gIWVsZW1lbnRbcHJvcGVydHldO1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b25DbGlja2VkKHByb3BlcnR5LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG5cclxuICBpc0RhcmtIaWdobGlnaHQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFyb3dbZ3JvdXBCeVByb3BdKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjZWxsVmFsdWUgPSByb3dbZ3JvdXBCeVByb3BdLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwQnlWYWx1ZXMuc29tZSh2YWwgPT5cclxuICAgICAgY2VsbFZhbHVlLmluY2x1ZGVzKHZhbCkgJiYgY2VsbFZhbHVlLmxlbmd0aCA+IHZhbC5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzaG91bGRSZW5kZXJBc0h5cGVyTGluayhlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFlbGVtZW50W2dyb3VwQnlQcm9wXSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50W2dyb3VwQnlQcm9wXS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiAhZ3JvdXBCeVZhbHVlcy5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikgJiYgdmFsdWUubGVuZ3RoID49IHYubGVuZ3RoKTtcclxuICB9XHJcblxyXG5cclxuICBvblNvcnRBY3Rpb24oJGV2ZW50OiBTb3J0KSB7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5zb3J0S2V5ID0gJGV2ZW50LmFjdGl2ZSAmJiAkZXZlbnQuZGlyZWN0aW9uID9cclxuICAgICAgdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLnByb3BlcnR5ID09PSAkZXZlbnQuYWN0aXZlKT8ub3JkZXJCeVByb3BlcnR5IHx8ICRldmVudC5hY3RpdmVcclxuICAgICAgOiAnaWQnO1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Quc29ydERpcmVjdGlvbiA9ICRldmVudC5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ0FTQycgOiAnREVTQyc7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uLmVtaXQoJGV2ZW50KTtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkU2hvd0J1dHRvbihlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFlbGVtZW50W2dyb3VwQnlQcm9wXSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnRbZ3JvdXBCeVByb3BdLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgcmV0dXJuICFncm91cEJ5VmFsdWVzLnNvbWUodiA9PiB2YWx1ZS5pbmNsdWRlcyh2KSAmJiB2YWx1ZS5sZW5ndGggPj0gdi5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVQZW5kaW5nRmlsdGVycygkZXZlbnQ6IHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5wZW5kaW5nRmlsdGVycyA9ICRldmVudC5maWx0ZXJzIHx8IFtdO1xyXG4gICAgICB0aGlzLnNlYXJjaFN0ciA9ICRldmVudC5zZWFyY2hTdHI7XHJcbiAgfVxyXG5cclxuICBhcHBseVBlbmRpbmdGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgPSB0aGlzLnBlbmRpbmdGaWx0ZXJzIHx8IFtdO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyRW1wdHkoJGV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIHRoaXMucGVuZGluZ0ZpbHRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgPSBbXTtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCRldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICB0aGlzLmFkdmFuY2VkQXBwbGllZEZpbHRlciA9IFtdO1xyXG4gICAgICB0aGlzLnBlbmRpbmdGaWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcclxuICAgICAgLy8gdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNGaWx0ZXJzQXBwbGllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgJiYgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIubGVuZ3RoID4gMCkgfHxcclxuICAgICAgICAgICAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPiAwKSB8fFxyXG4gICAgICAgICAgICh0aGlzLnBlbmRpbmdGaWx0ZXJzICYmIHRoaXMucGVuZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5U3ZnUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzRmlsdGVyc0FwcGxpZWQoKSAmJiB0aGlzLm5vUmVzdWx0U3ZnUGF0aCA/IHRoaXMubm9SZXN1bHRTdmdQYXRoIDogdGhpcy5ub0RhdGFGb3VuZFN2Z1BhdGg7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0ZpbHRlcnNBcHBsaWVkKCkgJiYgdGhpcy5ub1Jlc3VsdFN2Z1BhdGggPyB0aGlzLm5vUmVzdWx0VGl0bGUgOiB0aGlzLm5vRGF0YUZvdW5kVGl0bGU7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5U3VidGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0ZpbHRlcnNBcHBsaWVkKCkgJiYgdGhpcy5ub1Jlc3VsdFN2Z1BhdGggPyB0aGlzLm5vUmVzdWx0U3VidGl0bGUgOiB0aGlzLm5vRGF0YUZvdW5kU3VidGl0bGU7XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGlja2VkRXZlbnQoJGV2ZW50OiBCdXR0b25BY3Rpb25TZXR0aW5ncykge1xyXG5cclxuICB9XHJcblxyXG4gIGdldE1vYmlsZUNhcmRJZENvbHVtbigpOiBUYWJsZUNvbHVtbjxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMudmlzaWJsZSAmJiBjLm1vYmlsZUNhcmRJZCA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk6IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKGMgPT4gYy52aXNpYmxlICYmIGMubW9iaWxlQ2FyZFN0YXR1cyA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRNb2JpbGVDYXJkQ29sdW1ucygpOiBUYWJsZUNvbHVtbjxhbnk+W10ge1xyXG4gICAgY29uc3QgaWRDb2wgPSB0aGlzLmdldE1vYmlsZUNhcmRJZENvbHVtbigpO1xyXG4gICAgY29uc3Qgc3RhdHVzQ29sID0gdGhpcy5nZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PlxyXG4gICAgICBjLnZpc2libGUgJiZcclxuICAgICAgYy5wcm9wZXJ0eSAhPT0gJ2FjdGlvbnMnICYmXHJcbiAgICAgIGMgIT09IGlkQ29sICYmXHJcbiAgICAgIGMgIT09IHN0YXR1c0NvbFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGxhYmVsS2V5QnlWYWx1ZShjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQsIHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucHJvcGVydHkpIHJldHVybiAnJztcclxuICAgIHJldHVybiBzdXBlci5sYWJlbEtleUJ5VmFsdWUoY29sdW1uLCByb3cpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gYmFzZVRhYmxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtcm93IGZsZXgtMTAwXCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIGFsaWduLXN0YXJ0IGZsZXgtMTAwXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgPGFwcC10aXRsZS1iYXJcclxuICAgICAgICBbcGFnZVRpdGxlXT1cInBhZ2VJbmZvLmhpZGVUaXRsZSA/ICcnIDogcGFnZUluZm8ubGFiZWxzU2VjdGlvbisnLmxpc3RfdGl0bGUnXCJcclxuICAgICAgICBbc3ViVGl0bGVdPVwiKHBhZ2VJbmZvLmhpZGVUaXRsZSB8fCBwYWdlSW5mby5oaWRlU3VidGl0bGUpID8gJycgOiBwYWdlSW5mby5sYWJlbHNTZWN0aW9uKycuc3VidGl0bGUnXCJcclxuICAgICAgICBbdGl0bGVNb2RlXT1cIicnXCJcclxuICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxyXG4gICAgICAgIFtuZXdBY3Rpb25dPVwic2hvd0FkZE5ldygpXCJcclxuICAgICAgICBbc2hvd0V4dHJhY3RCdXR0b25dPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgICBbZHJhZnRTdXBwb3J0ZWRdPVwicGFnZUluZm8uZHJhZnRTdXBwb3J0ZWRcIlxyXG4gICAgICAgIFtpc1BlbmRpbmddPVwiaXNQZW5kaW5nXCJcclxuICAgICAgICBbb25WaWV3TW9kZUNoYW5nZV09XCJzd2l0Y2hWaWV3TW9kZS5iaW5kKHRoaXMpXCJcclxuICAgICAgICBbYnV0dG9uc109XCJleHRyYUFjdGlvbnNcIlxyXG4gICAgICAgIFtidXR0b25zRGlzcGxheU1vZGVdPVwiYnV0dG9uc0Rpc3BsYXlNb2RlXCJcclxuICAgICAgICAobmV3QWN0aW9uQ2xpY2tlZCk9XCJvbkFkZE5ld0FjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAoZXh0cmFjdFJlcG9ydCk9XCJleHRyYWN0UmVwb3J0KCRldmVudClcIlxyXG4gICAgICAgICh2aWV3TW9kZUNoYW5nZWQpPVwib25WaWV3TW9kZUNoYW5nZWRSZWNlaXZlZCgkZXZlbnQpXCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgW3RvdGFsRWxlbWVudHNdPVwicGFnZUluZm8uaGlkZVRpdGxlID8gdW5kZWZpbmVkIDogdG90YWxFbGVtZW50c1wiPlxyXG4gICAgICA8L2FwcC10aXRsZS1iYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpbHRlci1yb3dcIiAqbmdJZj1cIiFwYWdlSW5mby5oaWRlQWR2YW5jZWRGaWx0ZXJcIj5cclxuICAgIDxhcHAtZmlsdGVyLWJ1aWxkZXJcclxuICAgICAgKm5nSWY9XCIhcGFnZUluZm8uaGlkZUFkdmFuY2VkRmlsdGVyXCJcclxuICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcclxuICAgICAgW3BlbmRpbmdGaWx0ZXJzXT1cInBlbmRpbmdGaWx0ZXJzXCJcclxuICAgICAgW3Nob3dFeHBvcnRCdXR0b25dPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgKGZpbHRlckluZm9ybWF0aW9uKT1cInN0b3JlUGVuZGluZ0ZpbHRlcnMoJGV2ZW50KVwiXHJcbiAgICAgIChpc0VtcHR5KT1cImhhbmRsZUZpbHRlckVtcHR5KCRldmVudClcIlxyXG4gICAgICAoYXBwbHlGaWx0ZXIpPVwiYXBwbHlQZW5kaW5nRmlsdGVycygpXCJcclxuICAgICAgKHNvcnRCeUNsaWNrZWQpPVwiaGFuZGxlU29ydENsaWNrKCRldmVudClcIlxyXG4gICAgICAoZXhwb3J0Q2xpY2tlZCk9XCJleHRyYWN0UmVwb3J0KCRldmVudClcIj5cclxuICAgIDwvYXBwLWZpbHRlci1idWlsZGVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIiAqbmdJZj1cIiFwYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvblwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZXhwb3J0TWVudVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tZXhwb3J0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmZpbGVfZXhwb3J0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuPnt7ICdleHBvcnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3ctaWNvblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxtYXQtbWVudSAjZXhwb3J0TWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImV4dHJhY3RSZXBvcnQoJ3BkZicpXCI+UERGPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJleHRyYWN0UmVwb3J0KCd4bHN4JylcIj5FeGNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXh0cmFjdFJlcG9ydCgnY3N2JylcIj5DU1Y8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4LXJvdyBmbGV4LTEwMCBiYXNlVGFibGVfX2RldGFpbHNDb2x1bW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEwMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3cgZmxleC0xMDAgbWFpblRhYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiIFthdHRyLmRhdGEtc29ydF09XCJzb3J0U3RhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uUHJvcCBvZiB2aXNpYmxlQ29sdW1uc0FycmF5OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWhlYWRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy5lbmFibGVTb3J0aW5nXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuZmlyc3QtY2VsbF09XCJpID09PSAwXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MubGFzdC1jZWxsXT1cImkgPT09IHZpc2libGVDb2x1bW5zQXJyYXkubGVuZ3RoIC0gMVwiXHJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGlvbnMtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDEgJiYgY29sdW1uUHJvcCA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXdpZHRoXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGggPyB7J3dpZHRoJzogZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aCArICclJywgJ2ZsZXgtYmFzaXMnOiBnZXRDb2x1bW4oY29sdW1uUHJvcCk/LndpZHRoICsgJyUnfSA6IHt9XCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy5lbmFibGVTb3J0aW5nICYmIGhhbmRsZVNvcnRDbGljayhjb2x1bW5Qcm9wKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS1oZWFkZXItbGFiZWxcIj57eyBsYWJlbEtleShnZXRDb2x1bW4oY29sdW1uUHJvcCkpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8uZW5hYmxlU29ydGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJnZXRTb3J0RGlyZWN0aW9uKGNvbHVtblByb3ApID09PSAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHNvcnQtYXNjXCI+YXJyb3dfZHJvcF91cDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImdldFNvcnREaXJlY3Rpb24oY29sdW1uUHJvcCkgPT09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHNvcnQtZGVzY1wiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVNvdXJjZS5kYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxyXG4gICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIid0YWJsZS1yb3ctJyArIChyb3c/LmlkIHx8IHJvdz8ua2V5IHx8ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy0taGlnaGxpZ2h0Jzogc2VsZWN0ZWRSb3dJbmRleCA9PSByb3cuaWQgfHwgKHBhZ2VJbmZvLmdyb3VwQnlQcm9wZXJ0eSAmJiBwYWdlSW5mby5ncm91cEJ5VmFsdWU/LmluY2x1ZGVzKHJvd1twYWdlSW5mby5ncm91cEJ5UHJvcGVydHldKSksXHJcbiAgICAgICAgICAgICAgICAgICAndGFibGUtcm93LS1kYXJrLWhpZ2hsaWdodCc6IGlzRGFya0hpZ2hsaWdodChyb3cpXHJcbiAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgKGF1eGNsaWNrKT1cIm9wZW5OZXdUYWIocm93KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25TZWxlY3RJdGVtKHJvdylcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW5Qcm9wIG9mIHZpc2libGVDb2x1bW5zQXJyYXk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maXJzdC1jZWxsXT1cImkgPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmxhc3QtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGlvbnMtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDEgJiYgY29sdW1uUHJvcCA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtd2lkdGhdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRDb2x1bW4oY29sdW1uUHJvcCk/LndpZHRoID8geyd3aWR0aCc6IGdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGggKyAnJScsICdmbGV4LWJhc2lzJzogZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aCArICclJ30gOiB7fVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3b3JrZmxvd1N0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZlN0YXR1cyB7eyBnZXRTdGF0dXNEZXNjcmlwdGlvbihyb3cpfX1cIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLXdmLScrY29sdW1uUHJvcCsnLScrKHJvdy5pZCB8fCByb3cua2V5IHx8ICcnKVwiPnt7IGdldFN0YXR1c0Rlc2NyaXB0aW9uKHJvdykgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaHlwZXItdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIChjbGljayk9XCJoeXBlckxpbmtDbGlja2VkKGNvbHVtblByb3AsIHJvdylcIiBbbmdDbGFzc109XCJ7J2h5cGVyLWxpbmsnOiBzaG91bGRSZW5kZXJBc0h5cGVyTGluayhyb3cpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZXh0cmFjdEZpZWxkTmFtZShyb3csIGNvbHVtblByb3ApIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvdWxkU2hvd0J1dHRvbihyb3cpXCIgbWF0LWJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBhY3Rpb25CdXR0b25DbGlja2VkKGNvbHVtblByb3AsIHJvdylcIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLWFjdGlvbi0nK2NvbHVtblByb3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsS2V5KGdldENvbHVtbihjb2x1bW5Qcm9wKSkgKyAnX3RpdGxlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAnbWFpblRhYmxlX190ZF9faWNvbi1ncmVlbic6IHJvd1tjb2x1bW5Qcm9wXSA9PT0gJ3Bhc3MnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgJ21haW5UYWJsZV9fdGRfX2ljb24tb3JhbmdlJzogcm93W2NvbHVtblByb3BdID09PSAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAnbWFpblRhYmxlX190ZF9faWNvbi1yZWQnOiByb3dbY29sdW1uUHJvcF0gPT09ICdlcnJvcidcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJY29uKHJvd1tjb2x1bW5Qcm9wXSkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cInJvd1tjb2x1bW5Qcm9wXVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7YWN0aW9uQ2hlY2tlZENsaWNrZWQoY29sdW1uUHJvcCxyb3cpXCI+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0YXRlVHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJzdGF0ZVR5cGUge3sgcm93W2NvbHVtblByb3BdfX1cIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLXN0YXRlLScrY29sdW1uUHJvcFwiPnt7IGxhYmVsS2V5QnlWYWx1ZShnZXRDb2x1bW4oY29sdW1uUHJvcCksIHJvdykgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Nyb3BwZWRUZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdldENyb3BwZWRUZXh0KHJvd1tjb2x1bW5Qcm9wXSwgcm93W2dldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGhdKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkb3dubG9hZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluVGFibGVfX3RkX19pY29uLWJsdWVcIj5zeXN0ZW1fdXBkYXRlX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ29uT2ZmJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInJvd1tjb2x1bW5Qcm9wXSA9PT0gbnVsbFwiIGNsYXNzPVwibWFpblRhYmxlX190ZF9faWNvbi1kYXJrb3JhbmdlXCI+ZmxhZzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwicm93W2NvbHVtblByb3BdID09PSBmYWxzZVwiIGNsYXNzPVwibWFpblRhYmxlX190ZF9faWNvbi1yZWRcIj5mbGFnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJyb3dbY29sdW1uUHJvcF0gPT09IHRydWVcIiBjbGFzcz1cIm1haW5UYWJsZV9fdGRfX2ljb24tZ3JlZW5cIj5mbGFnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3RhdHVzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2NvbHVtblByb3BdID09PSBudWxsIHx8IHJvd1tjb2x1bW5Qcm9wXSA9PT0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyBnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmxhYmVsICsgJ0luQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1tjb2x1bW5Qcm9wXSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUluZm8ubGFiZWxzU2VjdGlvbiArICcuJyArIGdldENvbHVtbihjb2x1bW5Qcm9wKT8ubGFiZWwgKyAnQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5mbydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2VtaXRFdmVudChyb3cpXCIgW2F0dHIuaWRdPVwiJ3RhYmxlLWJ0bi1pbmZvLScrcm93LmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25ldEFtb3VudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpblRhYmxlX190ZF9fY3VycmVuY3lcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO1wiPnt7IHJvd1tnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmN1cnJlbmN5XSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpblRhYmxlX190ZF9fcHJvcGVydHlcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tbGVmdDo2cHg7IG1hcmdpbi1yaWdodDo2cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uUHJvcCkgfCBjdXJyZW5jeTonJzonJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9jYWxEYXRlVGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uUHJvcCkgfCBkYXRlIDogZXh0cmFjdEZvcm1hdChnZXRDb2x1bW4oY29sdW1uUHJvcCkpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JpZ2RlY2ltYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPjxzdXAgY2xhc3M9XCJtYWluVGFibGVfX3RkX19jdXJyZW5jeVwiPnt7cm93W2dldENvbHVtbihjb2x1bW5Qcm9wKT8uY3VycmVuY3ldfX08L3N1cD48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IG51bWJlciA6IChnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmRpZ2l0SW5mbyB8fCAnMS4zLTUnKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0QWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtYnV0dG9uLWFjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zQWN0aW9uXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8udmlld1R5cGUgPT09ICdidXR0b25zQWN0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGlzdEFjdGlvbl09XCJsaXN0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25zXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWRCdXR0b24pPVwiYWN0aW9uTGlzdENsaWNrZWQoJGV2ZW50LHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2FwcC1idXR0b24tYWN0aW9ucz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8udHJhbnNsYXRlOyBlbHNlIG5vVHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZW1pdFJvdXRlUGFnZShyb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZW1pdFJvdXRlUGFnZShyb3cpXCIgW2lubmVySHRtbF09J2V4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBNb2JpbGUgQ2FyZCBWaWV3IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWNhcmRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhU291cmNlLmRhdGE7IGxldCByb3dJbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgIGNsYXNzPVwibW9iaWxlLWNhcmRcIlxyXG4gICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ21vYmlsZS1jYXJkLScgKyAocm93Py5pZCB8fCByb3c/LmtleSB8fCAnJylcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAnbW9iaWxlLWNhcmQtLWhpZ2hsaWdodCc6IHNlbGVjdGVkUm93SW5kZXggPT0gcm93LmlkIHx8IChwYWdlSW5mby5ncm91cEJ5UHJvcGVydHkgJiYgcGFnZUluZm8uZ3JvdXBCeVZhbHVlPy5pbmNsdWRlcyhyb3dbcGFnZUluZm8uZ3JvdXBCeVByb3BlcnR5XSkpLFxyXG4gICAgICAgICAgICAgICAnbW9iaWxlLWNhcmQtLWRhcmstaGlnaGxpZ2h0JzogaXNEYXJrSGlnaGxpZ2h0KHJvdylcclxuICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgKGF1eGNsaWNrKT1cIm9wZW5OZXdUYWIocm93KVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblNlbGVjdEl0ZW0ocm93KVwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8IS0tIE1vYmlsZSBDYXJkIEhlYWRlcjogSUQvTmFtZSBhbmQgU3RhdHVzIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19oZWFkZXItaWRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19pZC10ZXh0XCI+e3sgZXh0cmFjdEZpZWxkTmFtZShyb3csIGdldE1vYmlsZUNhcmRJZENvbHVtbigpPy5wcm9wZXJ0eSB8fCAnaWQnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9faGVhZGVyLXN0YXR1c1wiICpuZ0lmPVwiZ2V0TW9iaWxlQ2FyZFN0YXR1c0NvbHVtbigpXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic3RhdGVUeXBlIHt7IHJvd1tnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk/LnByb3BlcnR5XX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInbW9iaWxlLWJ0bi1zdGF0ZS0nK2dldE1vYmlsZUNhcmRTdGF0dXNDb2x1bW4oKT8ucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxhYmVsS2V5QnlWYWx1ZShnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCksIHJvdykgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGl2aWRlciAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gTW9iaWxlIENhcmQgQm9keTogT3RoZXIgY29sdW1ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZ2V0TW9iaWxlQ2FyZENvbHVtbnMoKVwiIGNsYXNzPVwibW9iaWxlLWNhcmRfX3Jvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fcm93LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYWJlbEtleShjb2x1bW4pIHwgdHJhbnNsYXRlIH19IDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19yb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGF0ZVR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic3RhdGVUeXBlIHt7IHJvd1tjb2x1bW4ucHJvcGVydHldfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidtb2JpbGUtYnRuLXN0YXRlLScrY29sdW1uLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbEtleUJ5VmFsdWUoY29sdW1uLCByb3cpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uLnByb3BlcnR5KSB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25ldEFtb3VudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19hbW91bnQtY3VycmVuY3lcIj57eyByb3dbY29sdW1uLmN1cnJlbmN5XSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19hbW91bnQtdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uLnByb3BlcnR5KSB8IGN1cnJlbmN5OicnOicnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb2NhbERhdGVUaW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgZGF0ZSA6IGV4dHJhY3RGb3JtYXQoY29sdW1uKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidiaWdkZWNpbWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD48c3VwIGNsYXNzPVwibWFpblRhYmxlX190ZF9fY3VycmVuY3lcIj57e3Jvd1tjb2x1bW4uY3VycmVuY3ldfX08L3N1cD48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgbnVtYmVyIDogKGNvbHVtbi5kaWdpdEluZm8gfHwgJzEuMy01JykgfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50cmFuc2xhdGU7IGVsc2Ugbm9UcmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT0nZXh0cmFjdEZpZWxkTmFtZShyb3csIGNvbHVtbi5wcm9wZXJ0eSknPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gTW9iaWxlIENhcmQgQWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fYWN0aW9uc1wiICpuZ0lmPVwibGlzdEFjdGlvbiAmJiBsaXN0QWN0aW9uLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGFwcC1idXR0b24tYWN0aW9uc1xyXG4gICAgICAgICAgICAgIFtidXR0b25zQWN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtsaXN0QWN0aW9uXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFthY3Rpb25zXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgIChjbGlja2VkQnV0dG9uKT1cImFjdGlvbkxpc3RDbGlja2VkKCRldmVudCxyb3cpXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWJ1dHRvbi1hY3Rpb25zPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YUZvdW5kXCIgY2xhc3M9XCJkYXRhTm90Rm91bmQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiZ2V0RGlzcGxheVN2Z1BhdGgoKVwiIFtzcmNdPVwiZ2V0RGlzcGxheVN2Z1BhdGgoKVwiIGNsYXNzPVwiZGF0YU5vdEZvdW5kX19pY29uXCIgYWx0PVwiTm8gZGF0YSBmb3VuZFwiIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhTm90Rm91bmRfX3RpdGxlXCI+e3sgZ2V0RGlzcGxheVRpdGxlKCkgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9fc3VidGl0bGVcIj57eyBnZXREaXNwbGF5U3VidGl0bGUoKSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2ICAqbmdJZj1cIihkYXRhU291cmNlLmRhdGE/Lmxlbmd0aCA+IDAgfHwgY3VzdG9taXplZERhdGEpICYmICFwYWdlSW5mby5oaWRlUGFnaW5hdGlvblwiIGNsYXNzPVwibWFpbi1wYWdpbmF0aW9uIGZsZXgtcm93XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZVBhZ2luYXRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiBmbGV4LTEwMFwiPlxyXG4gICAgICAgICAgICA8YXBwLXBhZ2luYXRvclxyXG4gICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsRWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIlxyXG4gICAgICAgICAgICAgIFttb2JpbGVMb2FkTW9yZUluY3JlbWVudF09XCJtb2JpbGVMb2FkTW9yZUluY3JlbWVudFwiXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXllZEl0ZW1zXT1cIm1vYmlsZURpc3BsYXllZEl0ZW1zIHx8IGRhdGFTb3VyY2UuZGF0YS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAobG9hZE1vcmUpPVwib25Mb2FkTW9yZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLXBhZ2luYXRvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtdGFibGUvYmFzZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtdGFibGUvYmFzZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBRUwsZUFBZSxFQUVmLHNCQUFzQixFQUV0QixtQkFBbUIsRUFFcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFHcEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFFbEcsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFzQzVFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBd0kvQyxZQUNZLGNBQThCLEVBQy9CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDTixlQUFvQixFQUMvQyxNQUFjO1FBRXhCLEtBQUssRUFBRSxDQUFDO1FBTkUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNOLG9CQUFlLEdBQWYsZUFBZSxDQUFLO1FBQy9DLFdBQU0sR0FBTixNQUFNLENBQVE7UUE1STFCLFVBQUssR0FBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDeEMsZUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHO1lBQ1AsWUFBWSxFQUFFLEVBQUU7WUFDaEIsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO1NBQ2xDLENBQUM7UUFDSyxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixXQUFNLEdBQVE7WUFDbkIsYUFBYSxFQUFFLEdBQUc7WUFDbEIsU0FBUyxFQUFFLEdBQUc7WUFDZCwyQkFBMkIsRUFBRSxZQUFZO1lBQ3pDLHFCQUFxQixFQUFFLE1BQU07WUFDN0Isd0JBQXdCLEVBQUUsZ0JBQWdCO1NBQzNDLENBQUM7UUFLTyxxQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUU1QyxrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCx5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDakIseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQzVDLDBCQUFxQixHQUFVLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ2Ysa0JBQWEsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUdsRCxhQUFRLEdBQWEsZUFBZSxDQUFDO1FBRzlDLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUdqQyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQiw0QkFBdUIsR0FBVyxDQUFDLENBQUM7UUFJcEMsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFHeEMsaUJBQVksR0FBMkIsRUFBRSxDQUFDO1FBRzFDLHVCQUFrQixHQUF3QixVQUFVLENBQUM7UUFNckQsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQU12QixnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUduRSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUdoQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsa0JBQWEsR0FBa0IsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFLckQsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFFNUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRzdCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUluRCxlQUFVLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRXhGLG9CQUFlLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRzdGLGdCQUFXLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBR3pGLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUQsc0JBQWlCLEdBQWlGLElBQUksWUFBWSxFQUk5RyxDQUFDO1FBR0wsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBU3hELHFCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUkzQixtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBb0g1RCxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBa01wQixlQUFVLEdBQVEsRUFBRSxDQUFBO1FBQ3BCLGVBQVUsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQTdTMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELFdBQVc7SUFDWCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDcEUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDbkUsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsT0FBWSxFQUFFLFFBQWdCO1FBQzdDLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUcsQ0FBQztnQkFDNUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxPQUFRLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQztpQkFBSyxDQUFDO2dCQUNMLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ25GLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBZ0I7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxhQUFhLEdBQW1CLEtBQUssQ0FBQztRQUUxQyxJQUFJLGlCQUFpQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2hDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUM7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsU0FBUyxFQUFFLGFBQWE7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlELE9BQU8sQ0FBQyxTQUFpQjtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztRQUM5RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQjtRQUM1QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxrQkFBMkIsS0FBSztRQUMvQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRztnQkFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUN2RTthQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFHLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFDLENBQUM7WUFDekMsT0FBTztRQUNULENBQUM7YUFBTSxJQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0ksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUc7b0JBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksRUFBRSxDQUFDO29CQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDdkU7aUJBQ0YsQ0FBQztnQkFDQSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM3RyxNQUFNLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuRCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFBO3dCQUN2RSxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO3dCQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7d0JBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQzt3QkFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDckUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7d0JBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO3dCQUM3QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUMxRCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUNDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBWTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFFLG1DQUFtQztZQUMvRyxJQUFJLENBQUMsVUFBVSxHQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzVFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFDRCxjQUFjLENBQUMsWUFBaUIsRUFBRSxXQUFtQixFQUFFO1FBQ3JELE9BQU8sWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNySCxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQVk7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUF3QjtRQUNwQyxPQUFPLE1BQU0sRUFBRSxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDOUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWdDLEVBQUUsT0FBWTtRQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxPQUFZO1FBQy9DLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDO1FBQ25DLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBR0QsYUFBYSxDQUFDLE9BQVk7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFRO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7WUFFckUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUV0RSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBQ3hELEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCx1Q0FBdUM7UUFDdkMsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQiwrQkFBK0I7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVELHlCQUF5QixDQUFDLFNBQWtCO1FBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFrQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFXO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFDN0IsRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFHLElBQUksRUFBRyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEUsdUNBQXVDO1FBQ3ZDLHVCQUF1QjtRQUN2QixxQkFBcUI7UUFDckIsK0JBQStCO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBRTtJQUNyQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBVztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVoQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBSUQsV0FBVztRQUNULElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssS0FBSyxFQUFDLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTzthQUNULE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO2FBQ3pDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxDQUFDO2dCQUNSLE9BQU87WUFDVCxDQUFDO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRztRQUNiLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRztRQUNiLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLElBQVM7UUFDOUMsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDaEUsTUFBTSxHQUFHLEdBQUcsR0FBRyxRQUFRLE9BQU8sQ0FBQztRQUUvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFpQixFQUFFLElBQVM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsVUFBZTtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUNuRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxFQUNwSCxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDcEIsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUM7WUFDbkMsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztZQUNqQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxPQUFPO1FBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFHRCxlQUFlLENBQUMsR0FBUTtRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQztRQUNuRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUVsRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTlDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUM5QixTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxPQUFZO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBRWxELElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFOUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFHRCxZQUFZLENBQUMsTUFBWTtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxlQUFlLElBQUksTUFBTSxDQUFDLE1BQU07WUFDdEYsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQVk7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7UUFFbEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU5QyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQXFEO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBZTtRQUMvQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUN2QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsOEJBQThCO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNyRSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDM0csQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUN2RyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDN0csQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQTRCO0lBRS9DLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBRW5ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDN0IsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFDeEIsQ0FBQyxLQUFLLEtBQUs7WUFDWCxDQUFDLEtBQUssU0FBUyxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVRLGVBQWUsQ0FBQyxNQUFvQyxFQUFFLEdBQVE7UUFDckUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDOytHQXBwQlUsa0JBQWtCLGdIQTRJakIsaUJBQWlCO21HQTVJbEIsa0JBQWtCLHV6Q0M5Ri9CLDBxakJBdVVBLGt5UUR0UUksT0FBTywyRUFDUCxPQUFPLG1GQUNQLGVBQWUsNEZBQ2YsT0FBTywwSUFDUCxhQUFhLCtCQUNiLElBQUksNkZBQ0osUUFBUSw0RUFDUixlQUFlLG9VQUNmLFFBQVEsd0NBQ1IsWUFBWSxnREFDWixtQkFBbUIsK0JBQ25CLFlBQVkscUZBQ1osZUFBZSw4REFFZixPQUFPLG1IQUVQLHNCQUFzQiwySkFDdEIsUUFBUSxzREFDUixpQkFBaUIscWVBQ2pCLGtCQUFrQiwrTkFDbEIsV0FBVywrQ0FDWCxXQUFXLGlVQUNYLHNCQUFzQiwrUEFDdEIsY0FBYyxxU0FDZCxPQUFPLDJRQUNQLFdBQVcsd0hBM0JELEVBQUU7OzRGQStCSCxrQkFBa0I7a0JBcEM5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksY0FHSixFQUFFLFdBQ0w7d0JBQ1AsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLElBQUk7d0JBQ0osUUFBUTt3QkFDUixlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxzQkFBc0I7d0JBQ3RCLFFBQVE7d0JBQ1IsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2QsT0FBTzt3QkFDUCxXQUFXO3FCQUVaOzswQkE4SUksTUFBTTsyQkFBQyxpQkFBaUI7OERBdkg3QixZQUFZO3NCQURYLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFhRyxRQUFRO3NCQURoQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUVOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLGNBQWM7c0JBRGIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUdQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsY0FBYztzQkFEYixNQUFNO2dCQUlQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFRUCxVQUFVO3NCQURULE1BQU07Z0JBUVAsY0FBYztzQkFEYixLQUFLO2dCQVNOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGVmZmVjdCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtNYXRTb3J0TW9kdWxlLCBTb3J0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xyXG5pbXBvcnQge1xyXG4gIEN1cnJlbmN5UGlwZSxcclxuICBEYXRlUGlwZSxcclxuICBEZWNpbWFsUGlwZSxcclxuICBOZ0NsYXNzLFxyXG4gIE5nRm9yT2YsXHJcbiAgTmdJZixcclxuICBOZ1N0eWxlLFxyXG4gIE5nU3dpdGNoLFxyXG4gIE5nU3dpdGNoQ2FzZSxcclxuICBOZ1N3aXRjaERlZmF1bHRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRCdXR0b24sIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge05neFBhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJuZ3gtcGFnaW5hdGlvblwiO1xyXG5pbXBvcnQge0J1dHRvbkFjdGlvbnNDb21wb25lbnR9IGZyb20gXCIuLi9idXR0b24tYWN0aW9ucy9idXR0b24tYWN0aW9ucy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTaGFyZURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJpZ2dlci1mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCYXNlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9iYWNrZW5kLXNlcnZpY2VcIjtcclxuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpbHRlci5tb2RlbFwiO1xyXG5pbXBvcnQge0ZpbHRlclJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpbHRlci1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uQWN0aW9uU2V0dGluZ3MsXHJcbiAgRU1QVFlfUEFHRV9JTkZPLFxyXG4gIEZpZWxkSW5mbyxcclxuICBGUk9OVF9FTkRfQ09MVU1OX1RZUEVTLFxyXG4gIFBhZ2VJbmZvLFxyXG4gIFRBQkxFX1JFQ09SRF9BQ1RJT04sXHJcbiAgVGFibGVDb2x1bW5cclxufSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge1JlcG9ydFJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3JlcG9ydC1yZXF1ZXN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7VGFibGVQYWdlVXNlckFjdGlvbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvdGFibGUtcGFnZS11c2VyLWFjdGlvbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtXb3JrZmxvd30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvd29ya2Zsb3cvd29ya2Zsb3cubW9kZWxcIjtcclxuaW1wb3J0IHtSZXNwb25zZUVudmVsb3B9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3Jlc3BvbnNlLWVudmVsb3AubW9kZWxcIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtNYXRMYWJlbH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UGFnaW5hdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRDaGVja2JveH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7RmlsdGVyQnVpbGRlckNvbXBvbmVudH0gZnJvbSBcIi4uL2FkdmFuY2VkLWZpbHRlci9maWx0ZXItYnVpbGRlci9maWx0ZXItYnVpbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmFzZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmFzZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nU3R5bGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdFNvcnRNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICAgIE5neFBhZ2luYXRpb25Nb2R1bGUsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBOZ1N3aXRjaERlZmF1bHQsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdEJ1dHRvbixcclxuICAgIEJ1dHRvbkFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBNYXRMYWJlbCxcclxuICAgIFRpdGxlQmFyQ29tcG9uZW50LFxyXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50LFxyXG4gICAgRGVjaW1hbFBpcGUsXHJcbiAgICBNYXRDaGVja2JveCxcclxuICAgIEZpbHRlckJ1aWxkZXJDb21wb25lbnQsXHJcbiAgICBNYXRNZW51VHJpZ2dlcixcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbSxcclxuXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVV0aWxzIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgdHlwZXM6IHN0cmluZ1tdID0gW1wicGRmXCIsIFwiY3N2XCIsIFwieGxzeFwiXVxyXG4gIGNvbGxlY3Rpb24gPSB7Y291bnQ6IDYwLCBkYXRhOiBbXX07XHJcbiAgY29uZmlnID0ge1xyXG4gICAgaXRlbXNQZXJQYWdlOiAxNSxcclxuICAgIGN1cnJlbnRQYWdlOiAxLFxyXG4gICAgdG90YWxJdGVtczogdGhpcy5jb2xsZWN0aW9uLmNvdW50XHJcbiAgfTtcclxuICBwdWJsaWMgbWF4U2l6ZTogbnVtYmVyID0gNztcclxuICBwdWJsaWMgZGlyZWN0aW9uTGlua3M6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhdXRvSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNwb25zaXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgbGFiZWxzOiBhbnkgPSB7XHJcbiAgICBwcmV2aW91c0xhYmVsOiAnPCcsXHJcbiAgICBuZXh0TGFiZWw6ICc+JyxcclxuICAgIHNjcmVlblJlYWRlclBhZ2luYXRpb25MYWJlbDogJ1BhZ2luYXRpb24nLFxyXG4gICAgc2NyZWVuUmVhZGVyUGFnZUxhYmVsOiAncGFnZScsXHJcbiAgICBzY3JlZW5SZWFkZXJDdXJyZW50TGFiZWw6IGBZb3UncmUgb24gcGFnZWBcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlckZpZWxkczogRmllbGRJbmZvW107XHJcbiAgQElucHV0KCkgbm9EYXRhRm91bmRTdmdQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbm9EYXRhRm91bmRUaXRsZSA9ICdub0RhdGFGb3VuZFRpdGxlJztcclxuICBASW5wdXQoKSBub0RhdGFGb3VuZFN1YnRpdGxlID0gJ25vRGF0YUZvdW5kU3VidGl0bGUnO1xyXG4gIEBJbnB1dCgpIG5vUmVzdWx0U3ZnUGF0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGl0bGUgPSAnbm9SZXN1bHRUaXRsZSc7XHJcbiAgQElucHV0KCkgbm9SZXN1bHRTdWJ0aXRsZSA9ICdub1Jlc3VsdFN1YnRpdGxlJztcclxuICB0b3RhbEVsZW1lbnRzID0gMDtcclxuICBwYWdlc0NvdW50ID0gMDtcclxuICBwYWdlSW5kZXggPSAxO1xyXG4gIHBhZ2VTaXplID0gMTU7XHJcbiAgbW9iaWxlRGlzcGxheWVkSXRlbXMgPSAwO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRTdGF0dXNGaWx0ZXI6IEZpbHRlcltdID0gW107XHJcbiAgYWR2YW5jZWRBcHBsaWVkRmlsdGVyOiBhbnlbXSA9IFtdO1xyXG4gIHBlbmRpbmdGaWx0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHNlYXJjaFN0cjogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBmaWx0ZXJSZXF1ZXN0OiBGaWx0ZXJSZXF1ZXN0ID0gbmV3IEZpbHRlclJlcXVlc3QoKTtcclxuICBwcml2YXRlIHRpbWVyOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBvdmVycmlkZSBwYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZW5hYmxlUGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbW9iaWxlUGFnZVNpemU6IG51bWJlciA9IDI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbW9iaWxlTG9hZE1vcmVJbmNyZW1lbnQ6IG51bWJlciA9IDI7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGE/OiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBASW5wdXQoKVxyXG4gIGxpc3RBY3Rpb246IEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBleHRyYUFjdGlvbnM6IEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBidXR0b25zRGlzcGxheU1vZGU6ICdkcm9wZG93bicgfCAnbGlzdCcgPSAnZHJvcGRvd24nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSAvL0B0cy1pZ25vcmVcclxuICBwYXRoUGFyYW06IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBleHRyYUJ1dHRvbjogIEJ1dHRvbkFjdGlvblNldHRpbmdzW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkFjdGlvblNldHRpbmdzPigpO1xyXG5cclxuICBASW5wdXQoKSAvL0B0cy1pZ25vcmVcclxuICBlbmZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlzUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0ID0gbmV3IFJlcG9ydFJlcXVlc3Qoe30pO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlcGFyYXRlRW5kcG9pbnREYXRhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBtYW5hZ2VhYmxlUGFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHRvdGFsUGFnZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXNlckFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGh5cGVyTGlua0FjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBleHRyYUFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZENvbHVtbjogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBsaXN0QWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncywgcm93OiBhbnkgLCBpc1BlbmRpbmc6IGJvb2xlYW59PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgYWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncyxcclxuICAgIHJvdzogYW55LFxyXG4gICAgaXNQZW5kaW5nOiBib29sZWFuXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2hvd0RpYWxvZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgdXNlZFdvcmtmbG93ITogV29ya2Zsb3c7XHJcblxyXG4gIG1vZGU6YW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbWl6ZWREYXRhPzogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xyXG4gIG5vRGF0YUZvdW5kID0gZmFsc2U7XHJcbiAgdG90YWxSZXF1aXJlZENvdW50SXRlbSA9IDA7XHJcblxyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGlja1JvdXRlUGFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgcHVibGljIHNoYXJlRGF0YVNlcnZpY2U6IFNoYXJlRGF0YVNlcnZpY2UsXHJcbiAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXHJcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICB0aGlzLmZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucGFnZUluZm8ubGF6eUxvYWREYXRhICE9PSB0cnVlIHx8IHRoaXMuZW5mb3JjZVJlZnJlc2ggPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmlzRW1wdHlJdGVtcyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA8PSAwO1xyXG4gICAgaWYgKHRoaXMuY3VzdG9taXplZERhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5jdXN0b21pemVkRGF0YTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMubWFuYWdlYWJsZVBhZ2VzKSB7XHJcbiAgICAgIHRoaXMucGFnZXNDb3VudCA9IHRoaXMudG90YWxQYWdlc0NvdW50O1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMuY3VycmVudFBhZ2VJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVNb2JpbGVQYWdlU2l6ZSgpO1xyXG4gICAgdGhpcy5tb2JpbGVEaXNwbGF5ZWRJdGVtcyA9IHRoaXMucGFnZVNpemU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLnBhZ2VTaXplID4gdGhpcy5tb2JpbGVQYWdlU2l6ZSkge1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5tb2JpbGVQYWdlU2l6ZTtcclxuICAgICAgaWYgKHRoaXMucmVwb3J0UmVxdWVzdD8uZmlsdGVyUmVxdWVzdCkge1xyXG4gICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5tb2JpbGVQYWdlU2l6ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQ7XHJcbiAgICB0aGlzLmdldE5leHQodGhpcy5wYWdlSW5kZXggLSAxKTtcclxuICAgIGlmICh0aGlzLm1hbmFnZWFibGVQYWdlcykge1xyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZXh0cmFjdEZpZWxkTmFtZShlbGVtZW50OiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgIGlmIChwcm9wZXJ0eT8uaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICByZXR1cm4gcHJvcGVydHkuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRbcHJvcGVydHldKSAmJiBjLmFycmF5U3ViUHJvcGVydHkgKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZXMgPSBlbGVtZW50W3Byb3BlcnR5XS5tYXAoZiA9PiBmW2MuYXJyYXlTdWJQcm9wZXJ0eV0pO1xyXG4gICAgICAgIHJldHVybiAgZmllbGRWYWx1ZXMuam9pbignLCAnKTtcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50W3Byb3BlcnR5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGVDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5idWlsZEdyb3VwcygpXHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnZpc2libGUpLm1hcChjb2x1bW4gPT4gY29sdW1uLnByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlQ29sdW1uc0FycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKGMgPT4gYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydERpcmVjdGlvbihwcm9wZXJ0eTogc3RyaW5nKTogJ2FzYycgfCAnZGVzYycgfCAnJyB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRSZXF1ZXN0Py5maWx0ZXJSZXF1ZXN0Py5zb3J0S2V5ID09PSBwcm9wZXJ0eSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Quc29ydERpcmVjdGlvbiA9PT0gJ0FTQycgPyAnYXNjJyA6ICdkZXNjJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGhhbmRsZVNvcnRDbGljayhwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBDT0xVTU4gPSB0aGlzLmdldENvbHVtbihwcm9wZXJ0eSk7XHJcbiAgICBpZiAoIUNPTFVNTiB8fCAhQ09MVU1OLmVuYWJsZVNvcnRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IENVUlJFTlRfRElSRUNUSU9OID0gdGhpcy5nZXRTb3J0RGlyZWN0aW9uKHByb3BlcnR5KTtcclxuICAgIGxldCBORVdfRElSRUNUSU9OOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnO1xyXG5cclxuICAgIGlmIChDVVJSRU5UX0RJUkVDVElPTiA9PT0gJ2FzYycpIHtcclxuICAgICAgTkVXX0RJUkVDVElPTiA9ICdkZXNjJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uU29ydEFjdGlvbih7XHJcbiAgICAgIGFjdGl2ZTogcHJvcGVydHksXHJcbiAgICAgIGRpcmVjdGlvbjogTkVXX0RJUkVDVElPTlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0U3RhdGU6IGFueSA9IHt9O1xyXG5cclxuICBnZXROZXh0KHBhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgfVxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAxOyAvLyByZXNldCB0byBmaXJzdCBwYWdlIG9uIHBhZ2Ugc2l6ZSBjaGFuZ2VcclxuICAgIHRoaXMubW9iaWxlRGlzcGxheWVkSXRlbXMgPSAwO1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5nZXROZXh0KDApO1xyXG4gIH1cclxuXHJcbiAgb25Mb2FkTW9yZShpdGVtc1RvTG9hZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGlzcGxheWVkID0gdGhpcy5tb2JpbGVEaXNwbGF5ZWRJdGVtcyB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggfHwgdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZVNpemUgPSBNYXRoLm1pbihjdXJyZW50RGlzcGxheWVkICsgaXRlbXNUb0xvYWQsIHRoaXMudG90YWxFbGVtZW50cyk7XHJcbiAgICB0aGlzLm1vYmlsZURpc3BsYXllZEl0ZW1zID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB0aGlzLmxvYWREYXRhKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YShza2lwTW9iaWxlUmVzZXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG5cclxuICAgIGlmICghc2tpcE1vYmlsZVJlc2V0KSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZU1vYmlsZVBhZ2VTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KHRoaXMucGFnZVNpemUgfHwgdGhpcy5wYWdlSW5mby5wYWdlU2l6ZSk7XHJcbiAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IHRoaXMuc2VhcmNoU3RyO1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW1xyXG4gICAgICAgIC4uLih0aGlzLmFkdmFuY2VkQXBwbGllZEZpbHRlciB8fCBbXSksXHJcbiAgICAgICAgLi4uKHRoaXMuZmlsdGVycyB8fCBbXSkuZmlsdGVyKGYgPT5cclxuICAgICAgICAgICEodGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgfHwgW10pLnNvbWUoYSA9PiBhLmZpZWxkID09PSBmLmZpZWxkTmFtZSlcclxuICAgICAgICApXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgaWYgKHRoaXMuc2VwYXJhdGVFbmRwb2ludERhdGEgfHwgIXRoaXMucGFnZUluZm8uYXBpVXJpIHx8IHRoaXMucGFnZUluZm8uYXBpVXJpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuc2VwYXJhdGVFbmRwb2ludERhdGE7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5yZXBvcnRSZXF1ZXN0ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZighdGhpcy5tYW5hZ2VhYmxlUGFnZXMpICB7XHJcbiAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IEZST05UX0VORF9DT0xVTU5fVFlQRVMuaW5kZXhPZihjLnR5cGUpIDwgMCApLm1hcChjID0+IGMucHJvcGVydHkpIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QucGVuZGluZ1BhZ2UgPSB0aGlzLmlzUGVuZGluZztcclxuICAgICAgICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IHRoaXMuc2VhcmNoU3RyO1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgLi4uKHRoaXMuYWR2YW5jZWRBcHBsaWVkRmlsdGVyIHx8IFtdKSxcclxuICAgICAgICAgICAgLi4uKHRoaXMuZmlsdGVycyB8fCBbXSkuZmlsdGVyKGYgPT5cclxuICAgICAgICAgICAgICAhKHRoaXMuYWR2YW5jZWRBcHBsaWVkRmlsdGVyIHx8IFtdKS5zb21lKGEgPT4gYS5maWVsZCA9PT0gZi5maWVsZE5hbWUpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0SXRlbXNCeUZpbHRlcih0aGlzLnJlcG9ydFJlcXVlc3Q/LmZpbHRlclJlcXVlc3QsIHRoaXMucGFnZUluZm8uYXBpVXJpKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VFbnZlbG9wZSA9IG5ldyBSZXNwb25zZUVudmVsb3AocmVzcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRW52ZWxvcGUudmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZXF1aXJlZENvdW50SXRlbSA9IHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gcmVzcG9uc2VFbnZlbG9wZS5ib2R5Lmxlbmd0aCA8IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHJlc3BvbnNlRW52ZWxvcGUuYm9keTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoIDw9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXNwb25zZUVudmVsb3BlLnRvdGFsU2l6ZSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlc0NvdW50ID0gTWF0aC5jZWlsKHRoaXMudG90YWxFbGVtZW50cyAvIHRoaXMucGFnZVNpemUpIHx8IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9ICh0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggfHwgMCkgKyAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcudG90YWxJdGVtcyA9IHJlc3BvbnNlRW52ZWxvcGUudG90YWxTaXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlRGlzcGxheWVkSXRlbXMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0Rlc2NyaXB0aW9uKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0U3RhdHVzRGVzY3JpcHRpb24oZWxlbWVudCwgdGhpcy51c2VkV29ya2Zsb3cpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVUeXBlKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuc3RhdGVUeXBlXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1c3RvbWl6ZWREYXRhXCJdICYmICFjaGFuZ2VzW1wiY3VzdG9taXplZERhdGFcIl0uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gY2hhbmdlc1tcImN1c3RvbWl6ZWREYXRhXCJdLmN1cnJlbnRWYWx1ZT8uZGF0YSB8fCBbXTsgIC8vIFVwZGF0ZSBkYXRhIHNvdXJjZSB3aXRoIG5ldyBkYXRhXHJcbiAgICAgIHRoaXMucGFnZXNDb3VudD10aGlzLnRvdGFsUGFnZXNDb3VudDtcclxuICAgICAgdGhpcy5wYWdlSW5kZXg9dGhpcy5jdXJyZW50UGFnZUluZGV4O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJlbmZvcmNlUmVmcmVzaFwiXSAmJiAhY2hhbmdlc1tcImVuZm9yY2VSZWZyZXNoXCJdLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcImlzUGVuZGluZ1wiXSAmJiAhY2hhbmdlc1tcImlzUGVuZGluZ1wiXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDcm9wcGVkVGV4dChlbGVtZW50VmFsdWU6IGFueSwgc3ViV2lkdGg6IG51bWJlciA9IDIwKSB7XHJcbiAgICByZXR1cm4gZWxlbWVudFZhbHVlICYmIGVsZW1lbnRWYWx1ZS5sZW5ndGggPiBzdWJXaWR0aCA/IGVsZW1lbnRWYWx1ZS5zdWJzdHJpbmcoMCwgc3ViV2lkdGgpICsgXCIuLi5cIiA6IGVsZW1lbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIGVtaXRFdmVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZy5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEZvcm1hdChjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4pIHtcclxuICAgIHJldHVybiBjb2x1bW4/LmZvcm1hdCB8fCAnZC9NL3l5eXksIGg6bW0gYSc7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25MaXN0Q2xpY2tlZChsaXN0QWN0aW9uOiBCdXR0b25BY3Rpb25TZXR0aW5ncywgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RBY3Rpb25DbGlja2VkLmVtaXQoe2FjdGlvbjpsaXN0QWN0aW9uLCByb3c6IGVsZW1lbnQsIGlzUGVuZGluZzogdGhpcy5pc1BlbmRpbmd9KTtcclxuICB9XHJcblxyXG4gIGh5cGVyTGlua0NsaWNrZWQoYWN0aW9uTmFtZTogc3RyaW5nLCBlbGVtZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IFRBQkxFX1JFQ09SRF9BQ1RJT047XHJcbiAgICBhY3Rpb24uYWN0aW9uS2V5ID0gYWN0aW9uTmFtZTtcclxuICAgIGFjdGlvbi5pdGVtID0gZWxlbWVudDtcclxuICAgIGFjdGlvbi5wYWdlSW5mbyA9IHRoaXMucGFnZUluZm87XHJcbiAgICB0aGlzLmh5cGVyTGlua0FjdGlvbi5lbWl0KGFjdGlvbilcclxuICB9XHJcblxyXG5cclxuICBlbWl0Um91dGVQYWdlKGVsZW1lbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNsaWNrUm91dGVQYWdlLmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEl0ZW0ocm93OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnBhZ2VJbmZvLnNlbGZSb3V0aW5nKSB7XHJcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmlzUGVuZGluZyA/ICdwZW5kaW5nJyA6ICd2aWV3JztcclxuICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYWdlSW5mby5saXN0Um91dGVQYXRoIHx8IHRoaXMucm91dGVyLnVybH0vdmlld2A7XHJcblxyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRJZCA9IHRoaXMuYmFja2VuZFNlcnZpY2UuZW5jcnlwdChTdHJpbmcocm93LmlkKSk7XHJcbiAgICAgIGNvbnN0IGVuY3J5cHRlZE1vZGUgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQobW9kZSk7XHJcblxyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRSb3cgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkocm93KSk7XHJcblxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRva2VuOiBlbmNyeXB0ZWRJZCwgbW9kZTogZW5jcnlwdGVkTW9kZSB9LFxyXG4gICAgICAgIHN0YXRlOiB7IHJhdzogZW5jcnlwdGVkUm93IH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBhY3Rpb24gPSBTRUxFQ1RfUkVDT1JEX0FDVElPTjtcclxuICAgIC8vIGFjdGlvbi5pZCA9IHJvdz8uaWQ7XHJcbiAgICAvLyBhY3Rpb24uaXRlbSA9IHJvdztcclxuICAgIC8vIHRoaXMudXNlckFjdGlvbi5lbWl0KGFjdGlvbilcclxuICB9XHJcblxyXG4gIG9wZW5OZXdUYWIocm93KSB7XHJcbiAgICBpZiAoIXRoaXMucGFnZUluZm8uZW1iZWRlZFRhYmxlT25seSkge1xyXG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5pc1BlbmRpbmcgPyAncGVuZGluZycgOiAndmlldyc7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMucGFnZUluZm8ubGlzdFJvdXRlUGF0aH0vJHttb2RlfWAgKyAnLycgKyByb3c/LmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmlld01vZGVDaGFuZ2VkUmVjZWl2ZWQoaXNQZW5kaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN3aXRjaFZpZXdNb2RlKGlzUGVuZGluZyk7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hWaWV3TW9kZShpc1BlbmRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNQZW5kaW5nID0gaXNQZW5kaW5nO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgb25BZGROZXdBY3Rpb24oJGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMucGFnZUluZm8ubGlzdFJvdXRlUGF0aCB8fCB0aGlzLnJvdXRlci51cmx9L3ZpZXdgO1xyXG4gICAgY29uc3QgZW5jcnlwdGVkSWQgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoXCItMVwiKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZE1vZGUgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmVuY3J5cHQoXCJwZW5kaW5nXCIpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3VybH1gXSxcclxuICAgICAgeyBxdWVyeVBhcmFtczogeyB0b2tlbjogZW5jcnlwdGVkSWQgLCBtb2RlIDogZW5jcnlwdGVkTW9kZSB9IH0pO1xyXG5cclxuICAgIC8vIGNvbnN0IGFjdGlvbiA9IFNFTEVDVF9SRUNPUkRfQUNUSU9OO1xyXG4gICAgLy8gYWN0aW9uLmlkID0gcm93Py5pZDtcclxuICAgIC8vIGFjdGlvbi5pdGVtID0gcm93O1xyXG4gICAgLy8gdGhpcy51c2VyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgc2hvd0FkZE5ldygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VJbmZvLmhhc0FkZEJ1dHRvbiA7XHJcbiAgfVxyXG5cclxuICBvbkV4dHJhQnV0dGlvbkFjdGlvbigkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leHRyYUFjdGlvbi5lbWl0KCRldmVudCk7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzR3JvdXBzKCkge1xyXG4gICAgbGV0IGIgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KHAgPT4gcC5ncm91cCk7XHJcbiAgICByZXR1cm4gYiA+PSAwO1xyXG4gIH1cclxuICBncm91cE5hbWVzOiBhbnkgPSBbXVxyXG4gIGdyb3VwU3BhbnM6IE1hcDxzdHJpbmcsIG51bWJlcj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGJ1aWxkR3JvdXBzKCl7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgdGhpcy5ncm91cE5hbWVzID0gW107XHJcbiAgICB0aGlzLmdyb3VwU3BhbnMuY2xlYXIoKTtcclxuICAgIGlmKHRoaXMuaGFzR3JvdXBzKCkgPT09IGZhbHNlKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlID09PSB0cnVlKVxyXG4gICAgICAuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5ncm91cCA9PT0gXCItXCIpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBOYW1lcy5wdXNoKGNvdW50LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgdGhpcy5pbnNlcnRJbk1hcChjb3VudCk7XHJcbiAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZ3JvdXBOYW1lcy5pbmNsdWRlcyhjb2x1bW4uZ3JvdXApKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwTmFtZXMucHVzaChjb2x1bW4uZ3JvdXApO1xyXG4gICAgICAgICAgdGhpcy5pbnNlcnRJbk1hcChjb2x1bW4uZ3JvdXApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluc2VydEluTWFwKGNvbHVtbi5ncm91cCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0SW5NYXAoa2V5KXtcclxuICAgIGlmKHRoaXMuZ3JvdXBTcGFucy5oYXMoa2V5KSl7XHJcbiAgICAgIHRoaXMuZ3JvdXBTcGFucy5zZXQoa2V5LnRvU3RyaW5nKCksIHRoaXMuZ3JvdXBTcGFucy5nZXQoa2V5KSArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cFNwYW5zLnNldChrZXkudG9TdHJpbmcoKSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0h1bWFuTWFkZShzdHIpe1xyXG4gICAgcmV0dXJuIGlzTmFOKHN0cik7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25CdXR0b25DbGlja2VkKGFjdGlvbktleTogc3RyaW5nLCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb25LZXkgPT09ICduYXZpZ2F0ZScpIHtcclxuICAgICAgdGhpcy5oYW5kbGVOYXZpZ2F0ZUFjdGlvbihpdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdFRhYmxlQWN0aW9uKGFjdGlvbktleSwgaXRlbSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU5hdmlnYXRlQWN0aW9uKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgbW9kZSA9IHRoaXMuaXNQZW5kaW5nID8gJ3BlbmRpbmcnIDogJ3ZpZXcnO1xyXG4gICAgY29uc3QgYmFzZVBhdGggPSB0aGlzLnBhZ2VJbmZvLmxpc3RSb3V0ZVBhdGggfHwgdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgY29uc3QgdXJsID0gYCR7YmFzZVBhdGh9L3ZpZXdgO1xyXG5cclxuICAgIGNvbnN0IGVuY3J5cHRlZElkID0gdGhpcy5iYWNrZW5kU2VydmljZS5lbmNyeXB0KGl0ZW0uaWQudG9TdHJpbmcoKSk7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWRNb2RlID0gdGhpcy5iYWNrZW5kU2VydmljZS5lbmNyeXB0KG1vZGUpO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRva2VuOiBlbmNyeXB0ZWRJZCwgbW9kZTogZW5jcnlwdGVkTW9kZSB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFRhYmxlQWN0aW9uKGFjdGlvbktleTogc3RyaW5nLCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IFRBQkxFX1JFQ09SRF9BQ1RJT047XHJcbiAgICBhY3Rpb24uYWN0aW9uS2V5ID0gYWN0aW9uS2V5O1xyXG4gICAgYWN0aW9uLml0ZW0gPSBpdGVtO1xyXG4gICAgYWN0aW9uLnBhZ2VJbmZvID0gdGhpcy5wYWdlSW5mbztcclxuICAgIHRoaXMudXNlckFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0UmVwb3J0KHJlcG9ydFR5cGU6IGFueSkge1xyXG4gICAgY29uc3QgbXlGaWx0ZXJzID0gdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Q7XHJcbiAgICBjb25zdCByZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5jb2x1bW5zLCB0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLmxpc3RfdGl0bGUnLFxyXG4gICAgICBteUZpbHRlcnMsIHJlcG9ydFR5cGUsIHRoaXMucGFnZUluZm8sIHRoaXMuc2VhcmNoU3RyLCAnTEFORFNDQVBFJyk7XHJcbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRvd25sb2FkUmVwb3J0KHJlcG9ydFJlcXVlc3QsIHRoaXMucGFnZUluZm8uYXBpVXJpKTtcclxuICB9XHJcblxyXG4gIGdldEljb24oc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgY2FzZSAncGFzcyc6IHJldHVybiAnY2hlY2tfY2lyY2xlJztcclxuICAgICAgY2FzZSAnd2FybmluZyc6IHJldHVybiAnd2FybmluZyc7XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzogcmV0dXJuICdlcnJvcic7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnaGVscCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25DaGVja2VkQ2xpY2tlZChwcm9wZXJ0eTogc3RyaW5nLCBlbGVtZW50KSB7XHJcbiAgICBlbGVtZW50W3Byb3BlcnR5XT0gIWVsZW1lbnRbcHJvcGVydHldO1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b25DbGlja2VkKHByb3BlcnR5LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG5cclxuICBpc0RhcmtIaWdobGlnaHQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFyb3dbZ3JvdXBCeVByb3BdKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjZWxsVmFsdWUgPSByb3dbZ3JvdXBCeVByb3BdLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwQnlWYWx1ZXMuc29tZSh2YWwgPT5cclxuICAgICAgY2VsbFZhbHVlLmluY2x1ZGVzKHZhbCkgJiYgY2VsbFZhbHVlLmxlbmd0aCA+IHZhbC5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzaG91bGRSZW5kZXJBc0h5cGVyTGluayhlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFlbGVtZW50W2dyb3VwQnlQcm9wXSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50W2dyb3VwQnlQcm9wXS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiAhZ3JvdXBCeVZhbHVlcy5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikgJiYgdmFsdWUubGVuZ3RoID49IHYubGVuZ3RoKTtcclxuICB9XHJcblxyXG5cclxuICBvblNvcnRBY3Rpb24oJGV2ZW50OiBTb3J0KSB7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5zb3J0S2V5ID0gJGV2ZW50LmFjdGl2ZSAmJiAkZXZlbnQuZGlyZWN0aW9uID9cclxuICAgICAgdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLnByb3BlcnR5ID09PSAkZXZlbnQuYWN0aXZlKT8ub3JkZXJCeVByb3BlcnR5IHx8ICRldmVudC5hY3RpdmVcclxuICAgICAgOiAnaWQnO1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3Quc29ydERpcmVjdGlvbiA9ICRldmVudC5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ0FTQycgOiAnREVTQyc7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uLmVtaXQoJGV2ZW50KTtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkU2hvd0J1dHRvbihlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGdyb3VwQnlQcm9wID0gdGhpcy5wYWdlSW5mbz8uZ3JvdXBCeVByb3BlcnR5O1xyXG4gICAgY29uc3QgZ3JvdXBCeVZhbHVlcyA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlWYWx1ZTtcclxuXHJcbiAgICBpZiAoIWdyb3VwQnlQcm9wIHx8ICFncm91cEJ5VmFsdWVzIHx8ICFlbGVtZW50W2dyb3VwQnlQcm9wXSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnRbZ3JvdXBCeVByb3BdLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgcmV0dXJuICFncm91cEJ5VmFsdWVzLnNvbWUodiA9PiB2YWx1ZS5pbmNsdWRlcyh2KSAmJiB2YWx1ZS5sZW5ndGggPj0gdi5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVQZW5kaW5nRmlsdGVycygkZXZlbnQ6IHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5wZW5kaW5nRmlsdGVycyA9ICRldmVudC5maWx0ZXJzIHx8IFtdO1xyXG4gICAgICB0aGlzLnNlYXJjaFN0ciA9ICRldmVudC5zZWFyY2hTdHI7XHJcbiAgfVxyXG5cclxuICBhcHBseVBlbmRpbmdGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgPSB0aGlzLnBlbmRpbmdGaWx0ZXJzIHx8IFtdO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyRW1wdHkoJGV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIHRoaXMucGVuZGluZ0ZpbHRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgPSBbXTtcclxuICAgICAgdGhpcy5zZWFyY2hTdHIgPSAnJztcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCRldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICB0aGlzLmFkdmFuY2VkQXBwbGllZEZpbHRlciA9IFtdO1xyXG4gICAgICB0aGlzLnBlbmRpbmdGaWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcclxuICAgICAgLy8gdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNGaWx0ZXJzQXBwbGllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIgJiYgdGhpcy5hZHZhbmNlZEFwcGxpZWRGaWx0ZXIubGVuZ3RoID4gMCkgfHxcclxuICAgICAgICAgICAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPiAwKSB8fFxyXG4gICAgICAgICAgICh0aGlzLnBlbmRpbmdGaWx0ZXJzICYmIHRoaXMucGVuZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5U3ZnUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzRmlsdGVyc0FwcGxpZWQoKSAmJiB0aGlzLm5vUmVzdWx0U3ZnUGF0aCA/IHRoaXMubm9SZXN1bHRTdmdQYXRoIDogdGhpcy5ub0RhdGFGb3VuZFN2Z1BhdGg7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0ZpbHRlcnNBcHBsaWVkKCkgJiYgdGhpcy5ub1Jlc3VsdFN2Z1BhdGggPyB0aGlzLm5vUmVzdWx0VGl0bGUgOiB0aGlzLm5vRGF0YUZvdW5kVGl0bGU7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5U3VidGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0ZpbHRlcnNBcHBsaWVkKCkgJiYgdGhpcy5ub1Jlc3VsdFN2Z1BhdGggPyB0aGlzLm5vUmVzdWx0U3VidGl0bGUgOiB0aGlzLm5vRGF0YUZvdW5kU3VidGl0bGU7XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGlja2VkRXZlbnQoJGV2ZW50OiBCdXR0b25BY3Rpb25TZXR0aW5ncykge1xyXG5cclxuICB9XHJcblxyXG4gIGdldE1vYmlsZUNhcmRJZENvbHVtbigpOiBUYWJsZUNvbHVtbjxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMudmlzaWJsZSAmJiBjLm1vYmlsZUNhcmRJZCA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk6IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKGMgPT4gYy52aXNpYmxlICYmIGMubW9iaWxlQ2FyZFN0YXR1cyA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRNb2JpbGVDYXJkQ29sdW1ucygpOiBUYWJsZUNvbHVtbjxhbnk+W10ge1xyXG4gICAgY29uc3QgaWRDb2wgPSB0aGlzLmdldE1vYmlsZUNhcmRJZENvbHVtbigpO1xyXG4gICAgY29uc3Qgc3RhdHVzQ29sID0gdGhpcy5nZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PlxyXG4gICAgICBjLnZpc2libGUgJiZcclxuICAgICAgYy5wcm9wZXJ0eSAhPT0gJ2FjdGlvbnMnICYmXHJcbiAgICAgIGMgIT09IGlkQ29sICYmXHJcbiAgICAgIGMgIT09IHN0YXR1c0NvbFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGxhYmVsS2V5QnlWYWx1ZShjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4gfCB1bmRlZmluZWQsIHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucHJvcGVydHkpIHJldHVybiAnJztcclxuICAgIHJldHVybiBzdXBlci5sYWJlbEtleUJ5VmFsdWUoY29sdW1uLCByb3cpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gYmFzZVRhYmxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtcm93IGZsZXgtMTAwXCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIGFsaWduLXN0YXJ0IGZsZXgtMTAwXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgPGFwcC10aXRsZS1iYXJcclxuICAgICAgICBbcGFnZVRpdGxlXT1cInBhZ2VJbmZvLmhpZGVUaXRsZSA/ICcnIDogcGFnZUluZm8ubGFiZWxzU2VjdGlvbisnLmxpc3RfdGl0bGUnXCJcclxuICAgICAgICBbc3ViVGl0bGVdPVwiKHBhZ2VJbmZvLmhpZGVUaXRsZSB8fCBwYWdlSW5mby5oaWRlU3VidGl0bGUpID8gJycgOiBwYWdlSW5mby5sYWJlbHNTZWN0aW9uKycuc3VidGl0bGUnXCJcclxuICAgICAgICBbdGl0bGVNb2RlXT1cIicnXCJcclxuICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxyXG4gICAgICAgIFtuZXdBY3Rpb25dPVwic2hvd0FkZE5ldygpXCJcclxuICAgICAgICBbc2hvd0V4dHJhY3RCdXR0b25dPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgICBbZHJhZnRTdXBwb3J0ZWRdPVwicGFnZUluZm8uZHJhZnRTdXBwb3J0ZWRcIlxyXG4gICAgICAgIFtpc1BlbmRpbmddPVwiaXNQZW5kaW5nXCJcclxuICAgICAgICBbb25WaWV3TW9kZUNoYW5nZV09XCJzd2l0Y2hWaWV3TW9kZS5iaW5kKHRoaXMpXCJcclxuICAgICAgICBbYnV0dG9uc109XCJleHRyYUFjdGlvbnNcIlxyXG4gICAgICAgIFtidXR0b25zRGlzcGxheU1vZGVdPVwiYnV0dG9uc0Rpc3BsYXlNb2RlXCJcclxuICAgICAgICAobmV3QWN0aW9uQ2xpY2tlZCk9XCJvbkFkZE5ld0FjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAoZXh0cmFjdFJlcG9ydCk9XCJleHRyYWN0UmVwb3J0KCRldmVudClcIlxyXG4gICAgICAgICh2aWV3TW9kZUNoYW5nZWQpPVwib25WaWV3TW9kZUNoYW5nZWRSZWNlaXZlZCgkZXZlbnQpXCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgW3RvdGFsRWxlbWVudHNdPVwicGFnZUluZm8uaGlkZVRpdGxlID8gdW5kZWZpbmVkIDogdG90YWxFbGVtZW50c1wiPlxyXG4gICAgICA8L2FwcC10aXRsZS1iYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpbHRlci1yb3dcIiAqbmdJZj1cIiFwYWdlSW5mby5oaWRlQWR2YW5jZWRGaWx0ZXJcIj5cclxuICAgIDxhcHAtZmlsdGVyLWJ1aWxkZXJcclxuICAgICAgKm5nSWY9XCIhcGFnZUluZm8uaGlkZUFkdmFuY2VkRmlsdGVyXCJcclxuICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcclxuICAgICAgW3BlbmRpbmdGaWx0ZXJzXT1cInBlbmRpbmdGaWx0ZXJzXCJcclxuICAgICAgW3Nob3dFeHBvcnRCdXR0b25dPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgKGZpbHRlckluZm9ybWF0aW9uKT1cInN0b3JlUGVuZGluZ0ZpbHRlcnMoJGV2ZW50KVwiXHJcbiAgICAgIChpc0VtcHR5KT1cImhhbmRsZUZpbHRlckVtcHR5KCRldmVudClcIlxyXG4gICAgICAoYXBwbHlGaWx0ZXIpPVwiYXBwbHlQZW5kaW5nRmlsdGVycygpXCJcclxuICAgICAgKHNvcnRCeUNsaWNrZWQpPVwiaGFuZGxlU29ydENsaWNrKCRldmVudClcIlxyXG4gICAgICAoZXhwb3J0Q2xpY2tlZCk9XCJleHRyYWN0UmVwb3J0KCRldmVudClcIj5cclxuICAgIDwvYXBwLWZpbHRlci1idWlsZGVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIiAqbmdJZj1cIiFwYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvblwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIXBhZ2VJbmZvLmhpZGVFeHRyYWN0QnV0dG9uXCJcclxuICAgICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZXhwb3J0TWVudVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tZXhwb3J0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmZpbGVfZXhwb3J0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuPnt7ICdleHBvcnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3ctaWNvblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxtYXQtbWVudSAjZXhwb3J0TWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImV4dHJhY3RSZXBvcnQoJ3BkZicpXCI+UERGPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJleHRyYWN0UmVwb3J0KCd4bHN4JylcIj5FeGNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXh0cmFjdFJlcG9ydCgnY3N2JylcIj5DU1Y8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4LXJvdyBmbGV4LTEwMCBiYXNlVGFibGVfX2RldGFpbHNDb2x1bW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEwMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3cgZmxleC0xMDAgbWFpblRhYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiIFthdHRyLmRhdGEtc29ydF09XCJzb3J0U3RhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uUHJvcCBvZiB2aXNpYmxlQ29sdW1uc0FycmF5OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWhlYWRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy5lbmFibGVTb3J0aW5nXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuZmlyc3QtY2VsbF09XCJpID09PSAwXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MubGFzdC1jZWxsXT1cImkgPT09IHZpc2libGVDb2x1bW5zQXJyYXkubGVuZ3RoIC0gMVwiXHJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGlvbnMtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDEgJiYgY29sdW1uUHJvcCA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXdpZHRoXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGggPyB7J3dpZHRoJzogZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aCArICclJywgJ2ZsZXgtYmFzaXMnOiBnZXRDb2x1bW4oY29sdW1uUHJvcCk/LndpZHRoICsgJyUnfSA6IHt9XCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy5lbmFibGVTb3J0aW5nICYmIGhhbmRsZVNvcnRDbGljayhjb2x1bW5Qcm9wKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS1oZWFkZXItbGFiZWxcIj57eyBsYWJlbEtleShnZXRDb2x1bW4oY29sdW1uUHJvcCkpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8uZW5hYmxlU29ydGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJnZXRTb3J0RGlyZWN0aW9uKGNvbHVtblByb3ApID09PSAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHNvcnQtYXNjXCI+YXJyb3dfZHJvcF91cDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImdldFNvcnREaXJlY3Rpb24oY29sdW1uUHJvcCkgPT09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHNvcnQtZGVzY1wiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVNvdXJjZS5kYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxyXG4gICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIid0YWJsZS1yb3ctJyArIChyb3c/LmlkIHx8IHJvdz8ua2V5IHx8ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy0taGlnaGxpZ2h0Jzogc2VsZWN0ZWRSb3dJbmRleCA9PSByb3cuaWQgfHwgKHBhZ2VJbmZvLmdyb3VwQnlQcm9wZXJ0eSAmJiBwYWdlSW5mby5ncm91cEJ5VmFsdWU/LmluY2x1ZGVzKHJvd1twYWdlSW5mby5ncm91cEJ5UHJvcGVydHldKSksXHJcbiAgICAgICAgICAgICAgICAgICAndGFibGUtcm93LS1kYXJrLWhpZ2hsaWdodCc6IGlzRGFya0hpZ2hsaWdodChyb3cpXHJcbiAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgKGF1eGNsaWNrKT1cIm9wZW5OZXdUYWIocm93KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25TZWxlY3RJdGVtKHJvdylcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW5Qcm9wIG9mIHZpc2libGVDb2x1bW5zQXJyYXk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maXJzdC1jZWxsXT1cImkgPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmxhc3QtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGlvbnMtY2VsbF09XCJpID09PSB2aXNpYmxlQ29sdW1uc0FycmF5Lmxlbmd0aCAtIDEgJiYgY29sdW1uUHJvcCA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtd2lkdGhdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRDb2x1bW4oY29sdW1uUHJvcCk/LndpZHRoID8geyd3aWR0aCc6IGdldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGggKyAnJScsICdmbGV4LWJhc2lzJzogZ2V0Q29sdW1uKGNvbHVtblByb3ApPy53aWR0aCArICclJ30gOiB7fVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZ2V0Q29sdW1uKGNvbHVtblByb3ApPy50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3b3JrZmxvd1N0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZlN0YXR1cyB7eyBnZXRTdGF0dXNEZXNjcmlwdGlvbihyb3cpfX1cIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLXdmLScrY29sdW1uUHJvcCsnLScrKHJvdy5pZCB8fCByb3cua2V5IHx8ICcnKVwiPnt7IGdldFN0YXR1c0Rlc2NyaXB0aW9uKHJvdykgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaHlwZXItdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIChjbGljayk9XCJoeXBlckxpbmtDbGlja2VkKGNvbHVtblByb3AsIHJvdylcIiBbbmdDbGFzc109XCJ7J2h5cGVyLWxpbmsnOiBzaG91bGRSZW5kZXJBc0h5cGVyTGluayhyb3cpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZXh0cmFjdEZpZWxkTmFtZShyb3csIGNvbHVtblByb3ApIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvdWxkU2hvd0J1dHRvbihyb3cpXCIgbWF0LWJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBhY3Rpb25CdXR0b25DbGlja2VkKGNvbHVtblByb3AsIHJvdylcIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLWFjdGlvbi0nK2NvbHVtblByb3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsS2V5KGdldENvbHVtbihjb2x1bW5Qcm9wKSkgKyAnX3RpdGxlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAnbWFpblRhYmxlX190ZF9faWNvbi1ncmVlbic6IHJvd1tjb2x1bW5Qcm9wXSA9PT0gJ3Bhc3MnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgJ21haW5UYWJsZV9fdGRfX2ljb24tb3JhbmdlJzogcm93W2NvbHVtblByb3BdID09PSAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAnbWFpblRhYmxlX190ZF9faWNvbi1yZWQnOiByb3dbY29sdW1uUHJvcF0gPT09ICdlcnJvcidcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJY29uKHJvd1tjb2x1bW5Qcm9wXSkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cInJvd1tjb2x1bW5Qcm9wXVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7YWN0aW9uQ2hlY2tlZENsaWNrZWQoY29sdW1uUHJvcCxyb3cpXCI+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0YXRlVHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJzdGF0ZVR5cGUge3sgcm93W2NvbHVtblByb3BdfX1cIiBbYXR0ci5pZF09XCIndGFibGUtYnRuLXN0YXRlLScrY29sdW1uUHJvcFwiPnt7IGxhYmVsS2V5QnlWYWx1ZShnZXRDb2x1bW4oY29sdW1uUHJvcCksIHJvdykgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Nyb3BwZWRUZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdldENyb3BwZWRUZXh0KHJvd1tjb2x1bW5Qcm9wXSwgcm93W2dldENvbHVtbihjb2x1bW5Qcm9wKT8ud2lkdGhdKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkb3dubG9hZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluVGFibGVfX3RkX19pY29uLWJsdWVcIj5zeXN0ZW1fdXBkYXRlX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ29uT2ZmJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInJvd1tjb2x1bW5Qcm9wXSA9PT0gbnVsbFwiIGNsYXNzPVwibWFpblRhYmxlX190ZF9faWNvbi1kYXJrb3JhbmdlXCI+ZmxhZzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwicm93W2NvbHVtblByb3BdID09PSBmYWxzZVwiIGNsYXNzPVwibWFpblRhYmxlX190ZF9faWNvbi1yZWRcIj5mbGFnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJyb3dbY29sdW1uUHJvcF0gPT09IHRydWVcIiBjbGFzcz1cIm1haW5UYWJsZV9fdGRfX2ljb24tZ3JlZW5cIj5mbGFnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3RhdHVzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2NvbHVtblByb3BdID09PSBudWxsIHx8IHJvd1tjb2x1bW5Qcm9wXSA9PT0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyBnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmxhYmVsICsgJ0luQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1tjb2x1bW5Qcm9wXSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUluZm8ubGFiZWxzU2VjdGlvbiArICcuJyArIGdldENvbHVtbihjb2x1bW5Qcm9wKT8ubGFiZWwgKyAnQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5mbydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2VtaXRFdmVudChyb3cpXCIgW2F0dHIuaWRdPVwiJ3RhYmxlLWJ0bi1pbmZvLScrcm93LmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25ldEFtb3VudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpblRhYmxlX190ZF9fY3VycmVuY3lcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO1wiPnt7IHJvd1tnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmN1cnJlbmN5XSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpblRhYmxlX190ZF9fcHJvcGVydHlcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tbGVmdDo2cHg7IG1hcmdpbi1yaWdodDo2cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uUHJvcCkgfCBjdXJyZW5jeTonJzonJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9jYWxEYXRlVGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uUHJvcCkgfCBkYXRlIDogZXh0cmFjdEZvcm1hdChnZXRDb2x1bW4oY29sdW1uUHJvcCkpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JpZ2RlY2ltYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPjxzdXAgY2xhc3M9XCJtYWluVGFibGVfX3RkX19jdXJyZW5jeVwiPnt7cm93W2dldENvbHVtbihjb2x1bW5Qcm9wKT8uY3VycmVuY3ldfX08L3N1cD48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IG51bWJlciA6IChnZXRDb2x1bW4oY29sdW1uUHJvcCk/LmRpZ2l0SW5mbyB8fCAnMS4zLTUnKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0QWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtYnV0dG9uLWFjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zQWN0aW9uXT1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8udmlld1R5cGUgPT09ICdidXR0b25zQWN0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGlzdEFjdGlvbl09XCJsaXN0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25zXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWRCdXR0b24pPVwiYWN0aW9uTGlzdENsaWNrZWQoJGV2ZW50LHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2FwcC1idXR0b24tYWN0aW9ucz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldENvbHVtbihjb2x1bW5Qcm9wKT8udHJhbnNsYXRlOyBlbHNlIG5vVHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZW1pdFJvdXRlUGFnZShyb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZW1pdFJvdXRlUGFnZShyb3cpXCIgW2lubmVySHRtbF09J2V4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW5Qcm9wKSc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBNb2JpbGUgQ2FyZCBWaWV3IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWNhcmRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhU291cmNlLmRhdGE7IGxldCByb3dJbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgIGNsYXNzPVwibW9iaWxlLWNhcmRcIlxyXG4gICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ21vYmlsZS1jYXJkLScgKyAocm93Py5pZCB8fCByb3c/LmtleSB8fCAnJylcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAnbW9iaWxlLWNhcmQtLWhpZ2hsaWdodCc6IHNlbGVjdGVkUm93SW5kZXggPT0gcm93LmlkIHx8IChwYWdlSW5mby5ncm91cEJ5UHJvcGVydHkgJiYgcGFnZUluZm8uZ3JvdXBCeVZhbHVlPy5pbmNsdWRlcyhyb3dbcGFnZUluZm8uZ3JvdXBCeVByb3BlcnR5XSkpLFxyXG4gICAgICAgICAgICAgICAnbW9iaWxlLWNhcmQtLWRhcmstaGlnaGxpZ2h0JzogaXNEYXJrSGlnaGxpZ2h0KHJvdylcclxuICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgKGF1eGNsaWNrKT1cIm9wZW5OZXdUYWIocm93KVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblNlbGVjdEl0ZW0ocm93KVwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8IS0tIE1vYmlsZSBDYXJkIEhlYWRlcjogSUQvTmFtZSBhbmQgU3RhdHVzIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19oZWFkZXItaWRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19pZC10ZXh0XCI+e3sgZXh0cmFjdEZpZWxkTmFtZShyb3csIGdldE1vYmlsZUNhcmRJZENvbHVtbigpPy5wcm9wZXJ0eSB8fCAnaWQnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9faGVhZGVyLXN0YXR1c1wiICpuZ0lmPVwiZ2V0TW9iaWxlQ2FyZFN0YXR1c0NvbHVtbigpXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic3RhdGVUeXBlIHt7IHJvd1tnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCk/LnByb3BlcnR5XX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInbW9iaWxlLWJ0bi1zdGF0ZS0nK2dldE1vYmlsZUNhcmRTdGF0dXNDb2x1bW4oKT8ucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxhYmVsS2V5QnlWYWx1ZShnZXRNb2JpbGVDYXJkU3RhdHVzQ29sdW1uKCksIHJvdykgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGl2aWRlciAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gTW9iaWxlIENhcmQgQm9keTogT3RoZXIgY29sdW1ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZ2V0TW9iaWxlQ2FyZENvbHVtbnMoKVwiIGNsYXNzPVwibW9iaWxlLWNhcmRfX3Jvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fcm93LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYWJlbEtleShjb2x1bW4pIHwgdHJhbnNsYXRlIH19IDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jYXJkX19yb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGF0ZVR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic3RhdGVUeXBlIHt7IHJvd1tjb2x1bW4ucHJvcGVydHldfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidtb2JpbGUtYnRuLXN0YXRlLScrY29sdW1uLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbEtleUJ5VmFsdWUoY29sdW1uLCByb3cpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uLnByb3BlcnR5KSB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25ldEFtb3VudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19hbW91bnQtY3VycmVuY3lcIj57eyByb3dbY29sdW1uLmN1cnJlbmN5XSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1jYXJkX19hbW91bnQtdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKHJvdywgY29sdW1uLnByb3BlcnR5KSB8IGN1cnJlbmN5OicnOicnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb2NhbERhdGVUaW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgZGF0ZSA6IGV4dHJhY3RGb3JtYXQoY29sdW1uKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidiaWdkZWNpbWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD48c3VwIGNsYXNzPVwibWFpblRhYmxlX190ZF9fY3VycmVuY3lcIj57e3Jvd1tjb2x1bW4uY3VycmVuY3ldfX08L3N1cD48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgbnVtYmVyIDogKGNvbHVtbi5kaWdpdEluZm8gfHwgJzEuMy01JykgfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50cmFuc2xhdGU7IGVsc2Ugbm9UcmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIGV4dHJhY3RGaWVsZE5hbWUocm93LCBjb2x1bW4ucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT0nZXh0cmFjdEZpZWxkTmFtZShyb3csIGNvbHVtbi5wcm9wZXJ0eSknPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gTW9iaWxlIENhcmQgQWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2FyZF9fYWN0aW9uc1wiICpuZ0lmPVwibGlzdEFjdGlvbiAmJiBsaXN0QWN0aW9uLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGFwcC1idXR0b24tYWN0aW9uc1xyXG4gICAgICAgICAgICAgIFtidXR0b25zQWN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtsaXN0QWN0aW9uXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFthY3Rpb25zXT1cImxpc3RBY3Rpb25cIlxyXG4gICAgICAgICAgICAgIChjbGlja2VkQnV0dG9uKT1cImFjdGlvbkxpc3RDbGlja2VkKCRldmVudCxyb3cpXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWJ1dHRvbi1hY3Rpb25zPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YUZvdW5kXCIgY2xhc3M9XCJkYXRhTm90Rm91bmQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiZ2V0RGlzcGxheVN2Z1BhdGgoKVwiIFtzcmNdPVwiZ2V0RGlzcGxheVN2Z1BhdGgoKVwiIGNsYXNzPVwiZGF0YU5vdEZvdW5kX19pY29uXCIgYWx0PVwiTm8gZGF0YSBmb3VuZFwiIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhTm90Rm91bmRfX3RpdGxlXCI+e3sgZ2V0RGlzcGxheVRpdGxlKCkgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9fc3VidGl0bGVcIj57eyBnZXREaXNwbGF5U3VidGl0bGUoKSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2ICAqbmdJZj1cIihkYXRhU291cmNlLmRhdGE/Lmxlbmd0aCA+IDAgfHwgY3VzdG9taXplZERhdGEpICYmICFwYWdlSW5mby5oaWRlUGFnaW5hdGlvblwiIGNsYXNzPVwibWFpbi1wYWdpbmF0aW9uIGZsZXgtcm93XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZVBhZ2luYXRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiBmbGV4LTEwMFwiPlxyXG4gICAgICAgICAgICA8YXBwLXBhZ2luYXRvclxyXG4gICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsRWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIlxyXG4gICAgICAgICAgICAgIFttb2JpbGVMb2FkTW9yZUluY3JlbWVudF09XCJtb2JpbGVMb2FkTW9yZUluY3JlbWVudFwiXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXllZEl0ZW1zXT1cIm1vYmlsZURpc3BsYXllZEl0ZW1zIHx8IGRhdGFTb3VyY2UuZGF0YS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAobG9hZE1vcmUpPVwib25Mb2FkTW9yZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLXBhZ2luYXRvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19