@bnsights/bbsf-admin-portal 1.0.67 → 1.0.69

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 (39) hide show
  1. package/README.md +15 -5
  2. package/{bnsights-bbsf-admin-portal-1.0.67.tgz → bnsights-bbsf-admin-portal-1.0.69.tgz} +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +57 -112
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/_layout/components/topbar/topbar.component.js +1 -1
  6. package/esm2015/lib/Pages/departments/department/department.component.js +1 -2
  7. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +1 -3
  8. package/esm2015/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.js +1 -1
  9. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +2 -4
  10. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +2 -4
  11. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +1 -2
  12. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +2 -3
  13. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +1 -2
  14. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +1 -2
  15. package/esm2015/lib/Pages/sectors/sector/sector.component.js +1 -2
  16. package/esm2015/lib/Pages/shared/components/external-url/external-url.component.js +3 -1
  17. package/esm2015/lib/Pages/shared/components/survey/add-survey/add-survey.component.js +3 -2
  18. package/esm2015/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.js +6 -7
  19. package/esm2015/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.js +3 -3
  20. package/esm2015/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.js +4 -2
  21. package/esm2015/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.js +4 -2
  22. package/esm2015/lib/Pages/shared/components/survey/survey-info/preview/preview.component.js +10 -3
  23. package/esm2015/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.js +2 -2
  24. package/esm2015/lib/Pages/shared/components/survey/survey-info/result-question/result.component.js +2 -2
  25. package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +20 -63
  26. package/esm2015/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.js +2 -2
  27. package/esm2015/lib/Pages/shared/components/survey/survey.component.js +2 -2
  28. package/esm2015/lib/Pages/shared/components/survey-form/survey-form.component.js +3 -3
  29. package/esm2015/lib/Pages/shared/models/SurveyModels/add-survey-submissio.js +1 -1
  30. package/esm2015/lib/Pages/shared/modules/survey.module.js +3 -3
  31. package/fesm2015/bnsights-bbsf-admin-portal.js +57 -112
  32. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  33. package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +2 -1
  34. package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +2 -1
  35. package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +2 -1
  36. package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +3 -0
  37. package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +1 -0
  38. package/package.json +2 -2
  39. package/src/lib/assets/sass/custom-styles.scss +29 -0
@@ -83,6 +83,18 @@ export class SurveyInfoComponent extends AppBaseComponent {
83
83
  this.utilityService.notifySuccessMessage(this.l("RecordDeleted"), null, null, false);
84
84
  this.router.navigate(["../../"], { relativeTo: this.activatedRoute });
85
85
  };
86
+ this.onSuccessAddQuestionHandler = (success) => {
87
+ this.utilityService.notifySuccessMessage(this.l("RecordAdded"), null, null, false);
88
+ this.masterLayoutService.reloadComponent();
89
+ };
90
+ this.onSuccessEditQuestionHandler = (success) => {
91
+ this.utilityService.notifySuccessMessage(this.l("RecordUpdated"), null, null, false);
92
+ this.masterLayoutService.reloadComponent();
93
+ };
94
+ this.onSuccessDeleteQuestionHandler = (success) => {
95
+ this.utilityService.notifySuccessMessage(this.l("RecordDeleted"), null, null, false);
96
+ this.masterLayoutService.reloadComponent();
97
+ };
86
98
  this.showDeleteSubmissionModal = (id) => {
87
99
  this.deleteSubmissionConfirmationModalControl.showDeleteModal(id);
88
100
  };
@@ -164,45 +176,13 @@ export class SurveyInfoComponent extends AppBaseComponent {
164
176
  yAxis: yAxis,
165
177
  valueYField: "value",
166
178
  categoryXField: "name",
167
- showTooltipOn: "hover",
168
- tooltipPosition: "pointer",
169
- tooltip: am5.Tooltip.new(root, {
170
- labelText: `{valueY} ${this.l('Users')} ${this.l('Choose')}: {categoryX}`,
171
- active: true,
172
- hoverOnFocus: true,
173
- opacity: 1,
174
- getFillFromSprite: false,
175
- getStrokeFromSprite: true,
176
- autoTextColor: false,
177
- pointerOrientation: "horizontal",
178
- tooltipPosition: "pointer",
179
- maxHeight: 100,
180
- maxWidth: 300,
181
- keepTargetHover: true,
182
- showTooltipOn: "hover",
183
- background: am5.Rectangle.new(root, {
184
- fill: am5.color(0xff5599),
185
- fillOpacity: 0.5
186
- })
187
- })
188
179
  }));
189
- // tooltip.get("background").setAll({
190
- // fill: am5.color(0xeeeeee)
191
- // });
192
- // series1.set("tooltip", tooltip);
193
- // series1.columns.template.setAll({
194
- // tooltipText: "{categoryX}: {valueY}"
195
- // });
196
180
  series1.data.setAll(data);
197
- series1.set("fill", am5.color("#405276")); // set Series color to red
198
- series1.set("stroke", am5.color("#405276")); // set Series color to red
181
+ series1.set("fill", am5.color("#b68a35")); // set Series color to red
182
+ series1.set("stroke", am5.color("#b68a35")); // set Series color to red
199
183
  // Add legend
200
184
  let legend = chart.children.push(am5.Legend.new(root, {}));
201
185
  legend.data.push(series1);
202
- // // Add cursor
203
- chart.set("cursor", am5xy.XYCursor.new(root, {
204
- tooltipPosition: "pointer",
205
- }));
206
186
  this.root = root;
207
187
  });
208
188
  // //chart overview
@@ -247,36 +227,13 @@ export class SurveyInfoComponent extends AppBaseComponent {
247
227
  yAxis: yAxis,
248
228
  valueYField: "value",
249
229
  categoryXField: "category",
250
- showTooltipOn: "hover",
251
- tooltipPosition: "pointer",
252
- tooltip: am5.Tooltip.new(root, {
253
- labelText: `{valueY} ${this.l('Users')} ${this.l('Choose')}: {categoryX}`,
254
- active: true,
255
- hoverOnFocus: true,
256
- opacity: 1,
257
- getFillFromSprite: false,
258
- getStrokeFromSprite: true,
259
- autoTextColor: false,
260
- pointerOrientation: "horizontal",
261
- tooltipPosition: "pointer",
262
- maxHeight: 100,
263
- maxWidth: 300,
264
- keepTargetHover: true,
265
- showTooltipOn: "hover",
266
- background: am5.Rectangle.new(root, {
267
- fill: am5.color(0xff5599),
268
- fillOpacity: 0.5
269
- })
270
- })
271
230
  }));
272
231
  series1.data.setAll(data);
273
- series1.set("fill", am5.color("#405276")); // set Series color to red
274
- series1.set("stroke", am5.color("#405276")); // set Series color to red
232
+ series1.set("fill", am5.color("#b68a35")); // set Series color to red
233
+ series1.set("stroke", am5.color("#b68a35")); // set Series color to red
275
234
  // Add legend
276
235
  let legend = chart.children.push(am5.Legend.new(root, {}));
277
236
  legend.data.setAll(chart.series.values);
278
- // Add cursor
279
- chart.set("cursor", am5xy.XYCursor.new(root, {}));
280
237
  this.root = root;
281
238
  });
282
239
  }
@@ -316,8 +273,8 @@ export class SurveyInfoComponent extends AppBaseComponent {
316
273
  this.pageHeaderOptions.BreadCrumb.BreadCrumbItems = this.breadCrumb;
317
274
  this.pageHeaderOptions.DropDownActions.Active = true;
318
275
  this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l("Edit"), "/assets/images/Edit.svg", this.showEditModal), new DropdownActionItem(this.l("Delete"), '/assets/images/Trash.svg', this.showDeleteModal), new DropdownActionItem(this.l("Export"), '/assets/images/export.svg', this.export));
319
- // if (this.survey.totalQuestionCount > 0)
320
- this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l("Preview"), '/assets/images/views.svg', this.previewSurvey));
276
+ if (this.survey.totalQuestionCount > 0)
277
+ this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l("Preview"), '/assets/images/views.svg', this.previewSurvey));
321
278
  if (this.survey.statusItemID.toLocaleLowerCase() == this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase())
322
279
  this.canTakeSurvey = true;
323
280
  if (this.survey.statusItemID.toLocaleLowerCase() == this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase()
@@ -461,7 +418,7 @@ export class SurveyInfoComponent extends AppBaseComponent {
461
418
  }
462
419
  }
463
420
  SurveyInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SurveyInfoComponent, deps: [{ token: i0.Injector }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.Router }, { token: i2.MasterLayoutService }, { token: i3.SurveyService }, { token: i4.SurveyQuestionService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
464
- SurveyInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n<bbsf-page-header-component [options]=\"pageHeaderOptions\" ></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n <p class=\"card-description\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n <div class=\"card-data\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"overview-question\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills\" orientation=\"vertical\">\r\n <h4> {{l(\"Questions\") }}</h4>\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-section\">\r\n <h4 class=\"chart-question\">{{l(\"Overview\") }}</h4>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 500px\"></div>\r\n </div>\r\n <div class=\"chart-section\">\r\n <h4 class=\"chart-question\">{{l(\"Score\") }} </h4>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 500px\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], components: [{ type: i5.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.NoResultsComponent, selector: "app-no-results" }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i8.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { type: i9.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i10.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement"] }, { type: i11.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement"] }, { type: i12.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i13.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { type: i14.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i15.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i16.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i17.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i18.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i19.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i20.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i20.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i20.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "surveyDate": i21.SurveyDatePipe } });
421
+ SurveyInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], components: [{ type: i5.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.NoResultsComponent, selector: "app-no-results" }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i8.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { type: i9.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i10.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement", "onSuccessAddHandler"] }, { type: i11.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement", "onSuccessEditHandler"] }, { type: i12.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i13.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { type: i14.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i15.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i16.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i17.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i19.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i18.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i20.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i20.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i20.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "surveyDate": i21.SurveyDatePipe } });
465
422
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SurveyInfoComponent, decorators: [{
466
423
  type: Component,
467
424
  args: [{
@@ -512,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
512
469
  type: ViewChild,
513
470
  args: ['pagingSubmissionViewElement', { static: false }]
514
471
  }] } });
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUE0QixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBbUIsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hPLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxrQkFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQU9yRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7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QUE2QztzQkFBOUYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUJXLHFCQUFxQjtzQkFBL0UsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBY0ksdUJBQXVCO3NCQUFuRixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3B1Ymxpc2gtc3VydmV5L3B1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtcXVlc3Rpb24vYWRkLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtcXVlc3Rpb24vZGVsZXRlLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuLy4uL2VkaXQtc3VydmV5L2VkaXQtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vLi4vZGVsZXRlLXN1cnZleS9kZWxldGUtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBOZ1pvbmUsIE9uSW5pdCwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBCcmVhZENydW1iLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bkFjdGlvbkl0ZW0sIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcmNlRGlyZWN0aW9uLCBJbnB1dFR5cGUsIFBhZ2VIZWFkZXJPcHRpb25zLCBQYWdpbmdDb21wb25lbnQsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgKiBhcyBhbTUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czVcIjtcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUveHlcIjtcclxuaW1wb3J0IGFtNXRoZW1lc19BbmltYXRlZCBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvQW5pbWF0ZWRcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hc3RlckxheW91dFNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBVblB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3VucHVibGlzaC1zdXJ2ZXkvdW5wdWJsaXNoLXN1cnZleS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvZGVsZXRlLXN1Ym1pc3Npb24vZGVsZXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL2VsaW1pbmF0ZS1zdWJtaXNzaW9uL2VsaW1pbmF0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVuRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL3VuZWxpbWluYXRlLXN1Ym1pc3Npb24vdW5lbGltaW5hdGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUsIFN1cnZleVN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvc3VydmV5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VydmV5LWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXJ2ZXktaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VydmV5LWluZm8uY29tcG9uZW50LmNzcyddXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHBhZ2VIZWFkZXJPcHRpb25zOiBQYWdlSGVhZGVyT3B0aW9ucztcclxuICBicmVhZENydW1iOiBCcmVhZENydW1iW107XHJcbiAgc3VydmV5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IERlbGV0ZVN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdE1vZGFsOiBFZGl0U3VydmV5Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRRdWVzdGlvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRRdWVzdGlvbk1vZGFsOiBFZGl0UXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVRdWVzdGlvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlUXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRkUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRRdWVzdGlvbkNvbXBvbmVudDogQWRkUXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRkUHVibGlzaE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkZFB1Ymxpc2hNb2RhbDogUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRVblB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZGRVblB1Ymxpc2hNb2RhbDogVW5QdWJsaXNoU3VydmV5Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZVN1Ym1pc3Npb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VsaW1pbmF0ZU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndW5FbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB1bkVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IFVuRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuXHJcbiAgVGV4dEJveFdpdGhFeHRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dEJveFdpdGhJbnRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdXJsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlYXJjaFRleHRCb3ggPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFTjogYm9vbGVhbjtcclxuICBTZWFyY2hUZXh0Qm94T3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSByb290ITogYW01LlJvb3Q7XHJcbiAgc3VydmV5SUQ6IGFueTtcclxuICBzdXJ2ZXk6IGFueTtcclxuICBsb2FkSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTdXJ2ZXlTdGF0dXNFbnVtID0gU3VydmV5U3RhdHVzRW51bTtcclxuICBwdWJsaWMgQXVkaWVuY2VUeXBlRW51bSA9IEF1ZGllbmNlVHlwZTtcclxuICBzdXJ2ZXlRdWVzdGlvbnM6IFN1cnZleVF1ZXN0aW9uRFRPW10gPSBbXTtcclxuICBhcGlRdWVzdGlvblVSTCA9IHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFwaVVSTDtcclxuICBmaWx0ZXJzUXVlc3Rpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgY2FuVGFrZVN1cnZleTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgLy9RdWVzdGlvbnMgU2VjdGlvblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nUXVlc3Rpb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdRdWVzdGlvbk9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIGNhbkVkaXRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5BZGRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5EZWxldGVRdWVzdGlvbjogYm9vbGVhbjtcclxuICBzZWFyY2hRdWVzdGlvblRleHRGaWx0ZXI6IGFueTtcclxuICBTdXJ2ZXlJRE9wdGlvbnM6IGFueTtcclxuICBzZWFyY2hTdXJ2ZXlJREZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcblxyXG4gIC8vU3VibWlzc2lvbiBTZWN0aW9uXHJcbiAgZmlsdGVyc1N1Ym1pc3Npb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nU3VibWlzc2lvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdTdWJtaXNzaW9uUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIHBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zOiBQYWdpbmdPcHRpb25zO1xyXG4gIHNob3dTdWJtaXNzaW9uUGFnZUNvbnRlbnQ6IGJvb2xlYW47XHJcbiAgc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHQ6IGFueTtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsOiBhbnk7XHJcbiAgc2hvd092ZXJ2aWV3OiBib29sZWFuO1xyXG4gIHNob3dOYXY6IGJvb2xlYW5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkLCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICAgLCBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsIHByaXZhdGUgc3VydmV5U2VydmljZTogU3VydmV5U2VydmljZSwgcHJpdmF0ZSBzdXJ2ZXlRdWVzdGlvblNlcnZpY2U6IFN1cnZleVF1ZXN0aW9uU2VydmljZSwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJpZFwiXTtcclxuICB9XHJcbiAgLy8gUnVuIHRoZSBmdW5jdGlvbiBvbmx5IGluIHRoZSBicm93c2VyXHJcbiAgYnJvd3Nlck9ubHkoZjogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBmKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG1heWJlRGlzcG9zZVJvb3QoZGl2SWQpIHtcclxuICAgIGFtNS5hcnJheS5lYWNoKGFtNS5yZWdpc3RyeS5yb290RWxlbWVudHMsIChyb290KSA9PiB7XHJcbiAgICAgIGlmIChyb290KSB7XHJcbiAgICAgICAgaWYgKHJvb3QuZG9tLmlkID09IGRpdklkKSB7XHJcbiAgICAgICAgICByb290LmRpc3Bvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9O1xyXG5cclxuICBsb2FkQ2hhcnQoaXRlbSkge1xyXG5cclxuICAgIC8vIENoYXJ0IGNvZGUgZ29lcyBpbiBoZXJlXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWUgPSBgY2hhcnRkaXZgO1xyXG4gICAgICB0aGlzLm1heWJlRGlzcG9zZVJvb3QobmFtZSlcclxuICAgICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcobmFtZSk7XHJcbiAgICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHBhblg6IGZhbHNlLFxyXG4gICAgICAgICAgcGFuWTogZmFsc2UsXHJcbiAgICAgICAgICB3aGVlbFg6ICdub25lJyxcclxuICAgICAgICAgIHdoZWVsWTogJ25vbmUnLFxyXG4gICAgICAgICAgcGFkZGluZ0JvdHRvbTogNTAsXHJcbiAgICAgICAgICBwYWRkaW5nVG9wOiA0MCxcclxuICAgICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIERlZmluZSBkYXRhXHJcbiAgICAgIGxldCBkYXRhID0gaXRlbS5vcHRpb25zLm1hcCh2YWx1ZSA9PiB7IHJldHVybiB7ICduYW1lJzogdmFsdWUubG9jYWxpemVkVGl0bGUsICd2YWx1ZSc6IHZhbHVlLm51bWJlck9mU2VsZWN0ZWRUaW1lIH0gfSlcclxuICAgICAgLy8gQ3JlYXRlIFktYXhpc1xyXG4gICAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgYmFzZVZhbHVlOiAwLFxyXG4gICAgICAgICAgbWF4UHJlY2lzaW9uOiAwLFxyXG4gICAgICAgICAgZXh0cmFUb29sdGlwUHJlY2lzaW9uOiAxMDAsXHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwge30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiBcIm5hbWVcIlxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHhBeGlzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgICBsZXQgc2VyaWVzMSA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNvbHVtblNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgbmFtZTogXCJRdWVzdGlvbiBPcHRpb25zXCIsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgY2F0ZWdvcnlYRmllbGQ6IFwibmFtZVwiLFxyXG4gICAgICAgICAgc2hvd1Rvb2x0aXBPbjogXCJob3ZlclwiLFxyXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOlwicG9pbnRlclwiLFxyXG4gICAgICAgICAgdG9vbHRpcDphbTUuVG9vbHRpcC5uZXcocm9vdCwge1xyXG4gICAgICAgICAgICBsYWJlbFRleHQ6IGB7dmFsdWVZfSAke3RoaXMubCgnVXNlcnMnKX0gJHt0aGlzLmwoJ0Nob29zZScpfToge2NhdGVnb3J5WH1gLFxyXG4gICAgICAgICAgICBhY3RpdmU6dHJ1ZSxcclxuICAgICAgICAgICAgaG92ZXJPbkZvY3VzOnRydWUsXHJcbiAgICAgICAgICAgIG9wYWNpdHk6MSxcclxuICAgICAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBnZXRTdHJva2VGcm9tU3ByaXRlOiB0cnVlLFxyXG4gICAgICAgICAgICBhdXRvVGV4dENvbG9yOiBmYWxzZSxcclxuICAgICAgICAgICAgcG9pbnRlck9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIixcclxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOlwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6MTAwLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDozMDAsXHJcbiAgICAgICAgICAgIGtlZXBUYXJnZXRIb3ZlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd1Rvb2x0aXBPbjpcImhvdmVyXCIsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGFtNS5SZWN0YW5nbGUubmV3KHJvb3QsIHtcclxuICAgICAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhmZjU1OTkpLFxyXG4gICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgIFxyXG5cclxuICAgIFxyXG5cclxuICAgICAgLy8gdG9vbHRpcC5nZXQoXCJiYWNrZ3JvdW5kXCIpLnNldEFsbCh7XHJcbiAgICAgIC8vICAgZmlsbDogYW01LmNvbG9yKDB4ZWVlZWVlKVxyXG4gICAgICAvLyB9KTtcclxuXHJcbiAgICAgIC8vIHNlcmllczEuc2V0KFwidG9vbHRpcFwiLCB0b29sdGlwKTtcclxuICAgICAgLy8gc2VyaWVzMS5jb2x1bW5zLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgIC8vICAgdG9vbHRpcFRleHQ6IFwie2NhdGVnb3J5WH06IHt2YWx1ZVl9XCJcclxuICAgICAgLy8gfSk7XHJcbiAgICBcclxuICAgICBcclxuXHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KFwiZmlsbFwiLCBhbTUuY29sb3IoXCIjNDA1Mjc2XCIpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgc2VyaWVzMS5zZXQoXCJzdHJva2VcIiwgYW01LmNvbG9yKFwiIzQwNTI3NlwiKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcblxyXG4gICAgICAvLyBBZGQgbGVnZW5kXHJcbiAgICAgIGxldCBsZWdlbmQgPSBjaGFydC5jaGlsZHJlbi5wdXNoKGFtNS5MZWdlbmQubmV3KHJvb3QsIHt9KSk7XHJcbiAgICAgIGxlZ2VuZC5kYXRhLnB1c2goc2VyaWVzMSk7XHJcblxyXG5cclxuICAgICAgLy8gLy8gQWRkIGN1cnNvclxyXG4gICAgICBjaGFydC5zZXQoXCJjdXJzb3JcIiwgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICB0b29sdGlwUG9zaXRpb246XCJwb2ludGVyXCIsXHJcbiAgICAgICAgXHJcbiAgICAgIH0pKTtcclxuICBcclxuICAgICAgdGhpcy5yb290ID0gcm9vdDtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAvL2NoYXJ0IG92ZXJ2aWV3XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWVPdmVyVmlldyA9IGBjaGFydE92ZXJ2aWV3YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWVPdmVyVmlldylcclxuICAgICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcobmFtZU92ZXJWaWV3KTtcclxuXHJcbiAgICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHBhblk6IGZhbHNlLFxyXG4gICAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG5cclxuICAgICAgbGV0IGRhdGEgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gaXRlbS5yZXN1bHRzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLnJlc3VsdHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbS5yZXN1bHRzW2tleV07XHJcbiAgICAgICAgICBsZXQgb2JqZWN0ID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCI+PVwiICsga2V5LFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGEucHVzaChvYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDcmVhdGUgWS1heGlzXHJcbiAgICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBiYXNlVmFsdWU6IDAsXHJcbiAgICAgICAgICBtYXhQcmVjaXNpb246IDAsXHJcbiAgICAgICAgICBleHRyYVRvb2x0aXBQcmVjaXNpb246IDEwMCxcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7fSlcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIFgtQXhpc1xyXG4gICAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNhdGVnb3J5QXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICAgIGNhdGVnb3J5RmllbGQ6IFwiY2F0ZWdvcnlcIlxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHhBeGlzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgICBsZXQgc2VyaWVzMSA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNvbHVtblNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgbmFtZTogXCJTY29yZVwiLFxyXG4gICAgICAgICAgeEF4aXM6IHhBeGlzLFxyXG4gICAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICAgIGNhdGVnb3J5WEZpZWxkOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgICBzaG93VG9vbHRpcE9uOiBcImhvdmVyXCIsXHJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb246XCJwb2ludGVyXCIsXHJcbiAgICAgICAgICB0b29sdGlwOmFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgICAgIGxhYmVsVGV4dDogYHt2YWx1ZVl9ICR7dGhpcy5sKCdVc2VycycpfSAke3RoaXMubCgnQ2hvb3NlJyl9OiB7Y2F0ZWdvcnlYfWAsXHJcbiAgICAgICAgICAgIGFjdGl2ZTp0cnVlLFxyXG4gICAgICAgICAgICBob3Zlck9uRm9jdXM6dHJ1ZSxcclxuICAgICAgICAgICAgb3BhY2l0eToxLFxyXG4gICAgICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGdldFN0cm9rZUZyb21TcHJpdGU6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9UZXh0Q29sb3I6IGZhbHNlLFxyXG4gICAgICAgICAgICBwb2ludGVyT3JpZW50YXRpb246IFwiaG9yaXpvbnRhbFwiLFxyXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb246XCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIG1heEhlaWdodDoxMDAsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOjMwMCxcclxuICAgICAgICAgICAga2VlcFRhcmdldEhvdmVyOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93VG9vbHRpcE9uOlwiaG92ZXJcIixcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgICAgIGZpbGw6IGFtNS5jb2xvcigweGZmNTU5OSksXHJcbiAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSkgICAgXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgc2VyaWVzMS5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgICAgc2VyaWVzMS5zZXQoXCJmaWxsXCIsIGFtNS5jb2xvcihcIiM0MDUyNzZcIikpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICBzZXJpZXMxLnNldChcInN0cm9rZVwiLCBhbTUuY29sb3IoXCIjNDA1Mjc2XCIpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgLy8gQWRkIGxlZ2VuZFxyXG4gICAgICBsZXQgbGVnZW5kID0gY2hhcnQuY2hpbGRyZW4ucHVzaChhbTUuTGVnZW5kLm5ldyhyb290LCB7fSkpO1xyXG4gICAgICBsZWdlbmQuZGF0YS5zZXRBbGwoY2hhcnQuc2VyaWVzLnZhbHVlcyk7XHJcblxyXG4gICAgICAvLyBBZGQgY3Vyc29yXHJcbiAgICAgIGNoYXJ0LnNldChcImN1cnNvclwiLCBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge30pKTtcclxuXHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgcm9vdCBlbGVtZW50IHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW1vdmVkXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucm9vdCkge1xyXG4gICAgICAgIHRoaXMucm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZ2V0SW5mbyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5zdXJ2ZXkgPSByZXN1bHQ7XHJcblxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLk5hbWUgPSBcIlRleHRCb3hXaXRoRXh0ZXJuYWxVUkxcIlxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTGFiZWxLZXkgPSBcIkV4dGVybmFsX1VSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5FbmdsaXNoXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmV4dGVybmFsVVJMXHJcblxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLk5hbWUgPSBcIlRleHRCb3hXaXRoSW50ZXJuYWxVUkxcIlxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTGFiZWxLZXkgPSBcIkludGVybmFsX1VSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5FbmdsaXNoXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmludGVybmFsVVJMXHJcblxyXG5cclxuICAgICAgdGhpcy5icmVhZENydW1iID0gW107XHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYi5wdXNoKG5ldyBCcmVhZENydW1iKHRoaXMubChcIkhvbWVcIiksIGZhbHNlLCBcIi9cIiksIG5ldyBCcmVhZENydW1iKHRoaXMubChcIlN1cnZleXNfSGVhZGVyXCIpLCBmYWxzZSwgJy4uLy4uLycpLCBuZXcgQnJlYWRDcnVtYih0aGlzLmwoXCJTdXJ2ZXlfRGV0YWlsc1wiKSwgdHJ1ZSkpO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zID0gbmV3IFBhZ2VIZWFkZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuVGl0bGVWYWx1ZSA9dGhpcy5zdXJ2ZXkubG9jYWxpemVkVGl0bGU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuU2VhcmNoVGV4dEJveC5BY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5CcmVhZENydW1iLkFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuQnJlYWRDcnVtYi5CcmVhZENydW1iSXRlbXMgPSB0aGlzLmJyZWFkQ3J1bWI7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkVkaXRcIiksIFwiL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmdcIiwgdGhpcy5zaG93RWRpdE1vZGFsKSxcclxuICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkRlbGV0ZVwiKSwgJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZycsIHRoaXMuc2hvd0RlbGV0ZU1vZGFsKSxcclxuICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkV4cG9ydFwiKSwgJy9hc3NldHMvaW1hZ2VzL2V4cG9ydC5zdmcnLCB0aGlzLmV4cG9ydClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgLy8gaWYgKHRoaXMuc3VydmV5LnRvdGFsUXVlc3Rpb25Db3VudCA+IDApXHJcbiAgICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbSggdGhpcy5sKFwiUHJldmlld1wiKSwgJy9hc3NldHMvaW1hZ2VzL3ZpZXdzLnN2ZycsIHRoaXMucHJldmlld1N1cnZleSkpO1xyXG4gICAgICBpZiAodGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9QdWJsaXNoZWQudG9Mb2NhbGVMb3dlckNhc2UoKSlcclxuICAgICAgICB0aGlzLmNhblRha2VTdXJ2ZXkgPSB0cnVlXHJcblxyXG4gICAgICBpZiAodGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgICAgICAgfHwgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKSlcclxuICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2gobmV3IERyb3Bkb3duQWN0aW9uSXRlbSh0aGlzLmwoXCJQdWJsaXNoXCIpLCAnL2Fzc2V0cy9pbWFnZXMvU3VibWl0LnN2ZycsIHRoaXMuc2hvd1B1Ymxpc2hNb2RhbCkpXHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2gobmV3IERyb3Bkb3duQWN0aW9uSXRlbSh0aGlzLmwoXCJVblB1Ymxpc2hcIiksICcvYXNzZXRzL2ltYWdlcy91bmxpbmsuc3ZnJywgdGhpcy5zaG93VW5QdWJsaXNoTW9kYWwpLClcclxuXHJcbiAgICAgIHRoaXMuRU4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmlzQ3VycmVudExhbmd1YWdlRW5nbGlzaCgpO1xyXG4gICAgICB0aGlzLmxvYWRRdWVzdGlvblNlY3Rpb24oKTtcclxuICAgICAgdGhpcy5sb2FkU3VibWlzc2lvblNlY3Rpb24oKTtcclxuICAgICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZVxyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2VUaXRsZSh0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZSk7XHJcbiAgICAgIHRoaXMubG9hZEluZm8gPSB0cnVlO1xyXG4gICAgICBcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2hvd0VkaXRNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuZWRpdE1vZGFsLnNob3dFZGl0TW9kYWwodGhpcy5zdXJ2ZXlJRCk7XHJcbiAgfVxyXG4gIHNob3dEZWxldGVNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dEZWxldGVNb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuXHJcbiAgfVxyXG4gIHNob3dFZGl0UXVlc3Rpb25Nb2RhbChpZCxpc1ZpZXdPbmx5KSB7XHJcbiAgICB0aGlzLmVkaXRRdWVzdGlvbk1vZGFsLmVkaXRNb2RhbChpZCwgdGhpcy5zdXJ2ZXkuYXVkaWVuY2VJdGVtSUQsaXNWaWV3T25seSk7XHJcblxyXG4gIH1cclxuICBzaG93QWRkUXVlc3Rpb25Nb2RhbCgpIHtcclxuICAgIHRoaXMuQWRkUXVlc3Rpb25Db21wb25lbnQuYWRkTW9kYWwodGhpcy5zdXJ2ZXlJRCwgdGhpcy5zdXJ2ZXkuYXVkaWVuY2VJdGVtSUQpO1xyXG5cclxuICB9XHJcbiAgc2hvd0RlbGV0ZVF1ZXN0aW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlUXVlc3Rpb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKGlkKTtcclxuXHJcbiAgfVxyXG4gIHNob3dQdWJsaXNoTW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFkZFB1Ymxpc2hNb2RhbC5wdWJsaXNoTW9kYWwodGhpcy5zdXJ2ZXlJRCwgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCk7XHJcblxyXG4gIH1cclxuICBzaG93VW5QdWJsaXNoTW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFkZFVuUHVibGlzaE1vZGFsLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuXHJcbiAgfVxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdFtpbmRleF0uZGlzcGxheU9yZGVyID0gaW5kZXggKyAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UudXBkYXRlRGlzcGxheU9yZGVyKHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByZXZpZXdTdXJ2ZXkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uL2luZm8vcHJldmlldycsIHRoaXMuc3VydmV5SUQsIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlEXSwge3JlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGV9KTtcclxuICB9XHJcbiAgdGFrZVN1cnZleSA9ICgpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vLi4vaW5mby9zdWJtaXNzaW9uJywgdGhpcy5zdXJ2ZXlJRF0sIHtyZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0dXMoc3RhdHVzKSB7XHJcbiAgICB2YXIgU3RhdHVzZXMgPSAnJztcclxuICAgIHN3aXRjaCAoc3RhdHVzLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc2Vjb25kYXJ5JztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1kYW5nZXInO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1B1Ymxpc2hlZC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXN1Y2Nlc3MnO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1VwY29taW5nLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc3VjY2Vzcyc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBTdGF0dXNlcztcclxuICB9XHJcblxyXG4gIGxvYWRRdWVzdGlvblNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWUgPSBcIlNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UcmltVGV4dE9uQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuUGxhY2Vob2xkZXIgPSB0aGlzLmwoXCJTZWFyY2hcIik7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkV4dHJhQ2xhc3NlcyA9IFwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBmb3JtLWNvbnRyb2wtc29saWQgc2VhcmNoLWJveFwiO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5JY29uID0gXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3NlYXJjaC5zdmdcIlxyXG5cclxuXHJcblxyXG5cclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lID0gXCJTdXJ2ZXlJRFwiO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuVmFsdWUgPSB0aGlzLnN1cnZleUlEO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJTdXJ2ZXlJRFwiO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG5cclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLlBhZ2VTaXplID0gMTAwMDtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkRpc2FibGVCbG9ja1VJID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkFjdGlvblBvc3RVUkwgPSB0aGlzLmFwaVF1ZXN0aW9uVVJMICsgJ0dldEFsbFF1ZXN0aW9ucyc7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucy5GaWx0ZXJzID0gW3RoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXJdO1xyXG5cclxuXHJcblxyXG4gIH1cclxuICBzZXRRdWVzdGlvbkxpc3RpbmdSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgbGV0IG92ZXJ2aWV3UXVlc3Rpb25zID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihpdGVtID0+IGl0ZW0ucXVlc3Rpb25UeXBlSXRlbUlEID09IFN1cnZleU9wdGlvblR5cGUuUmFkaW9CdXR0b24gfHwgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3QgfHwgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdClcclxuICAgIGlmIChvdmVydmlld1F1ZXN0aW9ucy5sZW5ndGggPiAwKVxyXG4gICAgICB0aGlzLmxvYWRTdXJ2ZXlPdmVydmlldygpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uU3VjY2Vzc0hhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZFVwZGF0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZERlbGV0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi4uLy4uL1wiXSwge3JlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGV9KTtcclxuICB9XHJcblxyXG5cclxuICBzaG93RGVsZXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLmRlbGV0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKGlkKTtcclxuXHJcbiAgfVxyXG4gIHNob3dFbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RWxpbWluYXRlTW9kYWwoaWQpO1xyXG4gIH1cclxuICBzaG93VW5FbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMudW5FbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dVbkVsaW1pbmF0ZU1vZGFsKGlkKTtcclxuICB9XHJcbiAgb25TdWNjZXNzRGVsZXRlSGFuZGxlclN1Ym1pc3Npb24gPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZERlbGV0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMubG9hZFN1Ym1pc3Npb25TZWN0aW9uKCk7XHJcbiAgfVxyXG4gIGxvYWRTdWJtaXNzaW9uU2VjdGlvbigpIHtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSA9IFwiU2VhcmNoVGV4dEJveFwiO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlRyaW1UZXh0T25DaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMubChcIlNlYXJjaFwiKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGZvcm0tY29udHJvbC1zb2xpZCBzZWFyY2gtYm94XCI7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkljb24gPSBcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Z1wiXHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiU2VhcmNoVGV4dFwiO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5WYWx1ZSA9IHRoaXMuc3VydmV5SUQ7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5zdXJ2ZXlTZXJ2aWNlLmFwaVVSTCArICdHZXRBbGxTdXJ2ZXlTdWJtaXNzaW9uJztcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lXTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRmlsdGVycyA9IFt0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlciwgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlcl07XHJcblxyXG5cclxuXHJcbiAgfVxyXG4gIHNldFN1Ym1pc3Npb25MaXN0aW5nUmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93U3VibWlzc2lvblBhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcbiAgbG9hZFN1cnZleU92ZXJ2aWV3KCkge1xyXG4gICAgdGhpcy5zdXJ2ZXlTZXJ2aWNlLmdldFN1cnZleU92ZXJ2aWV3KHRoaXMuc3VydmV5SUQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb25PdmVydmlld1Jlc3VsdCA9IHJlcyBhcyBhbnlcclxuICAgICAgdGhpcy5zaG93T3ZlcnZpZXcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRDaGFydCh0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHRbMF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9ICgpID0+IHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZVxyXG4gICAgICAuZXhwb3J0KHRoaXMuc3VydmV5SUQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoKHJlc3VsdCBhcyBhbnkpIGFzIEJsb2IsIHRoaXMucGFnZVRpdGxlICsgXCIueGxzeFwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hJblF1ZXN0aW9uTGlzdCh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlKVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihpdGVtID0+IGl0ZW0ubG9jYWxpemVkVGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCI8IS0tdG9vbGJhci0tPlxyXG48ZGl2ICpuZ0lmPVwibG9hZEluZm9cIj5cclxuPGJic2YtcGFnZS1oZWFkZXItY29tcG9uZW50IFtvcHRpb25zXT1cInBhZ2VIZWFkZXJPcHRpb25zXCIgPjwvYmJzZi1wYWdlLWhlYWRlci1jb21wb25lbnQ+XHJcbjwvZGl2PlxyXG48IS0tZW5kIHRvb2xiYXItLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci14eGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1jb250YWluZXJcIiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzKHN1cnZleS5zdGF0dXNJdGVtSUQpXCI+e3tzdXJ2ZXkubG9jYWxpemVkU3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3tsKCdBdWRpZW5jZScpfX1cIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIj57e3N1cnZleS5sb2NhbGl6ZWRBdWRpZW5jZX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHAgY2xhc3M9XCJjYXJkLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAge3tzdXJ2ZXkubG9jYWxpemVkRGVzY319XHJcbiAgICAgIDwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZGF0YVwiPlxyXG4gICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5JbnRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlRleHRCb3hXaXRoSW50ZXJuYWxVUkxcIiBbZ3JvdXBdPVwidXJsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5FeHRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlRleHRCb3hXaXRoRXh0ZXJuYWxVUkxcIiBbZ3JvdXBdPVwidXJsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXJ5LWRhdGUgYm9yZGVyLTBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJveGVzIGFsaWduLWl0ZW1zLWJhc2VsaW5lXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiVG9vbHRpcD1cInt7bCgnRGF0ZScpfX1cIiBjbGFzcz1cImljb24tYm94XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvY2FsZW5kYXIuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdXJ2ZXktY291bnRlci10aXRsZVwiICpuZ0lmPVwic3VydmV5LnN0YXJ0RGF0ZT09bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAge3tsKCdOb3RTdGFydGVkWWV0Jyl9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1cnZleS1jb3VudGVyLXRpdGxlIGQtZmxleCBmbGV4LXN0YWNrXCIgKm5nSWY9XCJzdXJ2ZXkuc3RhcnREYXRlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICB7e3N1cnZleS5zdGFydERhdGUgfHN1cnZleURhdGV9fSAtIHt7c3VydmV5LmVuZERhdGUhPW51bGw/KHN1cnZleS5lbmREYXRlfHN1cnZleURhdGUpOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiICpuZ0lmPVwic3VydmV5LmVuZERhdGU9PW51bGxcIj57e2woJ0hhc05vRW5kJyl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWN1c3RvbVwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnUXVlc3Rpb25zJyl9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPbkNoYW5nZSk9XCJzZWFyY2hJblF1ZXN0aW9uTGlzdCgkZXZlbnQpXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5BZGRRdWVzdGlvblwiIGNsYXNzPVwiYnRuIGJ0bi1icmFuZCBidG4tc20gc3ViaGVhZGVyLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93QWRkUXVlc3Rpb25Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bCgnQWRkJyl9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYk5hdkNvbnRlbnQgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWluZm9cIiBbY2RrRHJhZ0Rpc2FibGVkXT1cImNhblRha2VTdXJ2ZXlcIiBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nUXVlc3Rpb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMjVweCBtZS00XCIgY2RrRHJhZ0hhbmRsZSAqbmdJZj1cIiFjYW5UYWtlU3VydmV5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTdcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9yZW9yZGVyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnVHlwZScpfX1cIj57e2l0ZW0ubG9jYWxpemVkUXVlc3Rpb25UeXBlSXRlbX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCI+e3tpdGVtLmxvY2FsaXplZEF1ZGllbmNlVHlwZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtYnJhbmQtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzUmVsYXRlZFRvU3VydmV5UXVlc3Rpb25cIj57e2woJ0xpbmtlZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCIgKm5nSWY9XCIhaXRlbS5pc1Zpc2libGVcIiBuZ2JUb29sdGlwPVwie3tsKCdOb3RWaXNpYmxlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsKFwiTm90VmlzaWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZHJvcGRvd24tY3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiRU4gPyAnYm90dG9tLXJpZ2h0JyA6ICdib3R0b20tbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlLWN1c3RvbSBidG4gYnRuLWNsZWFyXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhcmQtZHJvcGRvd24uc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51LWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIShjYW5FZGl0UXVlc3Rpb24mJmNhbkRlbGV0ZVF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsdHJ1ZSlcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkRldGFpbHNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5FZGl0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd0VkaXRRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRCxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayB0eXBlPVwiYnV0dG9uXCIgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkVkaXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5EZWxldGVRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRClcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+IHt7bChcIkRlbGV0ZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktY291bnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIj57e2l0ZW0ubG9jYWxpemVkVGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtYnJhbmQgYmFkZ2Utc3F1YXJlIG1zLTIgbWUtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+e3tpdGVtLnRvdGFsU2NvcmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UXVlc3Rpb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdRdWVzdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgI3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQ+PC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cyAqbmdJZj1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKCdTdWJtaXNzaW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiB7e2woJ05hbWUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnRW1haWwnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnVHlwZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdDcmVhdGVkJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1Njb3JlJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRhYmxlLWFjdGlvblwiPnt7bChcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nU3VibWlzc2lvblJlc3VsdDsgbGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1jbGFtcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0ubG9jYWxpemVkTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWRhbmdlciBteC0yXCIgKm5nSWY9XCJpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bCgnRWxpbWluYXRlZCcpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uZW1haWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaXNJbnRlcm5hbFVzZXI/IGwoJ0ludGVybmFsVXNlcnMnKTpsKCdFeHRlcm5hbFVzZXJzJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLmNyZWF0ZWR8c3VydmV5RGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS50b3RhbFNjb3JlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS1hY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JUb29sdGlwPVwie3tsKCdQcmV2aWV3Jyl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy4uLy4uL2luZm8vcmVzdWx0JywgaXRlbS5pRF9HVUlEXVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9hbnN3ZXJzLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIWl0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7dGhpcy5sKCdFbGltaW5hdGVIaW50Jyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93RWxpbWluYXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy91bmxpbmsuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e3RoaXMubCgnVW5FbGltaW5hdGUnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9saW5rLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ0RlbGV0ZScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd0RlbGV0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdCgkZXZlbnQpXCIgW29wdGlvbnNdPVwicGFnaW5nU3VibWlzc2lvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCIgI3BhZ2luZ1N1Ym1pc3Npb25WaWV3RWxlbWVudD48L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1uby1yZXN1bHRzICpuZ0lmPVwicGFnaW5nU3VibWlzc2lvblJlc3VsdC5sZW5ndGggPT0gMFwiPjwvYXBwLW5vLXJlc3VsdHM+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInNob3dPdmVydmlld1wiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rIChjbGljayk9XCJsb2FkU3VydmV5T3ZlcnZpZXcoKVwiPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKFwiT3ZlcnZpZXdcIikgfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1xdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2LXBpbGxzXCIgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGg0PiB7e2woXCJRdWVzdGlvbnNcIikgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW09XCJ7e2l0ZW0ubG9jYWxpemVkVGl0bGV9fVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHRcIiAoY2xpY2spPVwibG9hZENoYXJ0KGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3tpdGVtLmxvY2FsaXplZFRpdGxlfX08L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJjaGFydC1xdWVzdGlvblwiPnt7bChcIk92ZXJ2aWV3XCIpIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiY2hhcnRkaXZcIiAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MDBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJjaGFydC1xdWVzdGlvblwiPnt7bChcIlNjb3JlXCIpIH19IDwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNoYXJ0T3ZlcnZpZXdcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXBwLWVkaXQtc3VydmV5ICNlZGl0TW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC1lZGl0LXN1cnZleT5cclxuICA8YXBwLWRlbGV0ZS1zdXJ2ZXkgI2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzRGVsZXRlSGFuZGxlclwiPjwvYXBwLWRlbGV0ZS1zdXJ2ZXk+XHJcbiAgPGFwcC1hZGQtcXVlc3Rpb24gI2FkZFF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCI+PC9hcHAtYWRkLXF1ZXN0aW9uPlxyXG4gIDxhcHAtZWRpdC1xdWVzdGlvbiAjZWRpdFF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCI+PC9hcHAtZWRpdC1xdWVzdGlvbj5cclxuICA8YXBwLWRlbGV0ZS1xdWVzdGlvbiAjZGVsZXRlUXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIj48L2FwcC1kZWxldGUtcXVlc3Rpb24+XHJcbiAgPGFwcC1wdWJsaXNoLXN1cnZleSAjYWRkUHVibGlzaE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCIgKm5nSWY9XCJsb2FkSW5mb1wiIFtzaG93VG9nZ2xlXT1cInN1cnZleS5pc1Nob3dUb2dnbGVPZlNjb3JlUmVzdWx0QWZ0ZXJTdWJtaXNzaW9uXCI+XHJcbiAgPC9hcHAtcHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC11bnB1Ymxpc2gtc3VydmV5ICNhZGRVblB1Ymxpc2hNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPlxyXG4gIDwvYXBwLXVucHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC1kZWxldGUtc3VibWlzc2lvbiAjZGVsZXRlU3VibWlzc2lvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uXCI+PC9hcHAtZGVsZXRlLXN1Ym1pc3Npb24+XHJcbiAgPGFwcC1lbGltaW5hdGUtc3VibWlzc2lvbiAjZWxpbWluYXRlTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLWVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4gIDxhcHAtdW5FbGltaW5hdGUtc3VibWlzc2lvbiAjdW5FbGltaW5hdGVNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC11bkVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4iXX0=
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUE0QixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBbUIsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hPLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxrQkFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQU9yRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7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QUFFO2dCQUNJLDZDQUE2QztzQkFBOUYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUJXLHFCQUFxQjtzQkFBL0UsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBY0ksdUJBQXVCO3NCQUFuRixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3B1Ymxpc2gtc3VydmV5L3B1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtcXVlc3Rpb24vYWRkLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtcXVlc3Rpb24vZGVsZXRlLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuLy4uL2VkaXQtc3VydmV5L2VkaXQtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vLi4vZGVsZXRlLXN1cnZleS9kZWxldGUtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBOZ1pvbmUsIE9uSW5pdCwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBCcmVhZENydW1iLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bkFjdGlvbkl0ZW0sIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcmNlRGlyZWN0aW9uLCBJbnB1dFR5cGUsIFBhZ2VIZWFkZXJPcHRpb25zLCBQYWdpbmdDb21wb25lbnQsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgKiBhcyBhbTUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czVcIjtcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUveHlcIjtcclxuaW1wb3J0IGFtNXRoZW1lc19BbmltYXRlZCBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvQW5pbWF0ZWRcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hc3RlckxheW91dFNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBVblB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3VucHVibGlzaC1zdXJ2ZXkvdW5wdWJsaXNoLXN1cnZleS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvZGVsZXRlLXN1Ym1pc3Npb24vZGVsZXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL2VsaW1pbmF0ZS1zdWJtaXNzaW9uL2VsaW1pbmF0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVuRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL3VuZWxpbWluYXRlLXN1Ym1pc3Npb24vdW5lbGltaW5hdGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUsIFN1cnZleVN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvc3VydmV5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VydmV5LWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXJ2ZXktaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VydmV5LWluZm8uY29tcG9uZW50LmNzcyddXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHBhZ2VIZWFkZXJPcHRpb25zOiBQYWdlSGVhZGVyT3B0aW9ucztcclxuICBicmVhZENydW1iOiBCcmVhZENydW1iW107XHJcbiAgc3VydmV5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IERlbGV0ZVN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdE1vZGFsOiBFZGl0U3VydmV5Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRRdWVzdGlvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRRdWVzdGlvbk1vZGFsOiBFZGl0UXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVRdWVzdGlvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlUXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRkUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRRdWVzdGlvbkNvbXBvbmVudDogQWRkUXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRkUHVibGlzaE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkZFB1Ymxpc2hNb2RhbDogUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRVblB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZGRVblB1Ymxpc2hNb2RhbDogVW5QdWJsaXNoU3VydmV5Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZVN1Ym1pc3Npb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VsaW1pbmF0ZU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndW5FbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB1bkVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IFVuRWxpbWluYXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuXHJcbiAgVGV4dEJveFdpdGhFeHRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dEJveFdpdGhJbnRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdXJsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlYXJjaFRleHRCb3ggPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFTjogYm9vbGVhbjtcclxuICBTZWFyY2hUZXh0Qm94T3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSByb290ITogYW01LlJvb3Q7XHJcbiAgc3VydmV5SUQ6IGFueTtcclxuICBzdXJ2ZXk6IGFueTtcclxuICBsb2FkSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTdXJ2ZXlTdGF0dXNFbnVtID0gU3VydmV5U3RhdHVzRW51bTtcclxuICBwdWJsaWMgQXVkaWVuY2VUeXBlRW51bSA9IEF1ZGllbmNlVHlwZTtcclxuICBzdXJ2ZXlRdWVzdGlvbnM6IFN1cnZleVF1ZXN0aW9uRFRPW10gPSBbXTtcclxuICBhcGlRdWVzdGlvblVSTCA9IHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFwaVVSTDtcclxuICBmaWx0ZXJzUXVlc3Rpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgY2FuVGFrZVN1cnZleTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgLy9RdWVzdGlvbnMgU2VjdGlvblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nUXVlc3Rpb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdRdWVzdGlvbk9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIGNhbkVkaXRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5BZGRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5EZWxldGVRdWVzdGlvbjogYm9vbGVhbjtcclxuICBzZWFyY2hRdWVzdGlvblRleHRGaWx0ZXI6IGFueTtcclxuICBTdXJ2ZXlJRE9wdGlvbnM6IGFueTtcclxuICBzZWFyY2hTdXJ2ZXlJREZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcblxyXG4gIC8vU3VibWlzc2lvbiBTZWN0aW9uXHJcbiAgZmlsdGVyc1N1Ym1pc3Npb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nU3VibWlzc2lvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdTdWJtaXNzaW9uUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIHBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zOiBQYWdpbmdPcHRpb25zO1xyXG4gIHNob3dTdWJtaXNzaW9uUGFnZUNvbnRlbnQ6IGJvb2xlYW47XHJcbiAgc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHQ6IGFueTtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsOiBhbnk7XHJcbiAgc2hvd092ZXJ2aWV3OiBib29sZWFuO1xyXG4gIHNob3dOYXY6IGJvb2xlYW5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkLCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICAgLCBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsIHByaXZhdGUgc3VydmV5U2VydmljZTogU3VydmV5U2VydmljZSwgcHJpdmF0ZSBzdXJ2ZXlRdWVzdGlvblNlcnZpY2U6IFN1cnZleVF1ZXN0aW9uU2VydmljZSwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJpZFwiXTtcclxuICB9XHJcbiAgLy8gUnVuIHRoZSBmdW5jdGlvbiBvbmx5IGluIHRoZSBicm93c2VyXHJcbiAgYnJvd3Nlck9ubHkoZjogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBmKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG1heWJlRGlzcG9zZVJvb3QoZGl2SWQpIHtcclxuICAgIGFtNS5hcnJheS5lYWNoKGFtNS5yZWdpc3RyeS5yb290RWxlbWVudHMsIChyb290KSA9PiB7XHJcbiAgICAgIGlmIChyb290KSB7XHJcbiAgICAgICAgaWYgKHJvb3QuZG9tLmlkID09IGRpdklkKSB7XHJcbiAgICAgICAgICByb290LmRpc3Bvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9O1xyXG5cclxuICBsb2FkQ2hhcnQoaXRlbSkge1xyXG5cclxuICAgIC8vIENoYXJ0IGNvZGUgZ29lcyBpbiBoZXJlXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWUgPSBgY2hhcnRkaXZgO1xyXG4gICAgICB0aGlzLm1heWJlRGlzcG9zZVJvb3QobmFtZSlcclxuICAgICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcobmFtZSk7XHJcbiAgICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHBhblg6IGZhbHNlLFxyXG4gICAgICAgICAgcGFuWTogZmFsc2UsXHJcbiAgICAgICAgICB3aGVlbFg6ICdub25lJyxcclxuICAgICAgICAgIHdoZWVsWTogJ25vbmUnLFxyXG4gICAgICAgICAgcGFkZGluZ0JvdHRvbTogNTAsXHJcbiAgICAgICAgICBwYWRkaW5nVG9wOiA0MCxcclxuICAgICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIERlZmluZSBkYXRhXHJcbiAgICAgIGxldCBkYXRhID0gaXRlbS5vcHRpb25zLm1hcCh2YWx1ZSA9PiB7IHJldHVybiB7ICduYW1lJzogdmFsdWUubG9jYWxpemVkVGl0bGUsICd2YWx1ZSc6IHZhbHVlLm51bWJlck9mU2VsZWN0ZWRUaW1lIH0gfSlcclxuICAgICAgLy8gQ3JlYXRlIFktYXhpc1xyXG4gICAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgYmFzZVZhbHVlOiAwLFxyXG4gICAgICAgICAgbWF4UHJlY2lzaW9uOiAwLFxyXG4gICAgICAgICAgZXh0cmFUb29sdGlwUHJlY2lzaW9uOiAxMDAsXHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwge30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiBcIm5hbWVcIlxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHhBeGlzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgICBsZXQgc2VyaWVzMSA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNvbHVtblNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgbmFtZTogXCJRdWVzdGlvbiBPcHRpb25zXCIsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgY2F0ZWdvcnlYRmllbGQ6IFwibmFtZVwiLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIFxyXG5cclxuICAgICAgc2VyaWVzMS5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgICAgc2VyaWVzMS5zZXQoXCJmaWxsXCIsIGFtNS5jb2xvcihcIiNiNjhhMzVcIikpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICBzZXJpZXMxLnNldChcInN0cm9rZVwiLCBhbTUuY29sb3IoXCIjYjY4YTM1XCIpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuXHJcbiAgICAgIC8vIEFkZCBsZWdlbmRcclxuICAgICAgbGV0IGxlZ2VuZCA9IGNoYXJ0LmNoaWxkcmVuLnB1c2goYW01LkxlZ2VuZC5uZXcocm9vdCwge30pKTtcclxuICAgICAgbGVnZW5kLmRhdGEucHVzaChzZXJpZXMxKTtcclxuXHJcbiAgXHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gLy9jaGFydCBvdmVydmlld1xyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIGxldCBuYW1lT3ZlclZpZXcgPSBgY2hhcnRPdmVydmlld2A7XHJcbiAgICAgIHRoaXMubWF5YmVEaXNwb3NlUm9vdChuYW1lT3ZlclZpZXcpXHJcbiAgICAgIGxldCByb290ID0gYW01LlJvb3QubmV3KG5hbWVPdmVyVmlldyk7XHJcblxyXG4gICAgICByb290LnNldFRoZW1lcyhbYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KV0pO1xyXG5cclxuICAgICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgICBwYW5ZOiBmYWxzZSxcclxuICAgICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG5cclxuICAgICAgLy8gRGVmaW5lIGRhdGFcclxuXHJcbiAgICAgIGxldCBkYXRhID0gW107XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0ucmVzdWx0cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbS5yZXN1bHRzLCBrZXkpKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0ucmVzdWx0c1trZXldO1xyXG4gICAgICAgICAgbGV0IG9iamVjdCA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwiPj1cIiArIGtleSxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhLnB1c2gob2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ3JlYXRlIFktYXhpc1xyXG4gICAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgYmFzZVZhbHVlOiAwLFxyXG4gICAgICAgICAgbWF4UHJlY2lzaW9uOiAwLFxyXG4gICAgICAgICAgZXh0cmFUb29sdGlwUHJlY2lzaW9uOiAxMDAsXHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwge30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiBcImNhdGVnb3J5XCJcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICB4QXhpcy5kYXRhLnNldEFsbChkYXRhKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBzZXJpZXNcclxuICAgICAgbGV0IHNlcmllczEgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgICBhbTV4eS5Db2x1bW5TZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIG5hbWU6IFwiU2NvcmVcIixcclxuICAgICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICAgIHlBeGlzOiB5QXhpcyxcclxuICAgICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgICBjYXRlZ29yeVhGaWVsZDogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KFwiZmlsbFwiLCBhbTUuY29sb3IoXCIjYjY4YTM1XCIpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgc2VyaWVzMS5zZXQoXCJzdHJva2VcIiwgYW01LmNvbG9yKFwiI2I2OGEzNVwiKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcbiAgICAgIC8vIEFkZCBsZWdlbmRcclxuICAgICAgbGV0IGxlZ2VuZCA9IGNoYXJ0LmNoaWxkcmVuLnB1c2goYW01LkxlZ2VuZC5uZXcocm9vdCwge30pKTtcclxuICAgICAgbGVnZW5kLmRhdGEuc2V0QWxsKGNoYXJ0LnNlcmllcy52YWx1ZXMpO1xyXG5cclxuICAgICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCByb290IGVsZW1lbnQgd2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbW92ZWRcclxuICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yb290KSB7XHJcbiAgICAgICAgdGhpcy5yb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5nZXRJbmZvKHRoaXMuc3VydmV5SUQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLnN1cnZleSA9IHJlc3VsdDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTmFtZSA9IFwiVGV4dEJveFdpdGhFeHRlcm5hbFVSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5MYWJlbEtleSA9IFwiRXh0ZXJuYWxfVVJMXCJcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2hcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLkVuYWJsZUNvcHlUb0NsaXBib2FyZCA9IHRydWVcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlZhbHVlID0gdGhpcy5zdXJ2ZXkuZXh0ZXJuYWxVUkxcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTmFtZSA9IFwiVGV4dEJveFdpdGhJbnRlcm5hbFVSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5MYWJlbEtleSA9IFwiSW50ZXJuYWxfVVJMXCJcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2hcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLkVuYWJsZUNvcHlUb0NsaXBib2FyZCA9IHRydWVcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlZhbHVlID0gdGhpcy5zdXJ2ZXkuaW50ZXJuYWxVUkxcclxuXHJcblxyXG4gICAgICB0aGlzLmJyZWFkQ3J1bWIgPSBbXTtcclxuICAgICAgdGhpcy5icmVhZENydW1iLnB1c2gobmV3IEJyZWFkQ3J1bWIodGhpcy5sKFwiSG9tZVwiKSwgZmFsc2UsIFwiL1wiKSwgbmV3IEJyZWFkQ3J1bWIodGhpcy5sKFwiU3VydmV5c19IZWFkZXJcIiksIGZhbHNlLCAnLi4vLi4vJyksIG5ldyBCcmVhZENydW1iKHRoaXMubChcIlN1cnZleV9EZXRhaWxzXCIpLCB0cnVlKSk7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMgPSBuZXcgUGFnZUhlYWRlck9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5UaXRsZVZhbHVlID10aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5TZWFyY2hUZXh0Qm94LkFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkJyZWFkQ3J1bWIuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5CcmVhZENydW1iLkJyZWFkQ3J1bWJJdGVtcyA9IHRoaXMuYnJlYWRDcnVtYjtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0odGhpcy5sKFwiRWRpdFwiKSwgXCIvYXNzZXRzL2ltYWdlcy9FZGl0LnN2Z1wiLCB0aGlzLnNob3dFZGl0TW9kYWwpLFxyXG4gICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0odGhpcy5sKFwiRGVsZXRlXCIpLCAnL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJywgdGhpcy5zaG93RGVsZXRlTW9kYWwpLFxyXG4gICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0odGhpcy5sKFwiRXhwb3J0XCIpLCAnL2Fzc2V0cy9pbWFnZXMvZXhwb3J0LnN2ZycsIHRoaXMuZXhwb3J0KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zdXJ2ZXkudG90YWxRdWVzdGlvbkNvdW50ID4gMClcclxuICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2goXHJcbiAgICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKCB0aGlzLmwoXCJQcmV2aWV3XCIpLCAnL2Fzc2V0cy9pbWFnZXMvdmlld3Muc3ZnJywgdGhpcy5wcmV2aWV3U3VydmV5KSk7XHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1B1Ymxpc2hlZC50b0xvY2FsZUxvd2VyQ2FzZSgpKVxyXG4gICAgICAgIHRoaXMuY2FuVGFrZVN1cnZleSA9IHRydWVcclxuXHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgICB8fCB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0Nsb3NlZC50b0xvY2FsZUxvd2VyQ2FzZSgpKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIlB1Ymxpc2hcIiksICcvYXNzZXRzL2ltYWdlcy9TdWJtaXQuc3ZnJywgdGhpcy5zaG93UHVibGlzaE1vZGFsKSlcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIlVuUHVibGlzaFwiKSwgJy9hc3NldHMvaW1hZ2VzL3VubGluay5zdmcnLCB0aGlzLnNob3dVblB1Ymxpc2hNb2RhbCksKVxyXG5cclxuICAgICAgdGhpcy5FTiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCk7XHJcbiAgICAgIHRoaXMubG9hZFF1ZXN0aW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLmxvYWRTdWJtaXNzaW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMuc3VydmV5LmxvY2FsaXplZFRpdGxlXHJcbiAgICAgIHRoaXMudXBkYXRlUGFnZVRpdGxlKHRoaXMuc3VydmV5LmxvY2FsaXplZFRpdGxlKTtcclxuICAgICAgdGhpcy5sb2FkSW5mbyA9IHRydWU7XHJcblxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBzaG93RWRpdE1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5lZGl0TW9kYWwuc2hvd0VkaXRNb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuICB9XHJcbiAgc2hvd0RlbGV0ZU1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG5cclxuICB9XHJcbiAgc2hvd0VkaXRRdWVzdGlvbk1vZGFsKGlkLGlzVmlld09ubHkpIHtcclxuICAgIHRoaXMuZWRpdFF1ZXN0aW9uTW9kYWwuZWRpdE1vZGFsKGlkLCB0aGlzLnN1cnZleS5hdWRpZW5jZUl0ZW1JRCxpc1ZpZXdPbmx5KTtcclxuXHJcbiAgfVxyXG4gIHNob3dBZGRRdWVzdGlvbk1vZGFsKCkge1xyXG4gICAgdGhpcy5BZGRRdWVzdGlvbkNvbXBvbmVudC5hZGRNb2RhbCh0aGlzLnN1cnZleUlELCB0aGlzLnN1cnZleS5hdWRpZW5jZUl0ZW1JRCk7XHJcblxyXG4gIH1cclxuICBzaG93RGVsZXRlUXVlc3Rpb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVRdWVzdGlvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwoaWQpO1xyXG5cclxuICB9XHJcbiAgc2hvd1B1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkUHVibGlzaE1vZGFsLnB1Ymxpc2hNb2RhbCh0aGlzLnN1cnZleUlELCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0KTtcclxuXHJcbiAgfVxyXG4gIHNob3dVblB1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkVW5QdWJsaXNoTW9kYWwuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG5cclxuICB9XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0W2luZGV4XS5kaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZS51cGRhdGVEaXNwbGF5T3JkZXIodGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJldmlld1N1cnZleSA9ICgpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vLi4vaW5mby9wcmV2aWV3JywgdGhpcy5zdXJ2ZXlJRCwgdGhpcy5zdXJ2ZXkuYXVkaWVuY2VJdGVtSURdLCB7cmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZX0pO1xyXG4gIH1cclxuICB0YWtlU3VydmV5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8uLi9pbmZvL3N1Ym1pc3Npb24nLCB0aGlzLnN1cnZleUlEXSwge3JlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGV9KTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1cyhzdGF0dXMpIHtcclxuICAgIHZhciBTdGF0dXNlcyA9ICcnO1xyXG4gICAgc3dpdGNoIChzdGF0dXMudG9Mb2NhbGVMb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fRHJhZnQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkRlbGV0ZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0Nsb3NlZC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLWRhbmdlcic7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbkRlbGV0ZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fUHVibGlzaGVkLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc3VjY2Vzcyc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbkRlbGV0ZVF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fVXBjb21pbmcudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1zdWNjZXNzJztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0YXR1c2VzO1xyXG4gIH1cclxuXHJcbiAgbG9hZFF1ZXN0aW9uU2VjdGlvbigpIHtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSA9IFwiU2VhcmNoVGV4dEJveFwiO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlRyaW1UZXh0T25DaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMubChcIlNlYXJjaFwiKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGZvcm0tY29udHJvbC1zb2xpZCBzZWFyY2gtYm94XCI7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkljb24gPSBcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Z1wiXHJcblxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5WYWx1ZSA9IHRoaXMuc3VydmV5SUQ7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuXHJcblxyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDAwO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuQWN0aW9uUG9zdFVSTCA9IHRoaXMuYXBpUXVlc3Rpb25VUkwgKyAnR2V0QWxsUXVlc3Rpb25zJztcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkZpbHRlcnMgPSBbdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlcl07XHJcblxyXG5cclxuXHJcbiAgfVxyXG4gIHNldFF1ZXN0aW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICBsZXQgb3ZlcnZpZXdRdWVzdGlvbnMgPSB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbiB8fCBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdCB8fCBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0KVxyXG4gICAgaWYgKG92ZXJ2aWV3UXVlc3Rpb25zLmxlbmd0aCA+IDApXHJcbiAgICAgIHRoaXMubG9hZFN1cnZleU92ZXJ2aWV3KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25TdWNjZXNzSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UodGhpcy5sKFwiUmVjb3JkVXBkYXRlZFwiKSwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWNjZXNzRGVsZXRlSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UodGhpcy5sKFwiUmVjb3JkRGVsZXRlZFwiKSwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiLi4vLi4vXCJdLCB7cmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZX0pO1xyXG4gIH1cclxuXHJcbiAgb25TdWNjZXNzQWRkUXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLmwoXCJSZWNvcmRBZGRlZFwiKSwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH1cclxuICBvblN1Y2Nlc3NFZGl0UXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLmwoXCJSZWNvcmRVcGRhdGVkXCIpLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Y2Nlc3NEZWxldGVRdWVzdGlvbkhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZERlbGV0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2hvd0RlbGV0ZVN1Ym1pc3Npb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dEZWxldGVNb2RhbChpZCk7XHJcblxyXG4gIH1cclxuICBzaG93RWxpbWluYXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLmVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0VsaW1pbmF0ZU1vZGFsKGlkKTtcclxuICB9XHJcbiAgc2hvd1VuRWxpbWluYXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLnVuRWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93VW5FbGltaW5hdGVNb2RhbChpZCk7XHJcbiAgfVxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLmwoXCJSZWNvcmREZWxldGVkXCIpLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB0aGlzLmxvYWRTdWJtaXNzaW9uU2VjdGlvbigpO1xyXG4gIH1cclxuICBsb2FkU3VibWlzc2lvblNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWUgPSBcIlNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UcmltVGV4dE9uQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuUGxhY2Vob2xkZXIgPSB0aGlzLmwoXCJTZWFyY2hcIik7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkV4dHJhQ2xhc3NlcyA9IFwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBmb3JtLWNvbnRyb2wtc29saWQgc2VhcmNoLWJveFwiO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5JY29uID0gXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3NlYXJjaC5zdmdcIlxyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIlNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lID0gXCJTdXJ2ZXlJRFwiO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuVmFsdWUgPSB0aGlzLnN1cnZleUlEO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJTdXJ2ZXlJRFwiO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuXHJcblxyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLlBhZ2VTaXplID0gMTA7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLkRpc2FibGVCbG9ja1VJID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuQWN0aW9uUG9zdFVSTCA9IHRoaXMuc3VydmV5U2VydmljZS5hcGlVUkwgKyAnR2V0QWxsU3VydmV5U3VibWlzc2lvbic7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW3RoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZV07XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLkZpbHRlcnMgPSBbdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIsIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXJdO1xyXG5cclxuXHJcblxyXG4gIH1cclxuICBzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvblJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuc2hvd1N1Ym1pc3Npb25QYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIGxvYWRTdXJ2ZXlPdmVydmlldygpIHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5nZXRTdXJ2ZXlPdmVydmlldyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHQgPSByZXMgYXMgYW55XHJcbiAgICAgIHRoaXMuc2hvd092ZXJ2aWV3ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5sb2FkQ2hhcnQodGhpcy5xdWVzdGlvbk92ZXJ2aWV3UmVzdWx0WzBdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBleHBvcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2VcclxuICAgICAgLmV4cG9ydCh0aGlzLnN1cnZleUlEKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmRvd25sb2FkKChyZXN1bHQgYXMgYW55KSBhcyBCbG9iLCB0aGlzLnBhZ2VUaXRsZSArIFwiLnhsc3hcIik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoSW5RdWVzdGlvbkxpc3QodmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSlcclxuICAgICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbC5maWx0ZXIoaXRlbSA9PiBpdGVtLmxvY2FsaXplZFRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS10b29sYmFyLS0+XHJcbjxkaXYgKm5nSWY9XCJsb2FkSW5mb1wiPlxyXG4gIDxiYnNmLXBhZ2UtaGVhZGVyLWNvbXBvbmVudCBbb3B0aW9uc109XCJwYWdlSGVhZGVyT3B0aW9uc1wiPjwvYmJzZi1wYWdlLWhlYWRlci1jb21wb25lbnQ+XHJcbjwvZGl2PlxyXG48IS0tZW5kIHRvb2xiYXItLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci14eGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1jb250YWluZXJcIiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZlcnktZGF0ZSBib3JkZXItMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYm94ZXMgYWxpZ24taXRlbXMtYmFzZWxpbmVcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JUb29sdGlwPVwie3tsKCdEYXRlJyl9fVwiIGNsYXNzPVwiaWNvbi1ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jYWxlbmRhci5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1cnZleS1jb3VudGVyLXRpdGxlXCIgKm5nSWY9XCJzdXJ2ZXkuc3RhcnREYXRlPT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICB7e2woJ05vdFN0YXJ0ZWRZZXQnKX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGUgZC1mbGV4IGZsZXgtc3RhY2tcIiAqbmdJZj1cInN1cnZleS5zdGFydERhdGUhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgIHt7c3VydmV5LnN0YXJ0RGF0ZSB8c3VydmV5RGF0ZX19IC0ge3tzdXJ2ZXkuZW5kRGF0ZSE9bnVsbD8oc3VydmV5LmVuZERhdGV8c3VydmV5RGF0ZSk6XCJcIn19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgKm5nSWY9XCJzdXJ2ZXkuZW5kRGF0ZT09bnVsbFwiPnt7bCgnSGFzTm9FbmQnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiIFtuZ0NsYXNzXT1cImdldFN0YXR1cyhzdXJ2ZXkuc3RhdHVzSXRlbUlEKVwiPnt7c3VydmV5LmxvY2FsaXplZFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCI+e3tzdXJ2ZXkubG9jYWxpemVkQXVkaWVuY2V9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY2FyZC1kYXRhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94ICpuZ0lmPVwiY2FuVGFrZVN1cnZleSYmIChzdXJ2ZXkuYXVkaWVuY2VJdGVtSUQ9PUF1ZGllbmNlVHlwZUVudW0uSW50ZXJuYWx8fHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5Cb3RoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlRleHRCb3hXaXRoSW50ZXJuYWxVUkxcIiBbZ3JvdXBdPVwidXJsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5FeHRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiVGV4dEJveFdpdGhFeHRlcm5hbFVSTFwiIFtncm91cF09XCJ1cmxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cImNhcmQtZGVzY3JpcHRpb25cIiAqbmdJZj1cInN1cnZleS5sb2NhbGl6ZWREZXNjXCI+XHJcbiAgICAgICAge3tzdXJ2ZXkubG9jYWxpemVkRGVzY319XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tbWFyZ2luLWJvdHRvbVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1jdXN0b21cIj5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtXCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIG5nYk5hdkxpbms+XHJcbiAgICAgICAgICAgIDxoND5cclxuICAgICAgICAgICAgICB7e2woJ1F1ZXN0aW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnMtc2VhcmNoIHBhZ2Utc3ViaGVhZGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlNlYXJjaFRleHRCb3hPcHRpb25zXCIgW2dyb3VwXT1cImZpbHRlcnNRdWVzdGlvbkZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT25DaGFuZ2UpPVwic2VhcmNoSW5RdWVzdGlvbkxpc3QoJGV2ZW50KVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJTdXJ2ZXlJRE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiY2FuQWRkUXVlc3Rpb25cIiBjbGFzcz1cImJ0biBidG4tYnJhbmQgYnRuLXNtIHN1YmhlYWRlci1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FkZFF1ZXN0aW9uTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2woJ0FkZCcpfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJwYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JOYXZDb250ZW50IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbi1pbmZvXCIgW2Nka0RyYWdEaXNhYmxlZF09XCJjYW5UYWtlU3VydmV5XCIgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luZ1F1ZXN0aW9uUmVzdWx0OyBsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTI1cHggbWUtNFwiIGNka0RyYWdIYW5kbGUgKm5nSWY9XCIhY2FuVGFrZVN1cnZleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi03XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvcmVvcmRlci5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ1R5cGUnKX19XCI+e3tpdGVtLmxvY2FsaXplZFF1ZXN0aW9uVHlwZUl0ZW19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ0F1ZGllbmNlJyl9fVwiPnt7aXRlbS5sb2NhbGl6ZWRBdWRpZW5jZVR5cGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWJyYW5kLWxpZ2h0IG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc1JlbGF0ZWRUb1N1cnZleVF1ZXN0aW9uXCI+e3tsKCdMaW5rZWQnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiICpuZ0lmPVwiIWl0ZW0uaXNWaXNpYmxlXCIgbmdiVG9vbHRpcD1cInt7bCgnTm90VmlzaWJsZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIk5vdFZpc2libGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImRyb3Bkb3duLWN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIkVOID8gJ2JvdHRvbS1yaWdodCcgOiAnYm90dG9tLWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZS1jdXN0b20gYnRuIGJ0bi1jbGVhclwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jYXJkLWRyb3Bkb3duLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiEoY2FuRWRpdFF1ZXN0aW9uJiZjYW5EZWxldGVRdWVzdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFF1ZXN0aW9uTW9kYWwoaXRlbS5pRF9HVUlELHRydWUpXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woXCJEZXRhaWxzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuRWRpdFF1ZXN0aW9uXCIgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woXCJFZGl0XCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiY2FuRGVsZXRlUXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlUXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQpXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCI+PC9zcGFuPiB7e2woXCJEZWxldGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWNvdW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1cnZleS1jb3VudGVyLXRpdGxlXCI+e3tpdGVtLmxvY2FsaXplZFRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWJyYW5kIGJhZGdlLXNxdWFyZSBtcy0yIG1lLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ1Njb3JlJyl9fVwiPnt7aXRlbS50b3RhbFNjb3JlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFF1ZXN0aW9uTGlzdGluZ1Jlc3VsdCgkZXZlbnQpXCIgW29wdGlvbnNdPVwicGFnaW5nUXVlc3Rpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiICNwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50PjwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLW5vLXJlc3VsdHMgKm5nSWY9XCJwYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGggPT0gMFwiPjwvYXBwLW5vLXJlc3VsdHM+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnU3VibWlzc2lvbnMnKX19XHJcbiAgICAgICAgICAgIDwvaDQ+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taW5mb1wiIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnMtc2VhcmNoIHBhZ2Utc3ViaGVhZGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlNlYXJjaFRleHRCb3hPcHRpb25zXCIgW2dyb3VwXT1cImZpbHRlcnNTdWJtaXNzaW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJTdXJ2ZXlJRE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiIFtoaWRkZW5dPVwicGFnaW5nU3VibWlzc2lvblJlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtY3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4ge3tsKCdOYW1lJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ0VtYWlsJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1R5cGUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnQ3JlYXRlZCcpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdTY29yZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS1hY3Rpb25cIj57e2woXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luZ1N1Ym1pc3Npb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtY2xhbXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmxvY2FsaXplZE5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1kYW5nZXIgbXgtMlwiICpuZ0lmPVwiaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woJ0VsaW1pbmF0ZWQnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmVtYWlsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmlzSW50ZXJuYWxVc2VyPyBsKCdJbnRlcm5hbFVzZXJzJyk6bCgnRXh0ZXJuYWxVc2VycycpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5jcmVhdGVkfHN1cnZleURhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0udG90YWxTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiVG9vbHRpcD1cInt7bCgnUHJldmlldycpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycuLi8uLi9pbmZvL3Jlc3VsdCcsIGl0ZW0uaURfR1VJRF1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvYW5zd2Vycy5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e3RoaXMubCgnRWxpbWluYXRlSGludCcpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd0VsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGlja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvdW5saW5rLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3t0aGlzLmwoJ1VuRWxpbWluYXRlJyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93VW5FbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwoaXRlbS5pRF9HVUlEKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvbGluay5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JUb29sdGlwPVwie3tsKCdEZWxldGUnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dEZWxldGVTdWJtaXNzaW9uTW9kYWwoaXRlbS5pRF9HVUlEKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0U3VibWlzc2lvbkxpc3RpbmdSZXN1bHQoJGV2ZW50KVwiIFtvcHRpb25zXT1cInBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImZpbHRlcnNTdWJtaXNzaW9uRm9ybVwiICNwYWdpbmdTdWJtaXNzaW9uVmlld0VsZW1lbnQ+PC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cyAqbmdJZj1cInBhZ2luZ1N1Ym1pc3Npb25SZXN1bHQubGVuZ3RoID09IDBcIj48L2FwcC1uby1yZXN1bHRzPlxyXG5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nSWY9XCJzaG93T3ZlcnZpZXdcIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluayAoY2xpY2spPVwibG9hZFN1cnZleU92ZXJ2aWV3KClcIj5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bChcIk92ZXJ2aWV3XCIpIH19XHJcbiAgICAgICAgICAgIDwvaDQ+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taW5mb1wiIG5nYk5hdkNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXRpdGxlXCI+IHt7bChcIlF1ZXN0aW9uc1wiKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2LXBpbGxzIGN1c3RvbS1uYXZzXCIgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW09XCJ7e2l0ZW0ubG9jYWxpemVkVGl0bGV9fVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHRcIiAoY2xpY2spPVwibG9hZENoYXJ0KGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3tpdGVtLmxvY2FsaXplZFRpdGxlfX08L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXRpdGxlXCI+e3tsKFwiT3ZlcnZpZXdcIikgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiY2hhcnRkaXZcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwMHB4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGUtbG9nb1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC10aXRsZVwiPnt7bChcIlNjb3JlXCIpIH19IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjaGFydE92ZXJ2aWV3XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MDBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRlLWxvZ29cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcblxyXG5cclxuICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuICA8YXBwLWVkaXQtc3VydmV5ICNlZGl0TW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC1lZGl0LXN1cnZleT5cclxuICA8YXBwLWRlbGV0ZS1zdXJ2ZXkgI2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzRGVsZXRlSGFuZGxlclwiPjwvYXBwLWRlbGV0ZS1zdXJ2ZXk+XHJcbiAgPGFwcC1hZGQtcXVlc3Rpb24gI2FkZFF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCIgW29uU3VjY2Vzc0FkZEhhbmRsZXJdPVwib25TdWNjZXNzQWRkUXVlc3Rpb25IYW5kbGVyXCI+PC9hcHAtYWRkLXF1ZXN0aW9uPlxyXG4gIDxhcHAtZWRpdC1xdWVzdGlvbiAjZWRpdFF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCIgW29uU3VjY2Vzc0VkaXRIYW5kbGVyXT1cIm9uU3VjY2Vzc0VkaXRRdWVzdGlvbkhhbmRsZXJcIj48L2FwcC1lZGl0LXF1ZXN0aW9uPlxyXG4gIDxhcHAtZGVsZXRlLXF1ZXN0aW9uICNkZWxldGVRdWVzdGlvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1F1ZXN0aW9uRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZVF1ZXN0aW9uSGFuZGxlclwiPjwvYXBwLWRlbGV0ZS1xdWVzdGlvbj5cclxuICA8YXBwLXB1Ymxpc2gtc3VydmV5ICNhZGRQdWJsaXNoTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIiAqbmdJZj1cImxvYWRJbmZvXCIgW3Nob3dUb2dnbGVdPVwic3VydmV5LmlzU2hvd1RvZ2dsZU9mU2NvcmVSZXN1bHRBZnRlclN1Ym1pc3Npb25cIj5cclxuICA8L2FwcC1wdWJsaXNoLXN1cnZleT5cclxuICA8YXBwLXVucHVibGlzaC1zdXJ2ZXkgI2FkZFVuUHVibGlzaE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+XHJcbiAgPC9hcHAtdW5wdWJsaXNoLXN1cnZleT5cclxuICA8YXBwLWRlbGV0ZS1zdWJtaXNzaW9uICNkZWxldGVTdWJtaXNzaW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzRGVsZXRlSGFuZGxlclN1Ym1pc3Npb25cIj48L2FwcC1kZWxldGUtc3VibWlzc2lvbj5cclxuICA8YXBwLWVsaW1pbmF0ZS1zdWJtaXNzaW9uICNlbGltaW5hdGVNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+PC9hcHAtZWxpbWluYXRlLXN1Ym1pc3Npb24+XHJcbiAgPGFwcC11bkVsaW1pbmF0ZS1zdWJtaXNzaW9uICN1bkVsaW1pbmF0ZU1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLXVuRWxpbWluYXRlLXN1Ym1pc3Npb24+XHJcbiJdfQ==