tango-app-ui-analyse-trax 3.3.1-alpha.2 → 3.3.1-alpha.21

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 (47) hide show
  1. package/esm2022/lib/components/action-centre/action-centre.component.mjs +38 -0
  2. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +127 -118
  3. package/esm2022/lib/components/checklist/checklist.component.mjs +9 -13
  4. package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +97 -61
  5. package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +12 -0
  6. package/esm2022/lib/components/custom-select/custom-select.component.mjs +155 -0
  7. package/esm2022/lib/components/dashboard/dashboard.component.mjs +48 -32
  8. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +124 -38
  9. package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +17 -24
  10. package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
  11. package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
  12. package/esm2022/lib/components/flags/flags.component.mjs +56 -17
  13. package/esm2022/lib/components/flags-info/flags-info.component.mjs +46 -10
  14. package/esm2022/lib/components/flags-info/flags-info.interface.mjs +1 -1
  15. package/esm2022/lib/components/gallery/gallery.component.mjs +636 -60
  16. package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +152 -8
  17. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +8 -4
  18. package/esm2022/lib/components/reports/reports.component.mjs +62 -20
  19. package/esm2022/lib/components/reports/reports.interface.mjs +1 -1
  20. package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +6 -3
  21. package/esm2022/lib/services/trax.service.mjs +44 -11
  22. package/esm2022/lib/tango-analyse-trax-routing.module.mjs +44 -14
  23. package/esm2022/lib/tango-analyse-trax.module.mjs +19 -4
  24. package/fesm2022/tango-app-ui-analyse-trax.mjs +1714 -464
  25. package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
  26. package/lib/components/action-centre/action-centre.component.d.ts +17 -0
  27. package/lib/components/add-checklist/add-checklist.component.d.ts +6 -3
  28. package/lib/components/checklist-configure/checklist-configure.component.d.ts +1 -0
  29. package/lib/components/checklistlayout/checklistlayout.component.d.ts +5 -0
  30. package/lib/components/custom-select/custom-select.component.d.ts +33 -0
  31. package/lib/components/dashboard/dashboard.component.d.ts +7 -2
  32. package/lib/components/dashboard-info/dashboard-info.component.d.ts +12 -2
  33. package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +2 -2
  34. package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
  35. package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
  36. package/lib/components/flags/flags.component.d.ts +13 -4
  37. package/lib/components/flags-info/flags-info.component.d.ts +4 -3
  38. package/lib/components/flags-info/flags-info.interface.d.ts +2 -2
  39. package/lib/components/gallery/gallery.component.d.ts +38 -6
  40. package/lib/components/managechecklist/managechecklist.component.d.ts +24 -2
  41. package/lib/components/reactive-select/reactive-select.component.d.ts +3 -2
  42. package/lib/components/reports/reports.component.d.ts +10 -4
  43. package/lib/components/reports/reports.interface.d.ts +1 -0
  44. package/lib/components/traxpopup/traxpopup.component.d.ts +1 -0
  45. package/lib/services/trax.service.d.ts +13 -2
  46. package/lib/tango-analyse-trax.module.d.ts +12 -7
  47. package/package.json +1 -1
@@ -31,31 +31,9 @@ export class ChecklistConfigureComponent {
31
31
  dayjs = dayjs;
32
32
  selectedDates;
33
33
  minDate;
34
- // timeconfig: any = "Repeating";
35
- // everymonth: any = "thirdofeverymonth";
36
- // particularweek: any = "week";
37
- // Onetime: boolean = false
38
- // Repeating: boolean = true;
39
- // firstofevrymonth: boolean = false;
40
- // thirdofeverymonth: boolean = true;
41
- // selectText: string = 'Select All'
42
- // selectstoreText: string = 'Select All'
43
- // scheduleFilter: string = 'day';
44
- // livetickets: boolean = false;
45
- // visible = true;
46
- // selectable = true;
47
- // removable = true;
48
- // addOnBlur = true;
49
- // global_all_userlist: any
50
- // saveddata: any;
51
- // storeopenandclosedetection: boolean
52
34
  type = 'custom';
53
- // id: any;
54
35
  obj;
55
36
  configData;
56
- // scheduleStartTime: any;
57
- // scheduleEndTime: any;
58
- // usage_exceeds: any;
59
37
  tableData = [];
60
38
  tableLoading = false;
61
39
  tableDisplayedColumns = ["name", "role", "email"];
@@ -100,10 +78,7 @@ export class ChecklistConfigureComponent {
100
78
  sections = [];
101
79
  MonthweekNumber;
102
80
  popupCount = 0;
103
- // emailList: any = [];
104
81
  validTime = true;
105
- // rangeStart:any;
106
- // rangeEnd:any;
107
82
  disabledQuestion = false;
108
83
  showconfig = true;
109
84
  repeatType = '';
@@ -111,9 +86,6 @@ export class ChecklistConfigureComponent {
111
86
  selectedDate = [];
112
87
  dates = Array.from({ length: 31 }, (_, i) => i + 1); // Array from 1 to 31
113
88
  selectedDateList = [];
114
- // refreshPicker:boolean = false
115
- // zones: any;
116
- // selectedDateRange:any={}
117
89
  selectedStartDate;
118
90
  minStartDate;
119
91
  selectedEndDate;
@@ -121,6 +93,7 @@ export class ChecklistConfigureComponent {
121
93
  clientId;
122
94
  alertUsers = [];
123
95
  zoneList = [];
96
+ loading = true;
124
97
  detach = new Subject();
125
98
  destroy$ = new Subject();
126
99
  constructor(changedetector, router, route, dialog, SopService, toast, gs) {
@@ -137,27 +110,27 @@ export class ChecklistConfigureComponent {
137
110
  next: (data) => {
138
111
  if (data) {
139
112
  this.clientId = data.client;
113
+ this.router.queryParams.subscribe(params => {
114
+ if (typeof params.type == 'undefined') {
115
+ this.obj = {
116
+ checkListId: params.checkListId,
117
+ clientId: this.clientId
118
+ };
119
+ this.type = 'custom';
120
+ this.disabledQuestion = params.disabledQuestion;
121
+ }
122
+ else {
123
+ this.obj = {
124
+ type: params.type,
125
+ clientId: this.clientId
126
+ };
127
+ this.type = params.type;
128
+ }
129
+ });
130
+ this.GetConfig();
131
+ this.getClientUser();
132
+ this.getZoneList();
140
133
  }
141
- this.router.queryParams.subscribe(params => {
142
- if (typeof params.type == 'undefined') {
143
- this.obj = {
144
- checkListId: params.checkListId,
145
- clientId: this.clientId
146
- };
147
- this.type = 'custom';
148
- this.disabledQuestion = params.disabledQuestion;
149
- }
150
- else {
151
- this.obj = {
152
- type: params.type,
153
- clientId: this.clientId
154
- };
155
- this.type = params.type;
156
- }
157
- });
158
- this.getClientUser();
159
- this.getZoneList();
160
- this.GetConfig();
161
134
  },
162
135
  });
163
136
  }
@@ -166,10 +139,12 @@ export class ChecklistConfigureComponent {
166
139
  this.detach.complete();
167
140
  }
168
141
  GetConfig() {
142
+ this.loading = true;
169
143
  this.monthDate = '';
170
144
  this.monthDay = '';
171
145
  this.SopService.getconfig(this.obj).pipe(takeUntil(this.detach)).subscribe((res) => {
172
146
  if (res && res.code == 200) {
147
+ this.loading = false;
173
148
  if (res.data.checkListDetails.checkListType) {
174
149
  this.checklistId = res.data.checkListDetails._id;
175
150
  this.type = res.data.checkListDetails.checkListType;
@@ -280,7 +255,6 @@ export class ChecklistConfigureComponent {
280
255
  const wsname = wb.SheetNames[0];
281
256
  const ws = wb.Sheets[wsname];
282
257
  data = XLSX.utils.sheet_to_json(ws);
283
- console.log(data);
284
258
  if (!data.length) {
285
259
  this.toast.getErrorToast('Please Upload a Valid file.');
286
260
  return;
@@ -327,7 +301,6 @@ export class ChecklistConfigureComponent {
327
301
  city: element?.city
328
302
  });
329
303
  });
330
- console.log(this.userData, 'data');
331
304
  // console.log(storeNotExists);
332
305
  // console.log(userNotExists);
333
306
  if (error.length) {
@@ -423,14 +396,19 @@ export class ChecklistConfigureComponent {
423
396
  let popupcontent;
424
397
  let store = [];
425
398
  let location = [];
399
+ let inactiveStore = [];
426
400
  store = res.data.store.filter((item) => {
427
401
  return item.message == '';
428
402
  });
403
+ inactiveStore = res.data.store.filter((item) => {
404
+ return item.message == 'store is inactive';
405
+ });
429
406
  location = res.data.store.filter((item) => {
430
407
  return item.message != '';
431
408
  });
432
- store = store.map((item) => item.store);
433
- location = location.map((item) => item.store);
409
+ store = [...new Set(store.map((item) => item.store))];
410
+ inactiveStore = [...new Set(inactiveStore.map((item) => item.store))];
411
+ location = [...new Set(location.map((item) => item.store))];
434
412
  if (store.length) {
435
413
  popupcontent = {
436
414
  displayprop: false,
@@ -442,6 +420,16 @@ export class ChecklistConfigureComponent {
442
420
  location: location.join()
443
421
  };
444
422
  }
423
+ else if (inactiveStore.length) {
424
+ popupcontent = {
425
+ displayprop: false,
426
+ imagesrc: '<svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" viewBox="0 0 56 56" fill="none"><rect x="4" y="4" width="48" height="48" rx="24" fill="#FEF0C7"/><path d="M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z" stroke="#DC6803" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><rect x="4" y="4" width="48" height="48" rx="24" stroke="#FFFAEB" stroke-width="8"/></svg>',
427
+ title: `Inactive Store found in uploaded file`,
428
+ content: `Inactive stores found in the .csv. Please activate or skip them to proceed to assign.`,
429
+ buttontype: 'Activestore',
430
+ subtitle: inactiveStore.join(', '),
431
+ };
432
+ }
445
433
  else {
446
434
  if (location.length) {
447
435
  let userDataCopy = [...this.userData];
@@ -475,7 +463,10 @@ export class ChecklistConfigureComponent {
475
463
  dialogRef.componentInstance.data = popupcontent;
476
464
  dialogRef.result.then((result) => {
477
465
  if (result == 'confirmStore') {
478
- this.route.navigateByUrl(`manage/store`);
466
+ this.route.navigateByUrl(`manage/stores/addition-method`);
467
+ }
468
+ if (result == 'activeStore') {
469
+ this.route.navigateByUrl(`manage/stores`);
479
470
  }
480
471
  validate = true;
481
472
  if (result == 'skip') {
@@ -501,7 +492,7 @@ export class ChecklistConfigureComponent {
501
492
  let userDataCopy = [...this.userData];
502
493
  this.userData = [];
503
494
  userDataCopy.forEach((item) => {
504
- if (!store.includes(item.storeName)) {
495
+ if (!store.includes(item.storeName) && !inactiveStore.includes(item.storeName)) {
505
496
  this.userData.push(item);
506
497
  }
507
498
  });
@@ -600,6 +591,7 @@ export class ChecklistConfigureComponent {
600
591
  let popupcontent;
601
592
  let store = [];
602
593
  let location = [];
594
+ let inactiveStore = [];
603
595
  if (res?.data?.user?.length) {
604
596
  popupcontent = {
605
597
  displayprop: false,
@@ -614,11 +606,15 @@ export class ChecklistConfigureComponent {
614
606
  store = res.data.store.filter((item) => {
615
607
  return item.message == '';
616
608
  });
609
+ inactiveStore = res.data.store.filter((item) => {
610
+ return item.message == 'store is inactive';
611
+ });
617
612
  location = res.data.store.filter((item) => {
618
613
  return item.message != '';
619
614
  });
620
- store = store.map((item) => item.store);
621
- location = location.map((item) => item.store);
615
+ store = [...new Set(store.map((item) => item.store))];
616
+ inactiveStore = [...new Set(inactiveStore.map((item) => item.store))];
617
+ location = [...new Set(location.map((item) => item.store))];
622
618
  if (store.length) {
623
619
  popupcontent = {
624
620
  displayprop: false,
@@ -630,6 +626,16 @@ export class ChecklistConfigureComponent {
630
626
  location: location.join()
631
627
  };
632
628
  }
629
+ else if (inactiveStore.length) {
630
+ popupcontent = {
631
+ displayprop: false,
632
+ imagesrc: '<svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" viewBox="0 0 56 56" fill="none"><rect x="4" y="4" width="48" height="48" rx="24" fill="#FEF0C7"/><path d="M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z" stroke="#DC6803" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><rect x="4" y="4" width="48" height="48" rx="24" stroke="#FFFAEB" stroke-width="8"/></svg>',
633
+ title: `Inactive Store found in uploaded file`,
634
+ content: `Inactive stores found in the .csv. Please activate or skip them to proceed to assign.`,
635
+ buttontype: 'Activestore',
636
+ subtitle: inactiveStore.join(', '),
637
+ };
638
+ }
633
639
  else {
634
640
  if (location.length) {
635
641
  let userDataCopy = [...this.userData];
@@ -664,6 +670,9 @@ export class ChecklistConfigureComponent {
664
670
  dialogRef.componentInstance.data = popupcontent;
665
671
  dialogRef.result.then((result) => {
666
672
  if (result == 'confirmStore') {
673
+ this.route.navigateByUrl(`manage/stores/addition-method`);
674
+ }
675
+ if (result == 'activeStore') {
667
676
  this.route.navigateByUrl(`manage/stores`);
668
677
  }
669
678
  if (result?.message == 'confirm' || result == 'skip') {
@@ -700,7 +709,7 @@ export class ChecklistConfigureComponent {
700
709
  }
701
710
  if (res?.data?.store?.length) {
702
711
  userDataCopy.forEach((item) => {
703
- if (!store.includes(item.storeName)) {
712
+ if (!store.includes(item.storeName) && !inactiveStore.includes(item.storeName)) {
704
713
  this.userData.push(item);
705
714
  }
706
715
  });
@@ -813,9 +822,11 @@ export class ChecklistConfigureComponent {
813
822
  this.recordsTotal = res.data.count;
814
823
  if (this.recordsTotal < 5) {
815
824
  this.paginationSize = [this.recordsTotal];
825
+ this.size = this.recordsTotal;
816
826
  }
817
827
  else {
818
828
  this.paginationSize = [5, 10, 15, 20];
829
+ this.size = 5;
819
830
  }
820
831
  this.tableData.forEach((item) => {
821
832
  if (item.checkFlag && !this.configData.checkListDetails.assignedUsers.includes(item.id) && !this.removeUsers.includes(item.id))
@@ -878,6 +889,7 @@ export class ChecklistConfigureComponent {
878
889
  id: this.checklistId
879
890
  };
880
891
  this.SopService.getUserDetails(params).pipe(takeUntil(this.detach)).subscribe((res) => {
892
+ this.tableLoading = false;
881
893
  if (res == null) {
882
894
  this.showImage = true;
883
895
  if (this.tableFilter.length) {
@@ -898,6 +910,14 @@ export class ChecklistConfigureComponent {
898
910
  });
899
911
  this.recordsCount = this.tableData.length;
900
912
  this.recordsTotal = res.data.count;
913
+ if (this.recordsTotal < 5) {
914
+ this.paginationSize = [this.recordsTotal];
915
+ this.size = this.recordsTotal;
916
+ }
917
+ else {
918
+ this.paginationSize = [5, 10, 15, 20];
919
+ this.size = 5;
920
+ }
901
921
  if (count == this.recordsCount) {
902
922
  this.selectAll = true;
903
923
  }
@@ -935,6 +955,14 @@ export class ChecklistConfigureComponent {
935
955
  });
936
956
  this.recordsCount = this.tableData.length;
937
957
  this.recordsTotal = res.data.count;
958
+ if (this.recordsTotal < 5) {
959
+ this.paginationSize = [this.recordsTotal];
960
+ this.size = this.recordsTotal;
961
+ }
962
+ else {
963
+ this.paginationSize = [5, 10, 15, 20];
964
+ this.size = 5;
965
+ }
938
966
  }
939
967
  });
940
968
  }
@@ -962,6 +990,14 @@ export class ChecklistConfigureComponent {
962
990
  this.recordsCount = this.tableData.length;
963
991
  this.recordsTotal = res.data.count;
964
992
  let count = 0;
993
+ if (this.recordsTotal < 5) {
994
+ this.paginationSize = [this.recordsTotal];
995
+ this.size = this.recordsTotal;
996
+ }
997
+ else {
998
+ this.paginationSize = [5, 10, 15, 20];
999
+ this.size = 5;
1000
+ }
965
1001
  this.tableData.forEach((item) => {
966
1002
  if (item.checkFlag && !this.configData.checkListDetails.assignedUsers.includes(item.id) && !this.removeUsers.includes(item.id))
967
1003
  this.configData.checkListDetails.assignedUsers.push(item.id);
@@ -1204,7 +1240,7 @@ export class ChecklistConfigureComponent {
1204
1240
  // })
1205
1241
  // }
1206
1242
  newstore() {
1207
- this.route.navigate(["/store/list"], { queryParams: { checklistid: JSON.stringify(this.obj) } });
1243
+ this.route.navigate(["/manage/stores"], { queryParams: { checklistid: JSON.stringify(this.obj) } });
1208
1244
  }
1209
1245
  inviteuser() {
1210
1246
  this.route.navigate(["/control-panel/assign-role"], { queryParams: { checklistid: JSON.stringify(this.obj) } });
@@ -1819,11 +1855,11 @@ export class ChecklistConfigureComponent {
1819
1855
  this.configData.checkListDetails.detectionArea = event;
1820
1856
  }
1821
1857
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChecklistConfigureComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NgbModal }, { token: i3.TraxService }, { token: i4.ToastService }, { token: i5.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
1822
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChecklistConfigureComponent, selector: "lib-checklist-configure", host: { listeners: { "document:click": "clickOutside($event)" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["file"], descendants: true }, { propertyName: "fileInput1", first: true, predicate: ["file1"], descendants: true }], ngImport: i0, template: "<div class=\"card\">\r\n <ng-container>\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <h3 class=\"card-title align-items-start flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\"\r\n placeholder=\"Enter Checklist Name\" [value]=\"configData?.checkListDetails?.checkListName\" readonly></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\"\r\n #checklistDescription placeholder=\"Enter Checklist Description\"\r\n [value]=\"configData?.checkListDetails?.checkListDescription\" readonly></div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\"\r\n class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"publish()\"><span class=\"ms-2\">Publish</span> </button>\r\n\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"savedraft()\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"row checkconfigcont mt-2\" *ngIf=\"configData\">\r\n <div class=\"col-xl-3 leftcard\">\r\n <div class=\"card px-7 py-7\">\r\n <div class=\"section-leftheading1\">{{configData?.checkListDetails?.checkListName}}</div>\r\n <div *ngIf=\"obj.checkListId\" class=\"section-left\">\r\n <div *ngFor=\"let section of sections; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"fs-4 fw-bold section\">{{section.name}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"my-2 q-btn\" cdkDrag>\r\n\r\n <div class=\"editablecontent\">\r\n {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-6\">Schedule</div>\r\n\r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\" class=\"mt-4 mx-2 sub\"><span\r\n class=\" mx-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2\">{{configData.checkListDetails.scheduleStartTime}} to\r\n {{configData.checkListDetails.scheduleEndTime}}</span>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\"\r\n viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path\r\n d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.schedule === 'onetime' ?\r\n 'One-time' : (configData?.checkListDetails?.schedule | titlecase)}}\r\n </span></div>\r\n\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.scheduleStartTime ?\r\n configData?.checkListDetails?.scheduleStartTime.substr(-8) : configData?.openTime}} to\r\n {{configData?.checkListDetails?.scheduleEndTime ?\r\n configData?.checkListDetails?.scheduleEndTime.substr(-8) : configData?.closeTime}}</span>\r\n </div>\r\n\r\n <div class=\"mt-4 mx-2 sub\" *ngIf=\"showRangeValue\"><span><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span\r\n class=\"mt-2 ms-2\"><span>{{configData?.checkListDetails?.configStartDate}}</span><span\r\n *ngIf=\"configData?.checkListDetails?.configEndDate !== '' && configData?.checkListDetails?.configEndDate !== null\">\r\n to {{configData?.checkListDetails?.configEndDate}}</span></span></div>\r\n\r\n <div class=\"col-lg-10 editques\" *ngIf=\"['custom'].includes(type) && !disabledQuestion\">\r\n <a (click)=\"saveandredirect(obj.checkListId)\"\r\n class=\"btn-outline btn-outline-dashed btn btn-light upload\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M14.6666 2.5009C14.8855 2.28203 15.1453 2.10842 15.4313 1.98996C15.7173 1.87151 16.0238 1.81055 16.3333 1.81055C16.6428 1.81055 16.9493 1.87151 17.2353 1.98996C17.5213 2.10842 17.7811 2.28203 18 2.5009C18.2188 2.71977 18.3924 2.97961 18.5109 3.26558C18.6294 3.55154 18.6903 3.85804 18.6903 4.16757C18.6903 4.4771 18.6294 4.7836 18.5109 5.06956C18.3924 5.35553 18.2188 5.61537 18 5.83424L6.74996 17.0842L2.16663 18.3342L3.41663 13.7509L14.6666 2.5009Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"uploadtext\">Edit Questions</span></a>\r\n\r\n </div>\r\n </div>\r\n </h3>\r\n <div *ngIf=\"type === 'mobileusagedetection'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-6 mx-4 sub\">Email</div>\r\n </div>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"mx-4 mt-4 sub\">if usage exceeds\r\n {{configData?.checkListDetails?.alert?.usageExceeds}}\r\n events\r\n </div>\r\n <div *ngIf=\"type === 'storeopenandclose'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-4 mx-4 sub\">Send email everyday to</div>\r\n </div>\r\n <h3 *ngIf=\"type === 'mobileusagedetection'\" class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-4\">Detection Areas</div>\r\n\r\n <div class=\"mt-4 mx-2 sub\"><span *ngFor=\"let zone of configData?.checkListDetails?.detectionArea\"\r\n class=\"badge mx-2 mt-4 badge-light checklistlabel fs-base\">\r\n <i class=\"ki-duotone ki-arrow-up checklisttext\"></i>\r\n {{zone}}\r\n </span></div>\r\n </h3>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-xl-9\">\r\n <div class=\"card card-flush h-xl-100\">\r\n <div class=\"card-body px-7\">\r\n <div>\r\n <div>\r\n <h2 class=\"section-leftheading\">Schedule<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n <div class=\"row\" *ngIf=\"type === 'mobileusagedetection'\">\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-2 mx-4\">From</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-3 mx-4\">To</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\" placeholder=\"Set store open time\"\r\n name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n\r\n </div>\r\n <div *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div class=\"col-md-12 mt-6 mb-1\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-3\">\r\n <span class=\"mx-6 sub\">For</span>\r\n </div>\r\n <div class=\"col-md-3 dropdown\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.schedule\"\r\n (change)=\"updateSchedule($event)\">\r\n <option value=\"onetime\">Does Not Repeat</option>\r\n <option value=\"weekday\"> Every Weekday (Mon - Fri)</option>\r\n <option value=\"daily\">Daily</option>\r\n <option value=\"weekly\">Weekly</option>\r\n <option value=\"monthly\">Monthly</option>\r\n <option value=\"range\">Custom Range</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 mx-2\">At</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 ms-5\">Ends</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"justify-content-between mt-4\">\r\n <div class=\"config-heading\">Checklist Configuration</div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row col-lg-12 d-flex mt-5\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Once On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\"\r\n data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [minDate]=\"minDate\"\r\n [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" \r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDates\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule !== 'onetime'\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"rangeDate\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"showRangeValue\"\r\n [disabled]=\"configData.checkListDetails?.schedule === 'range'\"\r\n (change)=\"updateDateValue($event)\">\r\n <label for=\"rangeDate\" class=\"form-check-label checklisttext ms-2\">Set defined\r\n date range</label>\r\n </div>\r\n <div class=\"row col-lg-12 d-flex mt-5\" *ngIf=\"showRangeValue\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Starts from</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minStartDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedStartDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-8 ng-star-inserted\">\r\n <div class=\"row\" *ngIf=\"configData.checkListDetails.schedule !== 'range'\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Repeats every</span>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\" required=\"\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedDay\"\r\n maxlength=\"2\" min=\"1\" (change)=\"updateRepeatDay()\">\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"repeatType\" readonly>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'monthly'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"mt-3\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\" [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day'\" (change)=\"updateMonth('day')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Day</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 ps-18 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px\"\r\n [ngClass]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day' ? 'disabled' : ''\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedMonthWeek\"\r\n (change)=\"updateValue($event)\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day'\"\r\n maxLength=\"2\" (input)=\"validate($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date'\" (change)=\"updateMonth('date')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On the</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex dropdown\">\r\n <div\r\n class=\"fv-row mb-5 ps-20 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDate\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"1\"> First </option>\r\n <option value=\"2\"> Second </option>\r\n <option value=\"3\"> Third</option>\r\n <option value=\"4\"> Fourth</option>\r\n <option value=\"5\"> Last</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDay\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"Sunday\"> Sunday </option>\r\n <option value=\"Monday\"> Monday </option>\r\n <option value=\"Tuesday\"> Tuesday</option>\r\n <option value=\"Wednesday\"> Wednesday</option>\r\n <option value=\"Thursday\"> Thursday</option>\r\n <option value=\"Friday\">Friday</option>\r\n <option value=\"Saturday\"> Saturday</option>\r\n\r\n </select>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'specific'\" (change)=\"updateMonth('specific')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Specific Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\"\r\n (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div\r\n class=\"d-flex align-items-center position-relative w-100\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input ps-14\"\r\n (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'specific'\" />\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\"\r\n *ngIf=\"showDropDown\">\r\n <div class=\"calendar-container\">\r\n <div class=\"content\">\r\n <div class=\"dates\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-2 mb-2\"\r\n *ngFor=\"let date of dates\">\r\n <li class=\"nav-item me-1\"\r\n role=\"presentation\"\r\n (click)=\"selectDate(date)\">\r\n <a class=\"nav-link btn weekstyledate d-flex flex-column flex-center rounded-pill min-w-35px py-2 px-3 \"\r\n [ngClass]=\"selectedDate.includes(date) ? 'active btn-active-primary' : ''\"\r\n data-bs-toggle=\"tab\"\r\n aria-selected=\"false\"\r\n tabindex=\"-1\"\r\n role=\"tab\">\r\n <span\r\n class=\"pillstyle\">{{\r\n date }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button ms-2\"\r\n (click)=\"submitDate();showDropDown= false;\">\r\n <button\r\n class=\"btn btn-primary btn-block w-100\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 flex-wrap\">\r\n <span *ngFor=\"let date of submittedDates\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ getDateWithSuffix(date) }}\r\n <span (click)=\"removeBadge(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails.schedule)\">\r\n <ul class=\"nav nav-pills d-flex flex-nowrap\" role=\"tablist\">\r\n\r\n <ng-container\r\n *ngFor=\"let day of ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\">\r\n <li class=\"nav-item me-1\" role=\"presentation\"\r\n (click)=\"(configData.checkListDetails.schedule === 'weekly' || (configData.checkListDetails.schedule === 'weekday' && !['Sunday','Saturday'].includes(day))) ? setDay(day) : ''\">\r\n <a class=\"nav-link btn weekstyle d-flex flex-column flex-center rounded-pill min-w-45px me-2 py-4 px-3\"\r\n [ngClass]=\"(configData.checkListDetails.schedule === 'weekday' && ['Sunday','Saturday'].includes(day)) ? 'cursor-default' : selectedDays.includes(day) ? 'selectDay' : ''\"\r\n data-bs-toggle=\"tab\" aria-selected=\"false\" tabindex=\"-1\"\r\n role=\"tab\">\r\n <span class=\"pillstyle\">{{ day[0] }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'range'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"specific\" (change)=\"updateSpecific($event)\">\r\n <label for=\"flexSwitchCheckDefault\"\r\n class=\"form-check-label checklisttext ms-2\">On Specific\r\n Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\" (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"d-flex align-items-center position-relative w-300px\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control dropdown-input ps-14\" (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"!specific\"/>\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\" *ngIf=\"showDropDown\">\r\n <lib-multi-date-datepicker (selectedDates)=\"selectSpecificDate($event)\" [predefinedDates]=\"selectedDateList\" [startDate]=\"configData.checkListDetails.configStartDate\" [endDate]=\"configData.checkListDetails.configEndDate\"></lib-multi-date-datepicker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 ms-10 flex-wrap\">\r\n <span *ngFor=\"let date of selectedDateList\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ date }}\r\n <span (click)=\"removeDate(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-4 ng-star-inserted\"\r\n [hidden]=\"!showRangeValue || configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Ends On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minEndDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedEndDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeEnd($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n <div class=\"mt-5 remove cursor-pointer ms-4\" (click)=\"onDatepickerRefresh()\"\r\n *ngIf=\"configData.checkListDetails.configEndDate !== '' && configData.checkListDetails.configEndDate !== null && configData.checkListDetails.schedule !=='range'\">\r\n Remove\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'onetime'\">Occurs on\r\n the day {{configData.checkListDetails?.scheduleDate | date:'dd MMM YYYY'}}</div>\r\n <div class=\"my-3 user\"\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails?.schedule)\">Occurs\r\n every {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !=='01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} week<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span> on\r\n {{selectedDays.toString()}}<span *ngIf=\"showRangeValue\"> starting\r\n {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'daily'\">Occurs every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} day<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span><span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate \">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'monthly'\">Occurs\r\n every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} month<span *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span>{{(configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day') ? ('on day ' + configData.checkListDetails.scheduleRepeatedMonthWeek) : configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date' ? updateMonthValue():\r\n updateSpecificValue()}}<span *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span\r\n *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'range'\">Occurs every\r\n {{configData.checkListDetails?.scheduleWeekDays?.toString()}} <span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"section-left\" *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div>\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"config-heading\">Response Configuration</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" (click)=\"configaccordian()\"\r\n [ngClass]=\"{'rotate' : showconfig}\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"showconfig\">\r\n <div cdkDropList>\r\n <div cdkDrag>\r\n <div class=\"col-lg-12\"\r\n [ngClass]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific') ? 'bg-color-disabled' : ''\">\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowOnce ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowOnce\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"oneTime\"\r\n [disabled]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific')\">\r\n <label class=\"form-check-label sub ms-2\" for=\"oneTime\">Only one\r\n time\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"oneTime\">By\r\n enabling this, the response can be captured only once for\r\n this checklist <span *ngIf=\"showRangeValue\">from\r\n {{configData.checkListDetails.configStartDate}} <span\r\n *ngIf=\"configData.checkListDetails.configEndDate\">to\r\n {{configData.checkListDetails.configEndDate}}.</span></span></label>\r\n </div>\r\n </div>\r\n <div class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\" configData?.checkListDetails?.allowedOverTime ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedOverTime\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"fillResponse\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"fillResponse\">Fill response after configure\r\n time.</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"fillResponse\">By enabling, the user can fill the\r\n checklist even after the above configured\r\n end-time.</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedStoreLocation ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedStoreLocation\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"geoFencing\">\r\n <label class=\"form-check-label sub ms-2\" for=\"geoFencing\">Geo\r\n fencing\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"geoFencing\">By\r\n enabling, the checklist can be filled by the user only when\r\n inside the store.</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedMultiSubmit ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedMultiSubmit\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"allowedMultiSubmitSwitch\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">Allow multiple\r\n responses</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">By enabling, the checklist\r\n can be filled multiple times in a day</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n\r\n <div *ngIf=\"type === 'storeopenandclose'\" class=\"mt-6 mx-4 sub\">Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div>\r\n\r\n </div>\r\n <div *ngIf=\"type !=='custom'\">\r\n <div>\r\n <h2 class=\"section-leftheading mt-8\">Alerts\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </h2>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required\r\n minlength=\"2\" maxlength=\"3\" (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\"\r\n class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">Send Alert to </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <div class=\"fv-row fv-plugins-icon-container\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.alert.alertsTo\" (selectedList)=\"updateAlert($event)\"></lib-chip-dropdown>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n \r\n <div *ngIf=\"type === 'mobileusagedetection'\">\r\n <h2 class=\"section-leftheading mt-8\">Detection Areas<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-4\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\"> Detect mobile usage except </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"zoneList\" [selectedData]=\"configData.checkListDetails.detectionArea\" (selectedList)=\"updateZone($event)\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <!-- <div>\r\n <div class=\"d-flex\">\r\n <div><h2 class=\"section-leftheading mt-8\">{{type === 'mobileusagedetection' ? 'To be Acknowledged by' : 'Approver'}}</h2></div>\r\n <div><span class=\"form-check form-switch ms-3 mt-6\">\r\n <input type=\"checkbox\" role=\"switch\" id=\"support\" class=\"form-check-input mt-3 cursor-pointer\">\r\n </span></div>\r\n </div>\r\n <span>By enabling, the users will be able to acknowledge the checklist</span>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData?.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required minlength=\"2\" maxlength=\"3\"\r\n (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row ng-star-inserted mt-3\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">To be approved by </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.approver\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div> -->\r\n </div>\r\n\r\n \r\n </div>\r\n </div>\r\n <div>\r\n <div *ngIf=\"!tableData.length && !tableFilter.length && showImage\">\r\n <h2 class=\"section-leftheading mt-8\">Assign<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n\r\n <div class=\"row mb-6\">\r\n <div class=\"col-lg-12 assignpadding mb-10\">\r\n <div class=\"row\">\r\n <div class=\"uploadpadding\">\r\n <span class=\"mx-14\"><svg class=\"mx-20 mt-12\" width=\"56\" height=\"56\"\r\n viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <path\r\n d=\"M25.09 25C25.3251 24.3317 25.7892 23.7681 26.4 23.4091C27.0108 23.0502 27.7289 22.9189 28.4272 23.0387C29.1255 23.1585 29.7588 23.5215 30.2151 24.0635C30.6713 24.6055 30.9211 25.2915 30.92 26C30.92 28 27.92 29 27.92 29M28 33H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\"\r\n stroke-width=\"8\" />\r\n </svg>\r\n </span>\r\n <h5 class=\"section-leftheading mt-6 mx-10\">Upload to assign users</h5>\r\n <ul class=\"subtext mx-4\">\r\n <li>Click \u201CDownload Template\u201D</li>\r\n <li> Add your data to the template file</li>\r\n <li> Upload it below to assign users</li>\r\n </ul>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button #upload (click)=\"file.click()\" class=\"btn btn-primary reupload\">\r\n <span class=\"svg-icon svg-icon-primary \">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Upload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" type=\"file\" #file\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download Template</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col-lg-2\">\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div class=\"\" *ngIf=\"tableData.length || tableFilter.length || !showImage\">\r\n <div class=\"card-header border-0 pt-6\" *ngIf=\"!showImage || tableData.length\">\r\n <div class=\"card-title\">\r\n <div class=\"card-title align-items-start flex-column \"><span\r\n class=\"section-leftheading\">Assign<span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1 me-2\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" data-kt-subscription-table-filter=\"search\"\r\n (change)=\"searchTableData()\" [(ngModel)]=\"tableFilter\"\r\n class=\"form-control form-control-solid w-400px ps-14 mx-1 me-4\"\r\n placeholder=\"Search by Store name\">\r\n <div class=\"d-flex justify-content-end\" data-kt-subscription-table-toolbar=\"base\">\r\n <a (click)=\"addStoreComponent()\" type=\"button\"\r\n class=\"btn btn-primary createbuttons px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\" tabindex=\"0\"><span\r\n class=\"svg-icon svg-icon-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16602V15.8327M4.16675 9.99935H15.8334\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"create\">Add Store</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-lg-12\" *ngIf=\"!tableData.length && !showImage\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for users</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body-sop pt-0 mx-4\" *ngIf=\"tableData.length\">\r\n <div class=\"row\" *ngIf=\"tableLoading\"\r\n style=\"padding: 20px;display: flex;justify-content: center;align-items: center;\">\r\n <div class=\"loader\">\r\n <svg viewBox=\"0 0 120 120\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"load one\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <circle class=\"load two\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <circle class=\"load three\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <g>\r\n <circle class=\"point one\" cx=\"45\" cy=\"70\" r=\"5\" />\r\n <circle class=\"point two\" cx=\"60\" cy=\"70\" r=\"5\" />\r\n <circle class=\"point three\" cx=\"75\" cy=\"70\" r=\"5\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <h5 class=\"text-gray-600 fw-bolder text-center\">Loading Data...</h5>\r\n </div>\r\n <div class=\"sopTable table-responsive\" *ngIf=\"tableData.length && !tableLoading\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span><input class=\"form-check-input h-14px w-14px\" type=\"checkbox\" name=\"flag\" (change)=\"checkAll($event)\"\r\n [(ngModel)]=\"selectAll\"> <span class=\"form-check-label mx-4\" >StoreName</span></span>\r\n </th>\r\n <th>\r\n <span>Assigned To</span>\r\n </th>\r\n <th>\r\n <span >Email </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of tableData;let i=index\">\r\n <td>\r\n <input class=\"form-check-input h-14px w-14px userFlag\" type=\"checkbox\" name=\"flag\"\r\n (change)=\"updateFlag($event,i,data)\"\r\n [checked]=\"configData?.checkListDetails?.assignedUsers.includes(data?.id)\" /><span class=\"form-check-label mx-4\">{{data.userName}}</span>\r\n </td>\r\n <td>{{data.storeName}}</td>\r\n <td>{{data.userEmail}}</td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"recordsCount\" [currentPage]=\"currentValue\" [totalItems]=\"recordsTotal\"\r\n [paginationSizes]=\"paginationSize\" [pageSize]=\"recordsCount\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <br>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"col-lg-12\">\r\n <div class=\"row mt-6 assignpadding\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button (click)=\"Reupload()\" class=\"btn btn-primary reupload\"\r\n *ngIf=\"!reupload\"><span class=\"svg-icon svg-icon-primary \"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\" *ngIf=\"!reupload\">Reupload Template</span>\r\n </button>\r\n <button (click)=\"file1.click()\" class=\"btn btn-primary reupload\" *ngIf=\"reupload\"\r\n id=\"reupload\">\r\n <span class=\"svg-icon svg-icon-primary \"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-2 mx-1\" width=\"21\" height=\"20\" viewBox=\"0 0 19 19\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Reupload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-1\" width=\"21\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download This CSV</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row footer1 mt-10 mx-5\">\r\n <div class=\"text-dark\">\r\n <span class=\"text-dark footertext me-1\">Need help?</span>\r\n <a href=\"https://tangoeye.ai/\" target=\"_blank\" class=\"text-primary footertext text-hover-primary\"><u>Watch\r\n The Video Tutorial</u>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".card{border-radius:16px}.row>*{padding-right:0}.checkconfigcont .card{height:100%}.checkconfigcont .section{display:inline-block;width:160px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .radio{font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .mat-radio-button.mat-primary .mat-radio-inner-circle,.checkconfigcont .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.checkconfigcont .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.checkconfigcont .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#00a3ff}.checkconfigcont .section-leftheading1{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .section{color:var(--Black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .svg-icon svg{height:1.25em;width:1.25em}.checkconfigcont .section-leftheading{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:20px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .sub{color:var(--gray-700, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .subopen{color:var(--black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .symbol-circle{margin-left:-6px}.checkconfigcont .checklistlabel{padding:4px 12px;justify-content:center;align-items:center;border-radius:16px;background:var(--gray-100, #F2F4F7)}.checkconfigcont .subtitle{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0em;text-align:left;color:#667085}.checkconfigcont .form-control.form-control-solid{display:flex;padding:10px 14px;align-items:center;gap:8px;align-self:stretch;border-radius:8px;border:1px solid var(--gray-500, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .searchplaceholder{font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.checkconfigcont .custom-appbox{border-radius:12px}.checkconfigcont input::placeholder{color:#667085!important;opacity:1}.checkconfigcont .checklisttext{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.checkconfigcont .separator{height:1px;align-self:stretch}.checkconfigcont ::ng-deep .mat-form-field-infix{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;width:500px!important;line-height:24px}.checkconfigcont ::ng-deep .storechip{color:#101828;font-size:16px;width:100%;font-family:Inter;font-weight:400;width:780px!important;line-height:24px}.checkconfigcont ::ng-deep .mat-chip{font-family:Inter;font-style:normal;font-weight:500;font-size:14px;line-height:17px;text-align:center;color:#5e6278!important}.checkconfigcont ::ng-deep .mat-chip-list-wrapper .mat-standard-chip{margin:4px}.checkconfigcont ::ng-deep .matChip-store{height:100px;display:block;overflow-y:scroll;overflow-x:hidden}.checkconfigcont ::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.checkconfigcont ::ng-deep .mat-form-field-underline{display:none}.checkconfigcont ::ng-deep .mat-form-field-ripple{display:none}.checkconfigcont .subtext{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-weight:400;line-height:20px;align-items:center;gap:8px;align-self:stretch}.checkconfigcont .upload{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .upload:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .uploadtext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.checkconfigcont .savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0;color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .svg-icon1:hover:not(.svg-active){color:#fff}.checkconfigcont .btn-outline{border:1px solid lightgrey!important;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.checkconfigcont .footertext{color:#000;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;text-align:right}.checkconfigcont .footer1{text-align:end}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle{background-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#1da1f21a;color:#009ef7}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.checkconfigcont ::ng-deep th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:first-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable .mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-left:2px!important}.checkconfigcont ::ng-deep th.mat-header-cell:last-of-type,.checkconfigcont ::ng-deep td.mat-cell:last-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:last-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-left:2px!important}.checkconfigcont ::ng-deep .sopTable .mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-right:30px}.checkconfigcont ::ng-deep .sopTable input{border:none;padding:0!important}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont ::ng-deep th.mat-header-cell{height:25px;text-align:start!important}.checkconfigcont ::ng-deep .card-body-sop{border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FCFCFD);border-radius:6px}.checkconfigcont .schedule{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .user{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .dropdown{margin-left:-9%}.checkconfigcont .pillstyle{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .leftcard{position:relative}.checkconfigcont .editques{position:absolute!important;left:12%;transform:translate(-5%);bottom:30px}.checkconfigcont .questiontype{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#f1faff!important}.checkconfigcont .btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .editablecontent{display:inline-block;width:128px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .nav{display:flex;align-items:center;gap:16px;flex:1 0 0;align-self:stretch;--bs-nav-link-color: none}.checkconfigcont .form-control.form-control-solid,.checkconfigcont .form-select.form-select-solid{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .checklistturnoff{border-radius:8px;border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FFF);display:flex;padding:16px;align-items:flex-start;align-self:stretch}.checkconfigcont .btn.btn-outline.btn-outline-dashed.btn-outline-default:hover:not(.btn-active){border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont table{width:100%;margin-top:-3rem;text-align:start}.checkconfigcont .table:hover{overflow:auto}.checkconfigcont th.mat-header-cell{text-align:start}.checkconfigcont .sopTable th.mat-header-cell:first-of-type,.checkconfigcont .sopTable td.mat-cell:first-of-type,.checkconfigcont .sopTable td.mat-footer-cell:first-of-type{height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont th.mat-header-cell:first-of-type,.checkconfigcont td.mat-cell:first-of-type,.checkconfigcont td.mat-footer-cell:first-of-type{height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .sopTable input{border:none;padding:0!important}.checkconfigcont .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont .sopTable table{margin-top:0!important}.checkconfigcont .sopTable thead{height:44px!important;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .sopTable tbody,.checkconfigcont .sopTable tfoot,.checkconfigcont .sopTable td,.checkconfigcont .sopTable th{border-bottom:1px solid var(--gray-200, #EAECF0);height:72px;align-items:center;align-self:stretch}.checkconfigcont .sopTable th span,.checkconfigcont .sopTable td{text-align:start}.checkconfigcont .sopTable th span span{padding:0 0 0 10px;text-align:start}.checkconfigcont th.mat-header-cell{text-align:start!important}.checkconfigcont .option{font-weight:400;display:block;min-height:1.2em;padding:0 2px 1px}.checkconfigcont .loader{display:table-cell;vertical-align:middle;text-align:center;height:312px}.checkconfigcont .loader{width:90px;height:90px}.checkconfigcont .load{transform-origin:50% 50%;stroke-dasharray:570;stroke-width:20px}.checkconfigcont .load.one{stroke:#afe2ff;animation:load 1.5s infinite}.checkconfigcont .load.two{stroke:#2bb3ff;animation:load 1.5s infinite;animation-delay:.1s}.checkconfigcont .load.three{stroke:#009ef7;animation:load 1.5s infinite;animation-delay:.2s}.checkconfigcont .card hr{width:-webkit-fill-available}.checkconfigcont .loader svg{width:90%;fill:none}.checkconfigcont .point{animation:bounce 1s infinite ease-in-out}.checkconfigcont .point.one{fill:#009ef7;animation-delay:0s}.checkconfigcont .point.two{fill:#2bb3ff;animation-delay:.1s}.checkconfigcont .point.three{fill:#afe2ff;animation-delay:.2s}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes load{0%{stroke-dashoffset:570}50%{stroke-dashoffset:530}to{stroke-dashoffset:570;transform:rotate(360deg)}}.checkconfigcont .imgnodata1{width:216px;height:245px}.checkconfigcont .editablecontent{display:inline-block;width:230px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont #navfont{font-size:1.15rem!important}.checkconfigcont .imgdata{width:50%;height:50%}.checkconfigcont .imgnodata{width:312px;height:312px;margin-top:-4%}.checkconfigcont .card .card-header{display:flex;justify-content:space-between;align-items:stretch;flex-wrap:wrap;min-height:70px;padding:0 .25rem;background-color:transparent;border-bottom:none}.checkconfigcont ::ng-deep .mat-select{background:#f5f8fa;border-radius:8px}.checkconfigcont ::ng-deep .mat-select-value{height:42px}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-btn{border:none!important}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-list{border:none;box-shadow:0 1px 5px #959595;margin-left:-12px}.checkconfigcont ::ng-deep .multiselect-dropdown:focus-visible{border:none!important;box-shadow:0 1px 5px #959595;margin-left:-12px;max-height:250px}.checkconfigcont .custom-checkbox{--checkbox-background-checked: white !important;--checkmark-color: #009BF3;--border-color: #009BF3;--border-radius: 4px }.checkconfigcont .form-check.form-check-custom{display:flex;margin:0;height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .tabsub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .selectstore{color:var(--primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.checkconfigcont .headeralign{color:var(--gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .rotate{transform:rotate(180deg);transition:1s}.checkconfigcont .weekstyle{border-radius:20px;background:var(--gray-100, #F2F4F7)}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}.checkconfigcont ::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}.checkconfigcont ::ng-deep .list{overflow-y:auto}.checkconfigcont ::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}.checkconfigcont ::ng-deep .swal2-container{padding:.4em!important}.checkconfigcont ::ng-deep .swal2-icon{border:1px solid white!important}.checkconfigcont ::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}.checkconfigcont ::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.checkconfigcont ::ng-deep .form-check-input[disabled]~.form-check-label.spocName,.checkconfigcont ::ng-deep .form-check-input:disabled~.form-check-label.spocName{opacity:unset!important}.checkconfigcont tr.mat-header-row{height:56px;border-bottom:1px solid var(--gray-200, #EAECF0);background:var(--gray-25, #FCFCFD)}.checkconfigcont .detectiontext{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .alerttext{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .alertlabel{width:24px;height:24px;padding:4px 0 2px;justify-content:center;align-items:center;border-radius:200px;background:var(--primary-50, #EAF8FF)}.checkconfigcont .create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .alertsinput{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px;align-items:center;gap:8px}.checkconfigcont .usageerror{display:block;width:255px}.checkconfigcont .reupload{padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;flex:1 0 0;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);width:220px;cursor:pointer;box-shadow:0 1px 2px #1018280d}.checkconfigcont .reuploadtext{color:var(--White, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize;cursor:pointer}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;width:220px}.checkconfigcont .downloadtext{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .assignpadding{padding:0 40px}.checkconfigcont .uploadpadding{padding:0 30% 9px}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .question-left{max-height:50vh;overflow:auto;overflow-x:hidden}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .matWidth{margin-left:12px;margin-right:12px}::ng-deep .mat-tooltip{white-space:pre-line}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.checkconfigcont .matChip-store{height:113px;display:block;overflow-y:scroll;overflow-x:hidden}.emailalert{position:relative;height:500px!important;overflow:auto!important;overflow-x:hidden!important}.emailalert1{overflow-y:auto!important;height:10%!important;position:relative}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}@media screen and (min-width: 1400px){.emailalert{position:relative;height:700px!important;overflow:auto!important;overflow-x:hidden!important}}::ng-deep .swal2-html-container{overflow:hidden!important}.badgeColor{background-color:#fffaeb!important;color:#b54708!important;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;letter-spacing:0em;text-align:center}.config-heading{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px;width:35%}.ps-20{padding-left:7rem!important}.ps-18{padding-left:6.5rem!important}.remove{color:var(--Gray-500, #667085);font-size:12px;font-weight:600;line-height:18px;text-decoration-line:underline;text-transform:capitalize}.chip-container{margin-top:10px}.mat-chip{margin:5px}.dropdown-menu{position:absolute;top:100%;left:0;right:0;background-color:#fff;z-index:1000;display:block;box-sizing:border-box;height:0%}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.position-relative{position:relative!important}.content{background-color:#fff;padding:10px 22px 10px 10px;border-radius:5px;box-shadow:0 0 10px #0000001a}.badge-pill{display:flex;padding:2px 6px 2px 8px;justify-content:center;align-items:center;gap:4px;border-radius:16px;background:var(--Gray-100, #F2F4F7)}.badge-specificdate{max-width:100%;overflow-x:hidden;white-space:normal;display:flex;flex-wrap:wrap}.badge-specificdate .badge{margin-bottom:8px}.bg-color-disabled{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}a.cursor-default{cursor:default!important;background-color:unset!important}.form-control.form-control-solid.disabled{background-color:#eef3f7!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:365px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.selectDay{background-color:var(--bs-primary)!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "component", type: i10.MultiDateDatepickerComponent, selector: "lib-multi-date-datepicker", inputs: ["startDate", "endDate", "predefinedDates"], outputs: ["selectedDates"] }, { kind: "component", type: i11.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1858
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChecklistConfigureComponent, selector: "lib-checklist-configure", host: { listeners: { "document:click": "clickOutside($event)" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["file"], descendants: true }, { propertyName: "fileInput1", first: true, predicate: ["file1"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"loading\" class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"card\">\r\n <ng-container>\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <h3 class=\"card-title align-items-start flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\"\r\n placeholder=\"Enter Checklist Name\" [value]=\"configData?.checkListDetails?.checkListName\" readonly></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\"\r\n #checklistDescription placeholder=\"Enter Checklist Description\"\r\n [value]=\"configData?.checkListDetails?.checkListDescription\" readonly></div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\"\r\n class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"publish()\"><span class=\"ms-2\">Publish</span> </button>\r\n \r\n <button type=\"button\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"savedraft()\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row checkconfigcont mt-2\" *ngIf=\"configData\">\r\n <div class=\"col-xl-3 leftcard\">\r\n <div class=\"card px-7 py-7\">\r\n <div class=\"section-leftheading1\">{{configData?.checkListDetails?.checkListName}}</div>\r\n <div *ngIf=\"obj.checkListId\" class=\"section-left\">\r\n <div *ngFor=\"let section of sections; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"fs-4 fw-bold section\">{{section.name}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n \r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"my-2 q-btn\" cdkDrag>\r\n \r\n <div class=\"editablecontent\">\r\n {{question.qname}}\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-6\">Schedule</div>\r\n \r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\" class=\"mt-4 mx-2 sub\"><span\r\n class=\" mx-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2\">{{configData.checkListDetails.scheduleStartTime}} to\r\n {{configData.checkListDetails.scheduleEndTime}}</span>\r\n </div>\r\n \r\n \r\n \r\n <div *ngIf=\"['custom'].includes(type)\">\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\"\r\n viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path\r\n d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.schedule === 'onetime' ?\r\n 'One-time' : (configData?.checkListDetails?.schedule | titlecase)}}\r\n </span></div>\r\n \r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.scheduleStartTime ?\r\n configData?.checkListDetails?.scheduleStartTime.substr(-8) : configData?.openTime}} to\r\n {{configData?.checkListDetails?.scheduleEndTime ?\r\n configData?.checkListDetails?.scheduleEndTime.substr(-8) : configData?.closeTime}}</span>\r\n </div>\r\n \r\n <div class=\"mt-4 mx-2 sub\" *ngIf=\"showRangeValue\"><span><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span\r\n class=\"mt-2 ms-2\"><span>{{configData?.checkListDetails?.configStartDate}}</span><span\r\n *ngIf=\"configData?.checkListDetails?.configEndDate !== '' && configData?.checkListDetails?.configEndDate !== null\">\r\n to {{configData?.checkListDetails?.configEndDate}}</span></span></div>\r\n \r\n <div class=\"col-lg-10 editques\" *ngIf=\"['custom'].includes(type) && !disabledQuestion\">\r\n <a (click)=\"saveandredirect(obj.checkListId)\"\r\n class=\"btn-outline btn-outline-dashed btn btn-light upload\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M14.6666 2.5009C14.8855 2.28203 15.1453 2.10842 15.4313 1.98996C15.7173 1.87151 16.0238 1.81055 16.3333 1.81055C16.6428 1.81055 16.9493 1.87151 17.2353 1.98996C17.5213 2.10842 17.7811 2.28203 18 2.5009C18.2188 2.71977 18.3924 2.97961 18.5109 3.26558C18.6294 3.55154 18.6903 3.85804 18.6903 4.16757C18.6903 4.4771 18.6294 4.7836 18.5109 5.06956C18.3924 5.35553 18.2188 5.61537 18 5.83424L6.74996 17.0842L2.16663 18.3342L3.41663 13.7509L14.6666 2.5009Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"uploadtext\">Edit Questions</span></a>\r\n \r\n </div>\r\n </div>\r\n </h3>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-6 mx-4 sub\">Email</div>\r\n </div>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"mx-4 mt-4 sub\">if usage exceeds\r\n {{configData?.checkListDetails?.alert?.usageExceeds}}\r\n events\r\n </div>\r\n <div *ngIf=\"type === 'storeopenandclose'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-4 mx-4 sub\">Send email everyday to</div>\r\n </div>\r\n <h3 *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-4\">Detection Areas</div>\r\n \r\n <div class=\"mt-4 mx-2 sub\"><span *ngFor=\"let zone of configData?.checkListDetails?.detectionArea\"\r\n class=\"badge mx-2 mt-4 badge-light checklistlabel fs-base\">\r\n <i class=\"ki-duotone ki-arrow-up checklisttext\"></i>\r\n {{zone}}\r\n </span></div>\r\n </h3>\r\n \r\n \r\n </div>\r\n </div>\r\n <div class=\"col-xl-9\">\r\n <div class=\"card card-flush h-xl-100\">\r\n <div class=\"card-body px-7\">\r\n <div class=\"schedule\">\r\n <div>\r\n <h2 class=\"section-leftheading\">Schedule<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n <div class=\"row\" *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-2 mx-4\">From</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-3 mx-4\">To</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\" placeholder=\"Set store open time\"\r\n name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n \r\n </div>\r\n <div *ngIf=\"['custom'].includes(type)\">\r\n <div class=\"col-md-12 mt-6 mb-1\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-3\">\r\n <span class=\"mx-6 sub\">For</span>\r\n </div>\r\n <div class=\"col-md-3 dropdown\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.schedule\"\r\n (change)=\"updateSchedule($event)\">\r\n <option value=\"onetime\">Does Not Repeat</option>\r\n <option value=\"weekday\"> Every Weekday (Mon - Fri)</option>\r\n <option value=\"daily\">Daily</option>\r\n <option value=\"weekly\">Weekly</option>\r\n <option value=\"monthly\">Monthly</option>\r\n <option value=\"range\">Custom Range</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 mx-2\">At</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 ms-5\">Ends</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"justify-content-between mt-4\">\r\n <div class=\"config-heading\">Checklist Configuration</div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row col-lg-12 d-flex mt-5\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Once On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\"\r\n data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [minDate]=\"minDate\"\r\n [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" \r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDates\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule !== 'onetime'\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"rangeDate\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"showRangeValue\"\r\n [disabled]=\"configData.checkListDetails?.schedule === 'range'\"\r\n (change)=\"updateDateValue($event)\">\r\n <label for=\"rangeDate\" class=\"form-check-label checklisttext ms-2\">Set defined\r\n date range</label>\r\n </div>\r\n <div class=\"row col-lg-12 d-flex mt-5\" *ngIf=\"showRangeValue\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Starts from</span>\r\n </div>\r\n <div class=\"col-md-3\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'ps-10' : 'px-4 pe-3'\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minStartDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedStartDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-8 ng-star-inserted\">\r\n <div class=\"row\" *ngIf=\"configData.checkListDetails.schedule !== 'range'\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Repeats every</span>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\" required=\"\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedDay\"\r\n maxlength=\"2\" min=\"1\" (change)=\"updateRepeatDay()\">\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"repeatType\" readonly>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'monthly'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day'\" (change)=\"updateMonth('day')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Day</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div\r\n class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px\"\r\n [ngClass]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day' ? 'disabled' : ''\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedMonthWeek\"\r\n (change)=\"updateValue($event)\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day'\"\r\n maxLength=\"2\" (input)=\"validate($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date'\" (change)=\"updateMonth('date')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On the</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div\r\n class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDate\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"1\"> First </option>\r\n <option value=\"2\"> Second </option>\r\n <option value=\"3\"> Third</option>\r\n <option value=\"4\"> Fourth</option>\r\n <option value=\"5\"> Last</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDay\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"Sunday\"> Sunday </option>\r\n <option value=\"Monday\"> Monday </option>\r\n <option value=\"Tuesday\"> Tuesday</option>\r\n <option value=\"Wednesday\"> Wednesday</option>\r\n <option value=\"Thursday\"> Thursday</option>\r\n <option value=\"Friday\">Friday</option>\r\n <option value=\"Saturday\"> Saturday</option>\r\n </select>\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'specific'\"\r\n (change)=\"updateMonth('specific')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Specific Dates</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"position-relative\"\r\n (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div\r\n class=\"d-flex align-items-center position-relative w-100\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input ps-14\"\r\n (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'specific'\" />\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\"\r\n *ngIf=\"showDropDown\">\r\n <div class=\"calendar-container\">\r\n <div class=\"content\">\r\n <div class=\"dates\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-2 mb-2\"\r\n *ngFor=\"let date of dates\">\r\n <li class=\"nav-item me-1\"\r\n role=\"presentation\"\r\n (click)=\"selectDate(date)\">\r\n <a class=\"nav-link btn weekstyledate d-flex flex-column flex-center rounded-pill min-w-35px py-2 px-3 \"\r\n [ngClass]=\"selectedDate.includes(date) ? 'active btn-active-primary' : ''\"\r\n data-bs-toggle=\"tab\"\r\n aria-selected=\"false\"\r\n tabindex=\"-1\"\r\n role=\"tab\">\r\n <span\r\n class=\"pillstyle\">{{\r\n date }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button ms-2\"\r\n (click)=\"submitDate();showDropDown= false;\">\r\n <button\r\n class=\"btn btn-primary btn-block w-100\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 flex-wrap\">\r\n <span *ngFor=\"let date of submittedDates\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ getDateWithSuffix(date) }}\r\n <span (click)=\"removeBadge(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails.schedule)\">\r\n <ul class=\"nav nav-pills d-flex flex-nowrap mb-3\" role=\"tablist\">\r\n \r\n <ng-container\r\n *ngFor=\"let day of ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\">\r\n <li class=\"nav-item me-1\" role=\"presentation\"\r\n (click)=\"(configData.checkListDetails.schedule === 'weekly' || (configData.checkListDetails.schedule === 'weekday' && !['Sunday','Saturday'].includes(day))) ? setDay(day) : ''\">\r\n <a class=\"nav-link btn weekstyle d-flex flex-column flex-center rounded-pill min-w-45px me-2 py-4 px-3\"\r\n [ngClass]=\"(configData.checkListDetails.schedule === 'weekday' && ['Sunday','Saturday'].includes(day)) ? 'cursor-default' : selectedDays.includes(day) ? 'selectDay' : ''\"\r\n data-bs-toggle=\"tab\" aria-selected=\"false\" tabindex=\"-1\"\r\n role=\"tab\">\r\n <span class=\"pillstyle\">{{ day[0] }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'range'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n \r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check form-switch mt-3\">\r\n <input type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"specific\" (change)=\"updateSpecific($event)\">\r\n <label for=\"flexSwitchCheckDefault\"\r\n class=\"form-check-label checklisttext ms-2\">On Specific\r\n Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\" (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"d-flex align-items-center position-relative w-300px\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control dropdown-input ps-14\" (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"!specific\"/>\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\" *ngIf=\"showDropDown\">\r\n <lib-multi-date-datepicker (selectedDates)=\"selectSpecificDate($event)\" [predefinedDates]=\"selectedDateList\" [startDate]=\"configData.checkListDetails.configStartDate\" [endDate]=\"configData.checkListDetails.configEndDate\"></lib-multi-date-datepicker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 ms-5 flex-wrap\">\r\n <span *ngFor=\"let date of selectedDateList\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ date }}\r\n <span (click)=\"removeDate(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\"\r\n [hidden]=\"!showRangeValue || configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'mt-4' : 'mt-2'\">\r\n <span class=\"sub\">Ends On</span>\r\n </div>\r\n <div class=\"col-md-3\" id=\"dateclass\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'ps-9' : 'px-4 pe-3'\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minEndDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedEndDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeEnd($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n <div class=\"mt-5 remove cursor-pointer ms-4\" (click)=\"onDatepickerRefresh()\"\r\n *ngIf=\"configData.checkListDetails.configEndDate !== '' && configData.checkListDetails.configEndDate !== null && configData.checkListDetails.schedule !=='range'\">\r\n Remove\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'onetime'\">Occurs on\r\n the day {{configData.checkListDetails?.scheduleDate | date:'dd MMM YYYY'}}</div>\r\n <div class=\"my-3 user\"\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails?.schedule)\">Occurs\r\n every {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !=='01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} week<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span> on\r\n {{selectedDays.toString()}}<span *ngIf=\"showRangeValue\"> starting\r\n {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'daily'\">Occurs every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} day<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span><span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate \">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'monthly'\">Occurs\r\n every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} month<span *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s </span>{{(configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day') ? ('on day ' + configData.checkListDetails.scheduleRepeatedMonthWeek) : configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date' ? updateMonthValue():\r\n updateSpecificValue()}}<span *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span\r\n *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'range'\">Occurs every\r\n {{configData.checkListDetails?.scheduleWeekDays?.toString()}} <span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"section-left\" *ngIf=\"['custom'].includes(type)\">\r\n <div>\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"config-heading\">Response Configuration</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" (click)=\"configaccordian()\"\r\n [ngClass]=\"{'rotate' : showconfig}\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"showconfig\">\r\n <div cdkDropList>\r\n <div cdkDrag>\r\n <div class=\"col-lg-12\"\r\n [ngClass]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific') ? 'bg-color-disabled' : ''\">\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowOnce ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowOnce\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"oneTime\"\r\n [disabled]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific')\">\r\n <label class=\"form-check-label sub ms-2\" for=\"oneTime\">Only one\r\n time\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"oneTime\">By\r\n enabling this, the response can be captured only once for\r\n this checklist <span *ngIf=\"showRangeValue\">from\r\n {{configData.checkListDetails.configStartDate}} <span\r\n *ngIf=\"configData.checkListDetails.configEndDate\">to\r\n {{configData.checkListDetails.configEndDate}}.</span></span></label>\r\n </div>\r\n </div>\r\n <div class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\" configData?.checkListDetails?.allowedOverTime ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedOverTime\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"fillResponse\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"fillResponse\">Fill response after configure\r\n time.</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"fillResponse\">By enabling, the user can fill the\r\n checklist even after the above configured\r\n end-time.</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedStoreLocation ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedStoreLocation\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"geoFencing\">\r\n <label class=\"form-check-label sub ms-2\" for=\"geoFencing\">Geo\r\n fencing\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"geoFencing\">By\r\n enabling, the checklist can be filled by the user only when\r\n inside the store.</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedMultiSubmit ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedMultiSubmit\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"allowedMultiSubmitSwitch\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">Allow multiple\r\n responses</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">By enabling, the checklist\r\n can be filled multiple times in a day</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <div *ngIf=\"['storeopenandclose','eyetest'].includes(type)\" class=\"mt-6 mx-4 sub\">Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div>\r\n </div>\r\n <div *ngIf=\"type === 'unattended'\" class=\"mt-6 mx-4 sub\">\r\n Time taken to assist by staff &lt;= 1 mins | Staff to customer time spent &lt;=1 mins\r\n <!-- Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div> -->\r\n </div>\r\n <div *ngIf=\"type !=='custom'\">\r\n <div *ngIf=\"!['storeopenandclose','eyetest'].includes(type)\">\r\n <h2 class=\"section-leftheading mt-8\">Alerts\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </h2>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required\r\n minlength=\"2\" maxlength=\"3\" (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection','unattended','packageConfiguration'].includes(type)\"\r\n class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">Send Alert to </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <div class=\"fv-row fv-plugins-icon-container\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.alert.alertsTo\" (selectedList)=\"updateAlert($event)\"></lib-chip-dropdown>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <h2 class=\"section-leftheading mt-8\">Detection Areas<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-4\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\"> Detect mobile usage except </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"zoneList\" [selectedData]=\"configData.checkListDetails.detectionArea\" (selectedList)=\"updateZone($event)\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <!-- <div>\r\n <div class=\"d-flex\">\r\n <div><h2 class=\"section-leftheading mt-8\">{{type === 'mobileusagedetection' ? 'To be Acknowledged by' : 'Approver'}}</h2></div>\r\n <div><span class=\"form-check form-switch ms-3 mt-6\">\r\n <input type=\"checkbox\" role=\"switch\" id=\"support\" class=\"form-check-input mt-3 cursor-pointer\">\r\n </span></div>\r\n </div>\r\n <span>By enabling, the users will be able to acknowledge the checklist</span>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData?.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required minlength=\"2\" maxlength=\"3\"\r\n (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row ng-star-inserted mt-3\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">To be approved by </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.approver\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div> -->\r\n </div>\r\n \r\n \r\n </div>\r\n </div>\r\n <div>\r\n <div *ngIf=\"!tableData.length && !tableFilter.length && showImage\">\r\n <h2 class=\"section-leftheading mt-8\">Assign<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row mb-6\">\r\n <div class=\"col-lg-12 assignpadding mb-10\">\r\n <div class=\"row\">\r\n <div class=\"uploadpadding\">\r\n <span class=\"mx-14\"><svg class=\"mx-20 mt-12\" width=\"56\" height=\"56\"\r\n viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <path\r\n d=\"M25.09 25C25.3251 24.3317 25.7892 23.7681 26.4 23.4091C27.0108 23.0502 27.7289 22.9189 28.4272 23.0387C29.1255 23.1585 29.7588 23.5215 30.2151 24.0635C30.6713 24.6055 30.9211 25.2915 30.92 26C30.92 28 27.92 29 27.92 29M28 33H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\"\r\n stroke-width=\"8\" />\r\n </svg>\r\n </span>\r\n <h5 class=\"section-leftheading mt-6 mx-10\">Upload to assign users</h5>\r\n <ul class=\"subtext mx-4\">\r\n <li>Click \u201CDownload Template\u201D</li>\r\n <li> Add your data to the template file</li>\r\n <li> Upload it below to assign users</li>\r\n </ul>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button #upload (click)=\"file.click()\" class=\"btn btn-primary reupload\">\r\n <span class=\"svg-icon svg-icon-primary \">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Upload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" type=\"file\" #file\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download Template</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n <div class=\"col-lg-2\">\r\n </div>\r\n </div>\r\n \r\n \r\n \r\n </div>\r\n <div class=\"\" *ngIf=\"tableData.length || tableFilter.length || !showImage\">\r\n <div class=\"card-header border-0 pt-6\" *ngIf=\"!showImage || tableData.length\">\r\n <div class=\"card-title\">\r\n <div class=\"card-title align-items-start flex-column \"><span\r\n class=\"section-leftheading\">Assign<span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1 me-2\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" data-kt-subscription-table-filter=\"search\"\r\n (change)=\"searchTableData()\" [(ngModel)]=\"tableFilter\"\r\n class=\"form-control form-control-solid w-400px ps-14 mx-1 me-4\"\r\n placeholder=\"Search by Store name\">\r\n <div class=\"d-flex justify-content-end\" data-kt-subscription-table-toolbar=\"base\">\r\n <a (click)=\"addStoreComponent()\" type=\"button\"\r\n class=\"btn btn-primary createbuttons px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\" tabindex=\"0\"><span\r\n class=\"svg-icon svg-icon-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16602V15.8327M4.16675 9.99935H15.8334\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"create\">Add Store</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mt-2\">\r\n <div class=\"col-lg-12\" *ngIf=\"!tableData.length && !showImage\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for users</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body-sop pt-0 mx-4\" *ngIf=\"tableData.length\">\r\n <div class=\"sopTable table-responsive overflow-hidden\">\r\n <div *ngIf=\"tableLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"tableData.length && !tableLoading\">\r\n <div class=\"table-responsive\" >\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n <span><input class=\"form-check-input h-14px w-14px\" type=\"checkbox\" name=\"flag\" (change)=\"checkAll($event)\"\r\n [(ngModel)]=\"selectAll\"> <span class=\"form-check-label mx-4\" >StoreName</span></span>\r\n </th>\r\n <th class=\"text-align-left\">\r\n <span>Assigned To</span>\r\n </th>\r\n <th class=\"text-align-left\">\r\n <span >Email </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of tableData;let i=index\">\r\n <td>\r\n <input class=\"form-check-input h-14px w-14px userFlag\" type=\"checkbox\" name=\"flag\"\r\n (change)=\"updateFlag($event,i,data)\"\r\n [checked]=\"configData?.checkListDetails?.assignedUsers.includes(data?.id)\" /><span class=\"form-check-label mx-4\">{{data.userName}}</span>\r\n </td>\r\n <td>{{data.storeName}}</td>\r\n <td>{{data.userEmail}}</td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"currentValue\" [totalItems]=\"recordsTotal\"\r\n [paginationSizes]=\"paginationSize\" [pageSize]=\"size\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n <br>\r\n </div>\r\n <div class=\"col-lg-12\" *ngIf=\"!tableLoading\">\r\n <div class=\"row mt-6 assignpadding\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button (click)=\"Reupload()\" class=\"btn btn-primary reupload\"\r\n *ngIf=\"!reupload\"><span class=\"svg-icon svg-icon-primary \"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\" *ngIf=\"!reupload\">Reupload Template</span>\r\n </button>\r\n <button (click)=\"file1.click()\" class=\"btn btn-primary reupload\" *ngIf=\"reupload\"\r\n id=\"reupload\">\r\n <span class=\"svg-icon svg-icon-primary \"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-2 mx-1\" width=\"21\" height=\"20\" viewBox=\"0 0 19 19\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Reupload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-1\" width=\"21\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download This CSV</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n <!-- <div class=\"row footer1 mt-10 mx-5\">\r\n <div class=\"text-dark\">\r\n <span class=\"text-dark footertext me-1\">Need help?</span>\r\n <a href=\"https://tangoeye.ai/\" target=\"_blank\" class=\"text-primary footertext text-hover-primary\"><u>Watch\r\n The Video Tutorial</u>\r\n </a>\r\n </div>\r\n </div> -->\r\n \r\n </div>\r\n</div>", styles: [".card{border-radius:16px}.row>*{padding-right:0}.checkconfigcont .card{height:100%}.checkconfigcont .section{display:inline-block;width:160px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .radio{font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .mat-radio-button.mat-primary .mat-radio-inner-circle,.checkconfigcont .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.checkconfigcont .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.checkconfigcont .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#00a3ff}.checkconfigcont .section-leftheading1{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .section{color:var(--Black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .svg-icon svg{height:1.25em;width:1.25em}.checkconfigcont .section-leftheading{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:20px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .sub{color:var(--gray-700, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .subopen{color:var(--black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .symbol-circle{margin-left:-6px}.checkconfigcont .checklistlabel{padding:4px 12px;justify-content:center;align-items:center;border-radius:16px;background:var(--gray-100, #F2F4F7)}.checkconfigcont .subtitle{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0em;text-align:left;color:#667085}.checkconfigcont .form-control.form-control-solid{display:flex;padding:10px 14px;align-items:center;gap:8px;align-self:stretch;border-radius:8px;border:1px solid var(--gray-500, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .searchplaceholder{font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.checkconfigcont .custom-appbox{border-radius:12px}.checkconfigcont input::placeholder{color:#667085!important;opacity:1}.checkconfigcont .checklisttext{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.checkconfigcont .separator{height:1px;align-self:stretch}.checkconfigcont ::ng-deep .mat-form-field-infix{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;width:500px!important;line-height:24px}.checkconfigcont ::ng-deep .storechip{color:#101828;font-size:16px;width:100%;font-family:Inter;font-weight:400;width:780px!important;line-height:24px}.checkconfigcont ::ng-deep .mat-chip{font-family:Inter;font-style:normal;font-weight:500;font-size:14px;line-height:17px;text-align:center;color:#5e6278!important}.checkconfigcont ::ng-deep .mat-chip-list-wrapper .mat-standard-chip{margin:4px}.checkconfigcont ::ng-deep .matChip-store{height:100px;display:block;overflow-y:scroll;overflow-x:hidden}.checkconfigcont ::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.checkconfigcont ::ng-deep .mat-form-field-underline{display:none}.checkconfigcont ::ng-deep .mat-form-field-ripple{display:none}.checkconfigcont .subtext{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-weight:400;line-height:20px;align-items:center;gap:8px;align-self:stretch}.checkconfigcont .upload{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .upload:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .uploadtext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.checkconfigcont .savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0;color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .svg-icon1:hover:not(.svg-active){color:#fff}.checkconfigcont .btn-outline{border:1px solid lightgrey!important;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.checkconfigcont .footertext{color:#000;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;text-align:right}.checkconfigcont .footer1{text-align:end}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle{background-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#1da1f21a;color:#009ef7}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.checkconfigcont ::ng-deep th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:first-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable input{border:none;padding:0!important}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont ::ng-deep .card-body-sop{border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FCFCFD);border-radius:6px}.checkconfigcont .schedule{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .user{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .dropdown{margin-left:-9%}.checkconfigcont .pillstyle{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .leftcard{position:relative}.checkconfigcont .editques{position:absolute!important;left:12%;transform:translate(-5%);bottom:30px}.checkconfigcont .questiontype{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#f1faff!important}.checkconfigcont .btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .nav{display:flex;align-items:center;gap:16px;flex:1 0 0;align-self:stretch;--bs-nav-link-color: none}.checkconfigcont .form-control.form-control-solid,.checkconfigcont .form-select.form-select-solid{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .checklistturnoff{border-radius:8px;border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FFF);display:flex;padding:16px;align-items:flex-start;align-self:stretch}.checkconfigcont .btn.btn-outline.btn-outline-dashed.btn-outline-default:hover:not(.btn-active){border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .sopTable input{border:none;padding:0!important}.checkconfigcont .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont .option{font-weight:400;display:block;min-height:1.2em;padding:0 2px 1px}.checkconfigcont .card hr{width:-webkit-fill-available}.checkconfigcont .imgnodata1{width:216px;height:245px}.checkconfigcont .editablecontent{display:inline-block;width:230px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont #navfont{font-size:1.15rem!important}.checkconfigcont .imgdata{width:50%;height:50%}.checkconfigcont .imgnodata{width:312px;height:312px;margin-top:-4%}.checkconfigcont .card .card-header{display:flex;justify-content:space-between;align-items:stretch;flex-wrap:wrap;min-height:70px;padding:0 .25rem;background-color:transparent;border-bottom:none}.checkconfigcont ::ng-deep .mat-select{background:#f5f8fa;border-radius:8px}.checkconfigcont ::ng-deep .mat-select-value{height:42px}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-btn{border:none!important}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-list{border:none;box-shadow:0 1px 5px #959595;margin-left:-12px}.checkconfigcont ::ng-deep .multiselect-dropdown:focus-visible{border:none!important;box-shadow:0 1px 5px #959595;margin-left:-12px;max-height:250px}.checkconfigcont .custom-checkbox{--checkbox-background-checked: white !important;--checkmark-color: #009BF3;--border-color: #009BF3;--border-radius: 4px }.checkconfigcont .form-check.form-check-custom{display:flex;margin:0;height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .tabsub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .selectstore{color:var(--primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.checkconfigcont .headeralign{color:var(--gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .rotate{transform:rotate(180deg);transition:1s}.checkconfigcont .weekstyle{border-radius:20px;background:var(--gray-100, #F2F4F7)}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}.checkconfigcont ::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}.checkconfigcont ::ng-deep .list{overflow-y:auto}.checkconfigcont ::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}.checkconfigcont ::ng-deep .swal2-container{padding:.4em!important}.checkconfigcont ::ng-deep .swal2-icon{border:1px solid white!important}.checkconfigcont ::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}.checkconfigcont ::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.checkconfigcont ::ng-deep .form-check-input[disabled]~.form-check-label.spocName,.checkconfigcont ::ng-deep .form-check-input:disabled~.form-check-label.spocName{opacity:unset!important}.checkconfigcont tr.mat-header-row{height:56px;border-bottom:1px solid var(--gray-200, #EAECF0);background:var(--gray-25, #FCFCFD)}.checkconfigcont .detectiontext{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .alerttext{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .alertlabel{width:24px;height:24px;padding:4px 0 2px;justify-content:center;align-items:center;border-radius:200px;background:var(--primary-50, #EAF8FF)}.checkconfigcont .create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .alertsinput{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px;align-items:center;gap:8px}.checkconfigcont .usageerror{display:block;width:255px}.checkconfigcont .reupload{padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;flex:1 0 0;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);width:220px;cursor:pointer;box-shadow:0 1px 2px #1018280d}.checkconfigcont .reuploadtext{color:var(--White, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize;cursor:pointer}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;width:220px}.checkconfigcont .downloadtext{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .assignpadding{padding:0 40px}.checkconfigcont .uploadpadding{padding:0 30% 9px}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .question-left{max-height:50vh;overflow:auto;overflow-x:hidden}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .matWidth{margin-left:12px;margin-right:12px}::ng-deep .mat-tooltip{white-space:pre-line}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.checkconfigcont .matChip-store{height:113px;display:block;overflow-y:scroll;overflow-x:hidden}.emailalert{position:relative;height:500px!important;overflow:auto!important;overflow-x:hidden!important}.emailalert1{overflow-y:auto!important;height:10%!important;position:relative}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}@media screen and (min-width: 1400px){.emailalert{position:relative;height:700px!important;overflow:auto!important;overflow-x:hidden!important}}::ng-deep .swal2-html-container{overflow:hidden!important}.badgeColor{background-color:#fffaeb!important;color:#b54708!important;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;letter-spacing:0em;text-align:center}.config-heading{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px;width:35%}.ps-20{padding-left:7rem!important}.ps-18{padding-left:6.5rem!important}.remove{color:var(--Gray-500, #667085);font-size:12px;font-weight:600;line-height:18px;text-decoration-line:underline;text-transform:capitalize}.chip-container{margin-top:10px}.mat-chip{margin:5px}.dropdown-menu{position:absolute;top:100%;left:0;right:0;background-color:#fff;z-index:1000;display:block;box-sizing:border-box;height:0%}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.position-relative{position:relative!important}.content{background-color:#fff;padding:10px 22px 10px 10px;border-radius:5px;box-shadow:0 0 10px #0000001a}.badge-pill{display:flex;padding:2px 6px 2px 8px;justify-content:center;align-items:center;gap:4px;border-radius:16px;background:var(--Gray-100, #F2F4F7)}.badge-specificdate{max-width:100%;overflow-x:hidden;white-space:normal;display:flex;flex-wrap:wrap}.badge-specificdate .badge{margin-bottom:8px}.bg-color-disabled{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}a.cursor-default{cursor:default!important;background-color:unset!important}.form-control.form-control-solid.disabled{background-color:#eef3f7!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.selectDay{background-color:var(--bs-primary)!important}a.selectDay span{color:#fff!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr th .form-check-label,tr td .form-check-label{color:var(--Gray-700, #344054)!important}:host::ng-deep .schedule .md-drppicker .btn{line-height:10px!important}:host::ng-deep .schedule .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .schedule .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .schedule .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .schedule .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .schedule .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .schedule .md-drppicker td.active,:host::ng-deep .schedule .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .schedule .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .schedule .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .schedule .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .schedule table th,:host::ng-deep .schedule table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .schedule .md-drppicker td.available.prev,:host::ng-deep .schedule .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .schedule .md-drppicker td.available.next,:host::ng-deep .schedule .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .schedule table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .schedule .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .schedule .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .schedule .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.fontSize{font-size:14px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "component", type: i10.MultiDateDatepickerComponent, selector: "lib-multi-date-datepicker", inputs: ["startDate", "endDate", "predefinedDates"], outputs: ["selectedDates"] }, { kind: "component", type: i11.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1823
1859
  }
1824
1860
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChecklistConfigureComponent, decorators: [{
1825
1861
  type: Component,
1826
- args: [{ selector: 'lib-checklist-configure', template: "<div class=\"card\">\r\n <ng-container>\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <h3 class=\"card-title align-items-start flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\"\r\n placeholder=\"Enter Checklist Name\" [value]=\"configData?.checkListDetails?.checkListName\" readonly></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\"\r\n #checklistDescription placeholder=\"Enter Checklist Description\"\r\n [value]=\"configData?.checkListDetails?.checkListDescription\" readonly></div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\"\r\n class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"publish()\"><span class=\"ms-2\">Publish</span> </button>\r\n\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"savedraft()\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"row checkconfigcont mt-2\" *ngIf=\"configData\">\r\n <div class=\"col-xl-3 leftcard\">\r\n <div class=\"card px-7 py-7\">\r\n <div class=\"section-leftheading1\">{{configData?.checkListDetails?.checkListName}}</div>\r\n <div *ngIf=\"obj.checkListId\" class=\"section-left\">\r\n <div *ngFor=\"let section of sections; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"fs-4 fw-bold section\">{{section.name}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n\r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"my-2 q-btn\" cdkDrag>\r\n\r\n <div class=\"editablecontent\">\r\n {{question.qname}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-6\">Schedule</div>\r\n\r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\" class=\"mt-4 mx-2 sub\"><span\r\n class=\" mx-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2\">{{configData.checkListDetails.scheduleStartTime}} to\r\n {{configData.checkListDetails.scheduleEndTime}}</span>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\"\r\n viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path\r\n d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.schedule === 'onetime' ?\r\n 'One-time' : (configData?.checkListDetails?.schedule | titlecase)}}\r\n </span></div>\r\n\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.scheduleStartTime ?\r\n configData?.checkListDetails?.scheduleStartTime.substr(-8) : configData?.openTime}} to\r\n {{configData?.checkListDetails?.scheduleEndTime ?\r\n configData?.checkListDetails?.scheduleEndTime.substr(-8) : configData?.closeTime}}</span>\r\n </div>\r\n\r\n <div class=\"mt-4 mx-2 sub\" *ngIf=\"showRangeValue\"><span><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span\r\n class=\"mt-2 ms-2\"><span>{{configData?.checkListDetails?.configStartDate}}</span><span\r\n *ngIf=\"configData?.checkListDetails?.configEndDate !== '' && configData?.checkListDetails?.configEndDate !== null\">\r\n to {{configData?.checkListDetails?.configEndDate}}</span></span></div>\r\n\r\n <div class=\"col-lg-10 editques\" *ngIf=\"['custom'].includes(type) && !disabledQuestion\">\r\n <a (click)=\"saveandredirect(obj.checkListId)\"\r\n class=\"btn-outline btn-outline-dashed btn btn-light upload\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M14.6666 2.5009C14.8855 2.28203 15.1453 2.10842 15.4313 1.98996C15.7173 1.87151 16.0238 1.81055 16.3333 1.81055C16.6428 1.81055 16.9493 1.87151 17.2353 1.98996C17.5213 2.10842 17.7811 2.28203 18 2.5009C18.2188 2.71977 18.3924 2.97961 18.5109 3.26558C18.6294 3.55154 18.6903 3.85804 18.6903 4.16757C18.6903 4.4771 18.6294 4.7836 18.5109 5.06956C18.3924 5.35553 18.2188 5.61537 18 5.83424L6.74996 17.0842L2.16663 18.3342L3.41663 13.7509L14.6666 2.5009Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"uploadtext\">Edit Questions</span></a>\r\n\r\n </div>\r\n </div>\r\n </h3>\r\n <div *ngIf=\"type === 'mobileusagedetection'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-6 mx-4 sub\">Email</div>\r\n </div>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"mx-4 mt-4 sub\">if usage exceeds\r\n {{configData?.checkListDetails?.alert?.usageExceeds}}\r\n events\r\n </div>\r\n <div *ngIf=\"type === 'storeopenandclose'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-4 mx-4 sub\">Send email everyday to</div>\r\n </div>\r\n <h3 *ngIf=\"type === 'mobileusagedetection'\" class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-4\">Detection Areas</div>\r\n\r\n <div class=\"mt-4 mx-2 sub\"><span *ngFor=\"let zone of configData?.checkListDetails?.detectionArea\"\r\n class=\"badge mx-2 mt-4 badge-light checklistlabel fs-base\">\r\n <i class=\"ki-duotone ki-arrow-up checklisttext\"></i>\r\n {{zone}}\r\n </span></div>\r\n </h3>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-xl-9\">\r\n <div class=\"card card-flush h-xl-100\">\r\n <div class=\"card-body px-7\">\r\n <div>\r\n <div>\r\n <h2 class=\"section-leftheading\">Schedule<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n <div class=\"row\" *ngIf=\"type === 'mobileusagedetection'\">\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-2 mx-4\">From</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-3 mx-4\">To</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\" placeholder=\"Set store open time\"\r\n name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n\r\n </div>\r\n <div *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div class=\"col-md-12 mt-6 mb-1\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-3\">\r\n <span class=\"mx-6 sub\">For</span>\r\n </div>\r\n <div class=\"col-md-3 dropdown\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.schedule\"\r\n (change)=\"updateSchedule($event)\">\r\n <option value=\"onetime\">Does Not Repeat</option>\r\n <option value=\"weekday\"> Every Weekday (Mon - Fri)</option>\r\n <option value=\"daily\">Daily</option>\r\n <option value=\"weekly\">Weekly</option>\r\n <option value=\"monthly\">Monthly</option>\r\n <option value=\"range\">Custom Range</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 mx-2\">At</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 ms-5\">Ends</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"justify-content-between mt-4\">\r\n <div class=\"config-heading\">Checklist Configuration</div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row col-lg-12 d-flex mt-5\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Once On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\"\r\n data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [minDate]=\"minDate\"\r\n [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" \r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDates\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule !== 'onetime'\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"rangeDate\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"showRangeValue\"\r\n [disabled]=\"configData.checkListDetails?.schedule === 'range'\"\r\n (change)=\"updateDateValue($event)\">\r\n <label for=\"rangeDate\" class=\"form-check-label checklisttext ms-2\">Set defined\r\n date range</label>\r\n </div>\r\n <div class=\"row col-lg-12 d-flex mt-5\" *ngIf=\"showRangeValue\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Starts from</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minStartDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedStartDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-8 ng-star-inserted\">\r\n <div class=\"row\" *ngIf=\"configData.checkListDetails.schedule !== 'range'\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Repeats every</span>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\" required=\"\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedDay\"\r\n maxlength=\"2\" min=\"1\" (change)=\"updateRepeatDay()\">\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"repeatType\" readonly>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'monthly'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"mt-3\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\" [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day'\" (change)=\"updateMonth('day')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Day</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 ps-18 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px\"\r\n [ngClass]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day' ? 'disabled' : ''\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedMonthWeek\"\r\n (change)=\"updateValue($event)\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day'\"\r\n maxLength=\"2\" (input)=\"validate($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date'\" (change)=\"updateMonth('date')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On the</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex dropdown\">\r\n <div\r\n class=\"fv-row mb-5 ps-20 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDate\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"1\"> First </option>\r\n <option value=\"2\"> Second </option>\r\n <option value=\"3\"> Third</option>\r\n <option value=\"4\"> Fourth</option>\r\n <option value=\"5\"> Last</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDay\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"Sunday\"> Sunday </option>\r\n <option value=\"Monday\"> Monday </option>\r\n <option value=\"Tuesday\"> Tuesday</option>\r\n <option value=\"Wednesday\"> Wednesday</option>\r\n <option value=\"Thursday\"> Thursday</option>\r\n <option value=\"Friday\">Friday</option>\r\n <option value=\"Saturday\"> Saturday</option>\r\n\r\n </select>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'specific'\" (change)=\"updateMonth('specific')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Specific Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\"\r\n (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div\r\n class=\"d-flex align-items-center position-relative w-100\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input ps-14\"\r\n (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'specific'\" />\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\"\r\n *ngIf=\"showDropDown\">\r\n <div class=\"calendar-container\">\r\n <div class=\"content\">\r\n <div class=\"dates\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-2 mb-2\"\r\n *ngFor=\"let date of dates\">\r\n <li class=\"nav-item me-1\"\r\n role=\"presentation\"\r\n (click)=\"selectDate(date)\">\r\n <a class=\"nav-link btn weekstyledate d-flex flex-column flex-center rounded-pill min-w-35px py-2 px-3 \"\r\n [ngClass]=\"selectedDate.includes(date) ? 'active btn-active-primary' : ''\"\r\n data-bs-toggle=\"tab\"\r\n aria-selected=\"false\"\r\n tabindex=\"-1\"\r\n role=\"tab\">\r\n <span\r\n class=\"pillstyle\">{{\r\n date }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button ms-2\"\r\n (click)=\"submitDate();showDropDown= false;\">\r\n <button\r\n class=\"btn btn-primary btn-block w-100\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 flex-wrap\">\r\n <span *ngFor=\"let date of submittedDates\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ getDateWithSuffix(date) }}\r\n <span (click)=\"removeBadge(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails.schedule)\">\r\n <ul class=\"nav nav-pills d-flex flex-nowrap\" role=\"tablist\">\r\n\r\n <ng-container\r\n *ngFor=\"let day of ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\">\r\n <li class=\"nav-item me-1\" role=\"presentation\"\r\n (click)=\"(configData.checkListDetails.schedule === 'weekly' || (configData.checkListDetails.schedule === 'weekday' && !['Sunday','Saturday'].includes(day))) ? setDay(day) : ''\">\r\n <a class=\"nav-link btn weekstyle d-flex flex-column flex-center rounded-pill min-w-45px me-2 py-4 px-3\"\r\n [ngClass]=\"(configData.checkListDetails.schedule === 'weekday' && ['Sunday','Saturday'].includes(day)) ? 'cursor-default' : selectedDays.includes(day) ? 'selectDay' : ''\"\r\n data-bs-toggle=\"tab\" aria-selected=\"false\" tabindex=\"-1\"\r\n role=\"tab\">\r\n <span class=\"pillstyle\">{{ day[0] }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'range'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"specific\" (change)=\"updateSpecific($event)\">\r\n <label for=\"flexSwitchCheckDefault\"\r\n class=\"form-check-label checklisttext ms-2\">On Specific\r\n Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\" (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"d-flex align-items-center position-relative w-300px\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control dropdown-input ps-14\" (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"!specific\"/>\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\" *ngIf=\"showDropDown\">\r\n <lib-multi-date-datepicker (selectedDates)=\"selectSpecificDate($event)\" [predefinedDates]=\"selectedDateList\" [startDate]=\"configData.checkListDetails.configStartDate\" [endDate]=\"configData.checkListDetails.configEndDate\"></lib-multi-date-datepicker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 ms-10 flex-wrap\">\r\n <span *ngFor=\"let date of selectedDateList\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ date }}\r\n <span (click)=\"removeDate(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-4 ng-star-inserted\"\r\n [hidden]=\"!showRangeValue || configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Ends On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minEndDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedEndDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeEnd($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n <div class=\"mt-5 remove cursor-pointer ms-4\" (click)=\"onDatepickerRefresh()\"\r\n *ngIf=\"configData.checkListDetails.configEndDate !== '' && configData.checkListDetails.configEndDate !== null && configData.checkListDetails.schedule !=='range'\">\r\n Remove\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'onetime'\">Occurs on\r\n the day {{configData.checkListDetails?.scheduleDate | date:'dd MMM YYYY'}}</div>\r\n <div class=\"my-3 user\"\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails?.schedule)\">Occurs\r\n every {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !=='01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} week<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span> on\r\n {{selectedDays.toString()}}<span *ngIf=\"showRangeValue\"> starting\r\n {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'daily'\">Occurs every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} day<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span><span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate \">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'monthly'\">Occurs\r\n every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} month<span *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span>{{(configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day') ? ('on day ' + configData.checkListDetails.scheduleRepeatedMonthWeek) : configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date' ? updateMonthValue():\r\n updateSpecificValue()}}<span *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span\r\n *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'range'\">Occurs every\r\n {{configData.checkListDetails?.scheduleWeekDays?.toString()}} <span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"section-left\" *ngIf=\"['custom','uniformdetection'].includes(type)\">\r\n <div>\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"config-heading\">Response Configuration</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" (click)=\"configaccordian()\"\r\n [ngClass]=\"{'rotate' : showconfig}\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"showconfig\">\r\n <div cdkDropList>\r\n <div cdkDrag>\r\n <div class=\"col-lg-12\"\r\n [ngClass]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific') ? 'bg-color-disabled' : ''\">\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowOnce ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowOnce\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"oneTime\"\r\n [disabled]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific')\">\r\n <label class=\"form-check-label sub ms-2\" for=\"oneTime\">Only one\r\n time\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"oneTime\">By\r\n enabling this, the response can be captured only once for\r\n this checklist <span *ngIf=\"showRangeValue\">from\r\n {{configData.checkListDetails.configStartDate}} <span\r\n *ngIf=\"configData.checkListDetails.configEndDate\">to\r\n {{configData.checkListDetails.configEndDate}}.</span></span></label>\r\n </div>\r\n </div>\r\n <div class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\" configData?.checkListDetails?.allowedOverTime ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedOverTime\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"fillResponse\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"fillResponse\">Fill response after configure\r\n time.</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"fillResponse\">By enabling, the user can fill the\r\n checklist even after the above configured\r\n end-time.</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedStoreLocation ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedStoreLocation\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"geoFencing\">\r\n <label class=\"form-check-label sub ms-2\" for=\"geoFencing\">Geo\r\n fencing\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"geoFencing\">By\r\n enabling, the checklist can be filled by the user only when\r\n inside the store.</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedMultiSubmit ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedMultiSubmit\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"allowedMultiSubmitSwitch\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">Allow multiple\r\n responses</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">By enabling, the checklist\r\n can be filled multiple times in a day</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n\r\n <div *ngIf=\"type === 'storeopenandclose'\" class=\"mt-6 mx-4 sub\">Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div>\r\n\r\n </div>\r\n <div *ngIf=\"type !=='custom'\">\r\n <div>\r\n <h2 class=\"section-leftheading mt-8\">Alerts\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </h2>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required\r\n minlength=\"2\" maxlength=\"3\" (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\"\r\n class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">Send Alert to </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <div class=\"fv-row fv-plugins-icon-container\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.alert.alertsTo\" (selectedList)=\"updateAlert($event)\"></lib-chip-dropdown>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n \r\n <div *ngIf=\"type === 'mobileusagedetection'\">\r\n <h2 class=\"section-leftheading mt-8\">Detection Areas<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-4\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\"> Detect mobile usage except </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"zoneList\" [selectedData]=\"configData.checkListDetails.detectionArea\" (selectedList)=\"updateZone($event)\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <!-- <div>\r\n <div class=\"d-flex\">\r\n <div><h2 class=\"section-leftheading mt-8\">{{type === 'mobileusagedetection' ? 'To be Acknowledged by' : 'Approver'}}</h2></div>\r\n <div><span class=\"form-check form-switch ms-3 mt-6\">\r\n <input type=\"checkbox\" role=\"switch\" id=\"support\" class=\"form-check-input mt-3 cursor-pointer\">\r\n </span></div>\r\n </div>\r\n <span>By enabling, the users will be able to acknowledge the checklist</span>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData?.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required minlength=\"2\" maxlength=\"3\"\r\n (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row ng-star-inserted mt-3\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">To be approved by </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.approver\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div> -->\r\n </div>\r\n\r\n \r\n </div>\r\n </div>\r\n <div>\r\n <div *ngIf=\"!tableData.length && !tableFilter.length && showImage\">\r\n <h2 class=\"section-leftheading mt-8\">Assign<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n\r\n <div class=\"row mb-6\">\r\n <div class=\"col-lg-12 assignpadding mb-10\">\r\n <div class=\"row\">\r\n <div class=\"uploadpadding\">\r\n <span class=\"mx-14\"><svg class=\"mx-20 mt-12\" width=\"56\" height=\"56\"\r\n viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <path\r\n d=\"M25.09 25C25.3251 24.3317 25.7892 23.7681 26.4 23.4091C27.0108 23.0502 27.7289 22.9189 28.4272 23.0387C29.1255 23.1585 29.7588 23.5215 30.2151 24.0635C30.6713 24.6055 30.9211 25.2915 30.92 26C30.92 28 27.92 29 27.92 29M28 33H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\"\r\n stroke-width=\"8\" />\r\n </svg>\r\n </span>\r\n <h5 class=\"section-leftheading mt-6 mx-10\">Upload to assign users</h5>\r\n <ul class=\"subtext mx-4\">\r\n <li>Click \u201CDownload Template\u201D</li>\r\n <li> Add your data to the template file</li>\r\n <li> Upload it below to assign users</li>\r\n </ul>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button #upload (click)=\"file.click()\" class=\"btn btn-primary reupload\">\r\n <span class=\"svg-icon svg-icon-primary \">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Upload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" type=\"file\" #file\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download Template</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col-lg-2\">\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n <div class=\"\" *ngIf=\"tableData.length || tableFilter.length || !showImage\">\r\n <div class=\"card-header border-0 pt-6\" *ngIf=\"!showImage || tableData.length\">\r\n <div class=\"card-title\">\r\n <div class=\"card-title align-items-start flex-column \"><span\r\n class=\"section-leftheading\">Assign<span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1 me-2\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" data-kt-subscription-table-filter=\"search\"\r\n (change)=\"searchTableData()\" [(ngModel)]=\"tableFilter\"\r\n class=\"form-control form-control-solid w-400px ps-14 mx-1 me-4\"\r\n placeholder=\"Search by Store name\">\r\n <div class=\"d-flex justify-content-end\" data-kt-subscription-table-toolbar=\"base\">\r\n <a (click)=\"addStoreComponent()\" type=\"button\"\r\n class=\"btn btn-primary createbuttons px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\" tabindex=\"0\"><span\r\n class=\"svg-icon svg-icon-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16602V15.8327M4.16675 9.99935H15.8334\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"create\">Add Store</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-lg-12\" *ngIf=\"!tableData.length && !showImage\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for users</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body-sop pt-0 mx-4\" *ngIf=\"tableData.length\">\r\n <div class=\"row\" *ngIf=\"tableLoading\"\r\n style=\"padding: 20px;display: flex;justify-content: center;align-items: center;\">\r\n <div class=\"loader\">\r\n <svg viewBox=\"0 0 120 120\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"load one\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <circle class=\"load two\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <circle class=\"load three\" cx=\"60\" cy=\"60\" r=\"40\" />\r\n <g>\r\n <circle class=\"point one\" cx=\"45\" cy=\"70\" r=\"5\" />\r\n <circle class=\"point two\" cx=\"60\" cy=\"70\" r=\"5\" />\r\n <circle class=\"point three\" cx=\"75\" cy=\"70\" r=\"5\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <h5 class=\"text-gray-600 fw-bolder text-center\">Loading Data...</h5>\r\n </div>\r\n <div class=\"sopTable table-responsive\" *ngIf=\"tableData.length && !tableLoading\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span><input class=\"form-check-input h-14px w-14px\" type=\"checkbox\" name=\"flag\" (change)=\"checkAll($event)\"\r\n [(ngModel)]=\"selectAll\"> <span class=\"form-check-label mx-4\" >StoreName</span></span>\r\n </th>\r\n <th>\r\n <span>Assigned To</span>\r\n </th>\r\n <th>\r\n <span >Email </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of tableData;let i=index\">\r\n <td>\r\n <input class=\"form-check-input h-14px w-14px userFlag\" type=\"checkbox\" name=\"flag\"\r\n (change)=\"updateFlag($event,i,data)\"\r\n [checked]=\"configData?.checkListDetails?.assignedUsers.includes(data?.id)\" /><span class=\"form-check-label mx-4\">{{data.userName}}</span>\r\n </td>\r\n <td>{{data.storeName}}</td>\r\n <td>{{data.userEmail}}</td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"recordsCount\" [currentPage]=\"currentValue\" [totalItems]=\"recordsTotal\"\r\n [paginationSizes]=\"paginationSize\" [pageSize]=\"recordsCount\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <br>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"col-lg-12\">\r\n <div class=\"row mt-6 assignpadding\">\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button (click)=\"Reupload()\" class=\"btn btn-primary reupload\"\r\n *ngIf=\"!reupload\"><span class=\"svg-icon svg-icon-primary \"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\" *ngIf=\"!reupload\">Reupload Template</span>\r\n </button>\r\n <button (click)=\"file1.click()\" class=\"btn btn-primary reupload\" *ngIf=\"reupload\"\r\n id=\"reupload\">\r\n <span class=\"svg-icon svg-icon-primary \"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-2 mx-1\" width=\"21\" height=\"20\" viewBox=\"0 0 19 19\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Reupload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-1\" width=\"21\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download This CSV</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row footer1 mt-10 mx-5\">\r\n <div class=\"text-dark\">\r\n <span class=\"text-dark footertext me-1\">Need help?</span>\r\n <a href=\"https://tangoeye.ai/\" target=\"_blank\" class=\"text-primary footertext text-hover-primary\"><u>Watch\r\n The Video Tutorial</u>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".card{border-radius:16px}.row>*{padding-right:0}.checkconfigcont .card{height:100%}.checkconfigcont .section{display:inline-block;width:160px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .radio{font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .mat-radio-button.mat-primary .mat-radio-inner-circle,.checkconfigcont .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.checkconfigcont .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.checkconfigcont .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#00a3ff}.checkconfigcont .section-leftheading1{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .section{color:var(--Black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .svg-icon svg{height:1.25em;width:1.25em}.checkconfigcont .section-leftheading{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:20px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .sub{color:var(--gray-700, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .subopen{color:var(--black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .symbol-circle{margin-left:-6px}.checkconfigcont .checklistlabel{padding:4px 12px;justify-content:center;align-items:center;border-radius:16px;background:var(--gray-100, #F2F4F7)}.checkconfigcont .subtitle{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0em;text-align:left;color:#667085}.checkconfigcont .form-control.form-control-solid{display:flex;padding:10px 14px;align-items:center;gap:8px;align-self:stretch;border-radius:8px;border:1px solid var(--gray-500, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .searchplaceholder{font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.checkconfigcont .custom-appbox{border-radius:12px}.checkconfigcont input::placeholder{color:#667085!important;opacity:1}.checkconfigcont .checklisttext{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.checkconfigcont .separator{height:1px;align-self:stretch}.checkconfigcont ::ng-deep .mat-form-field-infix{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;width:500px!important;line-height:24px}.checkconfigcont ::ng-deep .storechip{color:#101828;font-size:16px;width:100%;font-family:Inter;font-weight:400;width:780px!important;line-height:24px}.checkconfigcont ::ng-deep .mat-chip{font-family:Inter;font-style:normal;font-weight:500;font-size:14px;line-height:17px;text-align:center;color:#5e6278!important}.checkconfigcont ::ng-deep .mat-chip-list-wrapper .mat-standard-chip{margin:4px}.checkconfigcont ::ng-deep .matChip-store{height:100px;display:block;overflow-y:scroll;overflow-x:hidden}.checkconfigcont ::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.checkconfigcont ::ng-deep .mat-form-field-underline{display:none}.checkconfigcont ::ng-deep .mat-form-field-ripple{display:none}.checkconfigcont .subtext{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-weight:400;line-height:20px;align-items:center;gap:8px;align-self:stretch}.checkconfigcont .upload{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .upload:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .uploadtext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.checkconfigcont .savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0;color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .svg-icon1:hover:not(.svg-active){color:#fff}.checkconfigcont .btn-outline{border:1px solid lightgrey!important;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.checkconfigcont .footertext{color:#000;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;text-align:right}.checkconfigcont .footer1{text-align:end}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle{background-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#1da1f21a;color:#009ef7}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.checkconfigcont ::ng-deep th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:first-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable .mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-left:2px!important}.checkconfigcont ::ng-deep th.mat-header-cell:last-of-type,.checkconfigcont ::ng-deep td.mat-cell:last-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:last-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-left:2px!important}.checkconfigcont ::ng-deep .sopTable .mat-header-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-cell:first-of-type,.checkconfigcont ::ng-deep .sopTable td.mat-footer-cell:first-of-type{padding-right:30px}.checkconfigcont ::ng-deep .sopTable input{border:none;padding:0!important}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont ::ng-deep th.mat-header-cell{height:25px;text-align:start!important}.checkconfigcont ::ng-deep .card-body-sop{border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FCFCFD);border-radius:6px}.checkconfigcont .schedule{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .user{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .dropdown{margin-left:-9%}.checkconfigcont .pillstyle{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .leftcard{position:relative}.checkconfigcont .editques{position:absolute!important;left:12%;transform:translate(-5%);bottom:30px}.checkconfigcont .questiontype{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#f1faff!important}.checkconfigcont .btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .editablecontent{display:inline-block;width:128px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .nav{display:flex;align-items:center;gap:16px;flex:1 0 0;align-self:stretch;--bs-nav-link-color: none}.checkconfigcont .form-control.form-control-solid,.checkconfigcont .form-select.form-select-solid{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .checklistturnoff{border-radius:8px;border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FFF);display:flex;padding:16px;align-items:flex-start;align-self:stretch}.checkconfigcont .btn.btn-outline.btn-outline-dashed.btn-outline-default:hover:not(.btn-active){border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont table{width:100%;margin-top:-3rem;text-align:start}.checkconfigcont .table:hover{overflow:auto}.checkconfigcont th.mat-header-cell{text-align:start}.checkconfigcont .sopTable th.mat-header-cell:first-of-type,.checkconfigcont .sopTable td.mat-cell:first-of-type,.checkconfigcont .sopTable td.mat-footer-cell:first-of-type{height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont th.mat-header-cell:first-of-type,.checkconfigcont td.mat-cell:first-of-type,.checkconfigcont td.mat-footer-cell:first-of-type{height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .sopTable input{border:none;padding:0!important}.checkconfigcont .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont .sopTable table{margin-top:0!important}.checkconfigcont .sopTable thead{height:44px!important;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .sopTable tbody,.checkconfigcont .sopTable tfoot,.checkconfigcont .sopTable td,.checkconfigcont .sopTable th{border-bottom:1px solid var(--gray-200, #EAECF0);height:72px;align-items:center;align-self:stretch}.checkconfigcont .sopTable th span,.checkconfigcont .sopTable td{text-align:start}.checkconfigcont .sopTable th span span{padding:0 0 0 10px;text-align:start}.checkconfigcont th.mat-header-cell{text-align:start!important}.checkconfigcont .option{font-weight:400;display:block;min-height:1.2em;padding:0 2px 1px}.checkconfigcont .loader{display:table-cell;vertical-align:middle;text-align:center;height:312px}.checkconfigcont .loader{width:90px;height:90px}.checkconfigcont .load{transform-origin:50% 50%;stroke-dasharray:570;stroke-width:20px}.checkconfigcont .load.one{stroke:#afe2ff;animation:load 1.5s infinite}.checkconfigcont .load.two{stroke:#2bb3ff;animation:load 1.5s infinite;animation-delay:.1s}.checkconfigcont .load.three{stroke:#009ef7;animation:load 1.5s infinite;animation-delay:.2s}.checkconfigcont .card hr{width:-webkit-fill-available}.checkconfigcont .loader svg{width:90%;fill:none}.checkconfigcont .point{animation:bounce 1s infinite ease-in-out}.checkconfigcont .point.one{fill:#009ef7;animation-delay:0s}.checkconfigcont .point.two{fill:#2bb3ff;animation-delay:.1s}.checkconfigcont .point.three{fill:#afe2ff;animation-delay:.2s}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes load{0%{stroke-dashoffset:570}50%{stroke-dashoffset:530}to{stroke-dashoffset:570;transform:rotate(360deg)}}.checkconfigcont .imgnodata1{width:216px;height:245px}.checkconfigcont .editablecontent{display:inline-block;width:230px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont #navfont{font-size:1.15rem!important}.checkconfigcont .imgdata{width:50%;height:50%}.checkconfigcont .imgnodata{width:312px;height:312px;margin-top:-4%}.checkconfigcont .card .card-header{display:flex;justify-content:space-between;align-items:stretch;flex-wrap:wrap;min-height:70px;padding:0 .25rem;background-color:transparent;border-bottom:none}.checkconfigcont ::ng-deep .mat-select{background:#f5f8fa;border-radius:8px}.checkconfigcont ::ng-deep .mat-select-value{height:42px}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-btn{border:none!important}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-list{border:none;box-shadow:0 1px 5px #959595;margin-left:-12px}.checkconfigcont ::ng-deep .multiselect-dropdown:focus-visible{border:none!important;box-shadow:0 1px 5px #959595;margin-left:-12px;max-height:250px}.checkconfigcont .custom-checkbox{--checkbox-background-checked: white !important;--checkmark-color: #009BF3;--border-color: #009BF3;--border-radius: 4px }.checkconfigcont .form-check.form-check-custom{display:flex;margin:0;height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .tabsub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .selectstore{color:var(--primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.checkconfigcont .headeralign{color:var(--gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .rotate{transform:rotate(180deg);transition:1s}.checkconfigcont .weekstyle{border-radius:20px;background:var(--gray-100, #F2F4F7)}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}.checkconfigcont ::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}.checkconfigcont ::ng-deep .list{overflow-y:auto}.checkconfigcont ::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}.checkconfigcont ::ng-deep .swal2-container{padding:.4em!important}.checkconfigcont ::ng-deep .swal2-icon{border:1px solid white!important}.checkconfigcont ::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}.checkconfigcont ::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.checkconfigcont ::ng-deep .form-check-input[disabled]~.form-check-label.spocName,.checkconfigcont ::ng-deep .form-check-input:disabled~.form-check-label.spocName{opacity:unset!important}.checkconfigcont tr.mat-header-row{height:56px;border-bottom:1px solid var(--gray-200, #EAECF0);background:var(--gray-25, #FCFCFD)}.checkconfigcont .detectiontext{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .alerttext{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .alertlabel{width:24px;height:24px;padding:4px 0 2px;justify-content:center;align-items:center;border-radius:200px;background:var(--primary-50, #EAF8FF)}.checkconfigcont .create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .alertsinput{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px;align-items:center;gap:8px}.checkconfigcont .usageerror{display:block;width:255px}.checkconfigcont .reupload{padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;flex:1 0 0;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);width:220px;cursor:pointer;box-shadow:0 1px 2px #1018280d}.checkconfigcont .reuploadtext{color:var(--White, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize;cursor:pointer}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;width:220px}.checkconfigcont .downloadtext{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .assignpadding{padding:0 40px}.checkconfigcont .uploadpadding{padding:0 30% 9px}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .question-left{max-height:50vh;overflow:auto;overflow-x:hidden}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .matWidth{margin-left:12px;margin-right:12px}::ng-deep .mat-tooltip{white-space:pre-line}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.checkconfigcont .matChip-store{height:113px;display:block;overflow-y:scroll;overflow-x:hidden}.emailalert{position:relative;height:500px!important;overflow:auto!important;overflow-x:hidden!important}.emailalert1{overflow-y:auto!important;height:10%!important;position:relative}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}@media screen and (min-width: 1400px){.emailalert{position:relative;height:700px!important;overflow:auto!important;overflow-x:hidden!important}}::ng-deep .swal2-html-container{overflow:hidden!important}.badgeColor{background-color:#fffaeb!important;color:#b54708!important;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;letter-spacing:0em;text-align:center}.config-heading{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px;width:35%}.ps-20{padding-left:7rem!important}.ps-18{padding-left:6.5rem!important}.remove{color:var(--Gray-500, #667085);font-size:12px;font-weight:600;line-height:18px;text-decoration-line:underline;text-transform:capitalize}.chip-container{margin-top:10px}.mat-chip{margin:5px}.dropdown-menu{position:absolute;top:100%;left:0;right:0;background-color:#fff;z-index:1000;display:block;box-sizing:border-box;height:0%}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.position-relative{position:relative!important}.content{background-color:#fff;padding:10px 22px 10px 10px;border-radius:5px;box-shadow:0 0 10px #0000001a}.badge-pill{display:flex;padding:2px 6px 2px 8px;justify-content:center;align-items:center;gap:4px;border-radius:16px;background:var(--Gray-100, #F2F4F7)}.badge-specificdate{max-width:100%;overflow-x:hidden;white-space:normal;display:flex;flex-wrap:wrap}.badge-specificdate .badge{margin-bottom:8px}.bg-color-disabled{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}a.cursor-default{cursor:default!important;background-color:unset!important}.form-control.form-control-solid.disabled{background-color:#eef3f7!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:365px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.selectDay{background-color:var(--bs-primary)!important}\n"] }]
1862
+ args: [{ selector: 'lib-checklist-configure', template: "<div *ngIf=\"loading\" class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"card\">\r\n <ng-container>\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <h3 class=\"card-title align-items-start flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\"\r\n placeholder=\"Enter Checklist Name\" [value]=\"configData?.checkListDetails?.checkListName\" readonly></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\"\r\n #checklistDescription placeholder=\"Enter Checklist Description\"\r\n [value]=\"configData?.checkListDetails?.checkListDescription\" readonly></div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\"\r\n class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"publish()\"><span class=\"ms-2\">Publish</span> </button>\r\n \r\n <button type=\"button\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n (click)=\"savedraft()\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row checkconfigcont mt-2\" *ngIf=\"configData\">\r\n <div class=\"col-xl-3 leftcard\">\r\n <div class=\"card px-7 py-7\">\r\n <div class=\"section-leftheading1\">{{configData?.checkListDetails?.checkListName}}</div>\r\n <div *ngIf=\"obj.checkListId\" class=\"section-left\">\r\n <div *ngFor=\"let section of sections; let i=index;\">\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"fs-4 fw-bold section\">{{section.name}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"show===i\" class=\"question-left\">\r\n <div cdkDropList [cdkDropListData]=\"section.questions\">\r\n \r\n <div *ngFor=\"let question of section.questions;let j=index;\" class=\"my-2 q-btn\" cdkDrag>\r\n \r\n <div class=\"editablecontent\">\r\n {{question.qname}}\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-6\">Schedule</div>\r\n \r\n <div *ngIf=\"type === 'mobileusagedetection' || type === 'storeopenandclose'\" class=\"mt-4 mx-2 sub\"><span\r\n class=\" mx-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2\">{{configData.checkListDetails.scheduleStartTime}} to\r\n {{configData.checkListDetails.scheduleEndTime}}</span>\r\n </div>\r\n \r\n \r\n \r\n <div *ngIf=\"['custom'].includes(type)\">\r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\"\r\n viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path\r\n d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.schedule === 'onetime' ?\r\n 'One-time' : (configData?.checkListDetails?.schedule | titlecase)}}\r\n </span></div>\r\n \r\n <div class=\"mt-4 mx-2 sub\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"mt-2 ms-2\">{{configData?.checkListDetails?.scheduleStartTime ?\r\n configData?.checkListDetails?.scheduleStartTime.substr(-8) : configData?.openTime}} to\r\n {{configData?.checkListDetails?.scheduleEndTime ?\r\n configData?.checkListDetails?.scheduleEndTime.substr(-8) : configData?.closeTime}}</span>\r\n </div>\r\n \r\n <div class=\"mt-4 mx-2 sub\" *ngIf=\"showRangeValue\"><span><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span><span\r\n class=\"mt-2 ms-2\"><span>{{configData?.checkListDetails?.configStartDate}}</span><span\r\n *ngIf=\"configData?.checkListDetails?.configEndDate !== '' && configData?.checkListDetails?.configEndDate !== null\">\r\n to {{configData?.checkListDetails?.configEndDate}}</span></span></div>\r\n \r\n <div class=\"col-lg-10 editques\" *ngIf=\"['custom'].includes(type) && !disabledQuestion\">\r\n <a (click)=\"saveandredirect(obj.checkListId)\"\r\n class=\"btn-outline btn-outline-dashed btn btn-light upload\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M14.6666 2.5009C14.8855 2.28203 15.1453 2.10842 15.4313 1.98996C15.7173 1.87151 16.0238 1.81055 16.3333 1.81055C16.6428 1.81055 16.9493 1.87151 17.2353 1.98996C17.5213 2.10842 17.7811 2.28203 18 2.5009C18.2188 2.71977 18.3924 2.97961 18.5109 3.26558C18.6294 3.55154 18.6903 3.85804 18.6903 4.16757C18.6903 4.4771 18.6294 4.7836 18.5109 5.06956C18.3924 5.35553 18.2188 5.61537 18 5.83424L6.74996 17.0842L2.16663 18.3342L3.41663 13.7509L14.6666 2.5009Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"uploadtext\">Edit Questions</span></a>\r\n \r\n </div>\r\n </div>\r\n </h3>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-6 mx-4 sub\">Email</div>\r\n </div>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"mx-4 mt-4 sub\">if usage exceeds\r\n {{configData?.checkListDetails?.alert?.usageExceeds}}\r\n events\r\n </div>\r\n <div *ngIf=\"type === 'storeopenandclose'\">\r\n <div class=\"card-label section-leftheading1\">Alerts</div>\r\n <div class=\"mt-4 mx-4 sub\">Send email everyday to</div>\r\n </div>\r\n <h3 *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"card-title align-items-start flex-column \">\r\n <div class=\"card-label section-leftheading1 mt-4\">Detection Areas</div>\r\n \r\n <div class=\"mt-4 mx-2 sub\"><span *ngFor=\"let zone of configData?.checkListDetails?.detectionArea\"\r\n class=\"badge mx-2 mt-4 badge-light checklistlabel fs-base\">\r\n <i class=\"ki-duotone ki-arrow-up checklisttext\"></i>\r\n {{zone}}\r\n </span></div>\r\n </h3>\r\n \r\n \r\n </div>\r\n </div>\r\n <div class=\"col-xl-9\">\r\n <div class=\"card card-flush h-xl-100\">\r\n <div class=\"card-body px-7\">\r\n <div class=\"schedule\">\r\n <div>\r\n <h2 class=\"section-leftheading\">Schedule<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n <div class=\"row\" *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-2 mx-4\">From</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-4 d-flex\">\r\n <span class=\"sub mt-3 mx-4\">To</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\" placeholder=\"Set store open time\"\r\n name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n \r\n </div>\r\n <div *ngIf=\"['custom'].includes(type)\">\r\n <div class=\"col-md-12 mt-6 mb-1\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2 mt-3\">\r\n <span class=\"mx-6 sub\">For</span>\r\n </div>\r\n <div class=\"col-md-3 dropdown\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.schedule\"\r\n (change)=\"updateSchedule($event)\">\r\n <option value=\"onetime\">Does Not Repeat</option>\r\n <option value=\"weekday\"> Every Weekday (Mon - Fri)</option>\r\n <option value=\"daily\">Daily</option>\r\n <option value=\"weekly\">Weekly</option>\r\n <option value=\"monthly\">Monthly</option>\r\n <option value=\"range\">Custom Range</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 mx-2\">At</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('start')\" [(ngModel)]=\"startTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3 ms-5\">Ends</span>&nbsp;&nbsp;\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\"\r\n (change)=\"updateTime('end')\" [(ngModel)]=\"endTime\"\r\n placeholder=\"Set store open time\" name=\"due_date\" type=\"time\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"justify-content-between mt-4\">\r\n <div class=\"config-heading\">Checklist Configuration</div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row col-lg-12 d-flex mt-5\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Once On</span>\r\n </div>\r\n <div class=\"col-md-3 px-4 pe-3\" id=\"dateclass\" data-kt-daterangepicker=\"true\"\r\n data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [minDate]=\"minDate\"\r\n [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" \r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDates\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule !== 'onetime'\">\r\n <div class=\"form-check form-switch mt-6\">\r\n <input type=\"checkbox\" id=\"rangeDate\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"showRangeValue\"\r\n [disabled]=\"configData.checkListDetails?.schedule === 'range'\"\r\n (change)=\"updateDateValue($event)\">\r\n <label for=\"rangeDate\" class=\"form-check-label checklisttext ms-2\">Set defined\r\n date range</label>\r\n </div>\r\n <div class=\"row col-lg-12 d-flex mt-5\" *ngIf=\"showRangeValue\">\r\n <div class=\"col-md-2 d-flex\">\r\n <span class=\"sub mt-3\">Starts from</span>\r\n </div>\r\n <div class=\"col-md-3\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'ps-10' : 'px-4 pe-3'\" id=\"dateclass\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minStartDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedStartDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeStart($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-8 ng-star-inserted\">\r\n <div class=\"row\" *ngIf=\"configData.checkListDetails.schedule !== 'range'\">\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\">Repeats every</span>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\" required=\"\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedDay\"\r\n maxlength=\"2\" min=\"1\" (change)=\"updateRepeatDay()\">\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px ng-pristine ng-invalid ng-touched\"\r\n [(ngModel)]=\"repeatType\" readonly>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'monthly'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day'\" (change)=\"updateMonth('day')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Day</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div\r\n class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <input type=\"text\" autocomplete=\"off\"\r\n class=\"form-control form-control-solid w-100px\"\r\n [ngClass]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day' ? 'disabled' : ''\"\r\n [(ngModel)]=\"configData.checkListDetails.scheduleRepeatedMonthWeek\"\r\n (change)=\"updateValue($event)\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'day'\"\r\n maxLength=\"2\" (input)=\"validate($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date'\" (change)=\"updateMonth('date')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On the</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div\r\n class=\"fv-row mb-5 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDate\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"1\"> First </option>\r\n <option value=\"2\"> Second </option>\r\n <option value=\"3\"> Third</option>\r\n <option value=\"4\"> Fourth</option>\r\n <option value=\"5\"> Last</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"fv-row mb-5 mx-2 fv-plugins-icon-container d-flex flex-column\">\r\n <select\r\n class=\"form-select form-select-lg select2-hidden-accessible ng-pristine ng-valid ng-touched\"\r\n [(ngModel)]=\"monthDay\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'date'\">\r\n <option value=\"Sunday\"> Sunday </option>\r\n <option value=\"Monday\"> Monday </option>\r\n <option value=\"Tuesday\"> Tuesday</option>\r\n <option value=\"Wednesday\"> Wednesday</option>\r\n <option value=\"Thursday\"> Thursday</option>\r\n <option value=\"Friday\">Friday</option>\r\n <option value=\"Saturday\"> Saturday</option>\r\n </select>\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-2 mt-3\">\r\n <div class=\"form-check fontSize\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"day\"\r\n [checked]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup === 'specific'\"\r\n (change)=\"updateMonth('specific')\">\r\n <label class=\"cursor-pointer\" for=\"inlineRadio1\">On Specific Dates</label>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"position-relative\"\r\n (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div\r\n class=\"d-flex align-items-center position-relative w-100\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input ps-14\"\r\n (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"configData.checkListDetails?.scheduleRepeatedMonthSetup !== 'specific'\" />\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\"\r\n *ngIf=\"showDropDown\">\r\n <div class=\"calendar-container\">\r\n <div class=\"content\">\r\n <div class=\"dates\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-2 mb-2\"\r\n *ngFor=\"let date of dates\">\r\n <li class=\"nav-item me-1\"\r\n role=\"presentation\"\r\n (click)=\"selectDate(date)\">\r\n <a class=\"nav-link btn weekstyledate d-flex flex-column flex-center rounded-pill min-w-35px py-2 px-3 \"\r\n [ngClass]=\"selectedDate.includes(date) ? 'active btn-active-primary' : ''\"\r\n data-bs-toggle=\"tab\"\r\n aria-selected=\"false\"\r\n tabindex=\"-1\"\r\n role=\"tab\">\r\n <span\r\n class=\"pillstyle\">{{\r\n date }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button ms-2\"\r\n (click)=\"submitDate();showDropDown= false;\">\r\n <button\r\n class=\"btn btn-primary btn-block w-100\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 flex-wrap\">\r\n <span *ngFor=\"let date of submittedDates\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ getDateWithSuffix(date) }}\r\n <span (click)=\"removeBadge(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails.schedule)\">\r\n <ul class=\"nav nav-pills d-flex flex-nowrap mb-3\" role=\"tablist\">\r\n \r\n <ng-container\r\n *ngFor=\"let day of ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\">\r\n <li class=\"nav-item me-1\" role=\"presentation\"\r\n (click)=\"(configData.checkListDetails.schedule === 'weekly' || (configData.checkListDetails.schedule === 'weekday' && !['Sunday','Saturday'].includes(day))) ? setDay(day) : ''\">\r\n <a class=\"nav-link btn weekstyle d-flex flex-column flex-center rounded-pill min-w-45px me-2 py-4 px-3\"\r\n [ngClass]=\"(configData.checkListDetails.schedule === 'weekday' && ['Sunday','Saturday'].includes(day)) ? 'cursor-default' : selectedDays.includes(day) ? 'selectDay' : ''\"\r\n data-bs-toggle=\"tab\" aria-selected=\"false\" tabindex=\"-1\"\r\n role=\"tab\">\r\n <span class=\"pillstyle\">{{ day[0] }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"configData.checkListDetails.schedule === 'range'\">\r\n <div class=\"col-md-12 ng-star-inserted\">\r\n <div class=\"row\">\r\n \r\n <div class=\"col-lg-6 d-flex\">\r\n <div class=\"form-check form-switch mt-3\">\r\n <input type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n class=\"form-check-input ng-valid ng-dirty ng-touched\"\r\n [(ngModel)]=\"specific\" (change)=\"updateSpecific($event)\">\r\n <label for=\"flexSwitchCheckDefault\"\r\n class=\"form-check-label checklisttext ms-2\">On Specific\r\n Dates</label>\r\n </div>\r\n <div class=\"px-4 pe-3 position-relative\" (clickOutside)=\"closeDropDown()\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"d-flex align-items-center position-relative w-300px\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control dropdown-input ps-14\" (click)=\"toggleDropDown()\" readonly\r\n placeholder=\"Select Dates\"\r\n [disabled]=\"!specific\"/>\r\n </div>\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu w-100\" *ngIf=\"showDropDown\">\r\n <lib-multi-date-datepicker (selectedDates)=\"selectSpecificDate($event)\" [predefinedDates]=\"selectedDateList\" [startDate]=\"configData.checkListDetails.configStartDate\" [endDate]=\"configData.checkListDetails.configEndDate\"></lib-multi-date-datepicker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-6 py-3 badge-specificdate\">\r\n <div class=\"d-flex mt-3 ms-5 flex-wrap\">\r\n <span *ngFor=\"let date of selectedDateList\"\r\n class=\"badge badge-pill badge-light checklisttext me-4\">\r\n {{ date }}\r\n <span (click)=\"removeDate(date)\" class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 ng-star-inserted\"\r\n [hidden]=\"!showRangeValue || configData.checkListDetails.schedule === 'onetime'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'mt-4' : 'mt-2'\">\r\n <span class=\"sub\">Ends On</span>\r\n </div>\r\n <div class=\"col-md-3\" id=\"dateclass\" [ngClass]=\"configData.checkListDetails.schedule === 'range' ? 'ps-9' : 'px-4 pe-3'\" data-kt-daterangepicker=\"true\" data-kt-daterangepicker-opens=\"left\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd\r\n [singleDatePicker]=\"true\" [minDate]=\"minEndDate\" [drops]=\"'down'\" [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedEndDate\" [autoApply]=\"false\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"dateRangeEnd($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n <div class=\"mt-5 remove cursor-pointer ms-4\" (click)=\"onDatepickerRefresh()\"\r\n *ngIf=\"configData.checkListDetails.configEndDate !== '' && configData.checkListDetails.configEndDate !== null && configData.checkListDetails.schedule !=='range'\">\r\n Remove\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'onetime'\">Occurs on\r\n the day {{configData.checkListDetails?.scheduleDate | date:'dd MMM YYYY'}}</div>\r\n <div class=\"my-3 user\"\r\n *ngIf=\"['weekday','weekly'].includes(configData.checkListDetails?.schedule)\">Occurs\r\n every {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !=='01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} week<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span> on\r\n {{selectedDays.toString()}}<span *ngIf=\"showRangeValue\"> starting\r\n {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'daily'\">Occurs every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} day<span\r\n *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s</span><span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate \">until{{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'monthly'\">Occurs\r\n every\r\n {{(configData.checkListDetails?.scheduleRepeatedDay?.length &&\r\n configData.checkListDetails?.scheduleRepeatedDay !== '01') ?\r\n configData.checkListDetails?.scheduleRepeatedDay : ''}} month<span *ngIf=\"configData.checkListDetails?.scheduleRepeatedDay !== 01\">s </span>{{(configData.checkListDetails?.scheduleRepeatedMonthSetup === 'day') ? ('on day ' + configData.checkListDetails.scheduleRepeatedMonthWeek) : configData.checkListDetails?.scheduleRepeatedMonthSetup === 'date' ? updateMonthValue():\r\n updateSpecificValue()}}<span *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate | date:'dd MMM YYYY'}} <span\r\n *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n <div class=\"my-3 user\" *ngIf=\"configData.checkListDetails?.schedule === 'range'\">Occurs every\r\n {{configData.checkListDetails?.scheduleWeekDays?.toString()}} <span\r\n *ngIf=\"showRangeValue\"> starting {{configData.checkListDetails?.configStartDate |\r\n date:'dd MMM YYYY'}} <span *ngIf=\"configData.checkListDetails?.configEndDate\">until\r\n {{configData.checkListDetails?.configEndDate | date:'dd MMM YYYY'}}</span></span></div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"section-left\" *ngIf=\"['custom'].includes(type)\">\r\n <div>\r\n <div class=\"d-flex align-items-center justify-content-between mt-4\">\r\n <div class=\"config-heading\">Response Configuration</div>\r\n <hr class=\"mx-2\">\r\n <svg class=\"cursor-pointer\" (click)=\"configaccordian()\"\r\n [ngClass]=\"{'rotate' : showconfig}\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"35\" height=\"35\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div *ngIf=\"showconfig\">\r\n <div cdkDropList>\r\n <div cdkDrag>\r\n <div class=\"col-lg-12\"\r\n [ngClass]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific') ? 'bg-color-disabled' : ''\">\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowOnce ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowOnce\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"oneTime\"\r\n [disabled]=\"['onetime','daily'].includes(configData?.checkListDetails.schedule) || (configData?.checkListDetails.schedule === 'monthly' && configData?.checkListDetails.scheduleRepeatedMonthSetup !=='specific')\">\r\n <label class=\"form-check-label sub ms-2\" for=\"oneTime\">Only one\r\n time\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"oneTime\">By\r\n enabling this, the response can be captured only once for\r\n this checklist <span *ngIf=\"showRangeValue\">from\r\n {{configData.checkListDetails.configStartDate}} <span\r\n *ngIf=\"configData.checkListDetails.configEndDate\">to\r\n {{configData.checkListDetails.configEndDate}}.</span></span></label>\r\n </div>\r\n </div>\r\n <div class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\" configData?.checkListDetails?.allowedOverTime ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedOverTime\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"fillResponse\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"fillResponse\">Fill response after configure\r\n time.</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"fillResponse\">By enabling, the user can fill the\r\n checklist even after the above configured\r\n end-time.</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedStoreLocation ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedStoreLocation\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"geoFencing\">\r\n <label class=\"form-check-label sub ms-2\" for=\"geoFencing\">Geo\r\n fencing\r\n </label><br>\r\n <label class=\"form-check-label subtext ms-2\" for=\"geoFencing\">By\r\n enabling, the checklist can be filled by the user only when\r\n inside the store.</label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"fv-row checklistturnoff mt-4 fv-plugins-icon-containe\">\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input mt-3\"\r\n [checked]=\"configData?.checkListDetails?.allowedMultiSubmit ? true : false\"\r\n [(ngModel)]=\"configData.checkListDetails.allowedMultiSubmit\"\r\n [ngModelOptions]=\"{standalone: true}\" type=\"checkbox\"\r\n id=\"allowedMultiSubmitSwitch\">\r\n <label class=\"form-check-label sub ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">Allow multiple\r\n responses</label><br>\r\n <label class=\"form-check-label subtext ms-2\"\r\n for=\"allowedMultiSubmitSwitch\">By enabling, the checklist\r\n can be filled multiple times in a day</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <div *ngIf=\"['storeopenandclose','eyetest'].includes(type)\" class=\"mt-6 mx-4 sub\">Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div>\r\n </div>\r\n <div *ngIf=\"type === 'unattended'\" class=\"mt-6 mx-4 sub\">\r\n Time taken to assist by staff &lt;= 1 mins | Staff to customer time spent &lt;=1 mins\r\n <!-- Store opens at <span\r\n class=\"fw-600\"><u>{{configData?.openTime}}</u></span> and closes\r\n at <span class=\"fw-600\"><u>{{configData?.closeTime}}</u></span>, everyday. <div\r\n class=\"separator mt-8\"></div> -->\r\n </div>\r\n <div *ngIf=\"type !=='custom'\">\r\n <div *ngIf=\"!['storeopenandclose','eyetest'].includes(type)\">\r\n <h2 class=\"section-leftheading mt-8\">Alerts\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </h2>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required\r\n minlength=\"2\" maxlength=\"3\" (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"['uniformdetection','mobileusagedetection','unattended','packageConfiguration'].includes(type)\"\r\n class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">Send Alert to </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <div class=\"fv-row fv-plugins-icon-container\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.alert.alertsTo\" (selectedList)=\"updateAlert($event)\"></lib-chip-dropdown>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <div *ngIf=\"['uniformdetection','mobileusagedetection'].includes(type)\">\r\n <h2 class=\"section-leftheading mt-8\">Detection Areas<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row ng-star-inserted\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-4\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\"> Detect mobile usage except </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"zoneList\" [selectedData]=\"configData.checkListDetails.detectionArea\" (selectedList)=\"updateZone($event)\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n <div class=\"separator mt-8\"></div>\r\n </div>\r\n \r\n <!-- <div>\r\n <div class=\"d-flex\">\r\n <div><h2 class=\"section-leftheading mt-8\">{{type === 'mobileusagedetection' ? 'To be Acknowledged by' : 'Approver'}}</h2></div>\r\n <div><span class=\"form-check form-switch ms-3 mt-6\">\r\n <input type=\"checkbox\" role=\"switch\" id=\"support\" class=\"form-check-input mt-3 cursor-pointer\">\r\n </span></div>\r\n </div>\r\n <span>By enabling, the users will be able to acknowledge the checklist</span>\r\n <div *ngIf=\"type === 'mobileusagedetection'\" class=\"col-md-12 mt-8\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-3 mt-2 \">\r\n <span class=\"mx-4 sub\">If usage exceeds</span>\r\n </div>\r\n <div class=\"col-lg-1\">\r\n <div class=\"fv-row mb-5 fv-plugins-icon-container flex flex-column\">\r\n \r\n <input class=\"form-control form-control-solid w-55px\"\r\n [(ngModel)]=\"configData?.checkListDetails.alert.usageExceeds\" type=\"text\"\r\n (keypress)=\"omit_special_char($event)\" autocomplete=\"off\" required minlength=\"2\" maxlength=\"3\"\r\n (blur)=\"validateLimit($event)\" />\r\n <span class=\"text-danger usageerror\" *ngIf=\"errormsg\">Please enter event count\r\n between 15 to 999</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <span class=\"sub\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row ng-star-inserted mt-3\">\r\n <div class=\"col-lg-3\">\r\n <div class=\"d-flex align-items-center my-5\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"sub mx-4\">To be approved by </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-9\">\r\n <lib-chip-dropdown [data]=\"alertUsers\" [selectedData]=\"configData.checkListDetails.approver\"></lib-chip-dropdown>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"separator mt-8\"></div> -->\r\n </div>\r\n \r\n \r\n </div>\r\n </div>\r\n <div>\r\n <div *ngIf=\"!tableData.length && !tableFilter.length && showImage\">\r\n <h2 class=\"section-leftheading mt-8\">Assign<span\r\n class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></h2>\r\n \r\n <div class=\"row mb-6\">\r\n <div class=\"col-lg-12 assignpadding mb-10\">\r\n <div class=\"row\">\r\n <div class=\"uploadpadding\">\r\n <span class=\"mx-14\"><svg class=\"mx-20 mt-12\" width=\"56\" height=\"56\"\r\n viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <path\r\n d=\"M25.09 25C25.3251 24.3317 25.7892 23.7681 26.4 23.4091C27.0108 23.0502 27.7289 22.9189 28.4272 23.0387C29.1255 23.1585 29.7588 23.5215 30.2151 24.0635C30.6713 24.6055 30.9211 25.2915 30.92 26C30.92 28 27.92 29 27.92 29M28 33H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\"\r\n stroke-width=\"8\" />\r\n </svg>\r\n </span>\r\n <h5 class=\"section-leftheading mt-6 mx-10\">Upload to assign users</h5>\r\n <ul class=\"subtext mx-4\">\r\n <li>Click \u201CDownload Template\u201D</li>\r\n <li> Add your data to the template file</li>\r\n <li> Upload it below to assign users</li>\r\n </ul>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button #upload (click)=\"file.click()\" class=\"btn btn-primary reupload\">\r\n <span class=\"svg-icon svg-icon-primary \">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Upload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" type=\"file\" #file\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download Template</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n <div class=\"col-lg-2\">\r\n </div>\r\n </div>\r\n \r\n \r\n \r\n </div>\r\n <div class=\"\" *ngIf=\"tableData.length || tableFilter.length || !showImage\">\r\n <div class=\"card-header border-0 pt-6\" *ngIf=\"!showImage || tableData.length\">\r\n <div class=\"card-title\">\r\n <div class=\"card-title align-items-start flex-column \"><span\r\n class=\"section-leftheading\">Assign<span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1874_66195)\">\r\n <path\r\n d=\"M8.00016 10.6673V8.00065M8.00016 5.33398H8.00683M14.6668 8.00065C14.6668 11.6826 11.6821 14.6673 8.00016 14.6673C4.31826 14.6673 1.3335 11.6826 1.3335 8.00065C1.3335 4.31875 4.31826 1.33398 8.00016 1.33398C11.6821 1.33398 14.6668 4.31875 14.6668 8.00065Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1874_66195\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1 me-2\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" data-kt-subscription-table-filter=\"search\"\r\n (change)=\"searchTableData()\" [(ngModel)]=\"tableFilter\"\r\n class=\"form-control form-control-solid w-400px ps-14 mx-1 me-4\"\r\n placeholder=\"Search by Store name\">\r\n <div class=\"d-flex justify-content-end\" data-kt-subscription-table-toolbar=\"base\">\r\n <a (click)=\"addStoreComponent()\" type=\"button\"\r\n class=\"btn btn-primary createbuttons px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\" tabindex=\"0\"><span\r\n class=\"svg-icon svg-icon-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16602V15.8327M4.16675 9.99935H15.8334\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"create\">Add Store</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mt-2\">\r\n <div class=\"col-lg-12\" *ngIf=\"!tableData.length && !showImage\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for users</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body-sop pt-0 mx-4\" *ngIf=\"tableData.length\">\r\n <div class=\"sopTable table-responsive overflow-hidden\">\r\n <div *ngIf=\"tableLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"tableData.length && !tableLoading\">\r\n <div class=\"table-responsive\" >\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n <span><input class=\"form-check-input h-14px w-14px\" type=\"checkbox\" name=\"flag\" (change)=\"checkAll($event)\"\r\n [(ngModel)]=\"selectAll\"> <span class=\"form-check-label mx-4\" >StoreName</span></span>\r\n </th>\r\n <th class=\"text-align-left\">\r\n <span>Assigned To</span>\r\n </th>\r\n <th class=\"text-align-left\">\r\n <span >Email </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of tableData;let i=index\">\r\n <td>\r\n <input class=\"form-check-input h-14px w-14px userFlag\" type=\"checkbox\" name=\"flag\"\r\n (change)=\"updateFlag($event,i,data)\"\r\n [checked]=\"configData?.checkListDetails?.assignedUsers.includes(data?.id)\" /><span class=\"form-check-label mx-4\">{{data.userName}}</span>\r\n </td>\r\n <td>{{data.storeName}}</td>\r\n <td>{{data.userEmail}}</td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"currentValue\" [totalItems]=\"recordsTotal\"\r\n [paginationSizes]=\"paginationSize\" [pageSize]=\"size\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n <br>\r\n </div>\r\n <div class=\"col-lg-12\" *ngIf=\"!tableLoading\">\r\n <div class=\"row mt-6 assignpadding\">\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button (click)=\"Reupload()\" class=\"btn btn-primary reupload\"\r\n *ngIf=\"!reupload\"><span class=\"svg-icon svg-icon-primary \"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"mb-2 mx-1\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 19 19\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\" *ngIf=\"!reupload\">Reupload Template</span>\r\n </button>\r\n <button (click)=\"file1.click()\" class=\"btn btn-primary reupload\" *ngIf=\"reupload\"\r\n id=\"reupload\">\r\n <span class=\"svg-icon svg-icon-primary \"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-2 mx-1\" width=\"21\" height=\"20\" viewBox=\"0 0 19 19\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"reuploadtext\">\r\n Reupload Template\r\n </span>\r\n </button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <button class=\"btn-light-primary download\" (click)=\"downloadTemplate()\"><span\r\n class=\"svg-icon svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mb-1\" width=\"21\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"downloadtext\">Download This CSV</span></button>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n <!-- <div class=\"row footer1 mt-10 mx-5\">\r\n <div class=\"text-dark\">\r\n <span class=\"text-dark footertext me-1\">Need help?</span>\r\n <a href=\"https://tangoeye.ai/\" target=\"_blank\" class=\"text-primary footertext text-hover-primary\"><u>Watch\r\n The Video Tutorial</u>\r\n </a>\r\n </div>\r\n </div> -->\r\n \r\n </div>\r\n</div>", styles: [".card{border-radius:16px}.row>*{padding-right:0}.checkconfigcont .card{height:100%}.checkconfigcont .section{display:inline-block;width:160px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .radio{font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .mat-radio-button.mat-primary .mat-radio-inner-circle,.checkconfigcont .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.checkconfigcont .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.checkconfigcont .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#00a3ff}.checkconfigcont .section-leftheading1{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .section{color:var(--Black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .svg-icon svg{height:1.25em;width:1.25em}.checkconfigcont .section-leftheading{overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:20px;font-style:normal;font-weight:600;line-height:28px}.checkconfigcont .sub{color:var(--gray-700, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .subopen{color:var(--black, #101828);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .symbol-circle{margin-left:-6px}.checkconfigcont .checklistlabel{padding:4px 12px;justify-content:center;align-items:center;border-radius:16px;background:var(--gray-100, #F2F4F7)}.checkconfigcont .subtitle{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0em;text-align:left;color:#667085}.checkconfigcont .form-control.form-control-solid{display:flex;padding:10px 14px;align-items:center;gap:8px;align-self:stretch;border-radius:8px;border:1px solid var(--gray-500, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .searchplaceholder{font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.checkconfigcont .custom-appbox{border-radius:12px}.checkconfigcont input::placeholder{color:#667085!important;opacity:1}.checkconfigcont .checklisttext{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.checkconfigcont .separator{height:1px;align-self:stretch}.checkconfigcont ::ng-deep .mat-form-field-infix{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;width:500px!important;line-height:24px}.checkconfigcont ::ng-deep .storechip{color:#101828;font-size:16px;width:100%;font-family:Inter;font-weight:400;width:780px!important;line-height:24px}.checkconfigcont ::ng-deep .mat-chip{font-family:Inter;font-style:normal;font-weight:500;font-size:14px;line-height:17px;text-align:center;color:#5e6278!important}.checkconfigcont ::ng-deep .mat-chip-list-wrapper .mat-standard-chip{margin:4px}.checkconfigcont ::ng-deep .matChip-store{height:100px;display:block;overflow-y:scroll;overflow-x:hidden}.checkconfigcont ::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.checkconfigcont ::ng-deep .mat-form-field-underline{display:none}.checkconfigcont ::ng-deep .mat-form-field-ripple{display:none}.checkconfigcont .subtext{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-weight:400;line-height:20px;align-items:center;gap:8px;align-self:stretch}.checkconfigcont .upload{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .upload:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .uploadtext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.checkconfigcont .savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.checkconfigcont .savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0;color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .svg-icon1:hover:not(.svg-active){color:#fff}.checkconfigcont .btn-outline{border:1px solid lightgrey!important;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.checkconfigcont .footertext{color:#000;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;text-align:right}.checkconfigcont .footer1{text-align:end}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle{background-color:#009ef7!important}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#1da1f21a;color:#009ef7}.checkconfigcont ::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.checkconfigcont ::ng-deep th.mat-header-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-cell:first-of-type,.checkconfigcont ::ng-deep td.mat-footer-cell:first-of-type{padding-right:none}.checkconfigcont ::ng-deep .sopTable input{border:none;padding:0!important}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont ::ng-deep .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont ::ng-deep .card-body-sop{border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FCFCFD);border-radius:6px}.checkconfigcont .schedule{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checkconfigcont .user{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .dropdown{margin-left:-9%}.checkconfigcont .pillstyle{color:var(--gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .leftcard{position:relative}.checkconfigcont .editques{position:absolute!important;left:12%;transform:translate(-5%);bottom:30px}.checkconfigcont .questiontype{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#f1faff!important}.checkconfigcont .btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont .nav{display:flex;align-items:center;gap:16px;flex:1 0 0;align-self:stretch;--bs-nav-link-color: none}.checkconfigcont .form-control.form-control-solid,.checkconfigcont .form-select.form-select-solid{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .checklistturnoff{border-radius:8px;border:1px solid var(--gray-200, #EAECF0);background:var(--white, #FFF);display:flex;padding:16px;align-items:flex-start;align-self:stretch}.checkconfigcont .btn.btn-outline.btn-outline-dashed.btn-outline-default:hover:not(.btn-active){border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;display:flex;padding:10px 18px;justify-content:center;align-items:center;gap:8px;flex:1 0 0}.checkconfigcont .sopTable input{border:none;padding:0!important}.checkconfigcont .sopTable input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkconfigcont .sopTable input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.checkconfigcont .sopTable input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.checkconfigcont .option{font-weight:400;display:block;min-height:1.2em;padding:0 2px 1px}.checkconfigcont .card hr{width:-webkit-fill-available}.checkconfigcont .imgnodata1{width:216px;height:245px}.checkconfigcont .editablecontent{display:inline-block;width:230px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.checkconfigcont #navfont{font-size:1.15rem!important}.checkconfigcont .imgdata{width:50%;height:50%}.checkconfigcont .imgnodata{width:312px;height:312px;margin-top:-4%}.checkconfigcont .card .card-header{display:flex;justify-content:space-between;align-items:stretch;flex-wrap:wrap;min-height:70px;padding:0 .25rem;background-color:transparent;border-bottom:none}.checkconfigcont ::ng-deep .mat-select{background:#f5f8fa;border-radius:8px}.checkconfigcont ::ng-deep .mat-select-value{height:42px}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-btn{border:none!important}.checkconfigcont ::ng-deep .multiselect-dropdown .dropdown-list{border:none;box-shadow:0 1px 5px #959595;margin-left:-12px}.checkconfigcont ::ng-deep .multiselect-dropdown:focus-visible{border:none!important;box-shadow:0 1px 5px #959595;margin-left:-12px;max-height:250px}.checkconfigcont .custom-checkbox{--checkbox-background-checked: white !important;--checkmark-color: #009BF3;--border-color: #009BF3;--border-radius: 4px }.checkconfigcont .form-check.form-check-custom{display:flex;margin:0;height:44px;padding:12px 24px;align-items:center;gap:12px;align-self:stretch}.checkconfigcont .tabsub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .selectstore{color:var(--primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.checkconfigcont .headeralign{color:var(--gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .rotate{transform:rotate(180deg);transition:1s}.checkconfigcont .weekstyle{border-radius:20px;background:var(--gray-100, #F2F4F7)}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}.checkconfigcont ::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}.checkconfigcont ::ng-deep .list{overflow-y:auto}.checkconfigcont ::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}.checkconfigcont ::ng-deep .swal2-container{padding:.4em!important}.checkconfigcont ::ng-deep .swal2-icon{border:1px solid white!important}.checkconfigcont ::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}.checkconfigcont ::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}.checkconfigcont ::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.checkconfigcont ::ng-deep .form-check-input[disabled]~.form-check-label.spocName,.checkconfigcont ::ng-deep .form-check-input:disabled~.form-check-label.spocName{opacity:unset!important}.checkconfigcont tr.mat-header-row{height:56px;border-bottom:1px solid var(--gray-200, #EAECF0);background:var(--gray-25, #FCFCFD)}.checkconfigcont .detectiontext{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.checkconfigcont .alerttext{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.checkconfigcont .alertlabel{width:24px;height:24px;padding:4px 0 2px;justify-content:center;align-items:center;border-radius:200px;background:var(--primary-50, #EAF8FF)}.checkconfigcont .create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.checkconfigcont .alertsinput{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px;align-items:center;gap:8px}.checkconfigcont .usageerror{display:block;width:255px}.checkconfigcont .reupload{padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;flex:1 0 0;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);width:220px;cursor:pointer;box-shadow:0 1px 2px #1018280d}.checkconfigcont .reuploadtext{color:var(--White, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize;cursor:pointer}.checkconfigcont .download{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);background:var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:10px 18px!important;justify-content:center;align-items:center;gap:8px;width:220px}.checkconfigcont .downloadtext{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.checkconfigcont .assignpadding{padding:0 40px}.checkconfigcont .uploadpadding{padding:0 30% 9px}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .question-left{max-height:50vh;overflow:auto;overflow-x:hidden}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .matWidth{margin-left:12px;margin-right:12px}::ng-deep .mat-tooltip{white-space:pre-line}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.checkconfigcont .matChip-store{height:113px;display:block;overflow-y:scroll;overflow-x:hidden}.emailalert{position:relative;height:500px!important;overflow:auto!important;overflow-x:hidden!important}.emailalert1{overflow-y:auto!important;height:10%!important;position:relative}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}@media screen and (min-width: 1400px){.emailalert{position:relative;height:700px!important;overflow:auto!important;overflow-x:hidden!important}}::ng-deep .swal2-html-container{overflow:hidden!important}.badgeColor{background-color:#fffaeb!important;color:#b54708!important;font-family:Inter;font-size:14px;font-weight:500;line-height:20px;letter-spacing:0em;text-align:center}.config-heading{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px;width:35%}.ps-20{padding-left:7rem!important}.ps-18{padding-left:6.5rem!important}.remove{color:var(--Gray-500, #667085);font-size:12px;font-weight:600;line-height:18px;text-decoration-line:underline;text-transform:capitalize}.chip-container{margin-top:10px}.mat-chip{margin:5px}.dropdown-menu{position:absolute;top:100%;left:0;right:0;background-color:#fff;z-index:1000;display:block;box-sizing:border-box;height:0%}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.position-relative{position:relative!important}.content{background-color:#fff;padding:10px 22px 10px 10px;border-radius:5px;box-shadow:0 0 10px #0000001a}.badge-pill{display:flex;padding:2px 6px 2px 8px;justify-content:center;align-items:center;gap:4px;border-radius:16px;background:var(--Gray-100, #F2F4F7)}.badge-specificdate{max-width:100%;overflow-x:hidden;white-space:normal;display:flex;flex-wrap:wrap}.badge-specificdate .badge{margin-bottom:8px}.bg-color-disabled{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}a.cursor-default{cursor:default!important;background-color:unset!important}.form-control.form-control-solid.disabled{background-color:#eef3f7!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.selectDay{background-color:var(--bs-primary)!important}a.selectDay span{color:#fff!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr th .form-check-label,tr td .form-check-label{color:var(--Gray-700, #344054)!important}:host::ng-deep .schedule .md-drppicker .btn{line-height:10px!important}:host::ng-deep .schedule .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .schedule .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .schedule .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .schedule .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .schedule .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .schedule .md-drppicker td.active,:host::ng-deep .schedule .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .schedule .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .schedule .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .schedule .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .schedule table th,:host::ng-deep .schedule table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .schedule .md-drppicker td.available.prev,:host::ng-deep .schedule .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .schedule .md-drppicker td.available.next,:host::ng-deep .schedule .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .schedule table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .schedule .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .schedule .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .schedule .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.fontSize{font-size:14px}\n"] }]
1827
1863
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NgbModal }, { type: i3.TraxService }, { type: i4.ToastService }, { type: i5.GlobalStateService }], propDecorators: { fileInput: [{
1828
1864
  type: ViewChild,
1829
1865
  args: ['file']
@@ -1846,4 +1882,4 @@ function getWeekNumber(date) {
1846
1882
  let findIndex = days.findIndex((item) => item == date.format('YYYY-MM-DD'));
1847
1883
  return (findIndex + 1);
1848
1884
  }
1849
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrbGlzdC1jb25maWd1cmUvY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrbGlzdC1jb25maWd1cmUvY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdySCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUvRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFPaEMsTUFBTSxPQUFPLDJCQUEyQjtJQW1HakI7SUFBMkM7SUFBZ0M7SUFBc0I7SUFBd0I7SUFBK0I7SUFBMkI7SUFsR3JMLFNBQVMsQ0FBYztJQUN0QixVQUFVLENBQWM7SUFDNUMsS0FBSyxHQUFPLEtBQUssQ0FBQztJQUNsQixhQUFhLENBQUs7SUFDbEIsT0FBTyxDQUFLO0lBQ1osaUNBQWlDO0lBQ2pDLHlDQUF5QztJQUN6QyxnQ0FB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QUNFLHlCQUF5QjtxUEFLaEIsU0FBUztzQkFBM0IsU0FBUzt1QkFBQyxNQUFNO2dCQUNHLFVBQVU7c0JBQTdCLFNBQVM7dUJBQUMsT0FBTztnQkFrMERsQixZQUFZO3NCQURWLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBMkM3QyxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQyxPQUFPLENBQUUsT0FBTyxDQUFFLENBQUM7SUFFL0MsT0FBUSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFHO1FBQ3pDLElBQUssT0FBTyxDQUFDLE1BQU0sQ0FBRSxNQUFNLENBQUUsS0FBTSxJQUFJLENBQUMsTUFBTSxDQUFFLE1BQU0sQ0FBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBRSxZQUFZLENBQUUsQ0FBRSxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBRSxDQUFDO0tBQ25DO0lBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUMvRSxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXpCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmF4cG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi90cmF4cG9wdXAvdHJheHBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhTdG9yZUNvbXBvbmVudCB9IGZyb20gJy4uL3RyYXgtc3RvcmUvdHJheC1zdG9yZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoZWNrbGlzdC1jb25maWd1cmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2xpc3QtY29uZmlndXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdENvbmZpZ3VyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUxJykgZmlsZUlucHV0MSE6IEVsZW1lbnRSZWY7XHJcbiAgZGF5anM6YW55ID0gZGF5anM7XHJcbiAgc2VsZWN0ZWREYXRlczphbnk7XHJcbiAgbWluRGF0ZTphbnk7XHJcbiAgLy8gdGltZWNvbmZpZzogYW55ID0gXCJSZXBlYXRpbmdcIjtcclxuICAvLyBldmVyeW1vbnRoOiBhbnkgPSBcInRoaXJkb2ZldmVyeW1vbnRoXCI7XHJcbiAgLy8gcGFydGljdWxhcndlZWs6IGFueSA9IFwid2Vla1wiO1xyXG4gIC8vIE9uZXRpbWU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIC8vIFJlcGVhdGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gZmlyc3RvZmV2cnltb250aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHRoaXJkb2ZldmVyeW1vbnRoOiBib29sZWFuID0gdHJ1ZTtcclxuICAvLyBzZWxlY3RUZXh0OiBzdHJpbmcgPSAnU2VsZWN0IEFsbCdcclxuICAvLyBzZWxlY3RzdG9yZVRleHQ6IHN0cmluZyA9ICdTZWxlY3QgQWxsJ1xyXG5cclxuICAvLyBzY2hlZHVsZUZpbHRlcjogc3RyaW5nID0gJ2RheSc7XHJcbiAgLy8gbGl2ZXRpY2tldHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyB2aXNpYmxlID0gdHJ1ZTtcclxuICAvLyBzZWxlY3RhYmxlID0gdHJ1ZTtcclxuICAvLyByZW1vdmFibGUgPSB0cnVlO1xyXG4gIC8vIGFkZE9uQmx1ciA9IHRydWU7XHJcbiAgLy8gZ2xvYmFsX2FsbF91c2VybGlzdDogYW55XHJcbiAgLy8gc2F2ZWRkYXRhOiBhbnk7XHJcbiAgLy8gc3RvcmVvcGVuYW5kY2xvc2VkZXRlY3Rpb246IGJvb2xlYW5cclxuICB0eXBlOiBzdHJpbmcgPSAnY3VzdG9tJztcclxuICAvLyBpZDogYW55O1xyXG4gIG9iajogYW55O1xyXG4gIGNvbmZpZ0RhdGE6IGFueTtcclxuICAvLyBzY2hlZHVsZVN0YXJ0VGltZTogYW55O1xyXG4gIC8vIHNjaGVkdWxlRW5kVGltZTogYW55O1xyXG4gIC8vIHVzYWdlX2V4Y2VlZHM6IGFueTtcclxuICB0YWJsZURhdGE6IGFueSA9IFtdO1xyXG4gIHRhYmxlTG9hZGluZzogYW55ID0gZmFsc2U7XHJcbiAgdGFibGVEaXNwbGF5ZWRDb2x1bW5zOiBhbnkgPSBbXCJuYW1lXCIsIFwicm9sZVwiLCBcImVtYWlsXCJdXHJcbiAgcGFnZVZhbHVlOiBhbnkgPSBbXTtcclxuICBvZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgcmVjb3Jkc1RvdGFsOiBhbnkgPSAwO1xyXG4gIHNpemU6IGFueSA9IDU7XHJcbiAgb2Zmc2V0dmFsdWU6IG51bWJlciA9IDA7XHJcbiAgcGFnZURpc3BsYXk6IGFueSA9IFtdO1xyXG4gIG5leHRidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJhY2tidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGN1cnJlbnRWYWx1ZTogYW55ID0gMTtcclxuICB0YWJsZUZpbHRlcjogYW55ID0gJyc7XHJcbiAgcGFnZVN0YXJ0OiBhbnkgPSAwO1xyXG4gIHBhZ2VFbmQ6IGFueSA9IDA7XHJcbiAgcmVjb3Jkc0NvdW50OiBhbnk7XHJcbiAgcGFnaW5hdGlvblNpemUgPSBbNSwgMTAsIDE1LDIwXTtcclxuICB1c2VyRGF0YTogYW55ID0gW107XHJcbiAgZXhjZWxVc2VyRGF0YTogYW55ID0gW107XHJcbiAgc2hvd0ltYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICBtb250aERheTogYW55O1xyXG4gIHNob3c6IG51bWJlciA9IDA7XHJcbiAgcG9wVXBUaXRsZTogYW55O1xyXG4gIHNob3dJbnRybzogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VhcmNoVXNlcjogYW55O1xyXG4gIGFkZFVzZXJGb3JtOiBib29sZWFuO1xyXG4gIHNvcFN0b3JlczogYW55ID0gW107XHJcbiAgc2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZXJyb3Jtc2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGFydFRpbWU6IGFueTtcclxuICBlbmRUaW1lOiBhbnk7XHJcbiAgY2hlY2tsaXN0SWQ6IGFueTtcclxuICByZXVwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdEFsbFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZW1vdmVVc2VyczphbnkgPSBbXTtcclxuICBzZWxlY3RlZERheXM6IGFueVtdID0gW107XHJcbiAgc2hvd1JhbmdlVmFsdWU6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZERhdGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIG1vbnRoRGF0ZTpzdHJpbmc9Jyc7XHJcbiAgc3BlY2lmaWM6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGU6IGFueTtcclxuICBzZWN0aW9uczogYW55ID0gW107XHJcbiAgTW9udGh3ZWVrTnVtYmVyOiBzdHJpbmc7XHJcbiAgcG9wdXBDb3VudDogbnVtYmVyID0gMDtcclxuICAvLyBlbWFpbExpc3Q6IGFueSA9IFtdO1xyXG4gIHZhbGlkVGltZTpib29sZWFuID0gdHJ1ZTtcclxuICAvLyByYW5nZVN0YXJ0OmFueTtcclxuICAvLyByYW5nZUVuZDphbnk7XHJcbiAgZGlzYWJsZWRRdWVzdGlvbjpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd2NvbmZpZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcmVwZWF0VHlwZTpzdHJpbmc9Jyc7XHJcbiAgc2hvd0Ryb3BEb3duOmJvb2xlYW49IGZhbHNlO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55PSBbXTtcclxuICBkYXRlczogbnVtYmVyW10gPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAzMSB9LCAoXywgaSkgPT4gaSArIDEpOyAvLyBBcnJheSBmcm9tIDEgdG8gMzFcclxuICBzZWxlY3RlZERhdGVMaXN0OmFueSA9IFtdO1xyXG4gIC8vIHJlZnJlc2hQaWNrZXI6Ym9vbGVhbiA9IGZhbHNlXHJcbiAgLy8gem9uZXM6IGFueTtcclxuICAvLyBzZWxlY3RlZERhdGVSYW5nZTphbnk9e31cclxuICBzZWxlY3RlZFN0YXJ0RGF0ZTphbnk7XHJcbiAgbWluU3RhcnREYXRlOmFueTtcclxuICBzZWxlY3RlZEVuZERhdGU6YW55O1xyXG4gIG1pbkVuZERhdGU6YW55O1xyXG4gIGNsaWVudElkOmFueTtcclxuICBhbGVydFVzZXJzOmFueT1bXTtcclxuICB6b25lTGlzdDphbnkgPSBbXTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGU6IFJvdXRlcixwcml2YXRlIGRpYWxvZzpOZ2JNb2RhbCxwcml2YXRlIFNvcFNlcnZpY2U6VHJheFNlcnZpY2UscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1zLnR5cGUgPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5vYmogPSB7XHJcbiAgICAgICAgICAgICAgY2hlY2tMaXN0SWQ6IHBhcmFtcy5jaGVja0xpc3RJZCxcclxuICAgICAgICAgICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50eXBlID0gJ2N1c3RvbSdcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFF1ZXN0aW9uID0gcGFyYW1zLmRpc2FibGVkUXVlc3Rpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vYmogPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogcGFyYW1zLnR5cGUsXHJcbiAgICAgICAgICAgICAgY2xpZW50SWQ6dGhpcy5jbGllbnRJZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHBhcmFtcy50eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5nZXRDbGllbnRVc2VyKCk7XHJcbiAgICAgICAgdGhpcy5nZXRab25lTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuR2V0Q29uZmlnKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBHZXRDb25maWcoKSB7XHJcbiAgICB0aGlzLm1vbnRoRGF0ZSA9ICcnO1xyXG4gICAgdGhpcy5tb250aERheSA9ICcnO1xyXG4gICAgdGhpcy5Tb3BTZXJ2aWNlLmdldGNvbmZpZyh0aGlzLm9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczphbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICBpZiAocmVzLmRhdGEuY2hlY2tMaXN0RGV0YWlscy5jaGVja0xpc3RUeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdElkID0gcmVzLmRhdGEuY2hlY2tMaXN0RGV0YWlscy5faWQ7XHJcbiAgICAgICAgICB0aGlzLnR5cGUgPSByZXMuZGF0YS5jaGVja0xpc3REZXRhaWxzLmNoZWNrTGlzdFR5cGU7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlVXNlcnMgPSByZXMuZGF0YT8uY2hlY2tMaXN0RGV0YWlscz8ucmVtb3ZlZFVzZXJzIHx8IFtdO1xyXG4gICAgICAgICAgLy8gdGhpcy56b25lcyA9IHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uZGV0ZWN0aW9uQXJlYSB8fCBbXTtcclxuICAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zZWN0aW9ucztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gdGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVdlZWtEYXlzIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5lbmRUaW1lID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlRW5kVGltZSA/IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlRW5kVGltZSwgICdoOm1tIEEnKS5mb3JtYXQoJ0hIOm1tJykgOiAnMjI6MDAnO1xyXG4gICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVTdGFydFRpbWUgPyB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZSwgJ2g6bW0gQScpLmZvcm1hdCgnSEg6bW0nKSA6ICcxMDowMCc7XHJcbiAgICAgICAgICB0aGlzLnJlcGVhdFR5cGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ2RhaWx5JyA/ICdEYXknIDogWyd3ZWVrbHknLCd3ZWVrZGF5J10uaW5jbHVkZXModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlKSA/ICdXZWVrJyA6ICdNb250aCc7XHJcbiAgICAgICAgICBpZighdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlRW5kVGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWUgPSBcIjEwOjAwIFBNXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKCF0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVTdGFydFRpbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSBcIjEwOjAwIEFNXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxlcnQ/LmFsZXJ0c1RvLmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmVtYWlsTGlzdCA9IHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxlcnQ/LmFsZXJ0c1RvO1xyXG4gICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlICE9ICdvbmV0aW1lJykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dSYW5nZVZhbHVlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlICE9IG51bGwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgIT0gJycgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnU3RhcnREYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTsgXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxlbmREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyl9O1xyXG4gICAgICAgICAgICAgIHRoaXMubWluU3RhcnREYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxlbmREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgICAgICAgICB0aGlzLm1pbkVuZERhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09ICdtb250aGx5Jykge1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrLnNwbGl0KCcgJyk/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tb250aERhdGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlay5zcGxpdCgnICcpWzBdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoRGF5ID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsuc3BsaXQoJyAnKVsxXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ3NwZWNpZmljJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWREYXRlcyA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zcGVjaWZpY0RhdGUgfHwgW107XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ3JhbmdlJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zcGVjaWZpYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVMaXN0ID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc3BlY2lmaWNEYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA/IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA6IGRheWpzKCkuZm9ybWF0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgICAgICAgdGhpcy5taW5EYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51c2VyRGV0YWlscygpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICBpZiAoZXJyb3IuY29kZSA9PSA0MDMpIHtcclxuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9lcnJvcjQwMyddKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFjY29yZGlhbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93ID09IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gaW5kZXg7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBjb25maWdhY2NvcmRpYW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3djb25maWcgPSAhdGhpcy5zaG93Y29uZmlnO1xyXG4gIH1cclxuICBDaGVja2xpc3QoKSB7XHJcbiAgICAvLyB0aGlzLm1vYmlsZXVzYWdlZGV0ZWN0aW9uID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc3RvcmVvcGVuYW5kY2xvc2VkZXRlY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQuY2hhckNvZGU7ICAvLyAgICAgICAgIGsgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICByZXR1cm4gKGsgPT0gOCB8fCBrID09IDMyIHx8IChrID49IDQ4ICYmIGsgPD0gNTcpKTtcclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUxpbWl0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgPCAxNSkge1xyXG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5lcnJvcm1zZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LnVzYWdlRXhjZWVkcyA9ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5lcnJvcm1zZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIG9uRmlsZVVwbG9hZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgICB0aGlzLnJldXBsb2FkID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZXJEYXRhID0gdGhpcy5leGNlbFVzZXJEYXRhID0gW107XHJcbiAgICBsZXQgZGF0YTogYW55O1xyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPihldmVudC50YXJnZXQpO1xyXG4gICAgbGV0IGlzRXhjZWxGaWxlID0gISF0YXJnZXQuZmlsZXNbMF0ubmFtZS5tYXRjaCgvKC54bHN8Lnhsc3gpLyk7XHJcbiAgICBsZXQgZXJyb3I6YW55ID0gW107XHJcblxyXG4gICAgaWYgKGlzRXhjZWxGaWxlKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cyk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZighZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIFVwbG9hZCBhIFZhbGlkIGZpbGUuJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZhbGlkYXRlRGF0YSA9IGRhdGEuZmluZCgoaXRlbTphbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBpdGVtPy5zdG9yZU5hbWU/LnRyaW0oKSA9PSAnJyB8fCAgaXRlbT8uc3RvcmVfaWQ/LnRyaW0oKSA9PSAnJyB8fCBpdGVtPy51c2VyRW1haWw/LnRyaW0oKSA9PSAnJyB8fCBpdGVtPy51c2VyTmFtZT8udHJpbSgpID09ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0ZURhdGEgIT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2UgVXBsb2FkIGEgVmFsaWQgZmlsZS4nKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50Py51c2VyRW1haWwpIHtcclxuICAgICAgICAgICAgZWxlbWVudC51c2VyRW1haWwgPSBlbGVtZW50Py51c2VyRW1haWwucmVwbGFjZSgvXFxzL2csJycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChlbGVtZW50LnN0b3JlTmFtZSAmJiBlbGVtZW50LnN0b3JlTmFtZS50cmltKCkgPT0gJycpIHx8IGVsZW1lbnQuc3RvcmVOYW1lID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTdG9yZSBOYW1lIC0gQSR7aW5kZXgrMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChlbGVtZW50LnVzZXJFbWFpbCAmJiBlbGVtZW50LnVzZXJFbWFpbC50cmltKCkgPT0gJycpIHx8IGVsZW1lbnQudXNlckVtYWlsID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCB1c2VyRW1haWwgLSBCJHtpbmRleCsyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGVsZW1lbnQudXNlck5hbWUgJiYgZWxlbWVudC51c2VyTmFtZS50cmltKCkgPT0gJycpIHx8IGVsZW1lbnQudXNlck5hbWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIFVzZXIgTmFtZSAtIEMke2luZGV4KzJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50Py51c2VyRW1haWwgJiYgIWVsZW1lbnQudXNlckVtYWlsLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIHVzZXJFbWFpbCAtIEIke2luZGV4KzJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjaGVja1VzZXJJbmRleCA9IHRoaXMudXNlckRhdGEuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0udXNlckVtYWlsID09IGVsZW1lbnQudXNlckVtYWlsKTtcclxuICAgICAgICAgIGlmIChjaGVja1VzZXJJbmRleCAhPSAtMSAmJiAodGhpcy51c2VyRGF0YVtjaGVja1VzZXJJbmRleF0/LnVzZXJOYW1lICE9IG51bGwgJiYgZWxlbWVudD8udXNlck5hbWUgIT0gbnVsbCAmJiB0aGlzLnVzZXJEYXRhW2NoZWNrVXNlckluZGV4XT8udXNlck5hbWU/LnRyaW0oKS5sZW5ndGggJiYgZWxlbWVudD8udXNlck5hbWU/LnRyaW0oKS5sZW5ndGggJiYgdGhpcy51c2VyRGF0YVtjaGVja1VzZXJJbmRleF0/LnVzZXJOYW1lPy50cmltKCkudG9Mb3dlckNhc2UoKSAhPSBlbGVtZW50Py51c2VyTmFtZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYFNhbWUgRW1haWwgd2l0aCBEaWZmZXJlbnQgdXNlcnMgLSBCJHtpbmRleCsyfSxCJHtjaGVja1VzZXJJbmRleCArIDJ9YCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVzZXJEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICBzdG9yZU5hbWU6IGVsZW1lbnQ/LnN0b3JlTmFtZSxcclxuICAgICAgICAgICAgdXNlck5hbWU6IGVsZW1lbnQ/LnVzZXJOYW1lPy50cmltKCksXHJcbiAgICAgICAgICAgIHVzZXJFbWFpbDogZWxlbWVudD8udXNlckVtYWlsPy50b0xvd2VyQ2FzZSgpPy50cmltKCksXHJcbiAgICAgICAgICAgIHVzZXJQaG9uZTogZWxlbWVudD8udXNlclBob25lLFxyXG4gICAgICAgICAgICBjaGVja0ZsYWc6IGVsZW1lbnQ/LmNoZWNrID8gZWxlbWVudC5jaGVjayA6IGZhbHNlLFxyXG4gICAgICAgICAgICBjaXR5OiBlbGVtZW50Py5jaXR5XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy51c2VyRGF0YSwnZGF0YScpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHN0b3JlTm90RXhpc3RzKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh1c2VyTm90RXhpc3RzKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgaW1hZ2VzcmM6ICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOmVycm9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYocmVzICE9ICdyZXVwbG9hZCcpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnJldXBsb2FkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBsZXQgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yJyk7XHJcbiAgICAgICAgICAgICAgZWxlPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAvLyB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyb3Iuam9pbignICcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXJEZXRhaWxzKGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2UgVXBsb2FkIGEgRXhjZWwgZmlsZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVVc2VyRGV0YWlscyhkZWw/OmFueSkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWQsXHJcbiAgICAgIGFzc2lnbmVkVXNlcnM6IHRoaXMudXNlckRhdGEsXHJcbiAgICAgIHVwbG9hZFVzZXI6IHRydWUsXHJcbiAgICAgIHR5cGU6IHRoaXMub2JqPy50eXBlICYmIFsnbW9iaWxldXNhZ2VkZXRlY3Rpb24nLCdzdG9yZW9wZW5hbmRjbG9zZSddLmluY2x1ZGVzKHRoaXMub2JqLnR5cGUpID8gdGhpcy5vYmoudHlwZSA6ICcnLFxyXG4gICAgICAuLi4oZGVsKSA/IHtkZWxldGU6ZmFsc2V9IDoge30sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWRcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS52YWxpZGF0ZVVzZXIocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHZhbGlkYXRlOkJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5FeGlzdHNFbWFpbD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QocmVzPy5kYXRhPy5FeGlzdHNFbWFpbC5qb2luKCcsICcpICsgJyAnICsgcmVzPy5kYXRhPy5tZXNzYWdlKTtcclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXM/LmRhdGE/LmlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5faWQgPSByZXMuZGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0SWQgPSByZXMuZGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudXNlckRldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LmRvbWFpbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGVtYWlsID0gcmVzPy5kYXRhPy5kb21haW4ubWFwKChpdGVtOmFueSkgPT4gaXRlbS5lbWFpbClcclxuICAgICAgICAgICAgLy8gKycgJysnPGEgaHJlZj1cInByb2ZpbGUvZG9tYWluc1wiPkFkZCBkb21haW48L2E+J1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZW1haWwuam9pbignLCAnKSArICcgJyArICdEb21haW4gaXMgbm90IEV4aXN0cy4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVzPy5kYXRhPy51c2VyPy5sZW5ndGggJiYgcmVzPy5kYXRhPy5zdG9yZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGxldCBzdG9yZTogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbjogYW55ID0gW107XHJcbiAgICAgICAgICAgIHN0b3JlID0gcmVzLmRhdGEuc3RvcmUuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbS5tZXNzYWdlID09ICcnO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gcmVzLmRhdGEuc3RvcmUuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbS5tZXNzYWdlICE9ICcnO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHN0b3JlID0gc3RvcmUubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmUpO1xyXG4gICAgICAgICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnN0b3JlKTtcclxuICAgICAgICAgICAgaWYgKHN0b3JlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGltYWdlc3JjOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+JyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBgTmV3IFN0b3JlIGZvdW5kIGluIHVwbG9hZGVkIGZpbGVgLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogYFRoaXMgQ1NWIGNvbnRhaW5zIGEgbmV3IHN0b3JlLiBBZGQgbmV3IHN0b3JlcyBpbiB0aGUgU3RvcmUgTWFuYWdlbWVudCB1bmRlciBNYW5hZ2UgbWVudS5gLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9udHlwZTogJ0FkZHN0b3JlJyxcclxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBzdG9yZS5qb2luKCcsICcpLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLmpvaW4oKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAobG9jYXRpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXNlckRhdGFDb3B5ID0gWy4uLnRoaXMudXNlckRhdGFdO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0b3JlX2lkOiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9IHVzZXJEYXRhQ29weS5maW5kKChzdG9yZTogYW55KSA9PiBpdGVtID09IHN0b3JlLnN0b3JlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLmNpdHkgPT0gdW5kZWZpbmVkIHx8IGRldGFpbHMuY2l0eSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlX2lkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmVfaWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgQ2l0eSBpcyByZXF1aXJlZCBvbiB0aGlzIHN0b3JlcyAke3N0b3JlX2lkLmpvaW4oKX1gKTtcclxuICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEudXBsb2FkVXNlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkVXNlcihkZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocG9wdXBjb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ2NvbmZpcm1TdG9yZScpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKGBtYW5hZ2Uvc3RvcmVgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAnc2tpcCcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdG9yZV9pZDogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9IHRoaXMudXNlckRhdGEuZmluZCgoc3RvcmU6IGFueSkgPT4gaXRlbSA9PSBzdG9yZS5zdG9yZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGFpbHMuY2l0eSA9PSB1bmRlZmluZWQgfHwgZGV0YWlscy5jaXR5ID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX2lkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVfaWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoYENpdHkgaXMgcmVxdWlyZWQgb24gdGhpcyBzdG9yZXMgJHtzdG9yZV9pZC5qb2luKCl9YClcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBsZXQgdXNlckRhdGFDb3B5ID0gWy4uLnRoaXMudXNlckRhdGFdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICAgIHVzZXJEYXRhQ29weS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3JlLmluY2x1ZGVzKGl0ZW0uc3RvcmVOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy51c2VyRGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1BsZWFzZSBFbnRlciB2YWxpZCBEZXRhaWxzJylcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBsZXQgdXNlckRldGFpbHMgPSB0aGlzLnVzZXJEYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJFbWFpbCk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB1c2VyID0gWy4uLnJlcy5kYXRhLnVzZXJdO1xyXG4gICAgICAgICAgICAgICAgICByZXMuZGF0YS51c2VyID0gW107XHJcbiAgICAgICAgICAgICAgICAgIHVzZXIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJEZXRhaWxzLmluY2x1ZGVzKGl0ZW0udXNlckVtYWlsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEudXNlci5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnVzZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzcmM6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGBJbnZpdGUgbmV3IHVzZXJzIGFkZGVkIGluIENTVmAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgVGhpcyBDU1YgY29udGFpbnMgbmV3IHVzZXJzLiBJbnZpdGUgdXNlcnMgYnkgc2VuZGluZyBtYWlsIHRvIHRoZW1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9udHlwZTogJ0ludml0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyOiByZXMuZGF0YS51c2VyXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Py5tZXNzYWdlID09ICdjb25maXJtJyB8fCByZXN1bHQgPT0gJ3NraXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ3NraXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGFDb3B5ID0gWy4uLnRoaXMudXNlckRhdGFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlckRhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YUNvcHkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXJEZXRhaWxzLmluY2x1ZGVzKGl0ZW0udXNlckVtYWlsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ/LnVzZXIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnVzZXJEYXRhLmZpbmRJbmRleCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyLnVzZXJFbWFpbCA9PSBpdGVtLnVzZXJFbWFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5pbnZpdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpdGVtIG9mIHJlcy5kYXRhLnVzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgJHtpdGVtLnVzZXJFbWFpbH0gLSAke2l0ZW0ubWVzc2FnZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVzZXJEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIEVudGVyIHZhbGlkIERldGFpbHNgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEudXBsb2FkVXNlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRVc2VyKGRlbCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHJlcz8uZGF0YT8udXNlcj8ubGVuZ3RoIHx8IHJlcz8uZGF0YT8uc3RvcmU/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgICBsZXQgc3RvcmU6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgbG9jYXRpb246IGFueSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAocmVzPy5kYXRhPy51c2VyPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpbWFnZXNyYzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPicsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogYEludml0ZSBuZXcgdXNlcnMgYWRkZWQgaW4gQ1NWYCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBuZXcgdXNlcnMuIEludml0ZSB1c2VycyBieSBzZW5kaW5nIG1haWwgdG8gdGhlbWAsXHJcbiAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnSW52aXRlJyxcclxuICAgICAgICAgICAgICAgIHVzZXI6IHJlcy5kYXRhLnVzZXJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3RvcmUgPSByZXMuZGF0YS5zdG9yZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWVzc2FnZSA9PSAnJztcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgbG9jYXRpb24gPSByZXMuZGF0YS5zdG9yZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWVzc2FnZSAhPSAnJztcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgc3RvcmUgPSBzdG9yZS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZSk7XHJcbiAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbi5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHN0b3JlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIGltYWdlc3JjOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+JyxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IGBOZXcgU3RvcmUgZm91bmQgaW4gdXBsb2FkZWQgZmlsZWAsXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBhIG5ldyBzdG9yZS4gQWRkIG5ldyBzdG9yZXMgaW4gdGhlIFN0b3JlIE1hbmFnZW1lbnQgdW5kZXIgTWFuYWdlIG1lbnUuYCxcclxuICAgICAgICAgICAgICAgICAgYnV0dG9udHlwZTogJ0FkZHN0b3JlJyxcclxuICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHN0b3JlLmpvaW4oJywgJyksXHJcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbi5qb2luKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB1c2VyRGF0YUNvcHkgPSBbLi4udGhpcy51c2VyRGF0YV07XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZV9pZDogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gdXNlckRhdGFDb3B5LmZpbmQoKHN0b3JlOiBhbnkpID0+IGl0ZW0gPT0gc3RvcmUuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGV0YWlscy5jaXR5ID09IHVuZGVmaW5lZCB8fCBkZXRhaWxzLmNpdHkgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX2lkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICBpZiAoc3RvcmVfaWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBDaXR5IGlzIHJlcXVpcmVkIG9uIHRoaXMgc3RvcmVzICR7c3RvcmVfaWQuam9pbigpfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocG9wdXBjb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ2NvbmZpcm1TdG9yZScpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKGBtYW5hZ2Uvc3RvcmVzYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/Lm1lc3NhZ2UgPT0gJ2NvbmZpcm0nIHx8IHJlc3VsdCA9PSAnc2tpcCcpIHtcclxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09ICdza2lwJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1c2VyRGF0YUNvcHkgPSBbLi4udGhpcy51c2VyRGF0YV07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXM/LmRhdGE/LnVzZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJEZXRhaWxzID0gcmVzLmRhdGEudXNlci5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS51c2VyRW1haWwpXHJcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YUNvcHkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlckRldGFpbHMuaW5jbHVkZXMoaXRlbS51c2VyRW1haWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHN0b3JlX2lkOiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9IHVzZXJEYXRhQ29weS5maW5kKChzdG9yZTogYW55KSA9PiBpdGVtID09IHN0b3JlLnN0b3JlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLmNpdHkgPT0gdW5kZWZpbmVkIHx8IGRldGFpbHMuY2l0eSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX2lkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVfaWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgQ2l0eSBpcyByZXF1aXJlZCBvbiB0aGlzIHN0b3JlcyAke3N0b3JlX2lkLmpvaW4oKX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzPy5kYXRhPy5zdG9yZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YUNvcHkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RvcmUuaW5jbHVkZXMoaXRlbS5zdG9yZU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ/LnVzZXIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnVzZXJEYXRhLmZpbmRJbmRleCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyLnVzZXJFbWFpbCA9PSBpdGVtLnVzZXJFbWFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5pbnZpdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpdGVtIG9mIHJlcy5kYXRhLnVzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgJHtpdGVtLnVzZXJFbWFpbH0gLSAke2l0ZW0ubWVzc2FnZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVzZXJEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2UgRW50ZXIgdmFsaWQgRGV0YWlscycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnVwbG9hZFVzZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkVXNlcihkZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycm9yLmVycm9yKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRVc2VyKGRlbD86YW55KSB7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWQsXHJcbiAgICAgIGFzc2lnbmVkVXNlcnM6IHRoaXMudXNlckRhdGEsXHJcbiAgICAgIHVwbG9hZFVzZXI6IHRydWUsXHJcbiAgICAgIGFkZFVzZXI6IHRydWUsXHJcbiAgICAgIHR5cGU6IHRoaXMub2JqPy50eXBlICYmIFsnbW9iaWxldXNhZ2VkZXRlY3Rpb24nLCAnc3RvcmVvcGVuYW5kY2xvc2UnXS5pbmNsdWRlcyh0aGlzLm9iai50eXBlKSA/IHRoaXMub2JqLnR5cGUgOiAnJyxcclxuICAgICAgLi4uKGRlbCkgPyB7ZGVsZXRlOmZhbHNlfSA6IHt9LFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICB9XHJcbiAgICB0aGlzLlNvcFNlcnZpY2UudmFsaWRhdGVVc2VyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLl9pZCA9IHJlc3BvbnNlLmRhdGEuaWQ7XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RJZCA9IHJlc3BvbnNlLmRhdGEuaWQ7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHMoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBsaW1pdDogdGhpcy5zaXplLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNlYXJjaDogdGhpcy50YWJsZUZpbHRlcixcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWRcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3dJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXIubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnVzZXJzO1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc1RvdGFsID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCA1KSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplID0gW3RoaXMucmVjb3Jkc1RvdGFsXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplID0gWzUsMTAsMTUsMjBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChpdGVtOmFueSkgPT57XHJcbiAgICAgICAgICBpZihpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIGNvdW50ICs9MTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKCFpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChjb3VudCA9PSB0aGlzLnJlY29yZHNDb3VudCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIGlkOiB0aGlzLmNoZWNrbGlzdElkLFxyXG4gICAgICBzZWFyY2g6IHRoaXMudGFibGVGaWx0ZXJcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcbiAgICAgIGxldCBleGNlbERhdGE6IGFueSA9IFtdO1xyXG4gICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICBleGNlbERhdGEucHVzaCh7XHJcbiAgICAgICAgICBzdG9yZU5hbWU6ICcnLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiAnJyxcclxuICAgICAgICAgIHVzZXJOYW1lOiAnJyxcclxuICAgICAgICAgIHVzZXJQaG9uZTogJycsXHJcbiAgICAgICAgICBjaXR5OicnXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHJlcy5kYXRhLnVzZXJzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgZXhjZWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICBzdG9yZU5hbWU6IGl0ZW0uc3RvcmVOYW1lLFxyXG4gICAgICAgICAgICB1c2VyRW1haWw6IGl0ZW0udXNlckVtYWlsLFxyXG4gICAgICAgICAgICB1c2VyTmFtZTogaXRlbS51c2VyTmFtZSxcclxuICAgICAgICAgICAgdXNlclBob25lOiBpdGVtLnVzZXJQaG9uZSxcclxuICAgICAgICAgICAgY2l0eTppdGVtLmNpdHlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLlNvcFNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUoZXhjZWxEYXRhLCAnQ2hlY2tMaXN0X3VzZXJMaXN0XycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSBldmVudDtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnNpemUsXHJcbiAgICAgIG9mZnNldDogZXZlbnQgLSAxLFxyXG4gICAgICBzZWFyY2g6IHRoaXMudGFibGVGaWx0ZXIsXHJcbiAgICAgIGlkOiB0aGlzLmNoZWNrbGlzdElkXHJcbiAgICB9XHJcbiAgICB0aGlzLlNvcFNlcnZpY2UuZ2V0VXNlckRldGFpbHMocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSByZXMuZGF0YS51c2VycztcclxuICAgICAgICBsZXQgY291bnQ9MDtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgY291bnQgKz0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5yZWNvcmRzQ291bnQgPSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICBpZiAoY291bnQgPT0gdGhpcy5yZWNvcmRzQ291bnQpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBsaW1pdDogdGhpcy5zaXplLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNlYXJjaDogdGhpcy50YWJsZUZpbHRlcixcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWRcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3dJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXIubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnVzZXJzO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uY2hlY2tGbGFnICYmICF0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLmluY2x1ZGVzKGl0ZW0uaWQpICYmICF0aGlzLnJlbW92ZVVzZXJzLmluY2x1ZGVzKGl0ZW0uaWQpKVxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnB1c2goaXRlbS5pZClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc1RvdGFsID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNlYXJjaFRhYmxlRGF0YSgpIHtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gMTtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgbGltaXQ6IHRoaXMuc2l6ZSxcclxuICAgICAgc2VhcmNoOiB0aGlzLnRhYmxlRmlsdGVyLFxyXG4gICAgICBpZDogdGhpcy5jaGVja2xpc3RJZFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy50YWJsZUZpbHRlci5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEudXNlcnM7XHJcbiAgICAgICAgICB0aGlzLnJlY29yZHNDb3VudCA9IHRoaXMudGFibGVEYXRhLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc1RvdGFsID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgICAgICBsZXQgY291bnQgPSAwIDtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW06YW55KSA9PntcclxuICAgICAgICAgICAgaWYoaXRlbS5jaGVja0ZsYWcgJiYgIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkgJiYgIXRoaXMucmVtb3ZlVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG4gIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICAgIGNvdW50ICs9MTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGlmIChjb3VudCA9PSB0aGlzLnJlY29yZHNDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZUZsYWcoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSwgZWxlbWVudDogYW55KSB7XHJcbiAgICAgICAgXHJcbiAgICBlbGVtZW50LmNoZWNrRmxhZyA9IGV2ZW50LnRhcmdldC5jaGVja2VkXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZW1vdmVVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbSA9PSBlbGVtZW50LmlkKTtcclxuICAgICAgdGhpcy5yZW1vdmVVc2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnB1c2goZWxlbWVudC5pZClcclxuICAgIH1cclxuICAgIGlmICghZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5yZW1vdmVVc2Vycy5wdXNoKGVsZW1lbnQuaWQpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtID09IGVsZW1lbnQuaWQpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlRGF0YVtpbmRleF0uY2hlY2tGbGFnID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMubGVuZ3RoICE9IHRoaXMucmVjb3Jkc1RvdGFsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBjaGVja0FsbChldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzID0gW107XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja0ZsYWcgPSB0cnVlXHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZW1vdmVVc2Vycy5maW5kSW5kZXgoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBpdGVtLmlkKTtcclxuICAgICAgICB0aGlzLnJlbW92ZVVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYoIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnB1c2goaXRlbS5pZClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja0ZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbW92ZVVzZXJzLnB1c2goaXRlbS5pZClcclxuICAgICAgICBsZXQgaW5kZXggPSAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5maW5kSW5kZXgoKGlkOmFueSkgPT4gaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBkYXRlUmFuZ2VTdGFydChldmVudCA6YW55KSB7XHJcbiAgLy8gICB0aGlzLnJhbmdlU3RhcnQgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0KS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG4gIC8vICAgdGhpcy52YWxpZGF0ZVRpbWUoKTtcclxuICAvLyB9XHJcbiAgZGF0ZVNwZWNpZmljKGV2ZW50OmFueSkge1xyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09ICdyYW5nZScgJiYgZXZlbnQ/LnNlbGVjdGVkTGlzdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBldmVudC5zZWxlY3RlZExpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRhdGVSYW5nZVN0YXJ0KGV2ZW50IDphbnkpIHtcclxuICAgIGlmKGV2ZW50ICYmIGV2ZW50LnN0YXJ0RGF0ZSkge1xyXG4gICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ29uZXRpbWUnKVxyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJylcclxuICAgICAgfVxyXG4gICAgfSAgIFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PSAnb25ldGltZScpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhcnREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgIHRoaXMubWluRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlKS5mb3JtYXQoKTtcclxuICAgIHRoaXMubWluRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVGltZSgpO1xyXG4gIH1cclxuICBcclxuICBkYXRlUmFuZ2VFbmQoZXZlbnQ6YW55KSB7XHJcbiAgICBpZihldmVudCAmJiBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW5kRGF0ZSA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyksZW5kRGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICAgIHRoaXMubWluRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gZGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gIC8vICAgdGhpcy5kYXRlID0gdGhpcy5kYXlqcyhldmVudC5zdGFydCk7XHJcbiAgLy8gICB0aGlzLm1vbnRoRGF0ZSA9IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpID09IDEgPyBwYXJzZUludCh0aGlzLmRhdGUuZm9ybWF0KCdERCcpKSArICdzdCcgOiBwYXJzZUludCh0aGlzLmRhdGUuZm9ybWF0KCdERCcpKSA9PSAyID8gcGFyc2VJbnQodGhpcy5kYXRlLmZvcm1hdCgnREQnKSkgKyAnbmQnIDogcGFyc2VJbnQodGhpcy5kYXRlLmZvcm1hdCgnREQnKSkgPT0gMyA/IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpICsgJ3JkJyA6IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpICsgJ3RoJztcclxuICAvLyAgIHRoaXMubW9udGhEYXkgPSB0aGlzLmRhdGUuZm9ybWF0KCdkZGRkJyk7XHJcbiAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuXHJcbiAgLy8gICBsZXQgd2Vla051bWJlciA9IGdldFdlZWtOdW1iZXIodGhpcy5kYXRlKTtcclxuICAvLyAgIHRoaXMuTW9udGh3ZWVrTnVtYmVyID0gd2Vla051bWJlciA9PSAxID8gd2Vla051bWJlciArICdzdCcgOiB3ZWVrTnVtYmVyID09IDIgPyB3ZWVrTnVtYmVyICsgJ25kJyA6IHdlZWtOdW1iZXIgPT0gMyA/IHdlZWtOdW1iZXIgKyAncmQnIDogd2Vla051bWJlciArICd0aCc7XHJcbiAgLy8gICB0aGlzLnNldE1vbnRoRGF0ZSh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCk7XHJcbiAgLy8gfVxyXG4gIC8vIHNldERheShkYXk6IGFueSkge1xyXG4gIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZERheSA9IGRheTtcclxuICAvLyB9XHJcbiAgc2V0RGF5KGRheTpzdHJpbmcpe1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXlzLmluY2x1ZGVzKGRheSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERheXMgPSB0aGlzLnNlbGVjdGVkRGF5cy5maWx0ZXIoc2VsZWN0ZWREYXkgPT4gc2VsZWN0ZWREYXkgIT09IGRheSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cy5wdXNoKGRheSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIHNldE1vbnRoRGF0ZShkYXRhOiBhbnkpIHtcclxuICAvLyAgIGlmIChkYXRhID09ICdkYXRlJykge1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gW3RoaXMubW9udGhEYXRlXTtcclxuICAvLyAgICAgdGhpcy5zZWxlY3RlZERheXMgPSBbdGhpcy5tb250aERhdGVdOyBcclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gW3RoaXMubW9udGhEYXldO1xyXG4gIC8vICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFt0aGlzLm1vbnRoRGF5XTsgXHJcbiAgLy8gICAgIGxldCB3ZWVrTnVtYmVyID0gZ2V0V2Vla051bWJlcih0aGlzLmRhdGUpO1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gd2Vla051bWJlciA9PSAxID8gd2Vla051bWJlciArICdzdCcgOiB3ZWVrTnVtYmVyID09IDIgPyB3ZWVrTnVtYmVyICsgJ25kJyA6IHdlZWtOdW1iZXIgPT0gMyA/IHdlZWtOdW1iZXIgKyAncmQnIDogd2Vla051bWJlciArICd0aCc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9IGRhdGE7XHJcblxyXG4gIC8vIH1cclxuICAvLyBzZXREYXRlKGV2ZW50OiBhbnkpIHtcclxuICAvLyAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9IGV2ZW50LnN0YXJ0O1xyXG4gIC8vIH1cclxuICBwdWJsaXNoKCkge1xyXG4gICAgaWYoWyd3ZWVrbHknLCd3ZWVrZGF5J10uaW5jbHVkZXModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUpICYmIHRoaXMuc2VsZWN0ZWREYXlzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2Ugc2VsZWN0IGF0bGVhc3QgMSBkYXkgdG8gcHJvY2VlZCcpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy52YWxpZFRpbWUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdJbnZhbGlkIFNjaGVkdWxlIEVuZCBUaW1lJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKCF0aGlzLnNob3dSYW5nZVZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA9Jyc7IFxyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlID0nJzsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSAhPSAnb25ldGltZScpIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID0nJzsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLm1vbnRoRGF0ZSArJyAnK3RoaXMubW9udGhEYXk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ3NwZWNpZmljJykge1xyXG4gICAgICBpZih0aGlzLnN1Ym1pdHRlZERhdGVzLmxlbmd0aClcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGUgPSB0aGlzLnN1Ym1pdHRlZERhdGVzO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1BsZWFzZSBzZWxlY3QgYXRsZWFzdCAxIGRhdGUgdG8gcHJvY2VlZCcpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ3JhbmdlJyAmJiB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlTGlzdDtcclxuICAgIH1cclxuICAgIGxldCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIvPjxwYXRoIGQ9XCJNMzggMjcuMDgxOFYyOC4wMDE4QzM3Ljk5ODggMzAuMTU4MiAzNy4zMDA1IDMyLjI1NjUgMzYuMDA5MyAzMy45ODM2QzM0LjcxODIgMzUuNzEwOCAzMi45MDMzIDM2Ljk3NDMgMzAuODM1NCAzNy41ODU3QzI4Ljc2NzQgMzguMTk3MSAyNi41NTczIDM4LjEyMzcgMjQuNTM0NSAzNy4zNzY0QzIyLjUxMTcgMzYuNjI5MSAyMC43ODQ3IDM1LjI0NzkgMTkuNjExIDMzLjQzODlDMTguNDM3MyAzMS42Mjk5IDE3Ljg3OTggMjkuNDg5OSAxOC4wMjE3IDI3LjMzODFDMTguMTYzNiAyNS4xODY0IDE4Ljk5NzIgMjMuMTM4MSAyMC4zOTgzIDIxLjQ5ODlDMjEuNzk5NCAxOS44NTk2IDIzLjY5MjggMTguNzE3MiAyNS43OTYyIDE4LjI0MkMyNy44OTk2IDE3Ljc2NjcgMzAuMTAwMyAxNy45ODQyIDMyLjA3IDE4Ljg2MThNMzggMjAuMDAxOEwyOCAzMC4wMTE4TDI1IDI3LjAxMThcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQ0ZERjNcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgIHRpdGxlOiBgJHt0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jaGVja0xpc3ROYW1lfSBjaGVja2xpc3QgcHVibGlzaGVkXHJcbiAgICAgICAgP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBUaGlzIGNoZWNrbGlzdCBoYXMgYmVlbiBwdWJsaXNoZWQuIEFueSBjaGFuZ2VzIG1hZGUgd2lsbCByZWZsZWN0IGZyb20gdGhlIG5leHQgb2NjdXJyZW5jZS5gLFxyXG4gICAgICBidXR0b250eXBlOiAnY29uZmlybSdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcyA9PSAnY29uZmlybScpIHtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgfHwgdGhpcy50eXBlID09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgICAgIC8vIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJykge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5kZXRlY3Rpb25BcmVhID0gdGhpcy56b25lcztcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA9IHRoaXMuY29uZmlnRGF0YS5vcGVuVGltZTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5jb25maWdEYXRhLmNsb3NlVGltZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LmFsZXJ0c1RvID0gdGhpcy5lbWFpbExpc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnB1Ymxpc2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5zdWJtaXRUeXBlID0gJ3B1Ymxpc2gnO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5yZW1vdmVkVXNlcnMgPSB0aGlzLnJlbW92ZVVzZXJzO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlV2Vla0RheXMgPSB0aGlzLnNlbGVjdGVkRGF5cztcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEudXBkYXRlQ29uZmlndXJlID0gdGhpcy5kaXNhYmxlZFF1ZXN0aW9uID8gIHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29uZmlnRGF0YSk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChgJHt0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jaGVja0xpc3ROYW1lfSBjaGVja2xpc3QgcHVibGlzaGVkLmApO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvY2hlY2tsaXN0J10pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvci5jb2RlID09IDQwMCkge1xyXG4gICAgICAgICAgICBsZXQgZXJyID0gZXJyb3I/LmVycm9yPy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhU2VydmVyIEVycm9yIScpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdHN0b3JlKGVsZW1lbnQ6IGFueSkge1xyXG4gIC8vICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4U3RvcmVDb21wb25lbnQsIHtcclxuICAvLyAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcblxyXG4gIC8vICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBlbGVtZW50O1xyXG5cclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgLy8gICAgIC8vIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gIC8vICAgICBpZiAoZGF0YSAmJiBkYXRhLm1zZyA9PSAnY29uZmlybScpIHtcclxuICAvLyAgICAgICBpZiAoZGF0YS5zdG9yZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICBsZXQgc29wID0gZGF0YS5zdG9yZXM7XHJcbiAgLy8gICAgICAgICBsZXQgaWQgPSBlbGVtZW50LmlkO1xyXG4gIC8vICAgICAgICAgLy8gdGhpcy5Tb3BTZXJ2aWNlLmFzc2lnblNvcFN0b3JlKHNvcCwgaWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIC8vICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAvLyAgICAgICAgIC8vICAgICBlbGVtZW50LnNvcF9zdG9yZXMgPSBkYXRhLnN0b3JlcztcclxuICAvLyAgICAgICAgIC8vICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgICAgLy8gfSwgKGVycm9yOiBhbnkpID0+IHtcclxuXHJcbiAgLy8gICAgICAgICAvLyB9KVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcbiAgbmV3c3RvcmUoKSB7XHJcbiAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFtcIi9zdG9yZS9saXN0XCJdLCB7IHF1ZXJ5UGFyYW1zOiB7IGNoZWNrbGlzdGlkOiBKU09OLnN0cmluZ2lmeSh0aGlzLm9iaikgfSB9KTtcclxuICB9XHJcbiAgaW52aXRldXNlcigpIHtcclxuICAgIHRoaXMucm91dGUubmF2aWdhdGUoW1wiL2NvbnRyb2wtcGFuZWwvYXNzaWduLXJvbGVcIl0sIHsgcXVlcnlQYXJhbXM6IHsgY2hlY2tsaXN0aWQ6IEpTT04uc3RyaW5naWZ5KHRoaXMub2JqKSB9IH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdkYXknID8gdGhpcy5kYXlqcygpLmZvcm1hdCgnREQnKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsdWUoZXZlbnQ6YW55KSB7XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9IGV2ZW50LnRhcmdldC52YWx1ZSA8IDkgID8gJzAnK2V2ZW50LnRhcmdldC52YWx1ZSA6IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gdGhpcy5kYXlqcygpLmZvcm1hdCgnREQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoZXZlbnQ6YW55KSB7ICAgIFxyXG4gICAgaWYoIWlzTmFOKGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlWzBdID09IDMgJiYgZXZlbnQudGFyZ2V0LnZhbHVlWzFdID4gMSkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IDM7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9IDM7XHJcbiAgICAgIH1cclxuICAgICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlWzBdID4gMyAmJiBldmVudC50YXJnZXQudmFsdWVbMV0gPj0gMCkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVswXTtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gZXZlbnQudGFyZ2V0LnZhbHVlWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZVswXSA8IDEpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gJyc7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHNhdmVkcmFmdCgpIHtcclxuICAgIGlmKCF0aGlzLnZhbGlkVGltZSkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIFRpbWUnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0YXJ0RGF0ZVdpdGhUaW1lLCBlbmREYXRlV2l0aFRpbWU7XHJcbiAgICBpZighdGhpcy5zaG93UmFuZ2VWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPScnOyBcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgIT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gdGhpcy5tb250aERhdGUgKycgJyt0aGlzLm1vbnRoRGF5O1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdzcGVjaWZpYycpIHtcclxuICAgICAgaWYodGhpcy5zdWJtaXR0ZWREYXRlcy5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc3BlY2lmaWNEYXRlID0gdGhpcy5zdWJtaXR0ZWREYXRlcztcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ3JhbmdlJyAmJiB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlTGlzdDtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAvLyAgIGxldCBzdGFydCA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lLnNwbGl0KCcgJyk7XHJcbiAgICAvLyAgIGxldCBlbmQgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWUuc3BsaXQoJyAnKTtcclxuICAgIC8vICAgc3RhcnREYXRlV2l0aFRpbWUgPSBzdGFydC5sZW5ndGggPiAyID8gc3RhcnRbMV0gKyAnICcgKyBzdGFydFsyXSA6IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lO1xyXG4gICAgLy8gICBlbmREYXRlV2l0aFRpbWUgPSBlbmQubGVuZ3RoID4gMiA/IGVuZFsxXSArICcgJyArIGVuZFsyXSA6IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRW5kVGltZTtcclxuICAgIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmRheWpzKHRoaXMucmFuZ2VTdGFydCkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyAnICcgKyBzdGFydERhdGVXaXRoVGltZTtcclxuICAgIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLnJhbmdlRW5kKS5mb3JtYXQoJ1lZWVktTU0tREQnKSArICcgJyArIGVuZERhdGVXaXRoVGltZTtcclxuICAgICAgXHJcbiAgICAvLyAgIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA+IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRW5kVGltZSkge1xyXG4gICAgLy8gICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lID0gc3RhcnREYXRlV2l0aFRpbWU7XHJcbiAgICAvLyAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gZW5kRGF0ZVdpdGhUaW1lO1xyXG4gICAgLy8gICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRW5kIHRpbWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gc3RhcnQgdGltZScpO1xyXG4gICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgXHJcbiAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgdGhpcy5jb25maWdEYXRhLnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5wdWJsaXNoID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEucmVtb3ZlZFVzZXJzID0gdGhpcy5yZW1vdmVVc2VycztcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlV2Vla0RheXMgPSB0aGlzLnNlbGVjdGVkRGF5cztcclxuICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICBpbWFnZXNyYzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPicsXHJcbiAgICAgIHRpdGxlOiBgVW5zYXZlZCBjaGFuZ2VzYCxcclxuICAgICAgY29udGVudDogYERvIHlvdSB3YW50IHRvIHNhdmUgYXMgZHJhZnQ/YCxcclxuICAgICAgYnV0dG9udHlwZTogJ2RyYWZ0J1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJyB8fCB0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJykge1xyXG4gICAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IHRoaXMuem9uZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEub3BlblRpbWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEuY2xvc2VUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzID0gdGhpcy5zb3BTdG9yZXM7XHJcbiAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxlcnQuYWxlcnRzVG8gPSB0aGlzLmVtYWlsTGlzdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFyZXMpIHtcclxuICAgICAgICB0aGlzLnBvcHVwQ291bnQgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgICAgICB0aGlzLlNvcFNlcnZpY2UuY29uZmlnVXBkYXRlKHRoaXMuY29uZmlnRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnRHJhZnQgaGFzIGJlZW4gc2F2ZWQgc3VjY2Vzc2Z1bGx5LicpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2NoZWNrbGlzdCddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIFJldXBsb2FkKCkge1xyXG4gICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgdGl0bGU6IGBSZXVwbG9hZCBDU1ZgLFxyXG4gICAgICBjb250ZW50OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcGxhY2UgZXhpc3RpbmcgZGF0YSBieSB1cGxvYWRpbmcgbmV3IGZpbGU/IFlvdXIgZXhpc3RpbmcgZGF0YSB3aWxsIGdldCByZXBsYWNlZCB3aXRoIHRoZSBuZXcgb25lLmAsXHJcbiAgICAgIGJ1dHRvbnR5cGU6ICdSZXVwbG9hZCdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnLFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudFxyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgdGhpcy5yZXVwbG9hZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgbGV0IGVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMicpO1xyXG4gICAgICAgIGVsZT8uY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIC8vIGludml0ZW5ld3VzZXIoKSB7XHJcbiAgLy8gICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gIC8vICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gIC8vICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgLy8gICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAvLyAgICAgdGl0bGU6IGBJbnZpdGUgbmV3IHVzZXJzIGFkZGVkIGluIENTVmAsXHJcbiAgLy8gICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBuZXcgdXNlcnMuIEludml0ZSB1c2VycyBieSBzZW5kaW5nIG1haWwgdG8gdGhlbS4gPGJyPmAsXHJcbiAgLy8gICAgIGJ1dHRvbnR5cGU6ICdJbnZpdGUnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gIC8vICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcblxyXG4gIC8vICAgICBpZiAocmVzID09ICdjb25maXJtJykge1xyXG4gIC8vICAgICAgIC8vIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cclxuICAvLyAgICAgICAvLyAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgLy8gICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgLy8gICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgaWNvbkh0bWw6ICc8aW1nICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvY2hlY2tsaXN0LXVucHVibGlzaGVkLWljb24uc3ZnXCI+JyxcclxuICAvLyAgICAgICAvLyAgICAgICAvLyB0aXRsZVRleHQ6IGBFbWFpbCBzZW50IHN1Y2Nlc2Z1bGx5YCxcclxuICAvLyAgICAgICAvLyAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxoND5DU1YgaGFzIGJlZW4gUmV1cGxvYWRlZCBzdWNjZXNzZnVsbHkuPC9oND5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5gLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAvLyAgICAgICAvLyAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgLy8gICAgICAgLy8gICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyOiA2MDAwLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAvLyAgICAgICAvLyAgICAgICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIikudmFsKCcnKVxyXG4gIC8vICAgICAgIC8vICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgICAgLy8gICAgIC8vIHRoaXMucm91dGUubmF2aWdhdGUoWycvc29wL0NoZWNrbGlzdHMnXSk7XHJcblxyXG4gIC8vICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgIC8vIH0pXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcblxyXG4gIC8vIH1cclxuICAvLyBBZGRzdG9yZSgpIHtcclxuICAvLyAgIHRoaXMucG9wdXBDb3VudCA9IHRoaXMucG9wdXBDb3VudCArIDE7XHJcbiAgLy8gICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgLy8gICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAvLyAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gIC8vICAgICB0aXRsZTogYEludml0ZSBuZXcgdXNlcnMgYWRkZWQgaW4gQ1NWYCxcclxuICAvLyAgICAgY29udGVudDogYFRoaXMgQ1NWIGNvbnRhaW5zIG5ldyB1c2Vycy4gSW52aXRlIHVzZXJzIGJ5IHNlbmRpbmcgbWFpbCB0byB0aGVtLiA8YnI+YCxcclxuICAvLyAgICAgc3VidGl0bGU6ICdMS1NUMDA5LCBTVDMwNDUnLFxyXG4gIC8vICAgICBidXR0b250eXBlOiAnQWRkc3RvcmUnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gIC8vICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcblxyXG4gIC8vICAgICBpZiAocmVzID09ICdjb25maXJtJykge1xyXG4gIC8vICAgICAgIC8vIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cclxuICAvLyAgICAgICAvLyAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgLy8gICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgLy8gICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgaWNvbkh0bWw6ICc8aW1nICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvY2hlY2tsaXN0LXVucHVibGlzaGVkLWljb24uc3ZnXCI+JyxcclxuICAvLyAgICAgICAvLyAgICAgICAvLyB0aXRsZVRleHQ6IGBFbWFpbCBzZW50IHN1Y2Nlc2Z1bGx5YCxcclxuICAvLyAgICAgICAvLyAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxoND5DU1YgaGFzIGJlZW4gUmV1cGxvYWRlZCBzdWNjZXNzZnVsbHkuPC9oND5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5gLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAvLyAgICAgICAvLyAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgLy8gICAgICAgLy8gICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyOiA2MDAwLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAvLyAgICAgICAvLyAgICAgICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIikudmFsKCcnKVxyXG4gIC8vICAgICAgIC8vICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgICAgLy8gICAgIC8vIHRoaXMucm91dGUubmF2aWdhdGUoWycvc29wL0NoZWNrbGlzdHMnXSk7XHJcblxyXG4gIC8vICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgIC8vIH0pXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcblxyXG4gIC8vIH1cclxuICAvLyBhZGRVc2VyKCkge1xyXG4gIC8vICAgdGhpcy5hZGRVc2VyRm9ybSA9ICF0aGlzLmFkZFVzZXJGb3JtO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIC8vIGNyZWF0ZXVzZXJQb3B1cCh0eXBlOiBzdHJpbmcsIHJlY29yZDogYW55ID0gbnVsbCk6IHZvaWQge1xyXG4gIC8vICAgICBpZiAodHlwZSA9PSAndmlldycpIHtcclxuICAvLyAgICAgICB0aGlzLnBvcFVwVGl0bGUgPSBcIlZpZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZWRpdCcpIHtcclxuICAvLyAgICAgICB0aGlzLnBvcFVwVGl0bGUgPSBcIkVkaXQgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5wb3BVcFRpdGxlID0gXCJFbnRlciBOZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgICAgLy8gdGhpcy5wb3BVcFRpdGxlID0gXCJFbnRlciBOZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgbGV0IGRhdGEgPSB7XHJcbiAgLy8gICAgICAgcmVjb3JkOiByZWNvcmQsXHJcbiAgLy8gICAgICAgdHlwZTogdHlwZSxcclxuICAvLyAgICAgICB0aXRsZTogdGhpcy5wb3BVcFRpdGxlXHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGNvbnN0IGRpYWxvZ1JlZl9jcmVhdGVVc2VyID0gdGhpcy5kaWFsb2cub3BlbihVcGxvYWRTaW5nbGVVc2VyQ29tcG9uZW50LCB7XHJcbiAgLy8gICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1tb2RhbGJveCcsXHJcbiAgLy8gICAgICAgZGF0YTogZGF0YVxyXG4gIC8vICAgICB9KTtcclxuXHJcbiAgLy8gICAgIGRpYWxvZ1JlZl9jcmVhdGVVc2VyLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuc2hvd0ludHJvID0gZmFsc2U7XHJcbiAgLy8gICAgICAgaWYgKCFyZWNvcmQgJiYgcmVzICYmIHJlcy5kYXRhLmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgICBTd2FsLmZpcmUoe1xyXG4gIC8vICAgICAgICAgICBpY29uOiAnc3VjY2VzcycsXHJcbiAgLy8gICAgICAgICAgIHRleHQ6ICdUaGUgdXNlciBpbnZpdGUgaGFzIGJlZW4gc2VudCBzdWNjZXNzZnVsbHkgdG8gdGhlIHVzZXIgYW5kIGFkZGVkIHRvIHRoZSBwbGF0Zm9ybSEnLFxyXG4gIC8vICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ09LJyxcclxuICAvLyAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gIC8vICAgICAgICAgICBoZWlnaHRBdXRvOiBmYWxzZVxyXG4gIC8vICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHtcclxuICAvLyAgICAgICAgICAgICB0aGlzLnNlYXJjaFVzZXIgPSAnJ1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuYWRkVXNlckZvcm0gPSBmYWxzZTtcclxuICAvLyAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgLy8gdGhpcy5sb2FkUmVjb3JkcygwLCB0aGlzLnNpemUpXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgfSBlbHNlIGlmIChyZXMgJiYgcmVzLmRhdGEuY29kZSA9PSAyMDApIHtcclxuICAvLyAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcclxuICAvLyAgICAgICAgICAgdGV4dDogJ1VzZXIgVXBkYXRlZCBTdWNjZXNzZnVsbHkhJyxcclxuICAvLyAgICAgICAgICAgaGVpZ2h0QXV0bzogZmFsc2VcclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgdGhpcy5zZWFyY2hVc2VyID0gJydcclxuICAvLyAgICAgICAgIHRoaXMuYWRkVXNlckZvcm0gPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gMTtcclxuICAvLyAgICAgICAgIC8vIHRoaXMubG9hZFJlY29yZHMoMCwgdGhpcy5zaXplKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSlcclxuICAvLyAgIH0gXHJcblxyXG5cclxuICAvLyBjcmVhdGV1c2VyUG9wdXAoKSB7XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZFNpbmdsZVVzZXJDb21wb25lbnQsIHtcclxuICAvLyAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1tb2RhbGJveCdcclxuXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcblxyXG4gIC8vICAgICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gdHJhbnNmZXJGb3JtRGF0YSgpIHtcclxuICAvLyAgIHRoaXMuU29wU2VydmljZS5zb3BEYXRhLmFzT2JzZXJ2YWJsZSgpXHJcbiAgLy8gfVxyXG4gIHNhdmVhbmRyZWRpcmVjdChpZDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgfHwgdGhpcy50eXBlID09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IHRoaXMuem9uZXM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEub3BlblRpbWU7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5jb25maWdEYXRhLmNsb3NlVGltZTtcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hbGVydC5hbGVydHNUbyA9IHRoaXMuZW1haWxMaXN0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWdEYXRhLnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEucmVtb3ZlZFVzZXJzID0gdGhpcy5yZW1vdmVVc2VycztcclxuICAgIFxyXG4gICAgbGV0IHN0YXJ0RGF0ZVdpdGhUaW1lLCBlbmREYXRlV2l0aFRpbWU7XHJcbiAgICBpZighdGhpcy5zaG93UmFuZ2VWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPScnOyBcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgIT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLm1vbnRoRGF0ZSArJyAnKyB0aGlzLm1vbnRoRGF5O1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdzcGVjaWZpYycpIHtcclxuICAgICAgaWYodGhpcy5zdWJtaXR0ZWREYXRlcy5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc3BlY2lmaWNEYXRlID0gdGhpcy5zdWJtaXR0ZWREYXRlcztcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09ICdyYW5nZScgJiYgdGhpcy5zZWxlY3RlZERhdGVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWdEYXRhLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuXHJcbiAgICB0aGlzLlNvcFNlcnZpY2UuY29uZmlnVXBkYXRlKHRoaXMuY29uZmlnRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvY3JlYXRlQ2hlY2tsaXN0XCJdLCB7IHF1ZXJ5UGFyYW1zOiB7IGNoZWNrbGlzdElkOiBpZCB9IH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICB2YWxpZGF0ZVRpbWUoKSB7XHJcbiAgICBsZXQgc3RhcnRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLnN0YXJ0VGltZSwgJ0hIOm1tJylcclxuICAgIGxldCBlbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLmVuZFRpbWUsICdISDptbScpXHJcbiAgICBpZiAoIHRoaXMuc2hvd1JhbmdlVmFsdWUpIHtcclxuICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlICE9IG51bGwgJiYgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgIT0gJycgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSA9PSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKHN0YXJ0VGltZSA+IGVuZFRpbWUpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZFRpbWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdJbnZhbGlkIFNjaGVkdWxlIEVuZCBUaW1lJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkVGltZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA+IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRUaW1lID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIERhdGUnKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkVGltZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZFRpbWUgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICggc3RhcnRUaW1lID4gZW5kVGltZSkge1xyXG4gICAgICB0aGlzLnZhbGlkVGltZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIFRpbWUnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsaWRUaW1lID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZVRpbWUoZGF0YTogYW55KSB7XHJcbiAgICBpZih0aGlzLnZhbGlkYXRlVGltZSgpKSB7XHJcbiAgICAgIGlmIChkYXRhID09ICdzdGFydCcpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA9IHRoaXMuZGF5anModGhpcy5zdGFydFRpbWUsICdISDptbScpLmZvcm1hdCgnaGg6bW0gQScpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLmVuZFRpbWUsICdISDptbScpLmZvcm1hdCgnaGg6bW0gQScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFxyXG4gIH1cclxuICB1cGRhdGVTY2hlZHVsZShldmVudDphbnkpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID0gJyc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gJzAxJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gW107XHJcbiAgICB0aGlzLnN1Ym1pdHRlZERhdGVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVMaXN0ID0gW107XHJcbiAgICB0aGlzLnNwZWNpZmljID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vbnRoRGF0ZSA9ICcnO1xyXG4gICAgdGhpcy5tb250aERheSA9ICcnO1xyXG4gICAgdGhpcy5zaG93RHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1JhbmdlVmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUgPT0gJ3JhbmdlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHx8IHRoaXMuZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlIHx8IHRoaXMuZGF5anMoKS5hZGQoMSwnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxlbmREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgdGhpcy5taW5FbmREYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydERhdGUgPSB7c3RhcnREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyksZW5kRGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgdGhpcy5taW5TdGFydERhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgpO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSAnJztcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW5kRGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLm1pbkVuZERhdGUgPSAnJztcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9IHRoaXMuZGF5anMoKS5hZGQoMSwnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd3ZWVrZGF5Jykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFsnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheSddO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd3ZWVrbHknKSB7XHJcbiAgICAgIGxldCB0b2RheURhdGUgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdkZGRkJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gW3RvZGF5RGF0ZV07XHJcbiAgICB9XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ21vbnRobHknKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID0gJ2RheSc7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdERCcpO1xyXG4gICAgfVxyXG4gICAgaWYoWydkYWlseScsJ29uZXRpbWUnXS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUpIHx8IChldmVudC50YXJnZXQudmFsdWUgPT0gJ21vbnRobHknICYmIFsnZGF5JywnZGF0ZSddLmluY2x1ZGVzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwKSkgKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93T25jZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXBlYXRUeXBlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09ICdkYWlseScgPyAnRGF5JyA6IFsnd2Vla2x5Jywnd2Vla2RheSddLmluY2x1ZGVzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSkgPyAnV2VlaycgOiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ21vbnRobHknID8gJ01vbnRoJyA6ICcnO1xyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVGltZSgpO1xyXG4gIH1cclxuICBcclxuICBuYXZpZ2F0ZVRvQ29udHJvbENlbnRlcigpIHtcclxuICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvY29udHJvbGNlbnRlci90ZW1wbGF0ZXZpZXcnXSx7IHF1ZXJ5UGFyYW1zOiB7IHNvdXJjZTogJ2NjJyB9IH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkU3RvcmVDb21wb25lbnQoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhTdG9yZUNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJyBcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgIGNoZWNrbGlzdElkOiB0aGlzLmNoZWNrbGlzdElkLFxyXG4gICAgICBvYmo6dGhpcy5vYmpcclxuICAgIH07XHJcbiAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICBpZihyZXMpIHtcclxuICAgICAgICB0aGlzLnVzZXJEYXRhID0gcmVzO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVVc2VyRGV0YWlscyh0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdG9nZ2xlRHJvcERvd24oKSB7XHJcbiAgICB0aGlzLnNob3dEcm9wRG93biA9ICF0aGlzLnNob3dEcm9wRG93bjtcclxuICB9XHJcbiAgc2VsZWN0RGF0ZShkYXRlOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZS5pbmNsdWRlcyhkYXRlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlLmZpbHRlcigoZGF5OmFueSkgPT4gZGF5ICE9PSBkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKCF0aGlzLnNlbGVjdGVkRGF0ZS5pbmNsdWRlcyhkYXRlKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnB1c2goZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3VibWl0RGF0ZSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkRGF0ZXMgPSBbLi4udGhpcy5zZWxlY3RlZERhdGVdO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQmFkZ2UoZGF0ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZERhdGVzID0gdGhpcy5zdWJtaXR0ZWREYXRlcy5maWx0ZXIoZCA9PiBkICE9PSBkYXRlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5zZWxlY3RlZERhdGUuZmlsdGVyKChkOmFueSkgPT4gZCAhPT0gZGF0ZSk7XHJcbiAgfVxyXG4gIGdldERhdGVXaXRoU3VmZml4KGRhdGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoZGF0ZSA9PSAxIHx8IGRhdGUgPT0gMzEgfHwgZGF0ZSA9PSAyMSkge1xyXG4gICAgICByZXR1cm4gZGF0ZSArICdzdCc7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUgPT0gMiB8fCBkYXRlID09IDIyKSB7XHJcbiAgICAgIHJldHVybiBkYXRlICsgJ25kJztcclxuICAgIH0gZWxzZSBpZiAoZGF0ZSA9PSAzIHx8IGRhdGUgPT0gMjMpIHtcclxuICAgICAgcmV0dXJuIGRhdGUgKyAncmQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGRhdGUgKyAndGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wRG93bigpIHtcclxuICAgIHRoaXMuc2hvd0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNb250aCh0eXBlOmFueSkge1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9ICcnO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWREYXRlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBbXTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IFtdO1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPSB0eXBlO1xyXG4gICAgdGhpcy5tb250aERhdGUgPSAnJ1xyXG4gICAgdGhpcy5tb250aERheSA9ICcnXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93T25jZSA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIGxldCBkYXRlV2VlayA9IGdldFdlZWtOdW1iZXIodGhpcy5kYXlqcygpKTtcclxuICAgICAgdGhpcy5tb250aERhdGUgPSBkYXRlV2Vlay50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLm1vbnRoRGF5ID0gdGhpcy5kYXlqcygpLmZvcm1hdCgnZGRkZCcpOyAgICAgIFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RheScpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdERCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlUmVwZWF0RGF5KCkge1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZERheTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWREYXkgPSB2YWx1ZSA9PSBcIjAwXCIgfHwgdmFsdWUgPT0gJycgPyAnMDEnIDogdmFsdWU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNb250aFZhbHVlKCkge1xyXG4gICAgbGV0IGRhdGVWYWx1ZSA9ICcnXHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnMScpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ0ZpcnN0J1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb250aERhdGUgPT0gJzInKSB7XHJcbiAgICAgIGRhdGVWYWx1ZSA9ICdTZWNvbmQnXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnMycpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ1RoaXJkJ1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb250aERhdGUgPT0gJzQnKSB7XHJcbiAgICAgIGRhdGVWYWx1ZSA9ICdGb3VydGgnXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnNScpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ0xhc3QnXHJcbiAgICB9XHJcbiAgICByZXR1cm4gKCdvbiB0aGUgJyArIGRhdGVWYWx1ZSArJyAnK3RoaXMubW9udGhEYXkpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTcGVjaWZpY1ZhbHVlKCkge1xyXG4gICAgbGV0IHZhbHVlOmFueSA9IFtdO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWREYXRlcy5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICBpdGVtID0gKGl0ZW0gPT0gMSB8fCBpdGVtID09IDMxIHx8IGl0ZW0gPT0gMjEpID8gaXRlbSArJyBzdCcgOiAoaXRlbSA9PSAyIHx8IGl0ZW0gPT0gMjIpID8gaXRlbSArJyBuZCcgOiAoaXRlbSA9PSAzIHx8IGl0ZW0gPT0gMjMgKT8gaXRlbSArICdyZCcgOiBpdGVtICsnIHRoJztcclxuICAgICAgdmFsdWUucHVzaChpdGVtIClcclxuICAgIH0pXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVEYXRlKGRhdGU6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QuZmlsdGVyKChlbGU6YW55KSA9PiBlbGUgIT0gZGF0ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2VkdWxlRGF0ZSgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUnLHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSlcclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGVWYWx1ZShldmVudDphbnkpIHtcclxuICAgIGlmKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgfHwgdGhpcy5kYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlID0gJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnU3RhcnREYXRlID0gJyc7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gJyc7XHJcbiAgICB0aGlzLm1pbkRhdGU9Jyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhcnREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTcGVjaWZpYyhldmVudDphbnkpIHtcclxuICAgIGlmKCFldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZXBpY2tlclJlZnJlc2goKXtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gJyc7XHJcbiAgICB0aGlzLm1pbkVuZERhdGUgPSAnJztcclxuICB9XHJcblxyXG4gIHNlbGVjdFNwZWNpZmljRGF0ZShldmVudDphbnkpIHtcclxuICAgIHRoaXMuc2hvd0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBldmVudDtcclxuICB9XHJcblxyXG4gICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXCIuZHJvcGRvd24tY2xvc2VcIik7XHJcbiAgICBjb25zb2xlLmxvZyhjbGlja2VkSW5zaWRlKTtcclxuICAgIFxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wRG93bigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50VXNlcigpIHtcclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRDbGllbnRVc2VyKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFVzZXJzID0gcmVzLmRhdGEubWFwKChpdGVtOmFueSkgPT4ge3JldHVybiB7bmFtZTppdGVtLnVzZXJOYW1lLHZhbHVlOml0ZW0uZW1haWx9fSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5hbGVydFVzZXJzKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmFsZXJ0VXNlcnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRab25lTGlzdCgpIHtcclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRab25lTGlzdCh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuem9uZUxpc3QgPSByZXMuZGF0YS5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtuYW1lOml0ZW0uem9uZSx2YWx1ZTppdGVtLnpvbmV9fSApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuem9uZUxpc3QgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbGVydChldmVudDphbnkpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LmFsZXJ0c1RvID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVab25lKGV2ZW50OmFueSkge1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IGV2ZW50O1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0V2Vla051bWJlcihkYXRlOiBhbnkpIHtcclxuICBsZXQgZGF5cyA9IFtdO1xyXG4gIGxldCBkYXRlRGF0ID0gZGF5anMoIGRhdGUgKS5zdGFydE9mKCAnbW9udGgnICk7XHJcblxyXG4gIHdoaWxlICggZGF0ZURhdC5tb250aCgpID09PSBkYXRlLm1vbnRoKCkgKSB7XHJcbiAgICBpZiAoIGRhdGVEYXQuZm9ybWF0KCAnZGRkZCcgKSA9PT0gIGRhdGUuZm9ybWF0KCAnZGRkZCcgKSkge1xyXG4gICAgICBkYXlzLnB1c2goIGRhdGVEYXQuZm9ybWF0KCAnWVlZWS1NTS1ERCcgKSApO1xyXG4gICAgfVxyXG4gICAgZGF0ZURhdCA9IGRhdGVEYXQuYWRkKCAxLCAnZGF5JyApO1xyXG4gIH1cclxuXHJcbiAgbGV0IGZpbmRJbmRleCA9IGRheXMuZmluZEluZGV4KChpdGVtOmFueSkgPT4gaXRlbSA9PSBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpKVxyXG4gIHJldHVybiAoZmluZEluZGV4ICsgMSk7XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcGItM1wiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIHctODAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgbWItNCB3LTEwMFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiY2hlY2tsaXN0IHBsYWluLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBDaGVja2xpc3QgTmFtZVwiIFt2YWx1ZV09XCJjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5jaGVja0xpc3ROYW1lXCIgcmVhZG9ubHk+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdGFibGVjb250ZW50IHctMTAwXCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFpbi1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFjZWhvbGRlcj1cIkVudGVyIENoZWNrbGlzdCBEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5jaGVja0xpc3REZXNjcmlwdGlvblwiIHJlYWRvbmx5PjwvZGl2PlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInB1Ymxpc2goKVwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPlB1Ymxpc2g8L3NwYW4+IDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZWRyYWZ0KClcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5TYXZlIGFzIERyYWZ0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvdyBjaGVja2NvbmZpZ2NvbnQgbXQtMlwiICpuZ0lmPVwiY29uZmlnRGF0YVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14bC0zIGxlZnRjYXJkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcHgtNyBweS03XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWxlZnRoZWFkaW5nMVwiPnt7Y29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY2hlY2tMaXN0TmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouY2hlY2tMaXN0SWRcIiBjbGFzcz1cInNlY3Rpb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uczsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHNlY3Rpb25cIj57e3NlY3Rpb24ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiYWNjb3JkaWFuKGkpXCIgW25nQ2xhc3NdPVwieydyb3RhdGUnIDogc2hvdyAhPT0gaX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvdz09PWlcIiBjbGFzcz1cInF1ZXN0aW9uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cInNlY3Rpb24ucXVlc3Rpb25zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnM7bGV0IGo9aW5kZXg7XCIgY2xhc3M9XCJteS0yIHEtYnRuXCIgY2RrRHJhZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRhYmxlY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3F1ZXN0aW9uLnFuYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIHNlY3Rpb24tbGVmdGhlYWRpbmcxIG10LTZcIj5TY2hlZHVsZTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nIHx8IHR5cGUgPT09ICdzdG9yZW9wZW5hbmRjbG9zZSdcIiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBteC00XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+e3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWV9fSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnY3VzdG9tJywndW5pZm9ybWRldGVjdGlvbiddLmluY2x1ZGVzKHR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjMgMjNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC40MTQ0OCA0LjUyMzAzQzguNjk1MTggNC44MDM3MSA4LjY5NTE4IDUuMjU4OCA4LjQxNDQ4IDUuNTM5NDhMNS41Mzk0OCA4LjQxNDQ4QzUuMjU4OCA4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA0LjUyMzAzIDguNDE0NDhMMy4wODU1MyA2Ljk3Njk4QzIuODA0ODIgNi42OTYzIDIuODA0ODIgNi4yNDEyMSAzLjA4NTUzIDUuOTYwNTNDMy4zNjYyMSA1LjY3OTgyIDMuODIxMyA1LjY3OTgyIDQuMTAxOTggNS45NjA1M0w1LjAzMTI1IDYuODg5NzhMNy4zOTgwMyA0LjUyMzAzQzcuNjc4NzEgNC4yNDIzMiA4LjEzMzggNC4yNDIzMiA4LjQxNDQ4IDQuNTIzMDNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC40MTQ0OCAxMS43MTA1QzguNjk1MTggMTEuOTkxMiA4LjY5NTE4IDEyLjQ0NjMgOC40MTQ0OCAxMi43MjdMNS41Mzk0OCAxNS42MDJDNS4yNTg4IDE1Ljg4MjYgNC44MDM3MSAxNS44ODI2IDQuNTIzMDMgMTUuNjAyTDMuMDg1NTMgMTQuMTY0NUMyLjgwNDgyIDEzLjg4MzggMi44MDQ4MiAxMy40Mjg3IDMuMDg1NTMgMTMuMTQ3OUMzLjM2NjIxIDEyLjg2NzMgMy44MjEzIDEyLjg2NzMgNC4xMDE5OCAxMy4xNDc5TDUuMDMxMjUgMTQuMDc3M0w3LjM5ODAzIDExLjcxMDVDNy42Nzg3MSAxMS40Mjk5IDguMTMzOCAxMS40Mjk5IDguNDE0NDggMTEuNzEwNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wNjI1IDYuNDY4NzVDMTAuMDYyNSA2LjA3MTggMTAuMzg0NCA1Ljc1IDEwLjc4MTIgNS43NUgxNS4wOTM4QzE1LjQ5MDYgNS43NSAxNS44MTI1IDYuMDcxOCAxNS44MTI1IDYuNDY4NzVDMTUuODEyNSA2Ljg2NTcgMTUuNDkwNiA3LjE4NzUgMTUuMDkzOCA3LjE4NzVIMTAuNzgxMkMxMC4zODQ0IDcuMTg3NSAxMC4wNjI1IDYuODY1NyAxMC4wNjI1IDYuNDY4NzVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy41OTM3NSAwQzEuNjA4OTggMCAwIDEuNjA4OTggMCAzLjU5Mzc1VjE2LjUzMTJDMCAxOC41MTYgMS42MDg5OCAyMC4xMjUgMy41OTM3NSAyMC4xMjVIOS40ODcwOEM5LjI1NDI5IDE5LjY2OTYgOS4wNjQzNiAxOS4xODg2IDguOTIyNjEgMTguNjg3NUgzLjU5Mzc1QzIuNDAyODggMTguNjg3NSAxLjQzNzUgMTcuNzIyMSAxLjQzNzUgMTYuNTMxMlYzLjU5Mzc1QzEuNDM3NSAyLjQwMjg4IDIuNDAyODggMS40Mzc1IDMuNTkzNzUgMS40Mzc1SDE2LjUzMTJDMTcuNzIyMSAxLjQzNzUgMTguNjg3NSAyLjQwMjg4IDE4LjY4NzUgMy41OTM3NVY4LjkyMjYxQzE5LjE4ODYgOS4wNjQzNiAxOS42Njk2IDkuMjU0MjkgMjAuMTI1IDkuNDg3MDhWMy41OTM3NUMyMC4xMjUgMS42MDg5OCAxOC41MTYgMCAxNi41MzEyIDBIMy41OTM3NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi41MzEzIDIzQzIwLjEwMzkgMjMgMjMgMjAuMTAzOSAyMyAxNi41MzEzQzIzIDEyLjk1ODYgMjAuMTAzOSAxMC4wNjI1IDE2LjUzMTMgMTAuMDYyNUMxMi45NTg2IDEwLjA2MjUgMTAuMDYyNSAxMi45NTg2IDEwLjA2MjUgMTYuNTMxM0MxMC4wNjI1IDIwLjEwMzkgMTIuOTU4NiAyMyAxNi41MzEzIDIzWk0xNi41MzEzIDEyLjkzNzVDMTYuOTI4MSAxMi45Mzc1IDE3LjI1IDEzLjI1OTQgMTcuMjUgMTMuNjU2M1YxNS44MTI1SDE5LjQwNjNDMTkuODAzMSAxNS44MTI1IDIwLjEyNSAxNi4xMzQ0IDIwLjEyNSAxNi41MzEzQzIwLjEyNSAxNi45MjgxIDE5LjgwMzEgMTcuMjUgMTkuNDA2MyAxNy4yNUgxNy4yNVYxOS40MDYzQzE3LjI1IDE5LjgwMzEgMTYuOTI4MSAyMC4xMjUgMTYuNTMxMyAyMC4xMjVDMTYuMTM0NCAyMC4xMjUgMTUuODEyNSAxOS44MDMxIDE1LjgxMjUgMTkuNDA2M1YxNy4yNUgxMy42NTYzQzEzLjI1OTQgMTcuMjUgMTIuOTM3NSAxNi45MjgxIDEyLjkzNzUgMTYuNTMxM0MxMi45Mzc1IDE2LjEzNDQgMTMuMjU5NCAxNS44MTI1IDEzLjY1NjMgMTUuODEyNUgxNS44MTI1VjEzLjY1NjNDMTUuODEyNSAxMy4yNTk0IDE2LjEzNDQgMTIuOTM3NSAxNi41MzEzIDEyLjkzNzVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPnt7Y29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT09ICdvbmV0aW1lJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT25lLXRpbWUnIDogKGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlIHwgdGl0bGVjYXNlKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+e3tjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZS5zdWJzdHIoLTgpIDogY29uZmlnRGF0YT8ub3BlblRpbWV9fSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZUVuZFRpbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVFbmRUaW1lLnN1YnN0cigtOCkgOiBjb25maWdEYXRhPy5jbG9zZVRpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIiAqbmdJZj1cInNob3dSYW5nZVZhbHVlXCI+PHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4+e3tjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGV9fTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPT0gJycgJiYgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHt7Y29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZX19PC9zcGFuPjwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMCBlZGl0cXVlc1wiICpuZ0lmPVwiWydjdXN0b20nXS5pbmNsdWRlcyh0eXBlKSAmJiAhZGlzYWJsZWRRdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2F2ZWFuZHJlZGlyZWN0KG9iai5jaGVja0xpc3RJZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4tb3V0bGluZS1kYXNoZWQgYnRuIGJ0bi1saWdodCB1cGxvYWRcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC42NjY2IDIuNTAwOUMxNC44ODU1IDIuMjgyMDMgMTUuMTQ1MyAyLjEwODQyIDE1LjQzMTMgMS45ODk5NkMxNS43MTczIDEuODcxNTEgMTYuMDIzOCAxLjgxMDU1IDE2LjMzMzMgMS44MTA1NUMxNi42NDI4IDEuODEwNTUgMTYuOTQ5MyAxLjg3MTUxIDE3LjIzNTMgMS45ODk5NkMxNy41MjEzIDIuMTA4NDIgMTcuNzgxMSAyLjI4MjAzIDE4IDIuNTAwOUMxOC4yMTg4IDIuNzE5NzcgMTguMzkyNCAyLjk3OTYxIDE4LjUxMDkgMy4yNjU1OEMxOC42Mjk0IDMuNTUxNTQgMTguNjkwMyAzLjg1ODA0IDE4LjY5MDMgNC4xNjc1N0MxOC42OTAzIDQuNDc3MSAxOC42Mjk0IDQuNzgzNiAxOC41MTA5IDUuMDY5NTZDMTguMzkyNCA1LjM1NTUzIDE4LjIxODggNS42MTUzNyAxOCA1LjgzNDI0TDYuNzQ5OTYgMTcuMDg0MkwyLjE2NjYzIDE4LjMzNDJMMy40MTY2MyAxMy43NTA5TDE0LjY2NjYgMi41MDA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwidXBsb2FkdGV4dFwiPkVkaXQgUXVlc3Rpb25zPC9zcGFuPjwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdtb2JpbGV1c2FnZWRldGVjdGlvbidcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIHNlY3Rpb24tbGVmdGhlYWRpbmcxXCI+QWxlcnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNiBteC00IHN1YlwiPkVtYWlsPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ1wiIGNsYXNzPVwibXgtNCBtdC00IHN1YlwiPmlmIHVzYWdlIGV4Y2VlZHNcclxuICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxlcnQ/LnVzYWdlRXhjZWVkc319XHJcbiAgICAgICAgICAgICAgICBldmVudHNcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnc3RvcmVvcGVuYW5kY2xvc2UnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1sYWJlbCBzZWN0aW9uLWxlZnRoZWFkaW5nMVwiPkFsZXJ0czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtNCBzdWJcIj5TZW5kIGVtYWlsIGV2ZXJ5ZGF5IHRvPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aDMgKm5nSWY9XCJ0eXBlID09PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nXCIgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgc2VjdGlvbi1sZWZ0aGVhZGluZzEgbXQtNFwiPkRldGVjdGlvbiBBcmVhczwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IG14LTIgc3ViXCI+PHNwYW4gKm5nRm9yPVwibGV0IHpvbmUgb2YgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uZGV0ZWN0aW9uQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgbXgtMiBtdC00IGJhZGdlLWxpZ2h0IGNoZWNrbGlzdGxhYmVsIGZzLWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJraS1kdW90b25lIGtpLWFycm93LXVwIGNoZWNrbGlzdHRleHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7em9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2gzPlxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtOVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZmx1c2ggaC14bC0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC03XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmdcIj5TY2hlZHVsZTxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg3NF82NjE5NSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDEwLjY2NzNWOC4wMDA2NU04LjAwMDE2IDUuMzMzOThIOC4wMDY4M00xNC42NjY4IDguMDAwNjVDMTQuNjY2OCAxMS42ODI2IDExLjY4MjEgMTQuNjY3MyA4LjAwMDE2IDE0LjY2NzNDNC4zMTgyNiAxNC42NjczIDEuMzMzNSAxMS42ODI2IDEuMzMzNSA4LjAwMDY1QzEuMzMzNSA0LjMxODc1IDQuMzE4MjYgMS4zMzM5OCA4LjAwMDE2IDEuMzMzOThDMTEuNjgyMSAxLjMzMzk4IDE0LjY2NjggNC4zMTg3NSAxNC42NjY4IDguMDAwNjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE4NzRfNjYxOTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJ0eXBlID09PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXQtMiBteC00XCI+RnJvbTwvc3Bhbj4mbmJzcDsmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIGZsYXRwaWNrci1pbnB1dCB3LTIwMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVUaW1lKCdzdGFydCcpXCIgWyhuZ01vZGVsKV09XCJzdGFydFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNldCBzdG9yZSBvcGVuIHRpbWVcIiBuYW1lPVwiZHVlX2RhdGVcIiB0eXBlPVwidGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXQtMyBteC00XCI+VG88L3NwYW4+Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVGltZSgnZW5kJylcIiBbKG5nTW9kZWwpXT1cImVuZFRpbWVcIiBwbGFjZWhvbGRlcj1cIlNldCBzdG9yZSBvcGVuIHRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHVlX2RhdGVcIiB0eXBlPVwidGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yIG10LThcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiWydjdXN0b20nLCd1bmlmb3JtZGV0ZWN0aW9uJ10uaW5jbHVkZXModHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXQtNiBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC02IHN1YlwiPkZvcjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3QtbGcgc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSBuZy1wcmlzdGluZSBuZy12YWxpZCBuZy10b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVTY2hlZHVsZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm9uZXRpbWVcIj5Eb2VzIE5vdCBSZXBlYXQ8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwid2Vla2RheVwiPiBFdmVyeSBXZWVrZGF5IChNb24gLSBGcmkpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRhaWx5XCI+RGFpbHk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwid2Vla2x5XCI+V2Vla2x5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbnRobHlcIj5Nb250aGx5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJhbmdlXCI+Q3VzdG9tIFJhbmdlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViIG10LTMgbXgtMlwiPkF0PC9zcGFuPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVUaW1lKCdzdGFydCcpXCIgWyhuZ01vZGVsKV09XCJzdGFydFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2V0IHN0b3JlIG9wZW4gdGltZVwiIG5hbWU9XCJkdWVfZGF0ZVwiIHR5cGU9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBtdC0zIG1zLTVcIj5FbmRzPC9zcGFuPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVUaW1lKCdlbmQnKVwiIFsobmdNb2RlbCldPVwiZW5kVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgc3RvcmUgb3BlbiB0aW1lXCIgbmFtZT1cImR1ZV9kYXRlXCIgdHlwZT1cInRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaGVhZGluZ1wiPkNoZWNrbGlzdCBDb25maWd1cmF0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PT0gJ29uZXRpbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLWxnLTEyIGQtZmxleCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXQtM1wiPk9uY2UgT248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBweC00IHBlLTNcIiBpZD1cImRhdGVjbGFzc1wiIGRhdGEta3QtZGF0ZXJhbmdlcGlja2VyPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1kYXRlcmFuZ2VwaWNrZXItb3BlbnM9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ4LWRhdGUtcmFuZ2UgZm9ybS1jb250cm9sIHBzLTE0XCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBuZ3hEYXRlcmFuZ2VwaWNrZXJNZCBbc2luZ2xlRGF0ZVBpY2tlcl09XCJ0cnVlXCIgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcHNdPVwiJ2Rvd24nXCIgW29wZW5zXT1cIidyaWdodCdcIiBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsXT1cInRydWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZXNcIiBbYXV0b0FwcGx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlUmFuZ2VTdGFydCgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlICE9PSAnb25ldGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicmFuZ2VEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbmctdmFsaWQgbmctZGlydHkgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93UmFuZ2VWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT09ICdyYW5nZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRGF0ZVZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyYW5nZURhdGVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgY2hlY2tsaXN0dGV4dCBtcy0yXCI+U2V0IGRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlIHJhbmdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLWxnLTEyIGQtZmxleCBtdC01XCIgKm5nSWY9XCJzaG93UmFuZ2VWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViIG10LTNcIj5TdGFydHMgZnJvbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHB4LTQgcGUtM1wiIGlkPVwiZGF0ZWNsYXNzXCIgZGF0YS1rdC1kYXRlcmFuZ2VwaWNrZXI9XCJ0cnVlXCIgZGF0YS1rdC1kYXRlcmFuZ2VwaWNrZXItb3BlbnM9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ4LWRhdGUtcmFuZ2UgZm9ybS1jb250cm9sIHBzLTE0XCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBuZ3hEYXRlcmFuZ2VwaWNrZXJNZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZURhdGVQaWNrZXJdPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pblN0YXJ0RGF0ZVwiIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIiBbc2hvd0NhbmNlbF09XCJ0cnVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdGFydERhdGVcIiBbYXV0b0FwcGx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlUmFuZ2VTdGFydCgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC04IG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSAhPT0gJ3JhbmdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViXCI+UmVwZWF0cyBldmVyeTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdi1yb3cgbWItNSBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCB3LTEwMHB4IG5nLXByaXN0aW5lIG5nLWludmFsaWQgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiIG1pbj1cIjFcIiAoY2hhbmdlKT1cInVwZGF0ZVJlcGVhdERheSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ2LXJvdyBtYi01IG14LTIgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIHctMTAwcHggbmctcHJpc3RpbmUgbmctaW52YWxpZCBuZy10b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlcGVhdFR5cGVcIiByZWFkb25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAnbW9udGhseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJkYXlcIiBbY2hlY2tlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09PSAnZGF5J1wiIChjaGFuZ2UpPVwidXBkYXRlTW9udGgoJ2RheScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9yPVwiaW5saW5lUmFkaW8xXCI+T24gRGF5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IG1iLTUgcHMtMTggZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgdy0xMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgIT09ICdkYXknID8gJ2Rpc2FibGVkJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vla1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSAnZGF5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aD1cIjJcIiAoaW5wdXQpPVwidmFsaWRhdGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cImRheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT09ICdkYXRlJ1wiIChjaGFuZ2UpPVwidXBkYXRlTW9udGgoJ2RhdGUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9yPVwiaW5saW5lUmFkaW8xXCI+T24gdGhlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleCBkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IG1iLTUgcHMtMjAgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3QtbGcgc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSBuZy1wcmlzdGluZSBuZy12YWxpZCBuZy10b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb250aERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCI+IEZpcnN0IDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPiBTZWNvbmQgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIzXCI+IFRoaXJkPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI0XCI+IEZvdXJ0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNVwiPiBMYXN0PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ2LXJvdyBtYi01IG14LTIgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3QtbGcgc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSBuZy1wcmlzdGluZSBuZy12YWxpZCBuZy10b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb250aERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlN1bmRheVwiPiBTdW5kYXkgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJNb25kYXlcIj4gTW9uZGF5IDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiVHVlc2RheVwiPiBUdWVzZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJXZWRuZXNkYXlcIj4gV2VkbmVzZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJUaHVyc2RheVwiPiBUaHVyc2RheTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRnJpZGF5XCI+RnJpZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTYXR1cmRheVwiPiBTYXR1cmRheTwvb3B0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJkYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09PSAnc3BlY2lmaWMnXCIgKGNoYW5nZSk9XCJ1cGRhdGVNb250aCgnc3BlY2lmaWMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9yPVwiaW5saW5lUmFkaW8xXCI+T24gU3BlY2lmaWMgRGF0ZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBwZS0zIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcERvd24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jbG9zZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXQgcHMtMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcERvd24oKVwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgIT09ICdzcGVjaWZpYydcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudSB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dEcm9wRG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBtYi0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIGRhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBtZS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgYnRuIHdlZWtzdHlsZWRhdGUgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtcGlsbCBtaW4tdy0zNXB4IHB5LTIgcHgtMyBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZERhdGUuaW5jbHVkZXMoZGF0ZSkgPyAnYWN0aXZlIGJ0bi1hY3RpdmUtcHJpbWFyeScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidGFiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlsbHN0eWxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VibWl0RGF0ZSgpO3Nob3dEcm9wRG93bj0gZmFsc2U7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IHB5LTMgYmFkZ2Utc3BlY2lmaWNkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTMgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGRhdGUgb2Ygc3VibWl0dGVkRGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtbGlnaHQgY2hlY2tsaXN0dGV4dCBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVXaXRoU3VmZml4KGRhdGUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJyZW1vdmVCYWRnZShkYXRlKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlsnd2Vla2RheScsJ3dlZWtseSddLmluY2x1ZGVzKGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1waWxscyBkLWZsZXggZmxleC1ub3dyYXBcIiByb2xlPVwidGFibGlzdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG1lLTFcIiByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIihjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICd3ZWVrbHknIHx8IChjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICd3ZWVrZGF5JyAmJiAhWydTdW5kYXknLCdTYXR1cmRheSddLmluY2x1ZGVzKGRheSkpKSA/IHNldERheShkYXkpIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGluayBidG4gd2Vla3N0eWxlIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWNlbnRlciByb3VuZGVkLXBpbGwgbWluLXctNDVweCBtZS0yIHB5LTQgcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAnd2Vla2RheScgJiYgWydTdW5kYXknLCdTYXR1cmRheSddLmluY2x1ZGVzKGRheSkpID8gJ2N1cnNvci1kZWZhdWx0JyA6IHNlbGVjdGVkRGF5cy5pbmNsdWRlcyhkYXkpID8gJ3NlbGVjdERheScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRhYlwiIGFyaWEtc2VsZWN0ZWQ9XCJmYWxzZVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWxsc3R5bGVcIj57eyBkYXlbMF0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PT0gJ3JhbmdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbmctdmFsaWQgbmctZGlydHkgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzcGVjaWZpY1wiIChjaGFuZ2UpPVwidXBkYXRlU3BlY2lmaWMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBjaGVja2xpc3R0ZXh0IG1zLTJcIj5PbiBTcGVjaWZpY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC00IHBlLTMgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcERvd24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIHctMzAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTE0XCIgKGNsaWNrKT1cInRvZ2dsZURyb3BEb3duKClcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNwZWNpZmljXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudSB3LTEwMFwiICpuZ0lmPVwic2hvd0Ryb3BEb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1tdWx0aS1kYXRlLWRhdGVwaWNrZXIgKHNlbGVjdGVkRGF0ZXMpPVwic2VsZWN0U3BlY2lmaWNEYXRlKCRldmVudClcIiBbcHJlZGVmaW5lZERhdGVzXT1cInNlbGVjdGVkRGF0ZUxpc3RcIiBbc3RhcnREYXRlXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGVcIiBbZW5kRGF0ZV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZVwiPjwvbGliLW11bHRpLWRhdGUtZGF0ZXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcHktMyBiYWRnZS1zcGVjaWZpY2RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTMgbXMtMTAgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXRlIG9mIHNlbGVjdGVkRGF0ZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1waWxsIGJhZGdlLWxpZ2h0IGNoZWNrbGlzdHRleHQgbWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZURhdGUoZGF0ZSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXQtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhc2hvd1JhbmdlVmFsdWUgfHwgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAnb25ldGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YlwiPkVuZHMgT248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBweC00IHBlLTNcIiBpZD1cImRhdGVjbGFzc1wiIGRhdGEta3QtZGF0ZXJhbmdlcGlja2VyPVwidHJ1ZVwiIGRhdGEta3QtZGF0ZXJhbmdlcGlja2VyLW9wZW5zPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTRcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZURhdGVQaWNrZXJdPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pbkVuZERhdGVcIiBbZHJvcHNdPVwiJ2Rvd24nXCIgW29wZW5zXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCIgW2tlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2VdPVwidHJ1ZVwiIFtzaG93Q2FuY2VsXT1cInRydWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFbmREYXRlXCIgW2F1dG9BcHBseV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlUmFuZ2VFbmQoJGV2ZW50KVwiIG5hbWU9XCJkYXRlcmFuZ2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByZW1vdmUgY3Vyc29yLXBvaW50ZXIgbXMtNFwiIChjbGljayk9XCJvbkRhdGVwaWNrZXJSZWZyZXNoKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSAhPT0gJycgJiYgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgIT09IG51bGwgJiYgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlICE9PSdyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ29uZXRpbWUnXCI+T2NjdXJzIG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRheSB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVEYXRlIHwgZGF0ZTonZGQgTU1NIFlZWVknfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIHVzZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiWyd3ZWVrZGF5Jywnd2Vla2x5J10uaW5jbHVkZXMoY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSlcIj5PY2N1cnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVyeSB7eyhjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXk/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZERheSAhPT0nMDEnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IDogJyd9fSB3ZWVrPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09IDAxXCI+czwvc3Bhbj4gb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRGF5cy50b1N0cmluZygpfX08c3BhbiAqbmdJZj1cInNob3dSYW5nZVZhbHVlXCI+IHN0YXJ0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fSA8c3BhbiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZVwiPnVudGlse3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMyB1c2VyXCIgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09PSAnZGFpbHknXCI+T2NjdXJzIGV2ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09ICcwMScpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgOiAnJ319IGRheTxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5ICE9PSAwMVwiPnM8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UmFuZ2VWYWx1ZVwiPiBzdGFydGluZyB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTonZGQgTU1NIFlZWVknfX0gPHNwYW4gKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgXCI+dW50aWx7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSBZWVlZJ319PC9zcGFuPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIHVzZXJcIiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT09ICdtb250aGx5J1wiPk9jY3Vyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09ICcwMScpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgOiAnJ319IG1vbnRoPHNwYW4gKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09IDAxXCI+czwvc3Bhbj57eyhjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09PSAnZGF5JykgPyAoJ29uIGRheSAnICsgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWspIDogY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9PT0gJ2RhdGUnID8gdXBkYXRlTW9udGhWYWx1ZSgpOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNwZWNpZmljVmFsdWUoKX19PHNwYW4gKm5nSWY9XCJzaG93UmFuZ2VWYWx1ZVwiPiBzdGFydGluZyB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NIFlZWVknfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlXCI+dW50aWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlIHwgZGF0ZTonZGQgTU1NIFlZWVknfX08L3NwYW4+PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ3JhbmdlJ1wiPk9jY3VycyBldmVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVdlZWtEYXlzPy50b1N0cmluZygpfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UmFuZ2VWYWx1ZVwiPiBzdGFydGluZyB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTonZGQgTU1NIFlZWVknfX0gPHNwYW4gKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGVcIj51bnRpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1sZWZ0XCIgKm5nSWY9XCJbJ2N1c3RvbScsJ3VuaWZvcm1kZXRlY3Rpb24nXS5pbmNsdWRlcyh0eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaGVhZGluZ1wiPlJlc3BvbnNlIENvbmZpZ3VyYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY29uZmlnYWNjb3JkaWFuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyb3RhdGUnIDogc2hvd2NvbmZpZ31cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd2NvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ29uZXRpbWUnLCdkYWlseSddLmluY2x1ZGVzKGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUpIHx8IChjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAnbW9udGhseScgJiYgIGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgIT09J3NwZWNpZmljJykgPyAnYmctY29sb3ItZGlzYWJsZWQnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdi1yb3cgY2hlY2tsaXN0dHVybm9mZiBtdC00IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGxvd09uY2UgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hbGxvd09uY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvbmVUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlsnb25ldGltZScsJ2RhaWx5J10uaW5jbHVkZXMoY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSkgfHwgKGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICdtb250aGx5JyAmJiAgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCAhPT0nc3BlY2lmaWMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3ViIG1zLTJcIiBmb3I9XCJvbmVUaW1lXCI+T25seSBvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3VidGV4dCBtcy0yXCIgZm9yPVwib25lVGltZVwiPkJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsaW5nIHRoaXMsIHRoZSByZXNwb25zZSBjYW4gYmUgY2FwdHVyZWQgb25seSBvbmNlIGZvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGNoZWNrbGlzdCA8c3BhbiAqbmdJZj1cInNob3dSYW5nZVZhbHVlXCI+ZnJvbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnU3RhcnREYXRlfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlXCI+dG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlfX0uPC9zcGFuPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnYtcm93IGNoZWNrbGlzdHR1cm5vZmYgbXQtNCBmdi1wbHVnaW5zLWljb24tY29udGFpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGxvd2VkT3ZlclRpbWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxsb3dlZE92ZXJUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaWxsUmVzcG9uc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmaWxsUmVzcG9uc2VcIj5GaWxsIHJlc3BvbnNlIGFmdGVyIGNvbmZpZ3VyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS48L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWJ0ZXh0IG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmlsbFJlc3BvbnNlXCI+QnkgZW5hYmxpbmcsIHRoZSB1c2VyIGNhbiBmaWxsIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaXN0IGV2ZW4gYWZ0ZXIgdGhlIGFib3ZlIGNvbmZpZ3VyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC10aW1lLjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IGNoZWNrbGlzdHR1cm5vZmYgbXQtNCBmdi1wbHVnaW5zLWljb24tY29udGFpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxsb3dlZFN0b3JlTG9jYXRpb24gPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hbGxvd2VkU3RvcmVMb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImdlb0ZlbmNpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHN1YiBtcy0yXCIgZm9yPVwiZ2VvRmVuY2luZ1wiPkdlb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZW5jaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWJ0ZXh0IG1zLTJcIiBmb3I9XCJnZW9GZW5jaW5nXCI+QnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxpbmcsIHRoZSBjaGVja2xpc3QgY2FuIGJlIGZpbGxlZCBieSB0aGUgdXNlciBvbmx5IHdoZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBzdG9yZS48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ2LXJvdyBjaGVja2xpc3R0dXJub2ZmIG10LTQgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmFsbG93ZWRNdWx0aVN1Ym1pdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93ZWRNdWx0aVN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFsbG93ZWRNdWx0aVN1Ym1pdFN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3ViIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJhbGxvd2VkTXVsdGlTdWJtaXRTd2l0Y2hcIj5BbGxvdyBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXM8L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHN1YnRleHQgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImFsbG93ZWRNdWx0aVN1Ym1pdFN3aXRjaFwiPkJ5IGVuYWJsaW5nLCB0aGUgY2hlY2tsaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBmaWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gYSBkYXk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvciBtdC04XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdzdG9yZW9wZW5hbmRjbG9zZSdcIiBjbGFzcz1cIm10LTYgbXgtNCBzdWJcIj5TdG9yZSBvcGVucyBhdCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctNjAwXCI+PHU+e3tjb25maWdEYXRhPy5vcGVuVGltZX19PC91Pjwvc3Bhbj4gYW5kIGNsb3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPHNwYW4gY2xhc3M9XCJmdy02MDBcIj48dT57e2NvbmZpZ0RhdGE/LmNsb3NlVGltZX19PC91Pjwvc3Bhbj4sIGV2ZXJ5ZGF5LiA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZXBhcmF0b3IgbXQtOFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSdjdXN0b20nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmcgbXQtOFwiPkFsZXJ0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg3NF82NjE5NSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjczVjguMDAwNjVNOC4wMDAxNiA1LjMzMzk4SDguMDA2ODNNMTQuNjY2OCA4LjAwMDY1QzE0LjY2NjggMTEuNjgyNiAxMS42ODIxIDE0LjY2NzMgOC4wMDAxNiAxNC42NjczQzQuMzE4MjYgMTQuNjY3MyAxLjMzMzUgMTEuNjgyNiAxLjMzMzUgOC4wMDA2NUMxLjMzMzUgNC4zMTg3NSA0LjMxODI2IDEuMzMzOTggOC4wMDAxNiAxLjMzMzk4QzExLjY4MjEgMS4zMzM5OCAxNC42NjY4IDQuMzE4NzUgMTQuNjY2OCA4LjAwMDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg3NF82NjE5NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY29sLW1kLTEyIG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXQtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTQgc3ViXCI+SWYgdXNhZ2UgZXhjZWVkczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ2LXJvdyBtYi01IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZXIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIHctNTVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hbGVydC51c2FnZUV4Y2VlZHNcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIyXCIgbWF4bGVuZ3RoPVwiM1wiIChibHVyKT1cInZhbGlkYXRlTGltaXQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdXNhZ2VlcnJvclwiICpuZ0lmPVwiZXJyb3Jtc2dcIj5QbGVhc2UgZW50ZXIgZXZlbnQgY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gMTUgdG8gOTk5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nIHx8IHR5cGUgPT09ICdzdG9yZW9wZW5hbmRjbG9zZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViIG14LTRcIj5TZW5kIEFsZXJ0IHRvIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdi1yb3cgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY2hpcC1kcm9wZG93biBbZGF0YV09XCJhbGVydFVzZXJzXCIgW3NlbGVjdGVkRGF0YV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxlcnQuYWxlcnRzVG9cIiAoc2VsZWN0ZWRMaXN0KT1cInVwZGF0ZUFsZXJ0KCRldmVudClcIj48L2xpYi1jaGlwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yIG10LThcIj48L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdtb2JpbGV1c2FnZWRldGVjdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLWxlZnRoZWFkaW5nIG10LThcIj5EZXRlY3Rpb24gQXJlYXM8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE4NzRfNjYxOTUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMTAuNjY3M1Y4LjAwMDY1TTguMDAwMTYgNS4zMzM5OEg4LjAwNjgzTTE0LjY2NjggOC4wMDA2NUMxNC42NjY4IDExLjY4MjYgMTEuNjgyMSAxNC42NjczIDguMDAwMTYgMTQuNjY3M0M0LjMxODI2IDE0LjY2NzMgMS4zMzM1IDExLjY4MjYgMS4zMzM1IDguMDAwNjVDMS4zMzM1IDQuMzE4NzUgNC4zMTgyNiAxLjMzMzk4IDguMDAwMTYgMS4zMzM5OEMxMS42ODIxIDEuMzMzOTggMTQuNjY2OCA0LjMxODc1IDE0LjY2NjggOC4wMDA2NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE4NzRfNjYxOTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvaDI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWIgbXgtNFwiPiBEZXRlY3QgbW9iaWxlIHVzYWdlIGV4Y2VwdCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY2hpcC1kcm9wZG93biBbZGF0YV09XCJ6b25lTGlzdFwiIFtzZWxlY3RlZERhdGFdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmRldGVjdGlvbkFyZWFcIiAoc2VsZWN0ZWRMaXN0KT1cInVwZGF0ZVpvbmUoJGV2ZW50KVwiPjwvbGliLWNoaXAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvciBtdC04XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aDIgY2xhc3M9XCJzZWN0aW9uLWxlZnRoZWFkaW5nIG10LThcIj57e3R5cGUgPT09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgPyAnVG8gYmUgQWNrbm93bGVkZ2VkIGJ5JyA6ICdBcHByb3Zlcid9fTwvaDI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1zLTMgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHJvbGU9XCJzd2l0Y2hcIiBpZD1cInN1cHBvcnRcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtMyBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QnkgZW5hYmxpbmcsIHRoZSB1c2VycyB3aWxsIGJlIGFibGUgdG8gYWNrbm93bGVkZ2UgdGhlIGNoZWNrbGlzdDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY29sLW1kLTEyIG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXQtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTQgc3ViXCI+SWYgdXNhZ2UgZXhjZWVkczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ2LXJvdyBtYi01IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZXIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgdy01NXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5hbGVydC51c2FnZUV4Y2VlZHNcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIG1pbmxlbmd0aD1cIjJcIiBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlTGltaXQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdXNhZ2VlcnJvclwiICpuZ0lmPVwiZXJyb3Jtc2dcIj5QbGVhc2UgZW50ZXIgZXZlbnQgY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gMTUgdG8gOTk5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbmctc3Rhci1pbnNlcnRlZCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViIG14LTRcIj5UbyBiZSBhcHByb3ZlZCBieSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY2hpcC1kcm9wZG93biBbZGF0YV09XCJhbGVydFVzZXJzXCIgW3NlbGVjdGVkRGF0YV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXBwcm92ZXJcIj48L2xpYi1jaGlwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yIG10LThcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF0YWJsZURhdGEubGVuZ3RoICYmICF0YWJsZUZpbHRlci5sZW5ndGggJiYgc2hvd0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmcgbXQtOFwiPkFzc2lnbjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg3NF82NjE5NSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDEwLjY2NzNWOC4wMDA2NU04LjAwMDE2IDUuMzMzOThIOC4wMDY4M00xNC42NjY4IDguMDAwNjVDMTQuNjY2OCAxMS42ODI2IDExLjY4MjEgMTQuNjY3MyA4LjAwMDE2IDE0LjY2NzNDNC4zMTgyNiAxNC42NjczIDEuMzMzNSAxMS42ODI2IDEuMzMzNSA4LjAwMDY1QzEuMzMzNSA0LjMxODc1IDQuMzE4MjYgMS4zMzM5OCA4LjAwMDE2IDEuMzMzOThDMTEuNjgyMSAxLjMzMzk4IDE0LjY2NjggNC4zMTg3NSAxNC42NjY4IDguMDAwNjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE4NzRfNjYxOTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2gyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGFzc2lnbnBhZGRpbmcgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRwYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTE0XCI+PHN2ZyBjbGFzcz1cIm14LTIwIG10LTEyXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjUuMDkgMjVDMjUuMzI1MSAyNC4zMzE3IDI1Ljc4OTIgMjMuNzY4MSAyNi40IDIzLjQwOTFDMjcuMDEwOCAyMy4wNTAyIDI3LjcyODkgMjIuOTE4OSAyOC40MjcyIDIzLjAzODdDMjkuMTI1NSAyMy4xNTg1IDI5Ljc1ODggMjMuNTIxNSAzMC4yMTUxIDI0LjA2MzVDMzAuNjcxMyAyNC42MDU1IDMwLjkyMTEgMjUuMjkxNSAzMC45MiAyNkMzMC45MiAyOCAyNy45MiAyOSAyNy45MiAyOU0yOCAzM0gyOC4wMU0zOCAyOEMzOCAzMy41MjI4IDMzLjUyMjggMzggMjggMzhDMjIuNDc3MiAzOCAxOCAzMy41MjI4IDE4IDI4QzE4IDIyLjQ3NzIgMjIuNDc3MiAxOCAyOCAxOEMzMy41MjI4IDE4IDM4IDIyLjQ3NzIgMzggMjhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VDRkRGM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmcgbXQtNiBteC0xMFwiPlVwbG9hZCB0byBhc3NpZ24gdXNlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic3VidGV4dCBteC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkNsaWNrIOKAnERvd25sb2FkIFRlbXBsYXRl4oCdPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+IEFkZCB5b3VyIGRhdGEgdG8gdGhlIHRlbXBsYXRlIGZpbGU8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4gVXBsb2FkIGl0IGJlbG93IHRvIGFzc2lnbiB1c2VyczwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gI3VwbG9hZCAoY2xpY2spPVwiZmlsZS5jbGljaygpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcmV1cGxvYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByaW1hcnkgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwibWItMiBteC0xXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMTkgMTlcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4IDEyLjVWMTUuODMzM0MxOCAxNi4yNzU0IDE3LjgyNDQgMTYuNjk5MyAxNy41MTE4IDE3LjAxMThDMTcuMTk5MyAxNy4zMjQ0IDE2Ljc3NTQgMTcuNSAxNi4zMzMzIDE3LjVINC42NjY2N0M0LjIyNDY0IDE3LjUgMy44MDA3MiAxNy4zMjQ0IDMuNDg4MTYgMTcuMDExOEMzLjE3NTU5IDE2LjY5OTMgMyAxNi4yNzU0IDMgMTUuODMzM1YxMi41TTE0LjY2NjcgNi42NjY2N0wxMC41IDIuNU0xMC41IDIuNUw2LjMzMzMzIDYuNjY2NjdNMTAuNSAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXVwbG9hZHRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47XCIgdHlwZT1cImZpbGVcIiAjZmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzFcIiAoY2hhbmdlKT1cIm9uRmlsZVVwbG9hZCgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1saWdodC1wcmltYXJ5IGRvd25sb2FkXCIgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cIm1iLTFcIiB3aWR0aD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cImRvd25sb2FkdGV4dFwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgKm5nSWY9XCJ0YWJsZURhdGEubGVuZ3RoIHx8IHRhYmxlRmlsdGVyLmxlbmd0aCB8fCAhc2hvd0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC02XCIgKm5nSWY9XCIhc2hvd0ltYWdlIHx8IHRhYmxlRGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1sZWZ0aGVhZGluZ1wiPkFzc2lnbjxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE4NzRfNjYxOTUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjczVjguMDAwNjVNOC4wMDAxNiA1LjMzMzk4SDguMDA2ODNNMTQuNjY2OCA4LjAwMDY1QzE0LjY2NjggMTEuNjgyNiAxMS42ODIxIDE0LjY2NzMgOC4wMDAxNiAxNC42NjczQzQuMzE4MjYgMTQuNjY3MyAxLjMzMzUgMTEuNjgyNiAxLjMzMzUgOC4wMDA2NUMxLjMzMzUgNC4zMTg3NSA0LjMxODI2IDEuMzMzOTggOC4wMDAxNiAxLjMzMzk4QzExLjY4MjEgMS4zMzM5OCAxNC42NjY4IDQuMzE4NzUgMTQuNjY2OCA4LjAwMDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xODc0XzY2MTk1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTEgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBkYXRhLWt0LXN1YnNjcmlwdGlvbi10YWJsZS1maWx0ZXI9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWFyY2hUYWJsZURhdGEoKVwiIFsobmdNb2RlbCldPVwidGFibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIHctNDAwcHggcHMtMTQgbXgtMSBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IFN0b3JlIG5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJhZGRTdG9yZUNvbXBvbmVudCgpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgY3JlYXRlYnV0dG9ucyBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIiB0YWJpbmRleD1cIjBcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjYwMlYxNS44MzI3TTQuMTY2NzUgOS45OTkzNUgxNS44MzM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPkFkZCBTdG9yZTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCIgKm5nSWY9XCIhdGFibGVEYXRhLmxlbmd0aCAmJiAhc2hvd0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBteS04IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdXNlcnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktc29wIHB0LTAgbXgtNFwiICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwidGFibGVMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDIwcHg7ZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEyMCAxMjBcIiB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImxvYWQgb25lXCIgY3g9XCI2MFwiIGN5PVwiNjBcIiByPVwiNDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImxvYWQgdHdvXCIgY3g9XCI2MFwiIGN5PVwiNjBcIiByPVwiNDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImxvYWQgdGhyZWVcIiBjeD1cIjYwXCIgY3k9XCI2MFwiIHI9XCI0MFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicG9pbnQgb25lXCIgY3g9XCI0NVwiIGN5PVwiNzBcIiByPVwiNVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInBvaW50IHR3b1wiIGN4PVwiNjBcIiBjeT1cIjcwXCIgcj1cIjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJwb2ludCB0aHJlZVwiIGN4PVwiNzVcIiBjeT1cIjcwXCIgcj1cIjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LWdyYXktNjAwIGZ3LWJvbGRlciB0ZXh0LWNlbnRlclwiPkxvYWRpbmcgRGF0YS4uLjwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3BUYWJsZSB0YWJsZS1yZXNwb25zaXZlXCIgKm5nSWY9XCJ0YWJsZURhdGEubGVuZ3RoICYmICF0YWJsZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGgtMTRweCB3LTE0cHhcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZmxhZ1wiIChjaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxcIj4gPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG14LTRcIiA+U3RvcmVOYW1lPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QXNzaWduZWQgVG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5FbWFpbCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYmxlRGF0YTtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGgtMTRweCB3LTE0cHggdXNlckZsYWdcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGbGFnKCRldmVudCxpLGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hc3NpZ25lZFVzZXJzLmluY2x1ZGVzKGRhdGE/LmlkKVwiIC8+PHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG14LTRcIj57e2RhdGEudXNlck5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YS5zdG9yZU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEudXNlckVtYWlsfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJyZWNvcmRzQ291bnRcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFZhbHVlXCIgW3RvdGFsSXRlbXNdPVwicmVjb3Jkc1RvdGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZVwiIFtwYWdlU2l6ZV09XCJyZWNvcmRzQ291bnRcIiAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTYgYXNzaWducGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiUmV1cGxvYWQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJldXBsb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJldXBsb2FkXCI+PHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5IFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwibWItMiBteC0xXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAxOSAxOVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4IDEyLjVWMTUuODMzM0MxOCAxNi4yNzU0IDE3LjgyNDQgMTYuNjk5MyAxNy41MTE4IDE3LjAxMThDMTcuMTk5MyAxNy4zMjQ0IDE2Ljc3NTQgMTcuNSAxNi4zMzMzIDE3LjVINC42NjY2N0M0LjIyNDY0IDE3LjUgMy44MDA3MiAxNy4zMjQ0IDMuNDg4MTYgMTcuMDExOEMzLjE3NTU5IDE2LjY5OTMgMyAxNi4yNzU0IDMgMTUuODMzM1YxMi41TTE0LjY2NjcgNi42NjY2N0wxMC41IDIuNU0xMC41IDIuNUw2LjMzMzMzIDYuNjY2NjdNMTAuNSAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV1cGxvYWR0ZXh0XCIgKm5nSWY9XCIhcmV1cGxvYWRcIj5SZXVwbG9hZCBUZW1wbGF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImZpbGUxLmNsaWNrKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByZXVwbG9hZFwiICpuZ0lmPVwicmV1cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyZXVwbG9hZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5IFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBteC0xXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAxOSAxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4IDEyLjVWMTUuODMzM0MxOCAxNi4yNzU0IDE3LjgyNDQgMTYuNjk5MyAxNy41MTE4IDE3LjAxMThDMTcuMTk5MyAxNy4zMjQ0IDE2Ljc3NTQgMTcuNSAxNi4zMzMzIDE3LjVINC42NjY2N0M0LjIyNDY0IDE3LjUgMy44MDA3MiAxNy4zMjQ0IDMuNDg4MTYgMTcuMDExOEMzLjE3NTU5IDE2LjY5OTMgMyAxNi4yNzU0IDMgMTUuODMzM1YxMi41TTE0LjY2NjcgNi42NjY2N0wxMC41IDIuNU0xMC41IDIuNUw2LjMzMzMzIDYuNjY2NjdNMTAuNSAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV1cGxvYWR0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV1cGxvYWQgVGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjtcIiAjZmlsZTEgdHlwZT1cImZpbGVcIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWxpZ2h0LXByaW1hcnkgZG93bmxvYWRcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByaW1hcnlcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTFcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwiZG93bmxvYWR0ZXh0XCI+RG93bmxvYWQgVGhpcyBDU1Y8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZm9vdGVyMSBtdC0xMCBteC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFya1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmb290ZXJ0ZXh0IG1lLTFcIj5OZWVkIGhlbHA/PC9zcGFuPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBmb290ZXJ0ZXh0IHRleHQtaG92ZXItcHJpbWFyeVwiPjx1PldhdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgVGhlIFZpZGVvIFR1dG9yaWFsPC91PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
1885
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrbGlzdC1jb25maWd1cmUvY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrbGlzdC1jb25maWd1cmUvY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdySCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUvRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFPaEMsTUFBTSxPQUFPLDJCQUEyQjtJQXVFakI7SUFBMkM7SUFBZ0M7SUFBc0I7SUFBd0I7SUFBK0I7SUFBMkI7SUF0RXJMLFNBQVMsQ0FBYztJQUN0QixVQUFVLENBQWM7SUFDNUMsS0FBSyxHQUFPLEtBQUssQ0FBQztJQUNsQixhQUFhLENBQUs7SUFDbEIsT0FBTyxDQUFLO0lBQ1osSUFBSSxHQUFXLFFBQVEsQ0FBQztJQUN4QixHQUFHLENBQU07SUFDVCxVQUFVLENBQU07SUFDaEIsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUNwQixZQUFZLEdBQVEsS0FBSyxDQUFDO0lBQzFCLHFCQUFxQixHQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0RCxTQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsWUFBWSxHQUFRLENBQUMsQ0FBQztJQUN0QixJQUFJLEdBQVEsQ0FBQyxDQUFDO0lBQ2QsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixZQUFZLEdBQVEsQ0FBQyxDQUFDO0lBQ3RCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFRLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQVEsQ0FBQyxDQUFDO0lBQ2pCLFlBQVksQ0FBTTtJQUNsQixjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsU0FBUyxHQUFZLElBQUksQ0FBQztJQUMxQixRQUFRLENBQU07SUFDZCxJQUFJLEdBQVcsQ0FBQyxDQUFDO0lBQ2pCLFVBQVUsQ0FBTTtJQUNoQixTQUFTLEdBQVksSUFBSSxDQUFDO0lBQzFCLFVBQVUsQ0FBTTtJQUNoQixXQUFXLENBQVU7SUFDckIsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUNwQixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsU0FBUyxDQUFNO0lBQ2YsT0FBTyxDQUFNO0lBQ2IsV0FBVyxDQUFNO0lBQ2pCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixXQUFXLEdBQU8sRUFBRSxDQUFDO0lBQ3JCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsY0FBYyxHQUFXLEtBQUssQ0FBQztJQUMvQixjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQzlCLFNBQVMsR0FBUSxFQUFFLENBQUM7SUFDcEIsUUFBUSxHQUFXLEtBQUssQ0FBQztJQUN6QixJQUFJLENBQU07SUFDVixRQUFRLEdBQVEsRUFBRSxDQUFDO0lBQ25CLGVBQWUsQ0FBUztJQUN4QixVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFDekIsZ0JBQWdCLEdBQVcsS0FBSyxDQUFDO0lBQ2pDLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0IsVUFBVSxHQUFRLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQVUsS0FBSyxDQUFDO0lBQzVCLFlBQVksR0FBTyxFQUFFLENBQUM7SUFDdEIsS0FBSyxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDcEYsZ0JBQWdCLEdBQU8sRUFBRSxDQUFDO0lBQzFCLGlCQUFpQixDQUFLO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixlQUFlLENBQUs7SUFDcEIsVUFBVSxDQUFLO0lBQ2YsUUFBUSxDQUFLO0lBQ2IsVUFBVSxHQUFLLEVBQUUsQ0FBQztJQUNsQixRQUFRLEdBQU8sRUFBRSxDQUFDO0lBQ2xCLE9BQU8sR0FBVyxJQUFJLENBQUM7SUFDZixNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNkLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFlBQXFCLGNBQWlDLEVBQVUsTUFBc0IsRUFBVSxLQUFhLEVBQVMsTUFBZSxFQUFTLFVBQXNCLEVBQVMsS0FBa0IsRUFBUyxFQUFxQjtRQUF4TSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtJQUFHLENBQUM7SUFFak8sUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLElBQUksRUFBRTtvQkFDUixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDekMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFOzRCQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHO2dDQUNULFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQ0FDL0IsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFROzZCQUN2QixDQUFBOzRCQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFBOzRCQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO3lCQUNqRDs2QkFDSTs0QkFDSCxJQUFJLENBQUMsR0FBRyxHQUFHO2dDQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQ0FDakIsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFROzZCQUN2QixDQUFBOzRCQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQzt5QkFDekI7b0JBQ0gsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDcEI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBTyxFQUFFLEVBQUU7WUFDckYsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFO29CQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO29CQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO29CQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNsRSx1RUFBdUU7b0JBQ3ZFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7b0JBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7b0JBQzlFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUcsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQ3RLLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO29CQUMzSyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQy9LLElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsRUFBRTt3QkFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFBO3FCQUM5RDtvQkFDRCxJQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRTt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUE7cUJBQ2hFO29CQUVELG1FQUFtRTtvQkFDbkUseUVBQXlFO29CQUN6RSxJQUFJO29CQUVKLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO3dCQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUMxSixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsSUFBSSxJQUFJLEVBQUU7NEJBQ3ZILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ3RJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLENBQUM7NEJBQ25OLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO3lCQUM1Rjt3QkFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsSUFBSSxJQUFJLEVBQUU7NEJBQ25ILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ2xJLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDOzRCQUM3TSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt5QkFDeEY7d0JBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsSUFBSSxTQUFTLEVBQUU7NEJBQzNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsSUFBSSxNQUFNLEVBQUU7Z0NBQ3pFLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtvQ0FDckYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDM0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDMUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7aUNBQ2pFOzZCQUNGOzRCQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsSUFBSSxVQUFVLEVBQUU7Z0NBQzdFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDOzZCQUM1RTt5QkFDRjt3QkFFRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7NEJBQ2hILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7eUJBQ3ZFO3FCQUNGO29CQUVELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO3dCQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNqSyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQzt3QkFDdk0sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7cUJBQ25GO29CQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFFcEI7YUFDRjtRQUNILENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1gsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDckIsc0NBQXNDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUVuQjtJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUNELFNBQVM7UUFDUCxvQ0FBb0M7UUFDcEMsMkNBQTJDO0lBQzdDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxDQUFDO1FBQ04sQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBRSxpREFBaUQ7UUFDdEUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckQsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFO1lBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDckM7O1lBRUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFTLENBQUM7UUFDZCxNQUFNLE1BQU0sR0FBK0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRCxJQUFJLEtBQUssR0FBTyxFQUFFLENBQUM7UUFFbkIsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsTUFBTSxFQUFFLEdBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzlELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXBDLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUE7b0JBQ3ZELE9BQU87aUJBQ1I7Z0JBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO29CQUN4QyxPQUFPLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFLLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFBO2dCQUN4SSxDQUFDLENBQ0EsQ0FBQztnQkFFRixJQUFJLE9BQU8sWUFBWSxJQUFJLFdBQVcsRUFBRTtvQkFDdEMsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3FCQUN6QztvQkFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7cUJBQzFDO29CQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUE7b0JBQ3ZELE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBQyxLQUFTLEVBQUUsRUFBRTtvQkFDdEMsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFO3dCQUN0QixPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztxQkFDMUQ7b0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTt3QkFDdEYsS0FBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7cUJBQy9DO29CQUNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7d0JBQ3RGLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEtBQUssR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO3FCQUM5QztvQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO3dCQUNuRixLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixLQUFLLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtxQkFDOUM7b0JBQ0QsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsRUFBRTt3QkFDckcsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7cUJBQzlDO29CQUNELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakcsSUFBSSxjQUFjLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTt3QkFDcFQsS0FBSyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsS0FBSyxHQUFDLENBQUMsS0FBSyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDcEY7b0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUzt3QkFDN0IsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3dCQUNuQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUU7d0JBQ3BELFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUzt3QkFDN0IsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUs7d0JBQ2pELElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSTtxQkFDcEIsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQyxDQUFBO2dCQUVGLCtCQUErQjtnQkFDL0IsOEJBQThCO2dCQUU5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLE1BQU0sWUFBWSxHQUFHO3dCQUNuQixXQUFXLEVBQUUsS0FBSzt3QkFDbEIsUUFBUSxFQUFHLDAvQkFBMC9CO3dCQUNyZ0MsS0FBSyxFQUFFLGtCQUFrQjt3QkFDekIsT0FBTyxFQUFFLHdEQUF3RDt3QkFDakUsVUFBVSxFQUFFLE9BQU87d0JBQ25CLEtBQUssRUFBQyxLQUFLO3FCQUNaLENBQUE7b0JBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7d0JBQ3RELFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztvQkFDaEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDNUIsSUFBRyxHQUFHLElBQUksVUFBVSxFQUFFOzRCQUNwQixPQUFPLEtBQUssQ0FBQzt5QkFDZDs2QkFDSTs0QkFDSCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0NBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NkJBQzFDOzRCQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUNwQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLCtCQUErQixDQUFDLENBQUM7NEJBQ25FLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQzs0QkFDYixPQUFPLEtBQUssQ0FBQzt5QkFDZDtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPO29CQUNQLDZDQUE2QztpQkFDOUM7Z0JBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7aUJBQ3pDO2dCQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztpQkFDMUM7WUFDSCxDQUFDLENBQUM7U0FDSDthQUNJO1lBQ0gsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ3pDO1lBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQzFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFRO1FBQzFCLElBQUksTUFBTSxHQUFHO1lBQ1gsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3BCLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM1QixVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqSCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsRUFBQyxJQUFJLENBQUMsUUFBUTtTQUN2QixDQUFBO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN2RixJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUM7WUFDNUIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDbEMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDdkYsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3FCQUN6QztvQkFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7cUJBQzFDO29CQUNELE9BQU87aUJBQ1I7cUJBQ0ksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3JDO3FCQUNJO29CQUNILElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO3dCQUM1QixJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTt3QkFDM0Qsa0RBQWtEO3dCQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUMzRSxPQUFPO3FCQUNSO3lCQUNJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTt3QkFDNUQsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDakIsSUFBSSxZQUFZLENBQUM7d0JBQ2pCLElBQUksS0FBSyxHQUFRLEVBQUUsQ0FBQzt3QkFDcEIsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO3dCQUN2QixJQUFJLGFBQWEsR0FBUSxFQUFFLENBQUM7d0JBQzVCLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTs0QkFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzt3QkFDNUIsQ0FBQyxDQUFDLENBQUM7d0JBRUgsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOzRCQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksbUJBQW1CLENBQUE7d0JBQzVDLENBQUMsQ0FBQyxDQUFDO3dCQUVILFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTs0QkFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzt3QkFDNUIsQ0FBQyxDQUFDLENBQUM7d0JBRUgsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMzRCxhQUFhLEdBQUcsQ0FBQyxHQUFJLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzNFLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFOzRCQUNoQixZQUFZLEdBQUc7Z0NBQ2IsV0FBVyxFQUFFLEtBQUs7Z0NBQ2xCLFFBQVEsRUFBRSwwL0JBQTAvQjtnQ0FDcGdDLEtBQUssRUFBRSxrQ0FBa0M7Z0NBQ3pDLE9BQU8sRUFBRSwwRkFBMEY7Z0NBQ25HLFVBQVUsRUFBRSxVQUFVO2dDQUN0QixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0NBQzFCLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFOzZCQUMxQixDQUFBO3lCQUNGOzZCQUFNLElBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRTs0QkFDOUIsWUFBWSxHQUFHO2dDQUNiLFdBQVcsRUFBRSxLQUFLO2dDQUNsQixRQUFRLEVBQUUsMC9CQUEwL0I7Z0NBQ3BnQyxLQUFLLEVBQUUsdUNBQXVDO2dDQUM5QyxPQUFPLEVBQUUsdUZBQXVGO2dDQUNoRyxVQUFVLEVBQUUsYUFBYTtnQ0FDekIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzZCQUNuQyxDQUFBO3lCQUNGOzZCQUNJOzRCQUNILElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtnQ0FDbkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQ0FDdEMsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO2dDQUN2QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0NBQzdCLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7b0NBQ3pFLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7d0NBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUNBQ3JCO2dDQUNILENBQUMsQ0FBQyxDQUFBO2dDQUNGLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtvQ0FDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsbUNBQW1DLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0NBQ2hGLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTt3Q0FDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztxQ0FDekM7b0NBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFFO3dDQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3FDQUMxQztvQ0FDRCxPQUFPO2lDQUNSO3FDQUNJO29DQUNILElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQ0FDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQ0FDdEI7NkJBQ0Y7eUJBQ0Y7d0JBQ0QsSUFBSSxZQUFZLEVBQUU7NEJBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dDQUNyRCxRQUFRLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJOzZCQUN4QixDQUFDLENBQUM7NEJBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7NEJBQ2hELFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0NBQy9CLElBQUksTUFBTSxJQUFJLGNBQWMsRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsK0JBQStCLENBQUMsQ0FBQTtpQ0FDMUQ7Z0NBQ0QsSUFBRyxNQUFNLElBQUksYUFBYSxFQUFFO29DQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtpQ0FDMUM7Z0NBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQztnQ0FDaEIsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO29DQUNwQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7d0NBQ25CLElBQUksUUFBUSxHQUFRLEVBQUUsQ0FBQzt3Q0FDdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOzRDQUM3QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzs0Q0FDMUUsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRTtnREFDbkQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2Q0FDckI7d0NBQ0gsQ0FBQyxDQUFDLENBQUE7d0NBQ0YsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFOzRDQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTs0Q0FDOUUsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO2dEQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDOzZDQUN6Qzs0Q0FDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0RBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NkNBQzFDOzRDQUNELE9BQU87eUNBQ1I7cUNBQ0Y7b0NBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQ0FDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0NBQ25CLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3Q0FDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7NENBQzlFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lDQUMxQjtvQ0FDSCxDQUFDLENBQUMsQ0FBQTtvQ0FFRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7d0NBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUE7d0NBQ3RELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTs0Q0FDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzt5Q0FDekM7d0NBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFFOzRDQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3lDQUMxQzt3Q0FDRCxPQUFPO3FDQUNSO29DQUNELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0NBQ25FLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29DQUM5QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7b0NBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3Q0FDekIsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTs0Q0FDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lDQUMxQjtvQ0FDSCxDQUFDLENBQUMsQ0FBQTtvQ0FDRixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTt3Q0FDeEIsWUFBWSxHQUFHOzRDQUNiLFdBQVcsRUFBRSxLQUFLOzRDQUNsQixRQUFRLEVBQUUsMC9CQUEwL0I7NENBQ3BnQyxLQUFLLEVBQUUsK0JBQStCOzRDQUN0QyxPQUFPLEVBQUUsbUVBQW1FOzRDQUM1RSxVQUFVLEVBQUUsUUFBUTs0Q0FDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSTt5Q0FDcEIsQ0FBQTt3Q0FDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTs0Q0FDckQsUUFBUSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSTt5Q0FDeEIsQ0FBQyxDQUFDO3dDQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO3dDQUNoRCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRDQUMvQixJQUFJLE1BQU0sRUFBRSxPQUFPLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7Z0RBQ3BELElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtvREFDcEIsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0RBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO29EQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7d0RBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTs0REFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7eURBQzFCO29EQUNILENBQUMsQ0FBQyxDQUFBO2lEQUNIO3FEQUNJO29EQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7d0RBQ2pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7NERBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFBO3dEQUN6QyxDQUFDLENBQUMsQ0FBQTt3REFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTs0REFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO3lEQUMvQjtvREFFSCxDQUFDLENBQUMsQ0FBQTtvREFDRixLQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO3dEQUM3QixJQUFJLElBQUksRUFBRSxPQUFPLEVBQUU7NERBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTs0REFDL0QsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO2dFQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDOzZEQUN6Qzs0REFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0VBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NkRBQzFDOzREQUNELFFBQVEsR0FBRyxLQUFLLENBQUM7NERBQ2pCLE9BQU87eURBQ1I7cURBQ0Y7aURBQ0Y7Z0RBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29EQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO29EQUN0RCxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7d0RBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7cURBQ3pDO29EQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTt3REFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztxREFDMUM7b0RBQ0QsT0FBTztpREFDUjtnREFDRCxJQUFJLFFBQVEsRUFBRTtvREFDWixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0RBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aURBQ3RCOzZDQUNGO3dDQUNILENBQUMsQ0FBQyxDQUFDO3FDQUNKO3lDQUVJO3dDQUNILElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzt3Q0FDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQ0FDdEI7aUNBRUY7NEJBQ0gsQ0FBQyxDQUFDLENBQUM7eUJBQ0o7cUJBQ0Y7eUJBQ0ksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUM1RCxRQUFRLEdBQUcsS0FBSyxDQUFDO3dCQUNqQixJQUFJLFlBQVksQ0FBQzt3QkFDakIsSUFBSSxLQUFLLEdBQVEsRUFBRSxDQUFDO3dCQUNwQixJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksYUFBYSxHQUFRLEVBQUUsQ0FBQzt3QkFDNUIsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7NEJBQzNCLFlBQVksR0FBRztnQ0FDYixXQUFXLEVBQUUsS0FBSztnQ0FDbEIsUUFBUSxFQUFFLDAvQkFBMC9CO2dDQUNwZ0MsS0FBSyxFQUFFLCtCQUErQjtnQ0FDdEMsT0FBTyxFQUFFLG1FQUFtRTtnQ0FDNUUsVUFBVSxFQUFFLFFBQVE7Z0NBQ3BCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUk7NkJBQ3BCLENBQUE7eUJBQ0Y7NkJBQ0k7NEJBQ0gsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dDQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDOzRCQUM1QixDQUFDLENBQUMsQ0FBQzs0QkFFSCxhQUFhLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0NBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQTs0QkFDNUMsQ0FBQyxDQUFDLENBQUM7NEJBRUgsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dDQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDOzRCQUM1QixDQUFDLENBQUMsQ0FBQzs0QkFFSCxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzNELGFBQWEsR0FBRyxDQUFDLEdBQUksSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDM0UsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0NBQ2hCLFlBQVksR0FBRztvQ0FDYixXQUFXLEVBQUUsS0FBSztvQ0FDbEIsUUFBUSxFQUFFLDAvQkFBMC9CO29DQUNwZ0MsS0FBSyxFQUFFLGtDQUFrQztvQ0FDekMsT0FBTyxFQUFFLDBGQUEwRjtvQ0FDbkcsVUFBVSxFQUFFLFVBQVU7b0NBQ3RCLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQ0FDMUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUU7aUNBQzFCLENBQUE7NkJBQ0Y7aUNBQU0sSUFBRyxhQUFhLENBQUMsTUFBTSxFQUFFO2dDQUM5QixZQUFZLEdBQUc7b0NBQ2IsV0FBVyxFQUFFLEtBQUs7b0NBQ2xCLFFBQVEsRUFBRSwwL0JBQTAvQjtvQ0FDcGdDLEtBQUssRUFBRSx1Q0FBdUM7b0NBQzlDLE9BQU8sRUFBRSx1RkFBdUY7b0NBQ2hHLFVBQVUsRUFBRSxhQUFhO29DQUN6QixRQUFRLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUNBQ25DLENBQUE7NkJBQ0Y7aUNBQU07Z0NBQ0wsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO29DQUNuQixJQUFJLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29DQUN0QyxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7b0NBQ3ZCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3Q0FDN0IsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzt3Q0FDekUsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRTs0Q0FDbkQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt5Q0FDckI7b0NBQ0gsQ0FBQyxDQUFDLENBQUE7b0NBQ0YsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO3dDQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzt3Q0FDL0UsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFOzRDQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3lDQUN6Qzt3Q0FDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7NENBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7eUNBQzFDO3dDQUNELE9BQU87cUNBQ1I7eUNBQ0k7d0NBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dDQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FDQUN0QjtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRCxJQUFJLFlBQVksRUFBRTs0QkFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0NBQ3JELFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7NkJBQ3hCLENBQUMsQ0FBQzs0QkFDSCxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQzs0QkFDaEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQ0FDL0IsSUFBSSxNQUFNLElBQUksY0FBYyxFQUFFO29DQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO2lDQUMxRDtnQ0FDRCxJQUFHLE1BQU0sSUFBSSxhQUFhLEVBQUU7b0NBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2lDQUMxQztnQ0FDRCxJQUFJLE1BQU0sRUFBRSxPQUFPLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7b0NBQ3BELFFBQVEsR0FBRyxJQUFJLENBQUM7b0NBQ2hCLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTt3Q0FDcEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3Q0FDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7d0NBQ25CLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFOzRDQUMzQixJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTs0Q0FDbEUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dEQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0RBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lEQUMxQjs0Q0FDSCxDQUFDLENBQUMsQ0FBQTt5Q0FDSDt3Q0FFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7NENBQ25CLElBQUksUUFBUSxHQUFRLEVBQUUsQ0FBQzs0Q0FDdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dEQUM3QixJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dEQUN6RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO29EQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lEQUNyQjs0Q0FDSCxDQUFDLENBQUMsQ0FBQTs0Q0FDRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0RBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dEQUMvRSxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7b0RBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7aURBQ3pDO2dEQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtvREFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztpREFDMUM7Z0RBQ0QsT0FBTzs2Q0FDUjt5Q0FDRjt3Q0FFRCxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTs0Q0FDNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dEQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvREFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aURBQzFCOzRDQUNILENBQUMsQ0FBQyxDQUFBO3lDQUNIO3FDQUNGO3lDQUNJO3dDQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7NENBQ2pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0RBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFBOzRDQUN6QyxDQUFDLENBQUMsQ0FBQTs0Q0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnREFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBOzZDQUMvQjt3Q0FFSCxDQUFDLENBQUMsQ0FBQTt3Q0FDRixLQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFOzRDQUM3QixJQUFJLElBQUksRUFBRSxPQUFPLEVBQUU7Z0RBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnREFDL0QsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29EQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2lEQUN6QztnREFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7b0RBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7aURBQzFDO2dEQUNELFFBQVEsR0FBRyxLQUFLLENBQUM7Z0RBQ2pCLE9BQU87NkNBQ1I7eUNBQ0Y7cUNBQ0Y7b0NBQ0QsSUFBSSxRQUFRLEVBQUU7d0NBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFOzRDQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDOzRDQUN2RCxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0RBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NkNBQ3pDOzRDQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnREFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzs2Q0FDMUM7NENBQ0QsT0FBTzt5Q0FDUjt3Q0FDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7d0NBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7cUNBQ3RCO2lDQUNGOzRCQUNILENBQUMsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO3lCQUNJO3dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzt3QkFDbEMsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFOzRCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3lCQUN6Qzt3QkFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7NEJBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7eUJBQzFDO3dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3RCO2lCQUNGO2FBRUY7UUFDSCxDQUFDLEVBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUN6QztZQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLElBQUksR0FBRztZQUNULEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVztZQUNwQixhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDNUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLElBQUk7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsSCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsRUFBQyxJQUFJLENBQUMsUUFBUTtTQUN2QixDQUFBO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUMxRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3JDO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksTUFBTSxHQUFHO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNyQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29CQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDckI7WUFDRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLElBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDL0I7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztpQkFDZjtnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO29CQUNsQyxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDM0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFL0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNwRSxLQUFLLElBQUcsQ0FBQyxDQUFDO3FCQUNYO29CQUNELElBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQTtnQkFFRixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7aUJBQ3ZCO2FBRUY7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLE1BQU0sR0FBRztZQUNYLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLENBQUM7WUFDVCxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ3pCLENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFO1lBQ3hGLElBQUksU0FBUyxHQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ2YsU0FBUyxDQUFDLElBQUksQ0FBQztvQkFDYixTQUFTLEVBQUUsRUFBRTtvQkFDYixTQUFTLEVBQUUsRUFBRTtvQkFDYixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsRUFBRTtvQkFDYixJQUFJLEVBQUMsRUFBRTtpQkFDUixDQUFDLENBQUE7YUFDSDtZQUNELElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3pCLElBQUksRUFBQyxJQUFJLENBQUMsSUFBSTtxQkFDZixDQUFDLENBQUE7Z0JBQ0osQ0FBQyxDQUFDLENBQUE7YUFDSDtZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxNQUFNLEdBQUc7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVztZQUN4QixFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDckIsQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDekYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDckI7WUFDRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksS0FBSyxHQUFDLENBQUMsQ0FBQztnQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDNUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFFOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNwRSxLQUFLLElBQUcsQ0FBQyxDQUFDO3FCQUNYO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLElBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDL0I7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztpQkFDZjtnQkFDRCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7aUJBQ3ZCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxNQUFNLEdBQUc7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDeEIsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ3JCLENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3pGLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07b0JBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzthQUNyQjtZQUNELElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQzVILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2hFLENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLElBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7b0JBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDL0I7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztpQkFDZjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksTUFBTSxHQUFHO1lBQ1gsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNyQixDQUFBO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO29CQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTTt3QkFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2lCQUNyQjtnQkFDRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ25DLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBRTtvQkFDZixJQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFO3dCQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO3dCQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7cUJBQy9CO3lCQUNJO3dCQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQTt3QkFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7cUJBQ2Y7b0JBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRTt3QkFDbEMsSUFBRyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQzNILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBRS9ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTs0QkFDcEUsS0FBSyxJQUFHLENBQUMsQ0FBQzt5QkFDWDtvQkFDSCxDQUFDLENBQUMsQ0FBQTtvQkFDRixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztxQkFDdkI7eUJBQ0k7d0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7cUJBQ3ZCO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDSDthQUNJO1lBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLE9BQVk7UUFFN0MsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQTtRQUN4QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2hFO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUVILENBQUM7SUFDRCxRQUFRLENBQUMsS0FBVTtRQUNqQix1REFBdUQ7UUFDdkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtnQkFDckIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2hFLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQzlCLElBQUksS0FBSyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsK0JBQStCO0lBQy9CLG1FQUFtRTtJQUNuRSx5QkFBeUI7SUFDekIsSUFBSTtJQUNKLFlBQVksQ0FBQyxLQUFTO1FBQ3BCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDL0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBRyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUMzQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLFNBQVM7Z0JBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtpQkFDN0Y7Z0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO2FBQ3BHO1NBQ0Y7YUFDSTtZQUNILElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksU0FBUztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7aUJBQzNGO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO2FBQ3JHO1NBQ0Y7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1FBQ25OLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNGLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1FBQ3RNLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVM7UUFDcEIsSUFBRyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDL0YsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1lBQzdNLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFHRCw0QkFBNEI7SUFDNUIseUNBQXlDO0lBQ3pDLG9UQUFvVDtJQUNwVCw4Q0FBOEM7SUFDOUMsa0dBQWtHO0lBRWxHLCtDQUErQztJQUMvQyxnS0FBZ0s7SUFDaEssb0ZBQW9GO0lBQ3BGLElBQUk7SUFDSixxQkFBcUI7SUFDckIsZ0VBQWdFO0lBQ2hFLElBQUk7SUFDSixNQUFNLENBQUMsR0FBVTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNsRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ0QsNEJBQTRCO0lBQzVCLDBCQUEwQjtJQUMxQiwrRUFBK0U7SUFDL0UsNkNBQTZDO0lBQzdDLE1BQU07SUFDTixXQUFXO0lBQ1gsOEVBQThFO0lBQzlFLDRDQUE0QztJQUM1QyxpREFBaUQ7SUFDakQsd01BQXdNO0lBQ3hNLE1BQU07SUFDTix3RUFBd0U7SUFFeEUsSUFBSTtJQUNKLHdCQUF3QjtJQUN4QixpRUFBaUU7SUFDakUsSUFBSTtJQUNKLE9BQU87UUFDTCxJQUFHLENBQUMsUUFBUSxFQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUUsRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUUsRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsSUFBSSxNQUFNLEVBQUU7WUFDbEksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFFLEdBQUcsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2hHO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsSUFBSSxVQUFVLEVBQUU7WUFDdEksSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07Z0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7aUJBQ2pFO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7WUFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxZQUFZLEdBQUc7WUFDakIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsUUFBUSxFQUFFLHl3QkFBeXdCO1lBQ254QixLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWE7VUFDcEQ7WUFDSixPQUFPLEVBQUUsNEZBQTRGO1lBQ3JHLFVBQVUsRUFBRSxTQUFTO1NBQ3RCLENBQUE7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDckYsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDaEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxzQkFBc0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLG1CQUFtQixFQUFFO29CQUMzRSw2Q0FBNkM7b0JBQzdDLGlFQUFpRTtvQkFDakUsSUFBSTtvQkFDSixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksbUJBQW1CLEVBQUU7d0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQzlFLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO3FCQUM5RTtvQkFDRCxvRUFBb0U7aUJBQ3JFO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUc3QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDaEcsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLHVCQUF1QixDQUFDLENBQUM7NEJBQ3JHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO3lCQUNqRDs2QkFBTTs0QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3lCQUNuRDtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3FCQUNuRDtnQkFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDaEIsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTt3QkFDckIsSUFBSSxHQUFHLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMvQjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO3FCQUNoRTtnQkFFSCxDQUFDLENBQUMsQ0FBQTthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLDZEQUE2RDtJQUM3RCw2QkFBNkI7SUFDN0IsUUFBUTtJQUVSLGdEQUFnRDtJQUVoRCwyQ0FBMkM7SUFDM0MsNEJBQTRCO0lBQzVCLDJDQUEyQztJQUMzQyxrQ0FBa0M7SUFDbEMsaUNBQWlDO0lBQ2pDLCtCQUErQjtJQUMvQiwrRUFBK0U7SUFDL0UsNkNBQTZDO0lBQzdDLG1EQUFtRDtJQUNuRCxzREFBc0Q7SUFDdEQsaUJBQWlCO0lBQ2pCLGtDQUFrQztJQUVsQyxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLFFBQVE7SUFDUixPQUFPO0lBQ1AsSUFBSTtJQUNKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0csQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxHQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwSTthQUNJO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hGO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVM7UUFDaEIsSUFBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdCLElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLENBQUMsQ0FBQzthQUNoRTtZQUNELElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFDRCxJQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLEVBQUUsQ0FBQzthQUNqRTtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztZQUNoRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDekI7SUFFSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDdEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksaUJBQWlCLEVBQUUsZUFBZSxDQUFDO1FBQ3ZDLElBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRSxFQUFFLENBQUM7U0FDcEQ7UUFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRSxFQUFFLENBQUM7U0FDbkQ7UUFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixJQUFJLE1BQU0sRUFBRTtZQUNsSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUUsR0FBRyxHQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDaEc7UUFDRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixJQUFJLFVBQVUsRUFBRTtZQUN0SSxJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtnQkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN2RTtRQUVELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7WUFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZFO1FBQ0QsMEVBQTBFO1FBQzFFLCtFQUErRTtRQUMvRSwyRUFBMkU7UUFDM0UsMkhBQTJIO1FBQzNILGlIQUFpSDtRQUNqSCxxSUFBcUk7UUFDckksK0hBQStIO1FBRS9ILGlIQUFpSDtRQUNqSCw4RUFBOEU7UUFDOUUsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSxvQkFBb0I7UUFDcEIsTUFBTTtRQUNOLElBQUk7UUFFSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEUsTUFBTSxZQUFZLEdBQUc7WUFDbkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsUUFBUSxFQUFFLDAvQkFBMC9CO1lBQ3BnQyxLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsVUFBVSxFQUFFLE9BQU87U0FDcEIsQ0FBQTtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3RELFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDaEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksc0JBQXNCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFBRTtnQkFDM0UsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHNCQUFzQixFQUFFO29CQUN2QywrREFBK0Q7aUJBQ2hFO2dCQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDOUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7aUJBQzlFO2dCQUNELG1FQUFtRTtnQkFDbkUsb0VBQW9FO2FBQ3JFO1lBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQzthQUNyQjtZQUNELElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7b0JBQ25HLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO3dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO3dCQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztxQkFDakQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsMC9CQUEwL0I7WUFDcGdDLEtBQUssRUFBRSxjQUFjO1lBQ3JCLE9BQU8sRUFBRSw4SEFBOEg7WUFDdkksVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQTtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3JELFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxZQUFZLENBQUE7UUFDL0MsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUU1QixJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQ25FLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBQ0Qsb0JBQW9CO0lBQ3BCLDJDQUEyQztJQUMzQywyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLDRnQ0FBNGdDO0lBQzVnQyw4Q0FBOEM7SUFDOUMsMEZBQTBGO0lBQzFGLDJCQUEyQjtJQUMzQixNQUFNO0lBQ04sNkRBQTZEO0lBQzdELDhCQUE4QjtJQUM5QixRQUFRO0lBQ1IscURBQXFEO0lBQ3JELHFDQUFxQztJQUVyQyw4QkFBOEI7SUFDOUIsc0ZBQXNGO0lBQ3RGLHFDQUFxQztJQUVyQyxpREFBaUQ7SUFDakQsMkJBQTJCO0lBQzNCLDhCQUE4QjtJQUM5QixtR0FBbUc7SUFDbkcseURBQXlEO0lBQ3pELDBDQUEwQztJQUMxQywyQ0FBMkM7SUFDM0MsZ0VBQWdFO0lBQ2hFLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIscUNBQXFDO0lBQ3JDLDJDQUEyQztJQUMzQyx3Q0FBd0M7SUFDeEMsOEJBQThCO0lBQzlCLHlDQUF5QztJQUN6Qyx1Q0FBdUM7SUFDdkMsd0VBQXdFO0lBQ3hFLDBFQUEwRTtJQUMxRSw4RUFBOEU7SUFDOUUsd0RBQXdEO0lBQ3hELG1CQUFtQjtJQUVuQixrQkFBa0I7SUFFbEIsNERBQTREO0lBRTVELGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLE9BQU87SUFFUCxJQUFJO0lBQ0osZUFBZTtJQUNmLDJDQUEyQztJQUMzQywyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLDRnQ0FBNGdDO0lBQzVnQyw4Q0FBOEM7SUFDOUMsMEZBQTBGO0lBQzFGLG1DQUFtQztJQUNuQyw2QkFBNkI7SUFDN0IsTUFBTTtJQUNOLDZEQUE2RDtJQUM3RCw4QkFBOEI7SUFDOUIsUUFBUTtJQUNSLHFEQUFxRDtJQUNyRCxxQ0FBcUM7SUFFckMsOEJBQThCO0lBQzlCLHNGQUFzRjtJQUN0RixxQ0FBcUM7SUFFckMsaURBQWlEO0lBQ2pELDJCQUEyQjtJQUMzQiw4QkFBOEI7SUFDOUIsbUdBQW1HO0lBQ25HLHlEQUF5RDtJQUN6RCwwQ0FBMEM7SUFDMUMsMkNBQTJDO0lBQzNDLGdFQUFnRTtJQUNoRSx3QkFBd0I7SUFDeEIsMEJBQTBCO0lBQzFCLHFDQUFxQztJQUNyQywyQ0FBMkM7SUFDM0Msd0NBQXdDO0lBQ3hDLDhCQUE4QjtJQUM5Qix5Q0FBeUM7SUFDekMsdUNBQXVDO0lBQ3ZDLHdFQUF3RTtJQUN4RSwwRUFBMEU7SUFDMUUsOEVBQThFO0lBQzlFLHdEQUF3RDtJQUN4RCxtQkFBbUI7SUFFbkIsa0JBQWtCO0lBRWxCLDREQUE0RDtJQUU1RCxlQUFlO0lBQ2YsY0FBYztJQUNkLFFBQVE7SUFDUixPQUFPO0lBRVAsSUFBSTtJQUNKLGNBQWM7SUFDZCwwQ0FBMEM7SUFDMUMsSUFBSTtJQUdKLDREQUE0RDtJQUM1RCw0QkFBNEI7SUFDNUIsK0NBQStDO0lBQy9DLG1DQUFtQztJQUNuQywrQ0FBK0M7SUFDL0MsZUFBZTtJQUNmLG9EQUFvRDtJQUNwRCx1REFBdUQ7SUFDdkQsUUFBUTtJQUNSLG1CQUFtQjtJQUNuQix3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLCtCQUErQjtJQUMvQixRQUFRO0lBRVIsaUZBQWlGO0lBQ2pGLHVDQUF1QztJQUN2QyxtQkFBbUI7SUFDbkIsVUFBVTtJQUVWLG1FQUFtRTtJQUNuRSxnQ0FBZ0M7SUFDaEMsc0RBQXNEO0lBQ3RELHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IsdUdBQXVHO0lBQ3ZHLHFDQUFxQztJQUNyQyxzQ0FBc0M7SUFDdEMsOEJBQThCO0lBQzlCLGdDQUFnQztJQUNoQyxzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLHdDQUF3QztJQUN4QyxxQ0FBcUM7SUFDckMsZ0RBQWdEO0lBQ2hELGNBQWM7SUFDZCxhQUFhO0lBQ2Isa0RBQWtEO0lBQ2xELHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IsZ0RBQWdEO0lBQ2hELDhCQUE4QjtJQUM5QixjQUFjO0lBQ2QsK0JBQStCO0lBQy9CLG9DQUFvQztJQUNwQyxpQ0FBaUM7SUFDakMsNENBQTRDO0lBQzVDLFVBQVU7SUFDVixTQUFTO0lBQ1QsT0FBTztJQUdQLHNCQUFzQjtJQUN0QixvRUFBb0U7SUFDcEUsb0NBQW9DO0lBRXBDLFFBQVE7SUFDUiw0QkFBNEI7SUFDNUIsaUNBQWlDO0lBRWpDLFNBQVM7SUFDVCxJQUFJO0lBRUosdUJBQXVCO0lBQ3ZCLDJDQUEyQztJQUMzQyxJQUFJO0lBQ0osZUFBZSxDQUFDLEVBQU87UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHNCQUFzQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksbUJBQW1CLEVBQUU7WUFDM0UsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHNCQUFzQixFQUFFO2dCQUN2QywrREFBK0Q7YUFDaEU7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2FBQzlFO1lBQ0Qsb0VBQW9FO1NBQ3JFO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFaEQsSUFBSSxpQkFBaUIsRUFBRSxlQUFlLENBQUM7UUFDdkMsSUFBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFFLEVBQUUsQ0FBQztTQUNwRDtRQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO1lBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFFLEVBQUUsQ0FBQztTQUNuRDtRQUVELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLElBQUksTUFBTSxFQUFFO1lBQ2xJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRSxHQUFHLEdBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUNqRztRQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLElBQUksVUFBVSxFQUFFO1lBQ3RJLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3ZFO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUN2RixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXpDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ25HLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzdGO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNuRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDL0MsSUFBSyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxJQUFJLElBQUksSUFBSyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUMxTyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFO29CQUN2RyxJQUFJLFNBQVMsR0FBRyxPQUFPLEVBQUU7d0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3dCQUN0RCxPQUFPLEtBQUssQ0FBQztxQkFDZDt5QkFDSTt3QkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDdEIsT0FBTyxJQUFJLENBQUM7cUJBQ2I7aUJBQ0Y7cUJBQ0ksSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtvQkFDekcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7b0JBQ3RELE9BQU8sS0FBSyxDQUFDO2lCQUNkO3FCQUNJO29CQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO2lCQUNJO2dCQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7YUFDSSxJQUFLLFNBQVMsR0FBRyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQ0k7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3RCLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2FBQzNHO2lCQUNJO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEc7U0FDRjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFFdEMsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFTO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25FLElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksT0FBTyxFQUFFO1lBQ2hDLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuSixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQztZQUM3TSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1lBQ25OLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzVGO2FBQUs7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEcsOEJBQThCO1NBQy9CO1FBQ0QsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksUUFBUSxFQUFFO1lBQ2pDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hGO1FBQ0QsSUFBRyxDQUFDLE9BQU8sRUFBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLEVBQUc7WUFDakwsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5TyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3JELFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRztZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsR0FBRyxFQUFDLElBQUksQ0FBQyxHQUFHO1NBQ2IsQ0FBQztRQUNGLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUIsSUFBRyxHQUFHLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7U0FDekU7YUFBTTtZQUNMLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVE7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsSUFBSSxNQUFNLEVBQUU7WUFDeEUsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsSUFBSSxLQUFLLEVBQUU7WUFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7WUFDeEIsU0FBUyxHQUFHLE9BQU8sQ0FBQTtTQUNwQjtRQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7WUFDeEIsU0FBUyxHQUFHLFFBQVEsQ0FBQTtTQUNyQjtRQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7WUFDeEIsU0FBUyxHQUFHLE9BQU8sQ0FBQTtTQUNwQjtRQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7WUFDeEIsU0FBUyxHQUFHLFFBQVEsQ0FBQTtTQUNyQjtRQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7WUFDeEIsU0FBUyxHQUFHLE1BQU0sQ0FBQTtTQUNuQjtRQUNELE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxHQUFFLEdBQUcsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLEtBQUssR0FBTyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsS0FBSyxDQUFDO1lBQy9KLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUTtRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxpQkFBaUI7UUFDZixtSEFBbUg7UUFDbkgsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3JILE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7U0FDekQ7YUFDSTtZQUNILE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVM7UUFDdkIsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztTQUNyRDthQUNJO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztTQUNyRDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUMsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLENBQUM7UUFDbk4sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0YsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFTO1FBQ3RCLElBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQWlCO1FBQzVCLE1BQU0sYUFBYSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQy9GLElBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUSxFQUFFLEVBQUUsR0FBRSxPQUFPLEVBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUU5QjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM3RixJQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLEdBQUUsT0FBTyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUEsQ0FBQSxDQUFDLENBQUUsQ0FBQzthQUN4RjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFTO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN6RCxDQUFDO3dHQTE0RFUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsMlRDbkJ4Qyw2MnlHQTBwQ007OzRGRHZvQ08sMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHlCQUF5QjtxUEFLaEIsU0FBUztzQkFBM0IsU0FBUzt1QkFBQyxNQUFNO2dCQUNHLFVBQVU7c0JBQTdCLFNBQVM7dUJBQUMsT0FBTztnQkFpMkRsQixZQUFZO3NCQURWLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBMkM3QyxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQyxPQUFPLENBQUUsT0FBTyxDQUFFLENBQUM7SUFFL0MsT0FBUSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFHO1FBQ3pDLElBQUssT0FBTyxDQUFDLE1BQU0sQ0FBRSxNQUFNLENBQUUsS0FBTSxJQUFJLENBQUMsTUFBTSxDQUFFLE1BQU0sQ0FBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBRSxZQUFZLENBQUUsQ0FBRSxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBRSxDQUFDO0tBQ25DO0lBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUMvRSxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXpCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmF4cG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi90cmF4cG9wdXAvdHJheHBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhTdG9yZUNvbXBvbmVudCB9IGZyb20gJy4uL3RyYXgtc3RvcmUvdHJheC1zdG9yZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoZWNrbGlzdC1jb25maWd1cmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2xpc3QtY29uZmlndXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2hlY2tsaXN0LWNvbmZpZ3VyZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdENvbmZpZ3VyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUxJykgZmlsZUlucHV0MSE6IEVsZW1lbnRSZWY7XHJcbiAgZGF5anM6YW55ID0gZGF5anM7XHJcbiAgc2VsZWN0ZWREYXRlczphbnk7XHJcbiAgbWluRGF0ZTphbnk7XHJcbiAgdHlwZTogc3RyaW5nID0gJ2N1c3RvbSc7XHJcbiAgb2JqOiBhbnk7XHJcbiAgY29uZmlnRGF0YTogYW55O1xyXG4gIHRhYmxlRGF0YTogYW55ID0gW107XHJcbiAgdGFibGVMb2FkaW5nOiBhbnkgPSBmYWxzZTtcclxuICB0YWJsZURpc3BsYXllZENvbHVtbnM6IGFueSA9IFtcIm5hbWVcIiwgXCJyb2xlXCIsIFwiZW1haWxcIl1cclxuICBwYWdlVmFsdWU6IGFueSA9IFtdO1xyXG4gIG9mZnNldDogbnVtYmVyID0gMDtcclxuICByZWNvcmRzVG90YWw6IGFueSA9IDA7XHJcbiAgc2l6ZTogYW55ID0gNTtcclxuICBvZmZzZXR2YWx1ZTogbnVtYmVyID0gMDtcclxuICBwYWdlRGlzcGxheTogYW55ID0gW107XHJcbiAgbmV4dGJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgYmFja2J0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgY3VycmVudFZhbHVlOiBhbnkgPSAxO1xyXG4gIHRhYmxlRmlsdGVyOiBhbnkgPSAnJztcclxuICBwYWdlU3RhcnQ6IGFueSA9IDA7XHJcbiAgcGFnZUVuZDogYW55ID0gMDtcclxuICByZWNvcmRzQ291bnQ6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZSA9IFs1LCAxMCwgMTUsMjBdO1xyXG4gIHVzZXJEYXRhOiBhbnkgPSBbXTtcclxuICBleGNlbFVzZXJEYXRhOiBhbnkgPSBbXTtcclxuICBzaG93SW1hZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG1vbnRoRGF5OiBhbnk7XHJcbiAgc2hvdzogbnVtYmVyID0gMDtcclxuICBwb3BVcFRpdGxlOiBhbnk7XHJcbiAgc2hvd0ludHJvOiBib29sZWFuID0gdHJ1ZTtcclxuICBzZWFyY2hVc2VyOiBhbnk7XHJcbiAgYWRkVXNlckZvcm06IGJvb2xlYW47XHJcbiAgc29wU3RvcmVzOiBhbnkgPSBbXTtcclxuICBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvcm1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXJ0VGltZTogYW55O1xyXG4gIGVuZFRpbWU6IGFueTtcclxuICBjaGVja2xpc3RJZDogYW55O1xyXG4gIHJldXBsb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0QWxsVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlbW92ZVVzZXJzOmFueSA9IFtdO1xyXG4gIHNlbGVjdGVkRGF5czogYW55W10gPSBbXTtcclxuICBzaG93UmFuZ2VWYWx1ZTpib29sZWFuID0gZmFsc2U7XHJcbiAgc3VibWl0dGVkRGF0ZXM6IG51bWJlcltdID0gW107XHJcbiAgbW9udGhEYXRlOnN0cmluZz0nJztcclxuICBzcGVjaWZpYzpib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0ZTogYW55O1xyXG4gIHNlY3Rpb25zOiBhbnkgPSBbXTtcclxuICBNb250aHdlZWtOdW1iZXI6IHN0cmluZztcclxuICBwb3B1cENvdW50OiBudW1iZXIgPSAwO1xyXG4gIHZhbGlkVGltZTpib29sZWFuID0gdHJ1ZTtcclxuICBkaXNhYmxlZFF1ZXN0aW9uOmJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93Y29uZmlnOiBib29sZWFuID0gdHJ1ZTtcclxuICByZXBlYXRUeXBlOnN0cmluZz0nJztcclxuICBzaG93RHJvcERvd246Ym9vbGVhbj0gZmFsc2U7XHJcbiAgc2VsZWN0ZWREYXRlOiBhbnk9IFtdO1xyXG4gIGRhdGVzOiBudW1iZXJbXSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDMxIH0sIChfLCBpKSA9PiBpICsgMSk7IC8vIEFycmF5IGZyb20gMSB0byAzMVxyXG4gIHNlbGVjdGVkRGF0ZUxpc3Q6YW55ID0gW107XHJcbiAgc2VsZWN0ZWRTdGFydERhdGU6YW55O1xyXG4gIG1pblN0YXJ0RGF0ZTphbnk7XHJcbiAgc2VsZWN0ZWRFbmREYXRlOmFueTtcclxuICBtaW5FbmREYXRlOmFueTtcclxuICBjbGllbnRJZDphbnk7XHJcbiAgYWxlcnRVc2Vyczphbnk9W107XHJcbiAgem9uZUxpc3Q6YW55ID0gW107XHJcbiAgbG9hZGluZzpib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGU6IFJvdXRlcixwcml2YXRlIGRpYWxvZzpOZ2JNb2RhbCxwcml2YXRlIFNvcFNlcnZpY2U6VHJheFNlcnZpY2UscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1zLnR5cGUgPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9iaiA9IHtcclxuICAgICAgICAgICAgICAgIGNoZWNrTGlzdElkOiBwYXJhbXMuY2hlY2tMaXN0SWQsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMudHlwZSA9ICdjdXN0b20nXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFF1ZXN0aW9uID0gcGFyYW1zLmRpc2FibGVkUXVlc3Rpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vYmogPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBwYXJhbXMudHlwZSxcclxuICAgICAgICAgICAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID0gcGFyYW1zLnR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLkdldENvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRDbGllbnRVc2VyKCk7XHJcbiAgICAgICAgICB0aGlzLmdldFpvbmVMaXN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgR2V0Q29uZmlnKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9udGhEYXRlID0gJyc7XHJcbiAgICB0aGlzLm1vbnRoRGF5ID0gJyc7XHJcbiAgICB0aGlzLlNvcFNlcnZpY2UuZ2V0Y29uZmlnKHRoaXMub2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOmFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChyZXMuZGF0YS5jaGVja0xpc3REZXRhaWxzLmNoZWNrTGlzdFR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0SWQgPSByZXMuZGF0YS5jaGVja0xpc3REZXRhaWxzLl9pZDtcclxuICAgICAgICAgIHRoaXMudHlwZSA9IHJlcy5kYXRhLmNoZWNrTGlzdERldGFpbHMuY2hlY2tMaXN0VHlwZTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVVc2VycyA9IHJlcy5kYXRhPy5jaGVja0xpc3REZXRhaWxzPy5yZW1vdmVkVXNlcnMgfHwgW107XHJcbiAgICAgICAgICAvLyB0aGlzLnpvbmVzID0gdGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5kZXRlY3Rpb25BcmVhIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNlY3Rpb25zO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERheXMgPSB0aGlzLmNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlV2Vla0RheXMgfHwgW107XHJcbiAgICAgICAgICB0aGlzLmVuZFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVFbmRUaW1lID8gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVFbmRUaW1lLCAgJ2g6bW0gQScpLmZvcm1hdCgnSEg6bW0nKSA6ICcyMjowMCc7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZSA/IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlU3RhcnRUaW1lLCAnaDptbSBBJykuZm9ybWF0KCdISDptbScpIDogJzEwOjAwJztcclxuICAgICAgICAgIHRoaXMucmVwZWF0VHlwZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PSAnZGFpbHknID8gJ0RheScgOiBbJ3dlZWtseScsJ3dlZWtkYXknXS5pbmNsdWRlcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUpID8gJ1dlZWsnIDogJ01vbnRoJztcclxuICAgICAgICAgIGlmKCF0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVFbmRUaW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRW5kVGltZSA9IFwiMTA6MDAgUE1cIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA9IFwiMTA6MDAgQU1cIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBpZiAodGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGVydD8uYWxlcnRzVG8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZW1haWxMaXN0ID0gdGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGVydD8uYWxlcnRzVG87XHJcbiAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgIT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1JhbmdlVmFsdWUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlICE9ICcnICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgIT0gbnVsbCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpOyBcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RhcnREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICAgICAgICAgICAgdGhpcy5taW5TdGFydERhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlICE9ICcnICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVuZERhdGUgPSB7c3RhcnREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyl9O1xyXG4gICAgICAgICAgICAgIHRoaXMubWluRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ21vbnRobHknKSB7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsuc3BsaXQoJyAnKT8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoRGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrLnNwbGl0KCcgJylbMF07XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9udGhEYXkgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlay5zcGxpdCgnICcpWzFdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9PSAnc3BlY2lmaWMnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZERhdGVzID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNwZWNpZmljRGF0ZSB8fCBbXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PSAncmFuZ2UnICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNwZWNpZmljID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnb25ldGltZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlIDogZGF5anMoKS5mb3JtYXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyksZW5kRGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyl9O1xyXG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSkuZm9ybWF0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzKCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5jb2RlID09IDQwMykge1xyXG4gICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9yNDAzJ10pXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWNjb3JkaWFuKGluZGV4OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNob3cgPT0gaW5kZXgpIHtcclxuICAgICAgdGhpcy5zaG93ID0gLTE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBpbmRleDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbmZpZ2FjY29yZGlhbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd2NvbmZpZyA9ICF0aGlzLnNob3djb25maWc7XHJcbiAgfVxyXG4gIENoZWNrbGlzdCgpIHtcclxuICAgIC8vIHRoaXMubW9iaWxldXNhZ2VkZXRlY3Rpb24gPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zdG9yZW9wZW5hbmRjbG9zZWRldGVjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudDogYW55KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5jaGFyQ29kZTsgIC8vICAgICAgICAgayA9IGV2ZW50LmtleUNvZGU7ICAoQm90aCBjYW4gYmUgdXNlZClcclxuICAgIHJldHVybiAoayA9PSA4IHx8IGsgPT0gMzIgfHwgKGsgPj0gNDggJiYgayA8PSA1NykpO1xyXG5cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlTGltaXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA8IDE1KSB7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmVycm9ybXNnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxlcnQudXNhZ2VFeGNlZWRzID0gJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmVycm9ybXNnID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgb25GaWxlVXBsb2FkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gMTtcclxuICAgIHRoaXMucmV1cGxvYWQgPSBmYWxzZTtcclxuICAgIHRoaXMudXNlckRhdGEgPSB0aGlzLmV4Y2VsVXNlckRhdGEgPSBbXTtcclxuICAgIGxldCBkYXRhOiBhbnk7XHJcbiAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IDxEYXRhVHJhbnNmZXI+KGV2ZW50LnRhcmdldCk7XHJcbiAgICBsZXQgaXNFeGNlbEZpbGUgPSAhIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKTtcclxuICAgIGxldCBlcnJvcjphbnkgPSBbXTtcclxuXHJcbiAgICBpZiAoaXNFeGNlbEZpbGUpIHtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChic3RyLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBkYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuXHJcbiAgICAgICAgaWYoIWRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1BsZWFzZSBVcGxvYWQgYSBWYWxpZCBmaWxlLicpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB2YWxpZGF0ZURhdGEgPSBkYXRhLmZpbmQoKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbT8uc3RvcmVOYW1lPy50cmltKCkgPT0gJycgfHwgIGl0ZW0/LnN0b3JlX2lkPy50cmltKCkgPT0gJycgfHwgaXRlbT8udXNlckVtYWlsPy50cmltKCkgPT0gJycgfHwgaXRlbT8udXNlck5hbWU/LnRyaW0oKSA9PSAnJ1xyXG4gICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGVEYXRhICE9ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIFVwbG9hZCBhIFZhbGlkIGZpbGUuJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudD8udXNlckVtYWlsKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudXNlckVtYWlsID0gZWxlbWVudD8udXNlckVtYWlsLnJlcGxhY2UoL1xccy9nLCcnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoZWxlbWVudC5zdG9yZU5hbWUgJiYgZWxlbWVudC5zdG9yZU5hbWUudHJpbSgpID09ICcnKSB8fCBlbGVtZW50LnN0b3JlTmFtZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgU3RvcmUgTmFtZSAtIEEke2luZGV4KzJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoZWxlbWVudC51c2VyRW1haWwgJiYgZWxlbWVudC51c2VyRW1haWwudHJpbSgpID09ICcnKSB8fCBlbGVtZW50LnVzZXJFbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgdXNlckVtYWlsIC0gQiR7aW5kZXgrMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChlbGVtZW50LnVzZXJOYW1lICYmIGVsZW1lbnQudXNlck5hbWUudHJpbSgpID09ICcnKSB8fCBlbGVtZW50LnVzZXJOYW1lID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBVc2VyIE5hbWUgLSBDJHtpbmRleCsyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudD8udXNlckVtYWlsICYmICFlbGVtZW50LnVzZXJFbWFpbC5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLykpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCB1c2VyRW1haWwgLSBCJHtpbmRleCsyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY2hlY2tVc2VySW5kZXggPSB0aGlzLnVzZXJEYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJFbWFpbCA9PSBlbGVtZW50LnVzZXJFbWFpbCk7XHJcbiAgICAgICAgICBpZiAoY2hlY2tVc2VySW5kZXggIT0gLTEgJiYgKHRoaXMudXNlckRhdGFbY2hlY2tVc2VySW5kZXhdPy51c2VyTmFtZSAhPSBudWxsICYmIGVsZW1lbnQ/LnVzZXJOYW1lICE9IG51bGwgJiYgdGhpcy51c2VyRGF0YVtjaGVja1VzZXJJbmRleF0/LnVzZXJOYW1lPy50cmltKCkubGVuZ3RoICYmIGVsZW1lbnQ/LnVzZXJOYW1lPy50cmltKCkubGVuZ3RoICYmIHRoaXMudXNlckRhdGFbY2hlY2tVc2VySW5kZXhdPy51c2VyTmFtZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkgIT0gZWxlbWVudD8udXNlck5hbWU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBTYW1lIEVtYWlsIHdpdGggRGlmZmVyZW50IHVzZXJzIC0gQiR7aW5kZXgrMn0sQiR7Y2hlY2tVc2VySW5kZXggKyAyfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51c2VyRGF0YS5wdXNoKHtcclxuICAgICAgICAgICAgc3RvcmVOYW1lOiBlbGVtZW50Py5zdG9yZU5hbWUsXHJcbiAgICAgICAgICAgIHVzZXJOYW1lOiBlbGVtZW50Py51c2VyTmFtZT8udHJpbSgpLFxyXG4gICAgICAgICAgICB1c2VyRW1haWw6IGVsZW1lbnQ/LnVzZXJFbWFpbD8udG9Mb3dlckNhc2UoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICB1c2VyUGhvbmU6IGVsZW1lbnQ/LnVzZXJQaG9uZSxcclxuICAgICAgICAgICAgY2hlY2tGbGFnOiBlbGVtZW50Py5jaGVjayA/IGVsZW1lbnQuY2hlY2sgOiBmYWxzZSxcclxuICAgICAgICAgICAgY2l0eTogZWxlbWVudD8uY2l0eVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHN0b3JlTm90RXhpc3RzKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh1c2VyTm90RXhpc3RzKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgaW1hZ2VzcmM6ICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOmVycm9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYocmVzICE9ICdyZXVwbG9hZCcpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnJldXBsb2FkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBsZXQgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yJyk7XHJcbiAgICAgICAgICAgICAgZWxlPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAvLyB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyb3Iuam9pbignICcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXJEZXRhaWxzKGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2UgVXBsb2FkIGEgRXhjZWwgZmlsZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVVc2VyRGV0YWlscyhkZWw/OmFueSkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWQsXHJcbiAgICAgIGFzc2lnbmVkVXNlcnM6IHRoaXMudXNlckRhdGEsXHJcbiAgICAgIHVwbG9hZFVzZXI6IHRydWUsXHJcbiAgICAgIHR5cGU6IHRoaXMub2JqPy50eXBlICYmIFsnbW9iaWxldXNhZ2VkZXRlY3Rpb24nLCdzdG9yZW9wZW5hbmRjbG9zZSddLmluY2x1ZGVzKHRoaXMub2JqLnR5cGUpID8gdGhpcy5vYmoudHlwZSA6ICcnLFxyXG4gICAgICAuLi4oZGVsKSA/IHtkZWxldGU6ZmFsc2V9IDoge30sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWRcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS52YWxpZGF0ZVVzZXIocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHZhbGlkYXRlOkJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5FeGlzdHNFbWFpbD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QocmVzPy5kYXRhPy5FeGlzdHNFbWFpbC5qb2luKCcsICcpICsgJyAnICsgcmVzPy5kYXRhPy5tZXNzYWdlKTtcclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXM/LmRhdGE/LmlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5faWQgPSByZXMuZGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0SWQgPSByZXMuZGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudXNlckRldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LmRvbWFpbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGVtYWlsID0gcmVzPy5kYXRhPy5kb21haW4ubWFwKChpdGVtOmFueSkgPT4gaXRlbS5lbWFpbClcclxuICAgICAgICAgICAgLy8gKycgJysnPGEgaHJlZj1cInByb2ZpbGUvZG9tYWluc1wiPkFkZCBkb21haW48L2E+J1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZW1haWwuam9pbignLCAnKSArICcgJyArICdEb21haW4gaXMgbm90IEV4aXN0cy4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVzPy5kYXRhPy51c2VyPy5sZW5ndGggJiYgcmVzPy5kYXRhPy5zdG9yZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGxldCBzdG9yZTogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbjogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBpbmFjdGl2ZVN0b3JlOiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgc3RvcmUgPSByZXMuZGF0YS5zdG9yZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLm1lc3NhZ2UgPT0gJyc7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaW5hY3RpdmVTdG9yZSA9IHJlcy5kYXRhLnN0b3JlLmZpbHRlcigoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWVzc2FnZSA9PSAnc3RvcmUgaXMgaW5hY3RpdmUnXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgbG9jYXRpb24gPSByZXMuZGF0YS5zdG9yZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLm1lc3NhZ2UgIT0gJyc7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc3RvcmUgPSBbLi4ubmV3IFNldChzdG9yZS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZSkpXTtcclxuICAgICAgICAgICAgaW5hY3RpdmVTdG9yZSA9IFsuLi4gbmV3IFNldChpbmFjdGl2ZVN0b3JlLm1hcCgoaXRlbTphbnkpID0+IGl0ZW0uc3RvcmUpKV07XHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gWy4uLm5ldyBTZXQobG9jYXRpb24ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmUpKV07XHJcbiAgICAgICAgICAgIGlmIChzdG9yZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpbWFnZXNyYzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPicsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogYE5ldyBTdG9yZSBmb3VuZCBpbiB1cGxvYWRlZCBmaWxlYCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBhIG5ldyBzdG9yZS4gQWRkIG5ldyBzdG9yZXMgaW4gdGhlIFN0b3JlIE1hbmFnZW1lbnQgdW5kZXIgTWFuYWdlIG1lbnUuYCxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdBZGRzdG9yZScsXHJcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogc3RvcmUuam9pbignLCAnKSxcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbi5qb2luKClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZihpbmFjdGl2ZVN0b3JlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGltYWdlc3JjOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+JyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBgSW5hY3RpdmUgU3RvcmUgZm91bmQgaW4gdXBsb2FkZWQgZmlsZWAsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBgSW5hY3RpdmUgc3RvcmVzIGZvdW5kIGluIHRoZSAuY3N2LiBQbGVhc2UgYWN0aXZhdGUgb3Igc2tpcCB0aGVtIHRvIHByb2NlZWQgdG8gYXNzaWduLmAsXHJcbiAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnQWN0aXZlc3RvcmUnLFxyXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGluYWN0aXZlU3RvcmUuam9pbignLCAnKSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJEYXRhQ29weSA9IFsuLi50aGlzLnVzZXJEYXRhXTtcclxuICAgICAgICAgICAgICAgIGxldCBzdG9yZV9pZDogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRldGFpbHMgPSB1c2VyRGF0YUNvcHkuZmluZCgoc3RvcmU6IGFueSkgPT4gaXRlbSA9PSBzdG9yZS5zdG9yZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZGV0YWlscy5jaXR5ID09IHVuZGVmaW5lZCB8fCBkZXRhaWxzLmNpdHkgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdG9yZV9pZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlX2lkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoYENpdHkgaXMgcmVxdWlyZWQgb24gdGhpcyBzdG9yZXMgJHtzdG9yZV9pZC5qb2luKCl9YCk7XHJcbiAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnVwbG9hZFVzZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHBvcHVwY29udGVudCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09ICdjb25maXJtU3RvcmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGVCeVVybChgbWFuYWdlL3N0b3Jlcy9hZGRpdGlvbi1tZXRob2RgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYocmVzdWx0ID09ICdhY3RpdmVTdG9yZScpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKGBtYW5hZ2Uvc3RvcmVzYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ3NraXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcmVfaWQ6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRldGFpbHMgPSB0aGlzLnVzZXJEYXRhLmZpbmQoKHN0b3JlOiBhbnkpID0+IGl0ZW0gPT0gc3RvcmUuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLmNpdHkgPT0gdW5kZWZpbmVkIHx8IGRldGFpbHMuY2l0eSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZV9pZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlX2lkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBDaXR5IGlzIHJlcXVpcmVkIG9uIHRoaXMgc3RvcmVzICR7c3RvcmVfaWQuam9pbigpfWApXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgbGV0IHVzZXJEYXRhQ29weSA9IFsuLi50aGlzLnVzZXJEYXRhXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICB1c2VyRGF0YUNvcHkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9yZS5pbmNsdWRlcyhpdGVtLnN0b3JlTmFtZSkgJiYgIWluYWN0aXZlU3RvcmUuaW5jbHVkZXMoaXRlbS5zdG9yZU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVzZXJEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEVudGVyIHZhbGlkIERldGFpbHMnKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGxldCB1c2VyRGV0YWlscyA9IHRoaXMudXNlckRhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0udXNlckVtYWlsKTtcclxuICAgICAgICAgICAgICAgICAgbGV0IHVzZXIgPSBbLi4ucmVzLmRhdGEudXNlcl07XHJcbiAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLnVzZXIgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdXNlci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXNlckRldGFpbHMuaW5jbHVkZXMoaXRlbS51c2VyRW1haWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS51c2VyLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEudXNlci5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNyYzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPicsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYEludml0ZSBuZXcgdXNlcnMgYWRkZWQgaW4gQ1NWYCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBuZXcgdXNlcnMuIEludml0ZSB1c2VycyBieSBzZW5kaW5nIG1haWwgdG8gdGhlbWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnSW52aXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHVzZXI6IHJlcy5kYXRhLnVzZXJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/Lm1lc3NhZ2UgPT0gJ2NvbmZpcm0nIHx8IHJlc3VsdCA9PSAnc2tpcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAnc2tpcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YUNvcHkgPSBbLi4udGhpcy51c2VyRGF0YV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhQ29weS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlckRldGFpbHMuaW5jbHVkZXMoaXRlbS51c2VyRW1haWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlckRhdGEucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD8udXNlci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMudXNlckRhdGEuZmluZEluZGV4KCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXIudXNlckVtYWlsID09IGl0ZW0udXNlckVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLmludml0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGl0ZW0gb2YgcmVzLmRhdGEudXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0/Lm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGAke2l0ZW0udXNlckVtYWlsfSAtICR7aXRlbS5tZXNzYWdlfWApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXNlckRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBQbGVhc2UgRW50ZXIgdmFsaWQgRGV0YWlsc2ApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnVwbG9hZFVzZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkVXNlcihkZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVzPy5kYXRhPy51c2VyPy5sZW5ndGggfHwgcmVzPy5kYXRhPy5zdG9yZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGxldCBzdG9yZTogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbjogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBpbmFjdGl2ZVN0b3JlOiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgaWYgKHJlcz8uZGF0YT8udXNlcj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW1hZ2VzcmM6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz4nLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGBJbnZpdGUgbmV3IHVzZXJzIGFkZGVkIGluIENTVmAsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBgVGhpcyBDU1YgY29udGFpbnMgbmV3IHVzZXJzLiBJbnZpdGUgdXNlcnMgYnkgc2VuZGluZyBtYWlsIHRvIHRoZW1gLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9udHlwZTogJ0ludml0ZScsXHJcbiAgICAgICAgICAgICAgICB1c2VyOiByZXMuZGF0YS51c2VyXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN0b3JlID0gcmVzLmRhdGEuc3RvcmUuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm1lc3NhZ2UgPT0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGluYWN0aXZlU3RvcmUgPSByZXMuZGF0YS5zdG9yZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWVzc2FnZSA9PSAnc3RvcmUgaXMgaW5hY3RpdmUnXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uID0gcmVzLmRhdGEuc3RvcmUuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm1lc3NhZ2UgIT0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIHN0b3JlID0gWy4uLm5ldyBTZXQoc3RvcmUubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmUpKV07XHJcbiAgICAgICAgICAgICAgaW5hY3RpdmVTdG9yZSA9IFsuLi4gbmV3IFNldChpbmFjdGl2ZVN0b3JlLm1hcCgoaXRlbTphbnkpID0+IGl0ZW0uc3RvcmUpKV07XHJcbiAgICAgICAgICAgICAgbG9jYXRpb24gPSBbLi4ubmV3IFNldChsb2NhdGlvbi5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZSkpXTtcclxuICAgICAgICAgICAgICBpZiAoc3RvcmUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgaW1hZ2VzcmM6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz4nLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTogYE5ldyBTdG9yZSBmb3VuZCBpbiB1cGxvYWRlZCBmaWxlYCxcclxuICAgICAgICAgICAgICAgICAgY29udGVudDogYFRoaXMgQ1NWIGNvbnRhaW5zIGEgbmV3IHN0b3JlLiBBZGQgbmV3IHN0b3JlcyBpbiB0aGUgU3RvcmUgTWFuYWdlbWVudCB1bmRlciBNYW5hZ2UgbWVudS5gLFxyXG4gICAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnQWRkc3RvcmUnLFxyXG4gICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogc3RvcmUuam9pbignLCAnKSxcclxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLmpvaW4oKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZihpbmFjdGl2ZVN0b3JlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIGltYWdlc3JjOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+JyxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IGBJbmFjdGl2ZSBTdG9yZSBmb3VuZCBpbiB1cGxvYWRlZCBmaWxlYCxcclxuICAgICAgICAgICAgICAgICAgY29udGVudDogYEluYWN0aXZlIHN0b3JlcyBmb3VuZCBpbiB0aGUgLmNzdi4gUGxlYXNlIGFjdGl2YXRlIG9yIHNraXAgdGhlbSB0byBwcm9jZWVkIHRvIGFzc2lnbi5gLFxyXG4gICAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnQWN0aXZlc3RvcmUnLFxyXG4gICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW5hY3RpdmVTdG9yZS5qb2luKCcsICcpLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB1c2VyRGF0YUNvcHkgPSBbLi4udGhpcy51c2VyRGF0YV07XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZV9pZDogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gdXNlckRhdGFDb3B5LmZpbmQoKHN0b3JlOiBhbnkpID0+IGl0ZW0gPT0gc3RvcmUuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGV0YWlscy5jaXR5ID09IHVuZGVmaW5lZCB8fCBkZXRhaWxzLmNpdHkgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX2lkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICBpZiAoc3RvcmVfaWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBDaXR5IGlzIHJlcXVpcmVkIG9uIHRoaXMgc3RvcmVzICR7c3RvcmVfaWQuam9pbigpfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocG9wdXBjb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ2NvbmZpcm1TdG9yZScpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKGBtYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZGApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQgPT0gJ2FjdGl2ZVN0b3JlJykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoYG1hbmFnZS9zdG9yZXNgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdD8ubWVzc2FnZSA9PSAnY29uZmlybScgfHwgcmVzdWx0ID09ICdza2lwJykge1xyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gJ3NraXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJEYXRhQ29weSA9IFsuLi50aGlzLnVzZXJEYXRhXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcz8uZGF0YT8udXNlcj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlckRldGFpbHMgPSByZXMuZGF0YS51c2VyLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJFbWFpbClcclxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhQ29weS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyRGV0YWlscy5pbmNsdWRlcyhpdGVtLnVzZXJFbWFpbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcmVfaWQ6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gdXNlckRhdGFDb3B5LmZpbmQoKHN0b3JlOiBhbnkpID0+IGl0ZW0gPT0gc3RvcmUuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGFpbHMuY2l0eSA9PSB1bmRlZmluZWQgfHwgZGV0YWlscy5jaXR5ID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfaWQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZV9pZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBDaXR5IGlzIHJlcXVpcmVkIG9uIHRoaXMgc3RvcmVzICR7c3RvcmVfaWQuam9pbigpfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXM/LmRhdGE/LnN0b3JlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhQ29weS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9yZS5pbmNsdWRlcyhpdGVtLnN0b3JlTmFtZSkgJiYgIWluYWN0aXZlU3RvcmUuaW5jbHVkZXMoaXRlbS5zdG9yZU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ/LnVzZXIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnVzZXJEYXRhLmZpbmRJbmRleCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyLnVzZXJFbWFpbCA9PSBpdGVtLnVzZXJFbWFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5pbnZpdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YS5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpdGVtIG9mIHJlcy5kYXRhLnVzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgJHtpdGVtLnVzZXJFbWFpbH0gLSAke2l0ZW0ubWVzc2FnZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVzZXJEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2UgRW50ZXIgdmFsaWQgRGV0YWlscycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS51cGxvYWRVc2VyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFVzZXIoZGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnVwbG9hZFVzZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkVXNlcihkZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycm9yLmVycm9yKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRVc2VyKGRlbD86YW55KSB7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWQsXHJcbiAgICAgIGFzc2lnbmVkVXNlcnM6IHRoaXMudXNlckRhdGEsXHJcbiAgICAgIHVwbG9hZFVzZXI6IHRydWUsXHJcbiAgICAgIGFkZFVzZXI6IHRydWUsXHJcbiAgICAgIHR5cGU6IHRoaXMub2JqPy50eXBlICYmIFsnbW9iaWxldXNhZ2VkZXRlY3Rpb24nLCAnc3RvcmVvcGVuYW5kY2xvc2UnXS5pbmNsdWRlcyh0aGlzLm9iai50eXBlKSA/IHRoaXMub2JqLnR5cGUgOiAnJyxcclxuICAgICAgLi4uKGRlbCkgPyB7ZGVsZXRlOmZhbHNlfSA6IHt9LFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICB9XHJcbiAgICB0aGlzLlNvcFNlcnZpY2UudmFsaWRhdGVVc2VyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLl9pZCA9IHJlc3BvbnNlLmRhdGEuaWQ7XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RJZCA9IHJlc3BvbnNlLmRhdGEuaWQ7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHMoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBsaW1pdDogdGhpcy5zaXplLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNlYXJjaDogdGhpcy50YWJsZUZpbHRlcixcclxuICAgICAgaWQ6IHRoaXMuY2hlY2tsaXN0SWRcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3dJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXIubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnVzZXJzO1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc1RvdGFsID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCA1KSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplID0gW3RoaXMucmVjb3Jkc1RvdGFsXTtcclxuICAgICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMucmVjb3Jkc1RvdGFsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemUgPSBbNSwxMCwxNSwyMF07XHJcbiAgICAgICAgICB0aGlzLnNpemUgPSA1O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChpdGVtOmFueSkgPT57XHJcbiAgICAgICAgICBpZihpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIGNvdW50ICs9MTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKCFpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChjb3VudCA9PSB0aGlzLnJlY29yZHNDb3VudCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIGlkOiB0aGlzLmNoZWNrbGlzdElkLFxyXG4gICAgICBzZWFyY2g6IHRoaXMudGFibGVGaWx0ZXJcclxuICAgIH1cclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRVc2VyRGV0YWlscyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcbiAgICAgIGxldCBleGNlbERhdGE6IGFueSA9IFtdO1xyXG4gICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICBleGNlbERhdGEucHVzaCh7XHJcbiAgICAgICAgICBzdG9yZU5hbWU6ICcnLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiAnJyxcclxuICAgICAgICAgIHVzZXJOYW1lOiAnJyxcclxuICAgICAgICAgIHVzZXJQaG9uZTogJycsXHJcbiAgICAgICAgICBjaXR5OicnXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHJlcy5kYXRhLnVzZXJzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgZXhjZWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICBzdG9yZU5hbWU6IGl0ZW0uc3RvcmVOYW1lLFxyXG4gICAgICAgICAgICB1c2VyRW1haWw6IGl0ZW0udXNlckVtYWlsLFxyXG4gICAgICAgICAgICB1c2VyTmFtZTogaXRlbS51c2VyTmFtZSxcclxuICAgICAgICAgICAgdXNlclBob25lOiBpdGVtLnVzZXJQaG9uZSxcclxuICAgICAgICAgICAgY2l0eTppdGVtLmNpdHlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLlNvcFNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUoZXhjZWxEYXRhLCAnQ2hlY2tMaXN0X3VzZXJMaXN0XycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSBldmVudDtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnNpemUsXHJcbiAgICAgIG9mZnNldDogZXZlbnQgLSAxLFxyXG4gICAgICBzZWFyY2g6IHRoaXMudGFibGVGaWx0ZXIsXHJcbiAgICAgIGlkOiB0aGlzLmNoZWNrbGlzdElkXHJcbiAgICB9XHJcbiAgICB0aGlzLlNvcFNlcnZpY2UuZ2V0VXNlckRldGFpbHMocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSByZXMuZGF0YS51c2VycztcclxuICAgICAgICBsZXQgY291bnQ9MDtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmNoZWNrRmxhZyAmJiAhdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSAmJiAhdGhpcy5yZW1vdmVVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSlcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgY291bnQgKz0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5yZWNvcmRzQ291bnQgPSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDUpIHtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemUgPSBbdGhpcy5yZWNvcmRzVG90YWxdO1xyXG4gICAgICAgICAgdGhpcy5zaXplID0gdGhpcy5yZWNvcmRzVG90YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZSA9IFs1LDEwLDE1LDIwXTtcclxuICAgICAgICAgIHRoaXMuc2l6ZSA9IDU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb3VudCA9PSB0aGlzLnJlY29yZHNDb3VudCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSBldmVudDtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnNpemUsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgc2VhcmNoOiB0aGlzLnRhYmxlRmlsdGVyLFxyXG4gICAgICBpZDogdGhpcy5jaGVja2xpc3RJZFxyXG4gICAgfVxyXG4gICAgdGhpcy5Tb3BTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGlmIChyZXMgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0ltYWdlID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy50YWJsZUZpbHRlci5sZW5ndGgpXHJcbiAgICAgICAgICB0aGlzLnNob3dJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnNob3dJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEudXNlcnM7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbS5jaGVja0ZsYWcgJiYgIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkgJiYgIXRoaXMucmVtb3ZlVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMucHVzaChpdGVtLmlkKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5yZWNvcmRzQ291bnQgPSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDUpIHtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemUgPSBbdGhpcy5yZWNvcmRzVG90YWxdXHJcbiAgICAgICAgICB0aGlzLnNpemUgPSB0aGlzLnJlY29yZHNUb3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplID0gWzUsMTAsMTUsMjBdXHJcbiAgICAgICAgICB0aGlzLnNpemUgPSA1O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VhcmNoVGFibGVEYXRhKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSAxO1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBsaW1pdDogdGhpcy5zaXplLFxyXG4gICAgICBzZWFyY2g6IHRoaXMudGFibGVGaWx0ZXIsXHJcbiAgICAgIGlkOiB0aGlzLmNoZWNrbGlzdElkXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5Tb3BTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0ltYWdlID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyLmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5zaG93SW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSByZXMuZGF0YS51c2VycztcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICAgIGxldCBjb3VudCA9IDAgO1xyXG4gICAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCA1KSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemUgPSBbdGhpcy5yZWNvcmRzVG90YWxdXHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMucmVjb3Jkc1RvdGFsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemUgPSBbNSwxMCwxNSwyMF1cclxuICAgICAgICAgICAgdGhpcy5zaXplID0gNTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW06YW55KSA9PntcclxuICAgICAgICAgICAgaWYoaXRlbS5jaGVja0ZsYWcgJiYgIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkgJiYgIXRoaXMucmVtb3ZlVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5wdXNoKGl0ZW0uaWQpO1xyXG4gIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICAgIGNvdW50ICs9MTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGlmIChjb3VudCA9PSB0aGlzLnJlY29yZHNDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZUZsYWcoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSwgZWxlbWVudDogYW55KSB7XHJcbiAgICAgICAgXHJcbiAgICBlbGVtZW50LmNoZWNrRmxhZyA9IGV2ZW50LnRhcmdldC5jaGVja2VkXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZW1vdmVVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbSA9PSBlbGVtZW50LmlkKTtcclxuICAgICAgdGhpcy5yZW1vdmVVc2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnB1c2goZWxlbWVudC5pZClcclxuICAgIH1cclxuICAgIGlmICghZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5yZW1vdmVVc2Vycy5wdXNoKGVsZW1lbnQuaWQpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtID09IGVsZW1lbnQuaWQpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlRGF0YVtpbmRleF0uY2hlY2tGbGFnID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMubGVuZ3RoICE9IHRoaXMucmVjb3Jkc1RvdGFsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBjaGVja0FsbChldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzID0gW107XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja0ZsYWcgPSB0cnVlXHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZW1vdmVVc2Vycy5maW5kSW5kZXgoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBpdGVtLmlkKTtcclxuICAgICAgICB0aGlzLnJlbW92ZVVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYoIXRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFzc2lnbmVkVXNlcnMuaW5jbHVkZXMoaXRlbS5pZCkpXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzLnB1c2goaXRlbS5pZClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja0ZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbW92ZVVzZXJzLnB1c2goaXRlbS5pZClcclxuICAgICAgICBsZXQgaW5kZXggPSAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5maW5kSW5kZXgoKGlkOmFueSkgPT4gaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYXNzaWduZWRVc2Vycy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBkYXRlUmFuZ2VTdGFydChldmVudCA6YW55KSB7XHJcbiAgLy8gICB0aGlzLnJhbmdlU3RhcnQgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0KS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG4gIC8vICAgdGhpcy52YWxpZGF0ZVRpbWUoKTtcclxuICAvLyB9XHJcbiAgZGF0ZVNwZWNpZmljKGV2ZW50OmFueSkge1xyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09ICdyYW5nZScgJiYgZXZlbnQ/LnNlbGVjdGVkTGlzdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBldmVudC5zZWxlY3RlZExpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRhdGVSYW5nZVN0YXJ0KGV2ZW50IDphbnkpIHtcclxuICAgIGlmKGV2ZW50ICYmIGV2ZW50LnN0YXJ0RGF0ZSkge1xyXG4gICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ29uZXRpbWUnKVxyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJylcclxuICAgICAgfVxyXG4gICAgfSAgIFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PSAnb25ldGltZScpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhcnREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgIHRoaXMubWluRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlKS5mb3JtYXQoKTtcclxuICAgIHRoaXMubWluRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVGltZSgpO1xyXG4gIH1cclxuICBcclxuICBkYXRlUmFuZ2VFbmQoZXZlbnQ6YW55KSB7XHJcbiAgICBpZihldmVudCAmJiBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW5kRGF0ZSA9IHtzdGFydERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyksZW5kRGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICAgIHRoaXMubWluRW5kRGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gZGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gIC8vICAgdGhpcy5kYXRlID0gdGhpcy5kYXlqcyhldmVudC5zdGFydCk7XHJcbiAgLy8gICB0aGlzLm1vbnRoRGF0ZSA9IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpID09IDEgPyBwYXJzZUludCh0aGlzLmRhdGUuZm9ybWF0KCdERCcpKSArICdzdCcgOiBwYXJzZUludCh0aGlzLmRhdGUuZm9ybWF0KCdERCcpKSA9PSAyID8gcGFyc2VJbnQodGhpcy5kYXRlLmZvcm1hdCgnREQnKSkgKyAnbmQnIDogcGFyc2VJbnQodGhpcy5kYXRlLmZvcm1hdCgnREQnKSkgPT0gMyA/IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpICsgJ3JkJyA6IHBhcnNlSW50KHRoaXMuZGF0ZS5mb3JtYXQoJ0REJykpICsgJ3RoJztcclxuICAvLyAgIHRoaXMubW9udGhEYXkgPSB0aGlzLmRhdGUuZm9ybWF0KCdkZGRkJyk7XHJcbiAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZURhdGUgPSB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuXHJcbiAgLy8gICBsZXQgd2Vla051bWJlciA9IGdldFdlZWtOdW1iZXIodGhpcy5kYXRlKTtcclxuICAvLyAgIHRoaXMuTW9udGh3ZWVrTnVtYmVyID0gd2Vla051bWJlciA9PSAxID8gd2Vla051bWJlciArICdzdCcgOiB3ZWVrTnVtYmVyID09IDIgPyB3ZWVrTnVtYmVyICsgJ25kJyA6IHdlZWtOdW1iZXIgPT0gMyA/IHdlZWtOdW1iZXIgKyAncmQnIDogd2Vla051bWJlciArICd0aCc7XHJcbiAgLy8gICB0aGlzLnNldE1vbnRoRGF0ZSh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCk7XHJcbiAgLy8gfVxyXG4gIC8vIHNldERheShkYXk6IGFueSkge1xyXG4gIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZERheSA9IGRheTtcclxuICAvLyB9XHJcbiAgc2V0RGF5KGRheTpzdHJpbmcpe1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXlzLmluY2x1ZGVzKGRheSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERheXMgPSB0aGlzLnNlbGVjdGVkRGF5cy5maWx0ZXIoc2VsZWN0ZWREYXkgPT4gc2VsZWN0ZWREYXkgIT09IGRheSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cy5wdXNoKGRheSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIHNldE1vbnRoRGF0ZShkYXRhOiBhbnkpIHtcclxuICAvLyAgIGlmIChkYXRhID09ICdkYXRlJykge1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gW3RoaXMubW9udGhEYXRlXTtcclxuICAvLyAgICAgdGhpcy5zZWxlY3RlZERheXMgPSBbdGhpcy5tb250aERhdGVdOyBcclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gW3RoaXMubW9udGhEYXldO1xyXG4gIC8vICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFt0aGlzLm1vbnRoRGF5XTsgXHJcbiAgLy8gICAgIGxldCB3ZWVrTnVtYmVyID0gZ2V0V2Vla051bWJlcih0aGlzLmRhdGUpO1xyXG4gIC8vICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gd2Vla051bWJlciA9PSAxID8gd2Vla051bWJlciArICdzdCcgOiB3ZWVrTnVtYmVyID09IDIgPyB3ZWVrTnVtYmVyICsgJ25kJyA6IHdlZWtOdW1iZXIgPT0gMyA/IHdlZWtOdW1iZXIgKyAncmQnIDogd2Vla051bWJlciArICd0aCc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9IGRhdGE7XHJcblxyXG4gIC8vIH1cclxuICAvLyBzZXREYXRlKGV2ZW50OiBhbnkpIHtcclxuICAvLyAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9IGV2ZW50LnN0YXJ0O1xyXG4gIC8vIH1cclxuICBwdWJsaXNoKCkge1xyXG4gICAgaWYoWyd3ZWVrbHknLCd3ZWVrZGF5J10uaW5jbHVkZXModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUpICYmIHRoaXMuc2VsZWN0ZWREYXlzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdQbGVhc2Ugc2VsZWN0IGF0bGVhc3QgMSBkYXkgdG8gcHJvY2VlZCcpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy52YWxpZFRpbWUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdJbnZhbGlkIFNjaGVkdWxlIEVuZCBUaW1lJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKCF0aGlzLnNob3dSYW5nZVZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA9Jyc7IFxyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlID0nJzsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSAhPSAnb25ldGltZScpIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVEYXRlID0nJzsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLm1vbnRoRGF0ZSArJyAnK3RoaXMubW9udGhEYXk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ3NwZWNpZmljJykge1xyXG4gICAgICBpZih0aGlzLnN1Ym1pdHRlZERhdGVzLmxlbmd0aClcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGUgPSB0aGlzLnN1Ym1pdHRlZERhdGVzO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1BsZWFzZSBzZWxlY3QgYXRsZWFzdCAxIGRhdGUgdG8gcHJvY2VlZCcpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ3JhbmdlJyAmJiB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlTGlzdDtcclxuICAgIH1cclxuICAgIGxldCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIvPjxwYXRoIGQ9XCJNMzggMjcuMDgxOFYyOC4wMDE4QzM3Ljk5ODggMzAuMTU4MiAzNy4zMDA1IDMyLjI1NjUgMzYuMDA5MyAzMy45ODM2QzM0LjcxODIgMzUuNzEwOCAzMi45MDMzIDM2Ljk3NDMgMzAuODM1NCAzNy41ODU3QzI4Ljc2NzQgMzguMTk3MSAyNi41NTczIDM4LjEyMzcgMjQuNTM0NSAzNy4zNzY0QzIyLjUxMTcgMzYuNjI5MSAyMC43ODQ3IDM1LjI0NzkgMTkuNjExIDMzLjQzODlDMTguNDM3MyAzMS42Mjk5IDE3Ljg3OTggMjkuNDg5OSAxOC4wMjE3IDI3LjMzODFDMTguMTYzNiAyNS4xODY0IDE4Ljk5NzIgMjMuMTM4MSAyMC4zOTgzIDIxLjQ5ODlDMjEuNzk5NCAxOS44NTk2IDIzLjY5MjggMTguNzE3MiAyNS43OTYyIDE4LjI0MkMyNy44OTk2IDE3Ljc2NjcgMzAuMTAwMyAxNy45ODQyIDMyLjA3IDE4Ljg2MThNMzggMjAuMDAxOEwyOCAzMC4wMTE4TDI1IDI3LjAxMThcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQ0ZERjNcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgIHRpdGxlOiBgJHt0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jaGVja0xpc3ROYW1lfSBjaGVja2xpc3QgcHVibGlzaGVkXHJcbiAgICAgICAgP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBUaGlzIGNoZWNrbGlzdCBoYXMgYmVlbiBwdWJsaXNoZWQuIEFueSBjaGFuZ2VzIG1hZGUgd2lsbCByZWZsZWN0IGZyb20gdGhlIG5leHQgb2NjdXJyZW5jZS5gLFxyXG4gICAgICBidXR0b250eXBlOiAnY29uZmlybSdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50O1xyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcyA9PSAnY29uZmlybScpIHtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgfHwgdGhpcy50eXBlID09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgICAgIC8vIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJykge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5kZXRlY3Rpb25BcmVhID0gdGhpcy56b25lcztcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA9IHRoaXMuY29uZmlnRGF0YS5vcGVuVGltZTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5jb25maWdEYXRhLmNsb3NlVGltZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LmFsZXJ0c1RvID0gdGhpcy5lbWFpbExpc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnB1Ymxpc2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5zdWJtaXRUeXBlID0gJ3B1Ymxpc2gnO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5yZW1vdmVkVXNlcnMgPSB0aGlzLnJlbW92ZVVzZXJzO1xyXG4gICAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlV2Vla0RheXMgPSB0aGlzLnNlbGVjdGVkRGF5cztcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEudXBkYXRlQ29uZmlndXJlID0gdGhpcy5kaXNhYmxlZFF1ZXN0aW9uID8gIHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29uZmlnRGF0YSk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChgJHt0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jaGVja0xpc3ROYW1lfSBjaGVja2xpc3QgcHVibGlzaGVkLmApO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvY2hlY2tsaXN0J10pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvci5jb2RlID09IDQwMCkge1xyXG4gICAgICAgICAgICBsZXQgZXJyID0gZXJyb3I/LmVycm9yPy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIEFzc2lnbiBhIFVzZXIhU2VydmVyIEVycm9yIScpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdHN0b3JlKGVsZW1lbnQ6IGFueSkge1xyXG4gIC8vICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4U3RvcmVDb21wb25lbnQsIHtcclxuICAvLyAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcblxyXG4gIC8vICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBlbGVtZW50O1xyXG5cclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgLy8gICAgIC8vIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gIC8vICAgICBpZiAoZGF0YSAmJiBkYXRhLm1zZyA9PSAnY29uZmlybScpIHtcclxuICAvLyAgICAgICBpZiAoZGF0YS5zdG9yZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICBsZXQgc29wID0gZGF0YS5zdG9yZXM7XHJcbiAgLy8gICAgICAgICBsZXQgaWQgPSBlbGVtZW50LmlkO1xyXG4gIC8vICAgICAgICAgLy8gdGhpcy5Tb3BTZXJ2aWNlLmFzc2lnblNvcFN0b3JlKHNvcCwgaWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIC8vICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAvLyAgICAgICAgIC8vICAgICBlbGVtZW50LnNvcF9zdG9yZXMgPSBkYXRhLnN0b3JlcztcclxuICAvLyAgICAgICAgIC8vICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgICAgLy8gfSwgKGVycm9yOiBhbnkpID0+IHtcclxuXHJcbiAgLy8gICAgICAgICAvLyB9KVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcbiAgbmV3c3RvcmUoKSB7XHJcbiAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7IGNoZWNrbGlzdGlkOiBKU09OLnN0cmluZ2lmeSh0aGlzLm9iaikgfSB9KTtcclxuICB9XHJcbiAgaW52aXRldXNlcigpIHtcclxuICAgIHRoaXMucm91dGUubmF2aWdhdGUoW1wiL2NvbnRyb2wtcGFuZWwvYXNzaWduLXJvbGVcIl0sIHsgcXVlcnlQYXJhbXM6IHsgY2hlY2tsaXN0aWQ6IEpTT04uc3RyaW5naWZ5KHRoaXMub2JqKSB9IH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdkYXknID8gdGhpcy5kYXlqcygpLmZvcm1hdCgnREQnKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsdWUoZXZlbnQ6YW55KSB7XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9IGV2ZW50LnRhcmdldC52YWx1ZSA8IDkgID8gJzAnK2V2ZW50LnRhcmdldC52YWx1ZSA6IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gdGhpcy5kYXlqcygpLmZvcm1hdCgnREQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoZXZlbnQ6YW55KSB7ICAgIFxyXG4gICAgaWYoIWlzTmFOKGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlWzBdID09IDMgJiYgZXZlbnQudGFyZ2V0LnZhbHVlWzFdID4gMSkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IDM7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9IDM7XHJcbiAgICAgIH1cclxuICAgICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlWzBdID4gMyAmJiBldmVudC50YXJnZXQudmFsdWVbMV0gPj0gMCkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVswXTtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gZXZlbnQudGFyZ2V0LnZhbHVlWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZVswXSA8IDEpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gJyc7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHNhdmVkcmFmdCgpIHtcclxuICAgIGlmKCF0aGlzLnZhbGlkVGltZSkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIFRpbWUnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0YXJ0RGF0ZVdpdGhUaW1lLCBlbmREYXRlV2l0aFRpbWU7XHJcbiAgICBpZighdGhpcy5zaG93UmFuZ2VWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPScnOyBcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgIT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrID0gdGhpcy5tb250aERhdGUgKycgJyt0aGlzLm1vbnRoRGF5O1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdzcGVjaWZpYycpIHtcclxuICAgICAgaWYodGhpcy5zdWJtaXR0ZWREYXRlcy5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc3BlY2lmaWNEYXRlID0gdGhpcy5zdWJtaXR0ZWREYXRlcztcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ3JhbmdlJyAmJiB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlTGlzdDtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAvLyAgIGxldCBzdGFydCA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lLnNwbGl0KCcgJyk7XHJcbiAgICAvLyAgIGxldCBlbmQgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWUuc3BsaXQoJyAnKTtcclxuICAgIC8vICAgc3RhcnREYXRlV2l0aFRpbWUgPSBzdGFydC5sZW5ndGggPiAyID8gc3RhcnRbMV0gKyAnICcgKyBzdGFydFsyXSA6IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lO1xyXG4gICAgLy8gICBlbmREYXRlV2l0aFRpbWUgPSBlbmQubGVuZ3RoID4gMiA/IGVuZFsxXSArICcgJyArIGVuZFsyXSA6IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRW5kVGltZTtcclxuICAgIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmRheWpzKHRoaXMucmFuZ2VTdGFydCkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyAnICcgKyBzdGFydERhdGVXaXRoVGltZTtcclxuICAgIC8vICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLnJhbmdlRW5kKS5mb3JtYXQoJ1lZWVktTU0tREQnKSArICcgJyArIGVuZERhdGVXaXRoVGltZTtcclxuICAgICAgXHJcbiAgICAvLyAgIGlmICh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA+IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRW5kVGltZSkge1xyXG4gICAgLy8gICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlU3RhcnRUaW1lID0gc3RhcnREYXRlV2l0aFRpbWU7XHJcbiAgICAvLyAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gZW5kRGF0ZVdpdGhUaW1lO1xyXG4gICAgLy8gICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRW5kIHRpbWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gc3RhcnQgdGltZScpO1xyXG4gICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgXHJcbiAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgdGhpcy5jb25maWdEYXRhLnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5wdWJsaXNoID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEucmVtb3ZlZFVzZXJzID0gdGhpcy5yZW1vdmVVc2VycztcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlV2Vla0RheXMgPSB0aGlzLnNlbGVjdGVkRGF5cztcclxuICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICBpbWFnZXNyYzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPicsXHJcbiAgICAgIHRpdGxlOiBgVW5zYXZlZCBjaGFuZ2VzYCxcclxuICAgICAgY29udGVudDogYERvIHlvdSB3YW50IHRvIHNhdmUgYXMgZHJhZnQ/YCxcclxuICAgICAgYnV0dG9udHlwZTogJ2RyYWZ0J1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJyB8fCB0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJykge1xyXG4gICAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IHRoaXMuem9uZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJykge1xyXG4gICAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEub3BlblRpbWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEuY2xvc2VUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hc3NpZ25lZFVzZXJzID0gdGhpcy5zb3BTdG9yZXM7XHJcbiAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxlcnQuYWxlcnRzVG8gPSB0aGlzLmVtYWlsTGlzdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFyZXMpIHtcclxuICAgICAgICB0aGlzLnBvcHVwQ291bnQgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgICAgICB0aGlzLlNvcFNlcnZpY2UuY29uZmlnVXBkYXRlKHRoaXMuY29uZmlnRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnRHJhZnQgaGFzIGJlZW4gc2F2ZWQgc3VjY2Vzc2Z1bGx5LicpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2NoZWNrbGlzdCddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIFJldXBsb2FkKCkge1xyXG4gICAgaWYodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgdGl0bGU6IGBSZXVwbG9hZCBDU1ZgLFxyXG4gICAgICBjb250ZW50OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcGxhY2UgZXhpc3RpbmcgZGF0YSBieSB1cGxvYWRpbmcgbmV3IGZpbGU/IFlvdXIgZXhpc3RpbmcgZGF0YSB3aWxsIGdldCByZXBsYWNlZCB3aXRoIHRoZSBuZXcgb25lLmAsXHJcbiAgICAgIGJ1dHRvbnR5cGU6ICdSZXVwbG9hZCdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOnRydWUsc2l6ZTonbWQnLFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudFxyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgdGhpcy5yZXVwbG9hZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgbGV0IGVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMicpO1xyXG4gICAgICAgIGVsZT8uY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIC8vIGludml0ZW5ld3VzZXIoKSB7XHJcbiAgLy8gICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gIC8vICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gIC8vICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgLy8gICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAvLyAgICAgdGl0bGU6IGBJbnZpdGUgbmV3IHVzZXJzIGFkZGVkIGluIENTVmAsXHJcbiAgLy8gICAgIGNvbnRlbnQ6IGBUaGlzIENTViBjb250YWlucyBuZXcgdXNlcnMuIEludml0ZSB1c2VycyBieSBzZW5kaW5nIG1haWwgdG8gdGhlbS4gPGJyPmAsXHJcbiAgLy8gICAgIGJ1dHRvbnR5cGU6ICdJbnZpdGUnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gIC8vICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcblxyXG4gIC8vICAgICBpZiAocmVzID09ICdjb25maXJtJykge1xyXG4gIC8vICAgICAgIC8vIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cclxuICAvLyAgICAgICAvLyAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgLy8gICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgLy8gICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgaWNvbkh0bWw6ICc8aW1nICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvY2hlY2tsaXN0LXVucHVibGlzaGVkLWljb24uc3ZnXCI+JyxcclxuICAvLyAgICAgICAvLyAgICAgICAvLyB0aXRsZVRleHQ6IGBFbWFpbCBzZW50IHN1Y2Nlc2Z1bGx5YCxcclxuICAvLyAgICAgICAvLyAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxoND5DU1YgaGFzIGJlZW4gUmV1cGxvYWRlZCBzdWNjZXNzZnVsbHkuPC9oND5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5gLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAvLyAgICAgICAvLyAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgLy8gICAgICAgLy8gICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyOiA2MDAwLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAvLyAgICAgICAvLyAgICAgICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIikudmFsKCcnKVxyXG4gIC8vICAgICAgIC8vICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgICAgLy8gICAgIC8vIHRoaXMucm91dGUubmF2aWdhdGUoWycvc29wL0NoZWNrbGlzdHMnXSk7XHJcblxyXG4gIC8vICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgIC8vIH0pXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcblxyXG4gIC8vIH1cclxuICAvLyBBZGRzdG9yZSgpIHtcclxuICAvLyAgIHRoaXMucG9wdXBDb3VudCA9IHRoaXMucG9wdXBDb3VudCArIDE7XHJcbiAgLy8gICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgLy8gICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAvLyAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gIC8vICAgICB0aXRsZTogYEludml0ZSBuZXcgdXNlcnMgYWRkZWQgaW4gQ1NWYCxcclxuICAvLyAgICAgY29udGVudDogYFRoaXMgQ1NWIGNvbnRhaW5zIG5ldyB1c2Vycy4gSW52aXRlIHVzZXJzIGJ5IHNlbmRpbmcgbWFpbCB0byB0aGVtLiA8YnI+YCxcclxuICAvLyAgICAgc3VidGl0bGU6ICdMS1NUMDA5LCBTVDMwNDUnLFxyXG4gIC8vICAgICBidXR0b250eXBlOiAnQWRkc3RvcmUnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCwge1xyXG4gIC8vICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJ1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudDtcclxuICAvLyAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcblxyXG4gIC8vICAgICBpZiAocmVzID09ICdjb25maXJtJykge1xyXG4gIC8vICAgICAgIC8vIHRoaXMuU29wU2VydmljZS5jb25maWdVcGRhdGUodGhpcy5jb25maWdEYXRhKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cclxuICAvLyAgICAgICAvLyAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgLy8gICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgLy8gICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgaWNvbkh0bWw6ICc8aW1nICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvY2hlY2tsaXN0LXVucHVibGlzaGVkLWljb24uc3ZnXCI+JyxcclxuICAvLyAgICAgICAvLyAgICAgICAvLyB0aXRsZVRleHQ6IGBFbWFpbCBzZW50IHN1Y2Nlc2Z1bGx5YCxcclxuICAvLyAgICAgICAvLyAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gIC8vICAgICAgIC8vICAgICAgIDxoND5DU1YgaGFzIGJlZW4gUmV1cGxvYWRlZCBzdWNjZXNzZnVsbHkuPC9oND5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAvLyAgICAgICA8L2Rpdj5gLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAvLyAgICAgICAvLyAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgLy8gICAgICAgLy8gICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyOiA2MDAwLFxyXG4gIC8vICAgICAgIC8vICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXHJcbiAgLy8gICAgICAgLy8gICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgLy8gICAgICAgLy8gICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAvLyAgICAgICAvLyAgICAgICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIikudmFsKCcnKVxyXG4gIC8vICAgICAgIC8vICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgICAgLy8gICAgIC8vIHRoaXMucm91dGUubmF2aWdhdGUoWycvc29wL0NoZWNrbGlzdHMnXSk7XHJcblxyXG4gIC8vICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgIC8vIH0pXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcblxyXG4gIC8vIH1cclxuICAvLyBhZGRVc2VyKCkge1xyXG4gIC8vICAgdGhpcy5hZGRVc2VyRm9ybSA9ICF0aGlzLmFkZFVzZXJGb3JtO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIC8vIGNyZWF0ZXVzZXJQb3B1cCh0eXBlOiBzdHJpbmcsIHJlY29yZDogYW55ID0gbnVsbCk6IHZvaWQge1xyXG4gIC8vICAgICBpZiAodHlwZSA9PSAndmlldycpIHtcclxuICAvLyAgICAgICB0aGlzLnBvcFVwVGl0bGUgPSBcIlZpZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZWRpdCcpIHtcclxuICAvLyAgICAgICB0aGlzLnBvcFVwVGl0bGUgPSBcIkVkaXQgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5wb3BVcFRpdGxlID0gXCJFbnRlciBOZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgICAgLy8gdGhpcy5wb3BVcFRpdGxlID0gXCJFbnRlciBOZXcgVXNlciBEZXRhaWxzXCI7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgbGV0IGRhdGEgPSB7XHJcbiAgLy8gICAgICAgcmVjb3JkOiByZWNvcmQsXHJcbiAgLy8gICAgICAgdHlwZTogdHlwZSxcclxuICAvLyAgICAgICB0aXRsZTogdGhpcy5wb3BVcFRpdGxlXHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGNvbnN0IGRpYWxvZ1JlZl9jcmVhdGVVc2VyID0gdGhpcy5kaWFsb2cub3BlbihVcGxvYWRTaW5nbGVVc2VyQ29tcG9uZW50LCB7XHJcbiAgLy8gICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1tb2RhbGJveCcsXHJcbiAgLy8gICAgICAgZGF0YTogZGF0YVxyXG4gIC8vICAgICB9KTtcclxuXHJcbiAgLy8gICAgIGRpYWxvZ1JlZl9jcmVhdGVVc2VyLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuc2hvd0ludHJvID0gZmFsc2U7XHJcbiAgLy8gICAgICAgaWYgKCFyZWNvcmQgJiYgcmVzICYmIHJlcy5kYXRhLmNvZGUgPT0gMjAwKSB7XHJcbiAgLy8gICAgICAgICBTd2FsLmZpcmUoe1xyXG4gIC8vICAgICAgICAgICBpY29uOiAnc3VjY2VzcycsXHJcbiAgLy8gICAgICAgICAgIHRleHQ6ICdUaGUgdXNlciBpbnZpdGUgaGFzIGJlZW4gc2VudCBzdWNjZXNzZnVsbHkgdG8gdGhlIHVzZXIgYW5kIGFkZGVkIHRvIHRoZSBwbGF0Zm9ybSEnLFxyXG4gIC8vICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ09LJyxcclxuICAvLyAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gIC8vICAgICAgICAgICBoZWlnaHRBdXRvOiBmYWxzZVxyXG4gIC8vICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHtcclxuICAvLyAgICAgICAgICAgICB0aGlzLnNlYXJjaFVzZXIgPSAnJ1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuYWRkVXNlckZvcm0gPSBmYWxzZTtcclxuICAvLyAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgLy8gdGhpcy5sb2FkUmVjb3JkcygwLCB0aGlzLnNpemUpXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgfSBlbHNlIGlmIChyZXMgJiYgcmVzLmRhdGEuY29kZSA9PSAyMDApIHtcclxuICAvLyAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgLy8gICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcclxuICAvLyAgICAgICAgICAgdGV4dDogJ1VzZXIgVXBkYXRlZCBTdWNjZXNzZnVsbHkhJyxcclxuICAvLyAgICAgICAgICAgaGVpZ2h0QXV0bzogZmFsc2VcclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgdGhpcy5zZWFyY2hVc2VyID0gJydcclxuICAvLyAgICAgICAgIHRoaXMuYWRkVXNlckZvcm0gPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gMTtcclxuICAvLyAgICAgICAgIC8vIHRoaXMubG9hZFJlY29yZHMoMCwgdGhpcy5zaXplKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSlcclxuICAvLyAgIH0gXHJcblxyXG5cclxuICAvLyBjcmVhdGV1c2VyUG9wdXAoKSB7XHJcbiAgLy8gICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZFNpbmdsZVVzZXJDb21wb25lbnQsIHtcclxuICAvLyAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1tb2RhbGJveCdcclxuXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcblxyXG4gIC8vICAgICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gdHJhbnNmZXJGb3JtRGF0YSgpIHtcclxuICAvLyAgIHRoaXMuU29wU2VydmljZS5zb3BEYXRhLmFzT2JzZXJ2YWJsZSgpXHJcbiAgLy8gfVxyXG4gIHNhdmVhbmRyZWRpcmVjdChpZDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgfHwgdGhpcy50eXBlID09ICdzdG9yZW9wZW5hbmRjbG9zZScpIHtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnbW9iaWxldXNhZ2VkZXRlY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IHRoaXMuem9uZXM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnc3RvcmVvcGVuYW5kY2xvc2UnKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVTdGFydFRpbWUgPSB0aGlzLmNvbmZpZ0RhdGEub3BlblRpbWU7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5jb25maWdEYXRhLmNsb3NlVGltZTtcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5hbGVydC5hbGVydHNUbyA9IHRoaXMuZW1haWxMaXN0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWdEYXRhLnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEucmVtb3ZlZFVzZXJzID0gdGhpcy5yZW1vdmVVc2VycztcclxuICAgIFxyXG4gICAgbGV0IHN0YXJ0RGF0ZVdpdGhUaW1lLCBlbmREYXRlV2l0aFRpbWU7XHJcbiAgICBpZighdGhpcy5zaG93UmFuZ2VWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPScnOyBcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgIT0gJ29uZXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlRGF0ZSA9Jyc7IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PSAnbW9udGhseScgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLm1vbnRoRGF0ZSArJyAnKyB0aGlzLm1vbnRoRGF5O1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT0gJ21vbnRobHknICYmIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09ICdzcGVjaWZpYycpIHtcclxuICAgICAgaWYodGhpcy5zdWJtaXR0ZWREYXRlcy5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc3BlY2lmaWNEYXRlID0gdGhpcy5zdWJtaXR0ZWREYXRlcztcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09ICdyYW5nZScgJiYgdGhpcy5zZWxlY3RlZERhdGVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zcGVjaWZpY0RhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWdEYXRhLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuXHJcbiAgICB0aGlzLlNvcFNlcnZpY2UuY29uZmlnVXBkYXRlKHRoaXMuY29uZmlnRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvY3JlYXRlQ2hlY2tsaXN0XCJdLCB7IHF1ZXJ5UGFyYW1zOiB7IGNoZWNrbGlzdElkOiBpZCB9IH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICB2YWxpZGF0ZVRpbWUoKSB7XHJcbiAgICBsZXQgc3RhcnRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLnN0YXJ0VGltZSwgJ0hIOm1tJylcclxuICAgIGxldCBlbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLmVuZFRpbWUsICdISDptbScpXHJcbiAgICBpZiAoIHRoaXMuc2hvd1JhbmdlVmFsdWUpIHtcclxuICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlICE9IG51bGwgJiYgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgIT0gJycgJiYgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSA9PSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKHN0YXJ0VGltZSA+IGVuZFRpbWUpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZFRpbWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdJbnZhbGlkIFNjaGVkdWxlIEVuZCBUaW1lJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkVGltZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA+IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRUaW1lID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIERhdGUnKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkVGltZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZFRpbWUgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICggc3RhcnRUaW1lID4gZW5kVGltZSkge1xyXG4gICAgICB0aGlzLnZhbGlkVGltZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ludmFsaWQgU2NoZWR1bGUgRW5kIFRpbWUnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsaWRUaW1lID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZVRpbWUoZGF0YTogYW55KSB7XHJcbiAgICBpZih0aGlzLnZhbGlkYXRlVGltZSgpKSB7XHJcbiAgICAgIGlmIChkYXRhID09ICdzdGFydCcpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZSA9IHRoaXMuZGF5anModGhpcy5zdGFydFRpbWUsICdISDptbScpLmZvcm1hdCgnaGg6bW0gQScpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVFbmRUaW1lID0gdGhpcy5kYXlqcyh0aGlzLmVuZFRpbWUsICdISDptbScpLmZvcm1hdCgnaGg6bW0gQScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFxyXG4gIH1cclxuICB1cGRhdGVTY2hlZHVsZShldmVudDphbnkpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID0gJyc7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkRGF5ID0gJzAxJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gW107XHJcbiAgICB0aGlzLnN1Ym1pdHRlZERhdGVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVMaXN0ID0gW107XHJcbiAgICB0aGlzLnNwZWNpZmljID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vbnRoRGF0ZSA9ICcnO1xyXG4gICAgdGhpcy5tb250aERheSA9ICcnO1xyXG4gICAgdGhpcy5zaG93RHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1JhbmdlVmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUgPT0gJ3JhbmdlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHx8IHRoaXMuZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlIHx8IHRoaXMuZGF5anMoKS5hZGQoMSwnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKSxlbmREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgdGhpcy5taW5FbmREYXRlID0gdGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSkuZm9ybWF0KCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydERhdGUgPSB7c3RhcnREYXRlOnRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJyksZW5kRGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpfTtcclxuICAgICAgdGhpcy5taW5TdGFydERhdGUgPSB0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgpO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdTdGFydERhdGUgPSAnJztcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW5kRGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLm1pbkVuZERhdGUgPSAnJztcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZSA9IHRoaXMuZGF5anMoKS5hZGQoMSwnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgIC8vIHRoaXMucmVmcmVzaFBpY2tlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd3ZWVrZGF5Jykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFsnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheSddO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd3ZWVrbHknKSB7XHJcbiAgICAgIGxldCB0b2RheURhdGUgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdkZGRkJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gW3RvZGF5RGF0ZV07XHJcbiAgICB9XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ21vbnRobHknKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID0gJ2RheSc7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdERCcpO1xyXG4gICAgfVxyXG4gICAgaWYoWydkYWlseScsJ29uZXRpbWUnXS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUpIHx8IChldmVudC50YXJnZXQudmFsdWUgPT0gJ21vbnRobHknICYmIFsnZGF5JywnZGF0ZSddLmluY2x1ZGVzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwKSkgKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93T25jZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXBlYXRUeXBlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09ICdkYWlseScgPyAnRGF5JyA6IFsnd2Vla2x5Jywnd2Vla2RheSddLmluY2x1ZGVzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSkgPyAnV2VlaycgOiB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGUgPT0gJ21vbnRobHknID8gJ01vbnRoJyA6ICcnO1xyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVGltZSgpO1xyXG4gIH1cclxuICBcclxuICBuYXZpZ2F0ZVRvQ29udHJvbENlbnRlcigpIHtcclxuICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvY29udHJvbGNlbnRlci90ZW1wbGF0ZXZpZXcnXSx7IHF1ZXJ5UGFyYW1zOiB7IHNvdXJjZTogJ2NjJyB9IH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkU3RvcmVDb21wb25lbnQoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhTdG9yZUNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJyBcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgIGNoZWNrbGlzdElkOiB0aGlzLmNoZWNrbGlzdElkLFxyXG4gICAgICBvYmo6dGhpcy5vYmpcclxuICAgIH07XHJcbiAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICBpZihyZXMpIHtcclxuICAgICAgICB0aGlzLnVzZXJEYXRhID0gcmVzO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVVc2VyRGV0YWlscyh0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdG9nZ2xlRHJvcERvd24oKSB7XHJcbiAgICB0aGlzLnNob3dEcm9wRG93biA9ICF0aGlzLnNob3dEcm9wRG93bjtcclxuICB9XHJcbiAgc2VsZWN0RGF0ZShkYXRlOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZS5pbmNsdWRlcyhkYXRlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlLmZpbHRlcigoZGF5OmFueSkgPT4gZGF5ICE9PSBkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKCF0aGlzLnNlbGVjdGVkRGF0ZS5pbmNsdWRlcyhkYXRlKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnB1c2goZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3VibWl0RGF0ZSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkRGF0ZXMgPSBbLi4udGhpcy5zZWxlY3RlZERhdGVdO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQmFkZ2UoZGF0ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZERhdGVzID0gdGhpcy5zdWJtaXR0ZWREYXRlcy5maWx0ZXIoZCA9PiBkICE9PSBkYXRlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5zZWxlY3RlZERhdGUuZmlsdGVyKChkOmFueSkgPT4gZCAhPT0gZGF0ZSk7XHJcbiAgfVxyXG4gIGdldERhdGVXaXRoU3VmZml4KGRhdGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoZGF0ZSA9PSAxIHx8IGRhdGUgPT0gMzEgfHwgZGF0ZSA9PSAyMSkge1xyXG4gICAgICByZXR1cm4gZGF0ZSArICdzdCc7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUgPT0gMiB8fCBkYXRlID09IDIyKSB7XHJcbiAgICAgIHJldHVybiBkYXRlICsgJ25kJztcclxuICAgIH0gZWxzZSBpZiAoZGF0ZSA9PSAzIHx8IGRhdGUgPT0gMjMpIHtcclxuICAgICAgcmV0dXJuIGRhdGUgKyAncmQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGRhdGUgKyAndGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wRG93bigpIHtcclxuICAgIHRoaXMuc2hvd0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNb250aCh0eXBlOmFueSkge1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayA9ICcnO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWREYXRlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBbXTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNwZWNpZmljRGF0ZSA9IFtdO1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPSB0eXBlO1xyXG4gICAgdGhpcy5tb250aERhdGUgPSAnJ1xyXG4gICAgdGhpcy5tb250aERheSA9ICcnXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93T25jZSA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RhdGUnKSB7XHJcbiAgICAgIGxldCBkYXRlV2VlayA9IGdldFdlZWtOdW1iZXIodGhpcy5kYXlqcygpKTtcclxuICAgICAgdGhpcy5tb250aERhdGUgPSBkYXRlV2Vlay50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLm1vbnRoRGF5ID0gdGhpcy5kYXlqcygpLmZvcm1hdCgnZGRkZCcpOyAgICAgIFxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT0gJ2RheScpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgPSB0aGlzLmRheWpzKCkuZm9ybWF0KCdERCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlUmVwZWF0RGF5KCkge1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZERheTtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWREYXkgPSB2YWx1ZSA9PSBcIjAwXCIgfHwgdmFsdWUgPT0gJycgPyAnMDEnIDogdmFsdWU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNb250aFZhbHVlKCkge1xyXG4gICAgbGV0IGRhdGVWYWx1ZSA9ICcnXHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnMScpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ0ZpcnN0J1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb250aERhdGUgPT0gJzInKSB7XHJcbiAgICAgIGRhdGVWYWx1ZSA9ICdTZWNvbmQnXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnMycpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ1RoaXJkJ1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb250aERhdGUgPT0gJzQnKSB7XHJcbiAgICAgIGRhdGVWYWx1ZSA9ICdGb3VydGgnXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm1vbnRoRGF0ZSA9PSAnNScpIHtcclxuICAgICAgZGF0ZVZhbHVlID0gJ0xhc3QnXHJcbiAgICB9XHJcbiAgICByZXR1cm4gKCdvbiB0aGUgJyArIGRhdGVWYWx1ZSArJyAnK3RoaXMubW9udGhEYXkpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTcGVjaWZpY1ZhbHVlKCkge1xyXG4gICAgbGV0IHZhbHVlOmFueSA9IFtdO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWREYXRlcy5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICBpdGVtID0gKGl0ZW0gPT0gMSB8fCBpdGVtID09IDMxIHx8IGl0ZW0gPT0gMjEpID8gaXRlbSArJyBzdCcgOiAoaXRlbSA9PSAyIHx8IGl0ZW0gPT0gMjIpID8gaXRlbSArJyBuZCcgOiAoaXRlbSA9PSAzIHx8IGl0ZW0gPT0gMjMgKT8gaXRlbSArICdyZCcgOiBpdGVtICsnIHRoJztcclxuICAgICAgdmFsdWUucHVzaChpdGVtIClcclxuICAgIH0pXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVEYXRlKGRhdGU6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QuZmlsdGVyKChlbGU6YW55KSA9PiBlbGUgIT0gZGF0ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2VkdWxlRGF0ZSgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUnLHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSlcclxuICAgIGlmKHRoaXMuY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPSAnJyAmJiB0aGlzLmNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGVWYWx1ZShldmVudDphbnkpIHtcclxuICAgIGlmKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZSA9IHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgfHwgdGhpcy5kYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlID0gJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnU3RhcnREYXRlID0gJyc7XHJcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gJyc7XHJcbiAgICB0aGlzLm1pbkRhdGU9Jyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhcnREYXRlID0ge3N0YXJ0RGF0ZTp0aGlzLmRheWpzKHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpLGVuZERhdGU6dGhpcy5kYXlqcyh0aGlzLmNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKX07XHJcbiAgICB0aGlzLm1pblN0YXJ0RGF0ZSA9IHRoaXMuZGF5anModGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSkuZm9ybWF0KCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTcGVjaWZpYyhldmVudDphbnkpIHtcclxuICAgIGlmKCFldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZXBpY2tlclJlZnJlc2goKXtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gJyc7XHJcbiAgICB0aGlzLm1pbkVuZERhdGUgPSAnJztcclxuICB9XHJcblxyXG4gIHNlbGVjdFNwZWNpZmljRGF0ZShldmVudDphbnkpIHtcclxuICAgIHRoaXMuc2hvd0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUxpc3QgPSBldmVudDtcclxuICB9XHJcblxyXG4gICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXCIuZHJvcGRvd24tY2xvc2VcIik7XHJcbiAgICBjb25zb2xlLmxvZyhjbGlja2VkSW5zaWRlKTtcclxuICAgIFxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wRG93bigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50VXNlcigpIHtcclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRDbGllbnRVc2VyKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFVzZXJzID0gcmVzLmRhdGEubWFwKChpdGVtOmFueSkgPT4ge3JldHVybiB7bmFtZTppdGVtLnVzZXJOYW1lLHZhbHVlOml0ZW0uZW1haWx9fSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5hbGVydFVzZXJzKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmFsZXJ0VXNlcnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRab25lTGlzdCgpIHtcclxuICAgIHRoaXMuU29wU2VydmljZS5nZXRab25lTGlzdCh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuem9uZUxpc3QgPSByZXMuZGF0YS5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtuYW1lOml0ZW0uem9uZSx2YWx1ZTppdGVtLnpvbmV9fSApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuem9uZUxpc3QgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbGVydChldmVudDphbnkpIHtcclxuICAgIHRoaXMuY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LmFsZXJ0c1RvID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVab25lKGV2ZW50OmFueSkge1xyXG4gICAgdGhpcy5jb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuZGV0ZWN0aW9uQXJlYSA9IGV2ZW50O1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0V2Vla051bWJlcihkYXRlOiBhbnkpIHtcclxuICBsZXQgZGF5cyA9IFtdO1xyXG4gIGxldCBkYXRlRGF0ID0gZGF5anMoIGRhdGUgKS5zdGFydE9mKCAnbW9udGgnICk7XHJcblxyXG4gIHdoaWxlICggZGF0ZURhdC5tb250aCgpID09PSBkYXRlLm1vbnRoKCkgKSB7XHJcbiAgICBpZiAoIGRhdGVEYXQuZm9ybWF0KCAnZGRkZCcgKSA9PT0gIGRhdGUuZm9ybWF0KCAnZGRkZCcgKSkge1xyXG4gICAgICBkYXlzLnB1c2goIGRhdGVEYXQuZm9ybWF0KCAnWVlZWS1NTS1ERCcgKSApO1xyXG4gICAgfVxyXG4gICAgZGF0ZURhdCA9IGRhdGVEYXQuYWRkKCAxLCAnZGF5JyApO1xyXG4gIH1cclxuXHJcbiAgbGV0IGZpbmRJbmRleCA9IGRheXMuZmluZEluZGV4KChpdGVtOmFueSkgPT4gaXRlbSA9PSBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpKVxyXG4gIHJldHVybiAoZmluZEluZGV4ICsgMSk7XHJcblxyXG59IiwiPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImNhcmQgcm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBiLTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gdy04MDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgbWItNCB3LTEwMFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiY2hlY2tsaXN0IHBsYWluLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ2hlY2tsaXN0IE5hbWVcIiBbdmFsdWVdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY2hlY2tMaXN0TmFtZVwiIHJlYWRvbmx5PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgdy0xMDBcIj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImNoZWNrbGlzdERlc2NyaXB0aW9uIHBsYWluLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFjZWhvbGRlcj1cIkVudGVyIENoZWNrbGlzdCBEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY2hlY2tMaXN0RGVzY3JpcHRpb25cIiByZWFkb25seT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHVibGlzaCgpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+UHVibGlzaDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZWRyYWZ0KClcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5TYXZlIGFzIERyYWZ0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2hlY2tjb25maWdjb250IG10LTJcIiAqbmdJZj1cImNvbmZpZ0RhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTMgbGVmdGNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcHgtNyBweS03XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1sZWZ0aGVhZGluZzFcIj57e2NvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNoZWNrTGlzdE5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9iai5jaGVja0xpc3RJZFwiIGNsYXNzPVwic2VjdGlvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uczsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy00IGZ3LWJvbGQgc2VjdGlvblwiPnt7c2VjdGlvbi5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImFjY29yZGlhbihpKVwiIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3cgIT09IGl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3c9PT1pXCIgY2xhc3M9XCJxdWVzdGlvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbi5xdWVzdGlvbnNcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zO2xldCBqPWluZGV4O1wiIGNsYXNzPVwibXktMiBxLWJ0blwiIGNka0RyYWc+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRhYmxlY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3txdWVzdGlvbi5xbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIHNlY3Rpb24tbGVmdGhlYWRpbmcxIG10LTZcIj5TY2hlZHVsZTwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgfHwgdHlwZSA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1wiIGNsYXNzPVwibXQtNCBteC0yIHN1YlwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBteC00XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj57e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVN0YXJ0VGltZX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZUVuZFRpbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiWydjdXN0b20nXS5pbmNsdWRlcyh0eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBteC0yIHN1YlwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjMgMjNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjQxNDQ4IDQuNTIzMDNDOC42OTUxOCA0LjgwMzcxIDguNjk1MTggNS4yNTg4IDguNDE0NDggNS41Mzk0OEw1LjUzOTQ4IDguNDE0NDhDNS4yNTg4IDguNjk1MTggNC44MDM3MSA4LjY5NTE4IDQuNTIzMDMgOC40MTQ0OEwzLjA4NTUzIDYuOTc2OThDMi44MDQ4MiA2LjY5NjMgMi44MDQ4MiA2LjI0MTIxIDMuMDg1NTMgNS45NjA1M0MzLjM2NjIxIDUuNjc5ODIgMy44MjEzIDUuNjc5ODIgNC4xMDE5OCA1Ljk2MDUzTDUuMDMxMjUgNi44ODk3OEw3LjM5ODAzIDQuNTIzMDNDNy42Nzg3MSA0LjI0MjMyIDguMTMzOCA0LjI0MjMyIDguNDE0NDggNC41MjMwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjQxNDQ4IDExLjcxMDVDOC42OTUxOCAxMS45OTEyIDguNjk1MTggMTIuNDQ2MyA4LjQxNDQ4IDEyLjcyN0w1LjUzOTQ4IDE1LjYwMkM1LjI1ODggMTUuODgyNiA0LjgwMzcxIDE1Ljg4MjYgNC41MjMwMyAxNS42MDJMMy4wODU1MyAxNC4xNjQ1QzIuODA0ODIgMTMuODgzOCAyLjgwNDgyIDEzLjQyODcgMy4wODU1MyAxMy4xNDc5QzMuMzY2MjEgMTIuODY3MyAzLjgyMTMgMTIuODY3MyA0LjEwMTk4IDEzLjE0NzlMNS4wMzEyNSAxNC4wNzczTDcuMzk4MDMgMTEuNzEwNUM3LjY3ODcxIDExLjQyOTkgOC4xMzM4IDExLjQyOTkgOC40MTQ0OCAxMS43MTA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjA2MjUgNi40Njg3NUMxMC4wNjI1IDYuMDcxOCAxMC4zODQ0IDUuNzUgMTAuNzgxMiA1Ljc1SDE1LjA5MzhDMTUuNDkwNiA1Ljc1IDE1LjgxMjUgNi4wNzE4IDE1LjgxMjUgNi40Njg3NUMxNS44MTI1IDYuODY1NyAxNS40OTA2IDcuMTg3NSAxNS4wOTM4IDcuMTg3NUgxMC43ODEyQzEwLjM4NDQgNy4xODc1IDEwLjA2MjUgNi44NjU3IDEwLjA2MjUgNi40Njg3NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjU5Mzc1IDBDMS42MDg5OCAwIDAgMS42MDg5OCAwIDMuNTkzNzVWMTYuNTMxMkMwIDE4LjUxNiAxLjYwODk4IDIwLjEyNSAzLjU5Mzc1IDIwLjEyNUg5LjQ4NzA4QzkuMjU0MjkgMTkuNjY5NiA5LjA2NDM2IDE5LjE4ODYgOC45MjI2MSAxOC42ODc1SDMuNTkzNzVDMi40MDI4OCAxOC42ODc1IDEuNDM3NSAxNy43MjIxIDEuNDM3NSAxNi41MzEyVjMuNTkzNzVDMS40Mzc1IDIuNDAyODggMi40MDI4OCAxLjQzNzUgMy41OTM3NSAxLjQzNzVIMTYuNTMxMkMxNy43MjIxIDEuNDM3NSAxOC42ODc1IDIuNDAyODggMTguNjg3NSAzLjU5Mzc1VjguOTIyNjFDMTkuMTg4NiA5LjA2NDM2IDE5LjY2OTYgOS4yNTQyOSAyMC4xMjUgOS40ODcwOFYzLjU5Mzc1QzIwLjEyNSAxLjYwODk4IDE4LjUxNiAwIDE2LjUzMTIgMEgzLjU5Mzc1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjUzMTMgMjNDMjAuMTAzOSAyMyAyMyAyMC4xMDM5IDIzIDE2LjUzMTNDMjMgMTIuOTU4NiAyMC4xMDM5IDEwLjA2MjUgMTYuNTMxMyAxMC4wNjI1QzEyLjk1ODYgMTAuMDYyNSAxMC4wNjI1IDEyLjk1ODYgMTAuMDYyNSAxNi41MzEzQzEwLjA2MjUgMjAuMTAzOSAxMi45NTg2IDIzIDE2LjUzMTMgMjNaTTE2LjUzMTMgMTIuOTM3NUMxNi45MjgxIDEyLjkzNzUgMTcuMjUgMTMuMjU5NCAxNy4yNSAxMy42NTYzVjE1LjgxMjVIMTkuNDA2M0MxOS44MDMxIDE1LjgxMjUgMjAuMTI1IDE2LjEzNDQgMjAuMTI1IDE2LjUzMTNDMjAuMTI1IDE2LjkyODEgMTkuODAzMSAxNy4yNSAxOS40MDYzIDE3LjI1SDE3LjI1VjE5LjQwNjNDMTcuMjUgMTkuODAzMSAxNi45MjgxIDIwLjEyNSAxNi41MzEzIDIwLjEyNUMxNi4xMzQ0IDIwLjEyNSAxNS44MTI1IDE5LjgwMzEgMTUuODEyNSAxOS40MDYzVjE3LjI1SDEzLjY1NjNDMTMuMjU5NCAxNy4yNSAxMi45Mzc1IDE2LjkyODEgMTIuOTM3NSAxNi41MzEzQzEyLjkzNzUgMTYuMTM0NCAxMy4yNTk0IDE1LjgxMjUgMTMuNjU2MyAxNS44MTI1SDE1LjgxMjVWMTMuNjU2M0MxNS44MTI1IDEzLjI1OTQgMTYuMTM0NCAxMi45Mzc1IDE2LjUzMTMgMTIuOTM3NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+e3tjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ29uZXRpbWUnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT25lLXRpbWUnIDogKGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlIHwgdGl0bGVjYXNlKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj57e2NvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlU3RhcnRUaW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVN0YXJ0VGltZS5zdWJzdHIoLTgpIDogY29uZmlnRGF0YT8ub3BlblRpbWV9fSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVFbmRUaW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZUVuZFRpbWUuc3Vic3RyKC04KSA6IGNvbmZpZ0RhdGE/LmNsb3NlVGltZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBteC0yIHN1YlwiICpuZ0lmPVwic2hvd1JhbmdlVmFsdWVcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgMlY2TTggMlY2TTMgMTBIMjFNNSA0SDE5QzIwLjEwNDYgNCAyMSA0Ljg5NTQzIDIxIDZWMjBDMjEgMjEuMTA0NiAyMC4xMDQ2IDIyIDE5IDIySDVDMy44OTU0MyAyMiAzIDIxLjEwNDYgMyAyMFY2QzMgNC44OTU0MyAzLjg5NTQzIDQgNSA0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIG1zLTJcIj48c3Bhbj57e2NvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZX19PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPT0gJycgJiYgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSAhPT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB7e2NvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGV9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMCBlZGl0cXVlc1wiICpuZ0lmPVwiWydjdXN0b20nXS5pbmNsdWRlcyh0eXBlKSAmJiAhZGlzYWJsZWRRdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNhdmVhbmRyZWRpcmVjdChvYmouY2hlY2tMaXN0SWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRhc2hlZCBidG4gYnRuLWxpZ2h0IHVwbG9hZFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC42NjY2IDIuNTAwOUMxNC44ODU1IDIuMjgyMDMgMTUuMTQ1MyAyLjEwODQyIDE1LjQzMTMgMS45ODk5NkMxNS43MTczIDEuODcxNTEgMTYuMDIzOCAxLjgxMDU1IDE2LjMzMzMgMS44MTA1NUMxNi42NDI4IDEuODEwNTUgMTYuOTQ5MyAxLjg3MTUxIDE3LjIzNTMgMS45ODk5NkMxNy41MjEzIDIuMTA4NDIgMTcuNzgxMSAyLjI4MjAzIDE4IDIuNTAwOUMxOC4yMTg4IDIuNzE5NzcgMTguMzkyNCAyLjk3OTYxIDE4LjUxMDkgMy4yNjU1OEMxOC42Mjk0IDMuNTUxNTQgMTguNjkwMyAzLjg1ODA0IDE4LjY5MDMgNC4xNjc1N0MxOC42OTAzIDQuNDc3MSAxOC42Mjk0IDQuNzgzNiAxOC41MTA5IDUuMDY5NTZDMTguMzkyNCA1LjM1NTUzIDE4LjIxODggNS42MTUzNyAxOCA1LjgzNDI0TDYuNzQ5OTYgMTcuMDg0MkwyLjE2NjYzIDE4LjMzNDJMMy40MTY2MyAxMy43NTA5TDE0LjY2NjYgMi41MDA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwidXBsb2FkdGV4dFwiPkVkaXQgUXVlc3Rpb25zPC9zcGFuPjwvYT5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiWyd1bmlmb3JtZGV0ZWN0aW9uJywnbW9iaWxldXNhZ2VkZXRlY3Rpb24nXS5pbmNsdWRlcyh0eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIHNlY3Rpb24tbGVmdGhlYWRpbmcxXCI+QWxlcnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTYgbXgtNCBzdWJcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiWyd1bmlmb3JtZGV0ZWN0aW9uJywnbW9iaWxldXNhZ2VkZXRlY3Rpb24nXS5pbmNsdWRlcyh0eXBlKVwiIGNsYXNzPVwibXgtNCBtdC00IHN1YlwiPmlmIHVzYWdlIGV4Y2VlZHNcclxuICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHM/LmFsZXJ0Py51c2FnZUV4Y2VlZHN9fVxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ3N0b3Jlb3BlbmFuZGNsb3NlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIHNlY3Rpb24tbGVmdGhlYWRpbmcxXCI+QWxlcnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtNCBzdWJcIj5TZW5kIGVtYWlsIGV2ZXJ5ZGF5IHRvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxoMyAqbmdJZj1cIlsndW5pZm9ybWRldGVjdGlvbicsJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ10uaW5jbHVkZXModHlwZSlcIiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgc2VjdGlvbi1sZWZ0aGVhZGluZzEgbXQtNFwiPkRldGVjdGlvbiBBcmVhczwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbXgtMiBzdWJcIj48c3BhbiAqbmdGb3I9XCJsZXQgem9uZSBvZiBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5kZXRlY3Rpb25BcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgbXgtMiBtdC00IGJhZGdlLWxpZ2h0IGNoZWNrbGlzdGxhYmVsIGZzLWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia2ktZHVvdG9uZSBraS1hcnJvdy11cCBjaGVja2xpc3R0ZXh0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t6b25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtOVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWZsdXNoIGgteGwtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmdcIj5TY2hlZHVsZTxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg3NF82NjE5NSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMTAuNjY3M1Y4LjAwMDY1TTguMDAwMTYgNS4zMzM5OEg4LjAwNjgzTTE0LjY2NjggOC4wMDA2NUMxNC42NjY4IDExLjY4MjYgMTEuNjgyMSAxNC42NjczIDguMDAwMTYgMTQuNjY3M0M0LjMxODI2IDE0LjY2NzMgMS4zMzM1IDExLjY4MjYgMS4zMzM1IDguMDAwNjVDMS4zMzM1IDQuMzE4NzUgNC4zMTgyNiAxLjMzMzk4IDguMDAwMTYgMS4zMzM5OEMxMS42ODIxIDEuMzMzOTggMTQuNjY2OCA0LjMxODc1IDE0LjY2NjggOC4wMDA2NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xODc0XzY2MTk1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJbJ3VuaWZvcm1kZXRlY3Rpb24nLCdtb2JpbGV1c2FnZWRldGVjdGlvbiddLmluY2x1ZGVzKHR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBtdC0yIG14LTRcIj5Gcm9tPC9zcGFuPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIGZsYXRwaWNrci1pbnB1dCB3LTIwMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVGltZSgnc3RhcnQnKVwiIFsobmdNb2RlbCldPVwic3RhcnRUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2V0IHN0b3JlIG9wZW4gdGltZVwiIG5hbWU9XCJkdWVfZGF0ZVwiIHR5cGU9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBtdC0zIG14LTRcIj5Ubzwvc3Bhbj4mbmJzcDsmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVRpbWUoJ2VuZCcpXCIgWyhuZ01vZGVsKV09XCJlbmRUaW1lXCIgcGxhY2Vob2xkZXI9XCJTZXQgc3RvcmUgb3BlbiB0aW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkdWVfZGF0ZVwiIHR5cGU9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvciBtdC04XCI+PC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnY3VzdG9tJ10uaW5jbHVkZXModHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTYgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtNiBzdWJcIj5Gb3I8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1sZyBzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIG5nLXByaXN0aW5lIG5nLXZhbGlkIG5nLXRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2NoZWR1bGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib25ldGltZVwiPkRvZXMgTm90IFJlcGVhdDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwid2Vla2RheVwiPiBFdmVyeSBXZWVrZGF5IChNb24gLSBGcmkpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkYWlseVwiPkRhaWx5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ3ZWVrbHlcIj5XZWVrbHk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbnRobHlcIj5Nb250aGx5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJyYW5nZVwiPkN1c3RvbSBSYW5nZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXQtMyBteC0yXCI+QXQ8L3NwYW4+Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVGltZSgnc3RhcnQnKVwiIFsobmdNb2RlbCldPVwic3RhcnRUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgc3RvcmUgb3BlbiB0aW1lXCIgbmFtZT1cImR1ZV9kYXRlXCIgdHlwZT1cInRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViIG10LTMgbXMtNVwiPkVuZHM8L3NwYW4+Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0yMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVGltZSgnZW5kJylcIiBbKG5nTW9kZWwpXT1cImVuZFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNldCBzdG9yZSBvcGVuIHRpbWVcIiBuYW1lPVwiZHVlX2RhdGVcIiB0eXBlPVwidGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nXCI+Q2hlY2tsaXN0IENvbmZpZ3VyYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PT0gJ29uZXRpbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1sZy0xMiBkLWZsZXggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXQtM1wiPk9uY2UgT248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHB4LTQgcGUtM1wiIGlkPVwiZGF0ZWNsYXNzXCIgZGF0YS1rdC1kYXRlcmFuZ2VwaWNrZXI9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1kYXRlcmFuZ2VwaWNrZXItb3BlbnM9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ4LWRhdGUtcmFuZ2UgZm9ybS1jb250cm9sIHBzLTE0XCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBuZ3hEYXRlcmFuZ2VwaWNrZXJNZCBbc2luZ2xlRGF0ZVBpY2tlcl09XCJ0cnVlXCIgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3BzXT1cIidkb3duJ1wiIFtvcGVuc109XCIncmlnaHQnXCIgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIiBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxdPVwidHJ1ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlc1wiIFthdXRvQXBwbHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZVJhbmdlU3RhcnQoJGV2ZW50KVwiIG5hbWU9XCJkYXRlcmFuZ2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlICE9PSAnb25ldGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJyYW5nZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbmctdmFsaWQgbmctZGlydHkgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1JhbmdlVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ3JhbmdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRGF0ZVZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmFuZ2VEYXRlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGNoZWNrbGlzdHRleHQgbXMtMlwiPlNldCBkZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgcmFuZ2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1sZy0xMiBkLWZsZXggbXQtNVwiICpuZ0lmPVwic2hvd1JhbmdlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViIG10LTNcIj5TdGFydHMgZnJvbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiBbbmdDbGFzc109XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICdyYW5nZScgPyAncHMtMTAnIDogJ3B4LTQgcGUtMydcIiBpZD1cImRhdGVjbGFzc1wiIGRhdGEta3QtZGF0ZXJhbmdlcGlja2VyPVwidHJ1ZVwiIGRhdGEta3QtZGF0ZXJhbmdlcGlja2VyLW9wZW5zPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlRGF0ZVBpY2tlcl09XCJ0cnVlXCIgW21pbkRhdGVdPVwibWluU3RhcnREYXRlXCIgW2Ryb3BzXT1cIidkb3duJ1wiIFtvcGVuc109XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIiBbc2hvd0NhbmNlbF09XCJ0cnVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RhcnREYXRlXCIgW2F1dG9BcHBseV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlUmFuZ2VTdGFydCgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXQtOCBuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlICE9PSAncmFuZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YlwiPlJlcGVhdHMgZXZlcnk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnYtcm93IG1iLTUgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCB3LTEwMHB4IG5nLXByaXN0aW5lIG5nLWludmFsaWQgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWREYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCIgbWluPVwiMVwiIChjaGFuZ2UpPVwidXBkYXRlUmVwZWF0RGF5KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IG1iLTUgbXgtMiBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCB3LTEwMHB4IG5nLXByaXN0aW5lIG5nLWludmFsaWQgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVwZWF0VHlwZVwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICdtb250aGx5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvbnRTaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cImRheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09PSAnZGF5J1wiIChjaGFuZ2UpPVwidXBkYXRlTW9udGgoJ2RheScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9yPVwiaW5saW5lUmFkaW8xXCI+T24gRGF5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdi1yb3cgbWItNSBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIHctMTAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCAhPT0gJ2RheScgPyAnZGlzYWJsZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vla1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgIT09ICdkYXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aD1cIjJcIiAoaW5wdXQpPVwidmFsaWRhdGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvbnRTaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cImRheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwID09PSAnZGF0ZSdcIiAoY2hhbmdlKT1cInVwZGF0ZU1vbnRoKCdkYXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBmb3I9XCJpbmxpbmVSYWRpbzFcIj5PbiB0aGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ2LXJvdyBtYi01IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3QtbGcgc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSBuZy1wcmlzdGluZSBuZy12YWxpZCBuZy10b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9udGhEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCI+IEZpcnN0IDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjJcIj4gU2Vjb25kIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjNcIj4gVGhpcmQ8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI0XCI+IEZvdXJ0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj4gTGFzdDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IG1iLTUgbXgtMiBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LWxnIHNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUgbmctcHJpc3RpbmUgbmctdmFsaWQgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vbnRoRGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTdW5kYXlcIj4gU3VuZGF5IDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk1vbmRheVwiPiBNb25kYXkgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiVHVlc2RheVwiPiBUdWVzZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiV2VkbmVzZGF5XCI+IFdlZG5lc2RheTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlRodXJzZGF5XCI+IFRodXJzZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRnJpZGF5XCI+RnJpZGF5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiU2F0dXJkYXlcIj4gU2F0dXJkYXk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb250U2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJkYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9PT0gJ3NwZWNpZmljJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU1vbnRoKCdzcGVjaWZpYycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9yPVwiaW5saW5lUmFkaW8xXCI+T24gU3BlY2lmaWMgRGF0ZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZURyb3BEb3duKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTE0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wRG93bigpXCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSAnc3BlY2lmaWMnXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgY3VzdG9tLWRyb3Bkb3duLW1lbnUgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Ryb3BEb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIG1iLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIGRhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rIGJ0biB3ZWVrc3R5bGVkYXRlIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWNlbnRlciByb3VuZGVkLXBpbGwgbWluLXctMzVweCBweS0yIHB4LTMgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkRGF0ZS5pbmNsdWRlcyhkYXRlKSA/ICdhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidGFiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWxsc3R5bGVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXREYXRlKCk7c2hvd0Ryb3BEb3duPSBmYWxzZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcHktMyBiYWRnZS1zcGVjaWZpY2RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTMgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXRlIG9mIHN1Ym1pdHRlZERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1saWdodCBjaGVja2xpc3R0ZXh0IG1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVXaXRoU3VmZml4KGRhdGUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlQmFkZ2UoZGF0ZSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ3dlZWtkYXknLCd3ZWVrbHknXS5pbmNsdWRlcyhjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIGQtZmxleCBmbGV4LW5vd3JhcCBtYi0zXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbWUtMVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIihjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICd3ZWVrbHknIHx8IChjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICd3ZWVrZGF5JyAmJiAhWydTdW5kYXknLCdTYXR1cmRheSddLmluY2x1ZGVzKGRheSkpKSA/IHNldERheShkYXkpIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgYnRuIHdlZWtzdHlsZSBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jZW50ZXIgcm91bmRlZC1waWxsIG1pbi13LTQ1cHggbWUtMiBweS00IHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICd3ZWVrZGF5JyAmJiBbJ1N1bmRheScsJ1NhdHVyZGF5J10uaW5jbHVkZXMoZGF5KSkgPyAnY3Vyc29yLWRlZmF1bHQnIDogc2VsZWN0ZWREYXlzLmluY2x1ZGVzKGRheSkgPyAnc2VsZWN0RGF5JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRhYlwiIGFyaWEtc2VsZWN0ZWQ9XCJmYWxzZVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpbGxzdHlsZVwiPnt7IGRheVswXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAncmFuZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbmctdmFsaWQgbmctZGlydHkgbmctdG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3BlY2lmaWNcIiAoY2hhbmdlKT1cInVwZGF0ZVNwZWNpZmljKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBjaGVja2xpc3R0ZXh0IG1zLTJcIj5PbiBTcGVjaWZpY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC00IHBlLTMgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcERvd24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jbG9zZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIHctMzAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXQgcHMtMTRcIiAoY2xpY2spPVwidG9nZ2xlRHJvcERvd24oKVwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzcGVjaWZpY1wiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgY3VzdG9tLWRyb3Bkb3duLW1lbnUgdy0xMDBcIiAqbmdJZj1cInNob3dEcm9wRG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLW11bHRpLWRhdGUtZGF0ZXBpY2tlciAoc2VsZWN0ZWREYXRlcyk9XCJzZWxlY3RTcGVjaWZpY0RhdGUoJGV2ZW50KVwiIFtwcmVkZWZpbmVkRGF0ZXNdPVwic2VsZWN0ZWREYXRlTGlzdFwiIFtzdGFydERhdGVdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ1N0YXJ0RGF0ZVwiIFtlbmREYXRlXT1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlXCI+PC9saWItbXVsdGktZGF0ZS1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBweS0zIGJhZGdlLXNwZWNpZmljZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTMgbXMtNSBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXRlIG9mIHNlbGVjdGVkRGF0ZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1saWdodCBjaGVja2xpc3R0ZXh0IG1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZURhdGUoZGF0ZSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhc2hvd1JhbmdlVmFsdWUgfHwgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAnb25ldGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiBbbmdDbGFzc109XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICdyYW5nZScgPyAnbXQtNCcgOiAnbXQtMidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJcIj5FbmRzIE9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiIGlkPVwiZGF0ZWNsYXNzXCIgW25nQ2xhc3NdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlID09PSAncmFuZ2UnID8gJ3BzLTknIDogJ3B4LTQgcGUtMydcIiBkYXRhLWt0LWRhdGVyYW5nZXBpY2tlcj1cInRydWVcIiBkYXRhLWt0LWRhdGVyYW5nZXBpY2tlci1vcGVucz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZURhdGVQaWNrZXJdPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pbkVuZERhdGVcIiBbZHJvcHNdPVwiJ2Rvd24nXCIgW29wZW5zXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIiBbc2hvd0NhbmNlbF09XCJ0cnVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVuZERhdGVcIiBbYXV0b0FwcGx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZVJhbmdlRW5kKCRldmVudClcIiBuYW1lPVwiZGF0ZXJhbmdlXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByZW1vdmUgY3Vyc29yLXBvaW50ZXIgbXMtNFwiIChjbGljayk9XCJvbkRhdGVwaWNrZXJSZWZyZXNoKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGUgIT09ICcnICYmIGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5jb25maWdFbmREYXRlICE9PSBudWxsICYmIGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSAhPT0ncmFuZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ29uZXRpbWUnXCI+T2NjdXJzIG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXkge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlRGF0ZSB8IGRhdGU6J2RkIE1NTSBZWVlZJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiWyd3ZWVrZGF5Jywnd2Vla2x5J10uaW5jbHVkZXMoY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSlcIj5PY2N1cnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlcnkge3soY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5ICE9PScwMScpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IDogJyd9fSB3ZWVrPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5ICE9PSAwMVwiPnM8L3NwYW4+IG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWREYXlzLnRvU3RyaW5nKCl9fTxzcGFuICpuZ0lmPVwic2hvd1JhbmdlVmFsdWVcIj4gc3RhcnRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fSA8c3BhbiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZVwiPnVudGlse3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ2RhaWx5J1wiPk9jY3VycyBldmVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXk/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09ICcwMScpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IDogJyd9fSBkYXk8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09IDAxXCI+czwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UmFuZ2VWYWx1ZVwiPiBzdGFydGluZyB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnU3RhcnREYXRlIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6J2RkIE1NTSBZWVlZJ319IDxzcGFuICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlIFwiPnVudGlse3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgdXNlclwiICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZSA9PT0gJ21vbnRobHknXCI+T2NjdXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZERheT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZERheSAhPT0gJzAxJykgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgOiAnJ319IG1vbnRoPHNwYW4gKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlUmVwZWF0ZWREYXkgIT09IDAxXCI+cyA8L3NwYW4+e3soY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCA9PT0gJ2RheScpID8gKCdvbiBkYXkgJyArIGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhXZWVrKSA6IGNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoU2V0dXAgPT09ICdkYXRlJyA/IHVwZGF0ZU1vbnRoVmFsdWUoKTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3BlY2lmaWNWYWx1ZSgpfX08c3BhbiAqbmdJZj1cInNob3dSYW5nZVZhbHVlXCI+IHN0YXJ0aW5nIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdTdGFydERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fSA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5jb25maWdFbmREYXRlXCI+dW50aWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSBZWVlZJ319PC9zcGFuPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMyB1c2VyXCIgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LnNjaGVkdWxlID09PSAncmFuZ2UnXCI+T2NjdXJzIGV2ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzPy5zY2hlZHVsZVdlZWtEYXlzPy50b1N0cmluZygpfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1JhbmdlVmFsdWVcIj4gc3RhcnRpbmcge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ1N0YXJ0RGF0ZSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOidkZCBNTU0gWVlZWSd9fSA8c3BhbiAqbmdJZj1cImNvbmZpZ0RhdGEuY2hlY2tMaXN0RGV0YWlscz8uY29uZmlnRW5kRGF0ZVwiPnVudGlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHM/LmNvbmZpZ0VuZERhdGUgfCBkYXRlOidkZCBNTU0gWVlZWSd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWxlZnRcIiAqbmdJZj1cIlsnY3VzdG9tJ10uaW5jbHVkZXModHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmdcIj5SZXNwb25zZSBDb25maWd1cmF0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY29uZmlnYWNjb3JkaWFuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3djb25maWd9XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3djb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnb25ldGltZScsJ2RhaWx5J10uaW5jbHVkZXMoY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSkgfHwgKGNvbmZpZ0RhdGE/LmNoZWNrTGlzdERldGFpbHMuc2NoZWR1bGUgPT09ICdtb250aGx5JyAmJiAgY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZVJlcGVhdGVkTW9udGhTZXR1cCAhPT0nc3BlY2lmaWMnKSA/ICdiZy1jb2xvci1kaXNhYmxlZCcgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IGNoZWNrbGlzdHR1cm5vZmYgbXQtNCBmdi1wbHVnaW5zLWljb24tY29udGFpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxsb3dPbmNlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93T25jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwib25lVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiWydvbmV0aW1lJywnZGFpbHknXS5pbmNsdWRlcyhjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlKSB8fCAoY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5zY2hlZHVsZSA9PT0gJ21vbnRobHknICYmICBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzLnNjaGVkdWxlUmVwZWF0ZWRNb250aFNldHVwICE9PSdzcGVjaWZpYycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3ViIG1zLTJcIiBmb3I9XCJvbmVUaW1lXCI+T25seSBvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3VidGV4dCBtcy0yXCIgZm9yPVwib25lVGltZVwiPkJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGluZyB0aGlzLCB0aGUgcmVzcG9uc2UgY2FuIGJlIGNhcHR1cmVkIG9ubHkgb25jZSBmb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgY2hlY2tsaXN0IDxzcGFuICpuZ0lmPVwic2hvd1JhbmdlVmFsdWVcIj5mcm9tXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnU3RhcnREYXRlfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuY29uZmlnRW5kRGF0ZVwiPnRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmNvbmZpZ0VuZERhdGV9fS48L3NwYW4+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdi1yb3cgY2hlY2tsaXN0dHVybm9mZiBtdC00IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiBjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGxvd2VkT3ZlclRpbWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsbG93ZWRPdmVyVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaWxsUmVzcG9uc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3ViIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZpbGxSZXNwb25zZVwiPkZpbGwgcmVzcG9uc2UgYWZ0ZXIgY29uZmlndXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS48L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3VidGV4dCBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmaWxsUmVzcG9uc2VcIj5CeSBlbmFibGluZywgdGhlIHVzZXIgY2FuIGZpbGwgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaXN0IGV2ZW4gYWZ0ZXIgdGhlIGFib3ZlIGNvbmZpZ3VyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQtdGltZS48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnYtcm93IGNoZWNrbGlzdHR1cm5vZmYgbXQtNCBmdi1wbHVnaW5zLWljb24tY29udGFpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYWxsb3dlZFN0b3JlTG9jYXRpb24gPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxsb3dlZFN0b3JlTG9jYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImdlb0ZlbmNpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWIgbXMtMlwiIGZvcj1cImdlb0ZlbmNpbmdcIj5HZW9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlbmNpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3VidGV4dCBtcy0yXCIgZm9yPVwiZ2VvRmVuY2luZ1wiPkJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGluZywgdGhlIGNoZWNrbGlzdCBjYW4gYmUgZmlsbGVkIGJ5IHRoZSB1c2VyIG9ubHkgd2hlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBzdG9yZS48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdi1yb3cgY2hlY2tsaXN0dHVybm9mZiBtdC00IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb25maWdEYXRhPy5jaGVja0xpc3REZXRhaWxzPy5hbGxvd2VkTXVsdGlTdWJtaXQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxsb3dlZE11bHRpU3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhbGxvd2VkTXVsdGlTdWJtaXRTd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJhbGxvd2VkTXVsdGlTdWJtaXRTd2l0Y2hcIj5BbGxvdyBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3VidGV4dCBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImFsbG93ZWRNdWx0aVN1Ym1pdFN3aXRjaFwiPkJ5IGVuYWJsaW5nLCB0aGUgY2hlY2tsaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZmlsbGVkIG11bHRpcGxlIHRpbWVzIGluIGEgZGF5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3IgbXQtOFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ3N0b3Jlb3BlbmFuZGNsb3NlJywnZXlldGVzdCddLmluY2x1ZGVzKHR5cGUpXCIgY2xhc3M9XCJtdC02IG14LTQgc3ViXCI+U3RvcmUgb3BlbnMgYXQgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy02MDBcIj48dT57e2NvbmZpZ0RhdGE/Lm9wZW5UaW1lfX08L3U+PC9zcGFuPiBhbmQgY2xvc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPHNwYW4gY2xhc3M9XCJmdy02MDBcIj48dT57e2NvbmZpZ0RhdGE/LmNsb3NlVGltZX19PC91Pjwvc3Bhbj4sIGV2ZXJ5ZGF5LiA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VwYXJhdG9yIG10LThcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICd1bmF0dGVuZGVkJ1wiIGNsYXNzPVwibXQtNiBteC00IHN1YlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWUgdGFrZW4gdG8gYXNzaXN0IGJ5IHN0YWZmICZsdDs9IDEgbWlucyB8IFN0YWZmIHRvIGN1c3RvbWVyIHRpbWUgc3BlbnQgJmx0Oz0xIG1pbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIG9wZW5zIGF0IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctNjAwXCI+PHU+e3tjb25maWdEYXRhPy5vcGVuVGltZX19PC91Pjwvc3Bhbj4gYW5kIGNsb3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0IDxzcGFuIGNsYXNzPVwiZnctNjAwXCI+PHU+e3tjb25maWdEYXRhPy5jbG9zZVRpbWV9fTwvdT48L3NwYW4+LCBldmVyeWRheS4gPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlcGFyYXRvciBtdC04XCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0nY3VzdG9tJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhWydzdG9yZW9wZW5hbmRjbG9zZScsJ2V5ZXRlc3QnXS5pbmNsdWRlcyh0eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLWxlZnRoZWFkaW5nIG10LThcIj5BbGVydHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE4NzRfNjYxOTUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjczVjguMDAwNjVNOC4wMDAxNiA1LjMzMzk4SDguMDA2ODNNMTQuNjY2OCA4LjAwMDY1QzE0LjY2NjggMTEuNjgyNiAxMS42ODIxIDE0LjY2NzMgOC4wMDAxNiAxNC42NjczQzQuMzE4MjYgMTQuNjY3MyAxLjMzMzUgMTEuNjgyNiAxLjMzMzUgOC4wMDA2NUMxLjMzMzUgNC4zMTg3NSA0LjMxODI2IDEuMzMzOTggOC4wMDAxNiAxLjMzMzk4QzExLjY4MjEgMS4zMzM5OCAxNC42NjY4IDQuMzE4NzUgMTQuNjY2OCA4LjAwMDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xODc0XzY2MTk1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ3VuaWZvcm1kZXRlY3Rpb24nLCdtb2JpbGV1c2FnZWRldGVjdGlvbiddLmluY2x1ZGVzKHR5cGUpXCIgY2xhc3M9XCJjb2wtbWQtMTIgbXQtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG10LTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtNCBzdWJcIj5JZiB1c2FnZSBleGNlZWRzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnYtcm93IG1iLTUgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lciBmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCB3LTU1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFsZXJ0LnVzYWdlRXhjZWVkc1wiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoPVwiMlwiIG1heGxlbmd0aD1cIjNcIiAoYmx1cik9XCJ2YWxpZGF0ZUxpbWl0KCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciB1c2FnZWVycm9yXCIgKm5nSWY9XCJlcnJvcm1zZ1wiPlBsZWFzZSBlbnRlciBldmVudCBjb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gMTUgdG8gOTk5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsndW5pZm9ybWRldGVjdGlvbicsJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJywndW5hdHRlbmRlZCcsJ3BhY2thZ2VDb25maWd1cmF0aW9uJ10uaW5jbHVkZXModHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWIgbXgtNFwiPlNlbmQgQWxlcnQgdG8gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ2LXJvdyBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY2hpcC1kcm9wZG93biBbZGF0YV09XCJhbGVydFVzZXJzXCIgW3NlbGVjdGVkRGF0YV09XCJjb25maWdEYXRhLmNoZWNrTGlzdERldGFpbHMuYWxlcnQuYWxlcnRzVG9cIiAoc2VsZWN0ZWRMaXN0KT1cInVwZGF0ZUFsZXJ0KCRldmVudClcIj48L2xpYi1jaGlwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvciBtdC04XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsndW5pZm9ybWRldGVjdGlvbicsJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ10uaW5jbHVkZXModHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi1sZWZ0aGVhZGluZyBtdC04XCI+RGV0ZWN0aW9uIEFyZWFzPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm14LTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xODc0XzY2MTk1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMTAuNjY3M1Y4LjAwMDY1TTguMDAwMTYgNS4zMzM5OEg4LjAwNjgzTTE0LjY2NjggOC4wMDA2NUMxNC42NjY4IDExLjY4MjYgMTEuNjgyMSAxNC42NjczIDguMDAwMTYgMTQuNjY3M0M0LjMxODI2IDE0LjY2NzMgMS4zMzM1IDExLjY4MjYgMS4zMzM1IDguMDAwNjVDMS4zMzM1IDQuMzE4NzUgNC4zMTgyNiAxLjMzMzk4IDguMDAwMTYgMS4zMzM5OEMxMS42ODIxIDEuMzMzOTggMTQuNjY2OCA0LjMxODc1IDE0LjY2NjggOC4wMDA2NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg3NF82NjE5NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvaDI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWIgbXgtNFwiPiBEZXRlY3QgbW9iaWxlIHVzYWdlIGV4Y2VwdCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY2hpcC1kcm9wZG93biBbZGF0YV09XCJ6b25lTGlzdFwiIFtzZWxlY3RlZERhdGFdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmRldGVjdGlvbkFyZWFcIiAoc2VsZWN0ZWRMaXN0KT1cInVwZGF0ZVpvbmUoJGV2ZW50KVwiPjwvbGliLWNoaXAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3IgbXQtOFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aDIgY2xhc3M9XCJzZWN0aW9uLWxlZnRoZWFkaW5nIG10LThcIj57e3R5cGUgPT09ICdtb2JpbGV1c2FnZWRldGVjdGlvbicgPyAnVG8gYmUgQWNrbm93bGVkZ2VkIGJ5JyA6ICdBcHByb3Zlcid9fTwvaDI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtcy0zIG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwic3VwcG9ydFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5CeSBlbmFibGluZywgdGhlIHVzZXJzIHdpbGwgYmUgYWJsZSB0byBhY2tub3dsZWRnZSB0aGUgY2hlY2tsaXN0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ21vYmlsZXVzYWdlZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY29sLW1kLTEyIG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtdC0yIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTQgc3ViXCI+SWYgdXNhZ2UgZXhjZWVkczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ2LXJvdyBtYi01IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZXIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCB3LTU1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscy5hbGVydC51c2FnZUV4Y2VlZHNcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZCBtaW5sZW5ndGg9XCIyXCIgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVMaW1pdCgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgdXNhZ2VlcnJvclwiICpuZ0lmPVwiZXJyb3Jtc2dcIj5QbGVhc2UgZW50ZXIgZXZlbnQgY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIDE1IHRvIDk5OTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbmctc3Rhci1pbnNlcnRlZCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YiBteC00XCI+VG8gYmUgYXBwcm92ZWQgYnkgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoaXAtZHJvcGRvd24gW2RhdGFdPVwiYWxlcnRVc2Vyc1wiIFtzZWxlY3RlZERhdGFdPVwiY29uZmlnRGF0YS5jaGVja0xpc3REZXRhaWxzLmFwcHJvdmVyXCI+PC9saWItY2hpcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yIG10LThcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdGFibGVEYXRhLmxlbmd0aCAmJiAhdGFibGVGaWx0ZXIubGVuZ3RoICYmIHNob3dJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi1sZWZ0aGVhZGluZyBtdC04XCI+QXNzaWduPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xODc0XzY2MTk1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjczVjguMDAwNjVNOC4wMDAxNiA1LjMzMzk4SDguMDA2ODNNMTQuNjY2OCA4LjAwMDY1QzE0LjY2NjggMTEuNjgyNiAxMS42ODIxIDE0LjY2NzMgOC4wMDAxNiAxNC42NjczQzQuMzE4MjYgMTQuNjY3MyAxLjMzMzUgMTEuNjgyNiAxLjMzMzUgOC4wMDA2NUMxLjMzMzUgNC4zMTg3NSA0LjMxODI2IDEuMzMzOTggOC4wMDAxNiAxLjMzMzk4QzExLjY4MjEgMS4zMzM5OCAxNC42NjY4IDQuMzE4NzUgMTQuNjY2OCA4LjAwMDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE4NzRfNjYxOTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9oMj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBhc3NpZ25wYWRkaW5nIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRwYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xNFwiPjxzdmcgY2xhc3M9XCJteC0yMCBtdC0xMlwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNS4wOSAyNUMyNS4zMjUxIDI0LjMzMTcgMjUuNzg5MiAyMy43NjgxIDI2LjQgMjMuNDA5MUMyNy4wMTA4IDIzLjA1MDIgMjcuNzI4OSAyMi45MTg5IDI4LjQyNzIgMjMuMDM4N0MyOS4xMjU1IDIzLjE1ODUgMjkuNzU4OCAyMy41MjE1IDMwLjIxNTEgMjQuMDYzNUMzMC42NzEzIDI0LjYwNTUgMzAuOTIxMSAyNS4yOTE1IDMwLjkyIDI2QzMwLjkyIDI4IDI3LjkyIDI5IDI3LjkyIDI5TTI4IDMzSDI4LjAxTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUNGREYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tbGVmdGhlYWRpbmcgbXQtNiBteC0xMFwiPlVwbG9hZCB0byBhc3NpZ24gdXNlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInN1YnRleHQgbXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+Q2xpY2sg4oCcRG93bmxvYWQgVGVtcGxhdGXigJ08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+IEFkZCB5b3VyIGRhdGEgdG8gdGhlIHRlbXBsYXRlIGZpbGU8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+IFVwbG9hZCBpdCBiZWxvdyB0byBhc3NpZ24gdXNlcnM8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICN1cGxvYWQgKGNsaWNrKT1cImZpbGUuY2xpY2soKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJldXBsb2FkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwibWItMiBteC0xXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDE5IDE5XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4IDEyLjVWMTUuODMzM0MxOCAxNi4yNzU0IDE3LjgyNDQgMTYuNjk5MyAxNy41MTE4IDE3LjAxMThDMTcuMTk5MyAxNy4zMjQ0IDE2Ljc3NTQgMTcuNSAxNi4zMzMzIDE3LjVINC42NjY2N0M0LjIyNDY0IDE3LjUgMy44MDA3MiAxNy4zMjQ0IDMuNDg4MTYgMTcuMDExOEMzLjE3NTU5IDE2LjY5OTMgMyAxNi4yNzU0IDMgMTUuODMzM1YxMi41TTE0LjY2NjcgNi42NjY2N0wxMC41IDIuNU0xMC41IDIuNUw2LjMzMzMzIDYuNjY2NjdNMTAuNSAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldXBsb2FkdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47XCIgdHlwZT1cImZpbGVcIiAjZmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8xXCIgKGNoYW5nZSk9XCJvbkZpbGVVcGxvYWQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tbGlnaHQtcHJpbWFyeSBkb3dubG9hZFwiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cIm1iLTFcIiB3aWR0aD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3dubG9hZHRleHRcIj5Eb3dubG9hZCBUZW1wbGF0ZTwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiAqbmdJZj1cInRhYmxlRGF0YS5sZW5ndGggfHwgdGFibGVGaWx0ZXIubGVuZ3RoIHx8ICFzaG93SW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC02XCIgKm5nSWY9XCIhc2hvd0ltYWdlIHx8IHRhYmxlRGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1sZWZ0aGVhZGluZ1wiPkFzc2lnbjxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE4NzRfNjYxOTUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDEwLjY2NzNWOC4wMDA2NU04LjAwMDE2IDUuMzMzOThIOC4wMDY4M00xNC42NjY4IDguMDAwNjVDMTQuNjY2OCAxMS42ODI2IDExLjY4MjEgMTQuNjY3MyA4LjAwMDE2IDE0LjY2NzNDNC4zMTgyNiAxNC42NjczIDEuMzMzNSAxMS42ODI2IDEuMzMzNSA4LjAwMDY1QzEuMzMzNSA0LjMxODc1IDQuMzE4MjYgMS4zMzM5OCA4LjAwMDE2IDEuMzMzOThDMTEuNjgyMSAxLjMzMzk4IDE0LjY2NjggNC4zMTg3NSAxNC42NjY4IDguMDAwNjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg3NF82NjE5NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtZmlsdGVyPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaFRhYmxlRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJ0YWJsZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIHctNDAwcHggcHMtMTQgbXgtMSBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBTdG9yZSBuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBkYXRhLWt0LXN1YnNjcmlwdGlvbi10YWJsZS10b29sYmFyPVwiYmFzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJhZGRTdG9yZUNvbXBvbmVudCgpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGNyZWF0ZWJ1dHRvbnMgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiIHRhYmluZGV4PVwiMFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMSA0LjE2NjAyVjE1LjgzMjdNNC4xNjY3NSA5Ljk5OTM1SDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwiY3JlYXRlXCI+QWRkIFN0b3JlPC9zcGFuPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCIgKm5nSWY9XCIhdGFibGVEYXRhLmxlbmd0aCAmJiAhc2hvd0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHVzZXJzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktc29wIHB0LTAgbXgtNFwiICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3BUYWJsZSB0YWJsZS1yZXNwb25zaXZlIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGFibGVMb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aCAmJiAhdGFibGVMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBoLTE0cHggdy0xNHB4XCIgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZsYWdcIiAoY2hhbmdlKT1cImNoZWNrQWxsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxcIj4gPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG14LTRcIiA+U3RvcmVOYW1lPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Bc3NpZ25lZCBUbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+RW1haWwgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFibGVEYXRhO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGgtMTRweCB3LTE0cHggdXNlckZsYWdcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZsYWcoJGV2ZW50LGksZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29uZmlnRGF0YT8uY2hlY2tMaXN0RGV0YWlscz8uYXNzaWduZWRVc2Vycy5pbmNsdWRlcyhkYXRhPy5pZClcIiAvPjxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBteC00XCI+e3tkYXRhLnVzZXJOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLnN0b3JlTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLnVzZXJFbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJzaXplXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRWYWx1ZVwiIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZVwiIFtwYWdlU2l6ZV09XCJzaXplXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIiAqbmdJZj1cIiF0YWJsZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTYgYXNzaWducGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJSZXVwbG9hZCgpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcmV1cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJldXBsb2FkXCI+PHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5IFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cIm1iLTIgbXgtMVwiIHdpZHRoPVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDE5IDE5XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOCAxMi41VjE1LjgzMzNDMTggMTYuMjc1NCAxNy44MjQ0IDE2LjY5OTMgMTcuNTExOCAxNy4wMTE4QzE3LjE5OTMgMTcuMzI0NCAxNi43NzU0IDE3LjUgMTYuMzMzMyAxNy41SDQuNjY2NjdDNC4yMjQ2NCAxNy41IDMuODAwNzIgMTcuMzI0NCAzLjQ4ODE2IDE3LjAxMThDMy4xNzU1OSAxNi42OTkzIDMgMTYuMjc1NCAzIDE1LjgzMzNWMTIuNU0xNC42NjY3IDYuNjY2NjdMMTAuNSAyLjVNMTAuNSAyLjVMNi4zMzMzMyA2LjY2NjY3TTEwLjUgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV1cGxvYWR0ZXh0XCIgKm5nSWY9XCIhcmV1cGxvYWRcIj5SZXVwbG9hZCBUZW1wbGF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZmlsZTEuY2xpY2soKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJldXBsb2FkXCIgKm5nSWY9XCJyZXVwbG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyZXVwbG9hZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0yIG14LTFcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDE5IDE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTggMTIuNVYxNS44MzMzQzE4IDE2LjI3NTQgMTcuODI0NCAxNi42OTkzIDE3LjUxMTggMTcuMDExOEMxNy4xOTkzIDE3LjMyNDQgMTYuNzc1NCAxNy41IDE2LjMzMzMgMTcuNUg0LjY2NjY3QzQuMjI0NjQgMTcuNSAzLjgwMDcyIDE3LjMyNDQgMy40ODgxNiAxNy4wMTE4QzMuMTc1NTkgMTYuNjk5MyAzIDE2LjI3NTQgMyAxNS44MzMzVjEyLjVNMTQuNjY2NyA2LjY2NjY3TDEwLjUgMi41TTEwLjUgMi41TDYuMzMzMzMgNi42NjY2N00xMC41IDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldXBsb2FkdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXVwbG9hZCBUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWxpZ2h0LXByaW1hcnkgZG93bmxvYWRcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMVwiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3dubG9hZHRleHRcIj5Eb3dubG9hZCBUaGlzIENTVjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgZm9vdGVyMSBtdC0xMCBteC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrIGZvb3RlcnRleHQgbWUtMVwiPk5lZWQgaGVscD88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBmb290ZXJ0ZXh0IHRleHQtaG92ZXItcHJpbWFyeVwiPjx1PldhdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBWaWRlbyBUdXRvcmlhbDwvdT5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19