tango-app-ui-analyse-traffic 3.8.0-alpha.26 → 3.8.0-alpha.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/img-rvps/img-rvps.component.mjs +488 -42
- package/esm2022/lib/services/traffic-rvps.service.mjs +4 -1
- package/esm2022/lib/services/traffic.service.mjs +4 -1
- package/fesm2022/tango-app-ui-analyse-traffic.mjs +493 -40
- package/fesm2022/tango-app-ui-analyse-traffic.mjs.map +1 -1
- package/lib/components/img-rvps/img-rvps.component.d.ts +47 -0
- package/lib/services/traffic-rvps.service.d.ts +1 -0
- package/lib/services/traffic.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -9,7 +9,6 @@ import * as i4 from "tango-app-ui-shared";
|
|
|
9
9
|
import * as i5 from "../../services/traffic-rvps.service";
|
|
10
10
|
import * as i6 from "@angular/common";
|
|
11
11
|
import * as i7 from "@angular/forms";
|
|
12
|
-
import * as i8 from "../../directive/magnifier.directive";
|
|
13
12
|
export class ImgRvpsComponent {
|
|
14
13
|
service;
|
|
15
14
|
gs;
|
|
@@ -22,6 +21,10 @@ export class ImgRvpsComponent {
|
|
|
22
21
|
loading = true;
|
|
23
22
|
noData = false;
|
|
24
23
|
normalize;
|
|
24
|
+
overallCardData = [];
|
|
25
|
+
cardDataMap = {};
|
|
26
|
+
ticketReviewStatus = [];
|
|
27
|
+
userComment;
|
|
25
28
|
constructor(service, gs, cd, modalService, toast, rvpsService) {
|
|
26
29
|
this.service = service;
|
|
27
30
|
this.gs = gs;
|
|
@@ -49,6 +52,7 @@ export class ImgRvpsComponent {
|
|
|
49
52
|
this.gs.dataRangeValue
|
|
50
53
|
.pipe(takeUntil(this.destroy$), debounceTime(100))
|
|
51
54
|
.subscribe((data) => {
|
|
55
|
+
console.log('data :', data);
|
|
52
56
|
if (data !== null || data?.client !== null) {
|
|
53
57
|
this.headerData = data;
|
|
54
58
|
this.storeIdarray = this.headerData?.stores
|
|
@@ -56,6 +60,7 @@ export class ImgRvpsComponent {
|
|
|
56
60
|
.map((store) => store.storeId);
|
|
57
61
|
this.backToFootfall();
|
|
58
62
|
this.displayDateRange();
|
|
63
|
+
this.loadCardData();
|
|
59
64
|
if (this.headerData?.date?.startDate === this.headerData?.date?.endDate) {
|
|
60
65
|
this.backnav = false;
|
|
61
66
|
this.displayDateRange();
|
|
@@ -76,6 +81,10 @@ export class ImgRvpsComponent {
|
|
|
76
81
|
this.noData = false;
|
|
77
82
|
this.type = "footfall";
|
|
78
83
|
this.selectedTime = "";
|
|
84
|
+
this.splitScreenEnabled = false;
|
|
85
|
+
this.selectImageArray = null;
|
|
86
|
+
this.remainingImageArray = [];
|
|
87
|
+
this.remainingImagesGroups = [];
|
|
79
88
|
}
|
|
80
89
|
folderView;
|
|
81
90
|
backnav;
|
|
@@ -100,6 +109,48 @@ export class ImgRvpsComponent {
|
|
|
100
109
|
}
|
|
101
110
|
return dateArray;
|
|
102
111
|
}
|
|
112
|
+
// Load card data
|
|
113
|
+
loadCardData() {
|
|
114
|
+
const storeId = this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null;
|
|
115
|
+
if (!storeId || !this.headerData?.date) {
|
|
116
|
+
this.overallCardData = [];
|
|
117
|
+
this.cardDataMap = {};
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.rvpsService
|
|
121
|
+
.getImageDirectoryCardData(storeId, this.headerData.date.startDate, this.headerData.date.endDate)
|
|
122
|
+
.pipe(takeUntil(this.destroy$))
|
|
123
|
+
?.subscribe({
|
|
124
|
+
next: (res) => {
|
|
125
|
+
if (res && res.code === 200) {
|
|
126
|
+
this.overallCardData = res?.data || [];
|
|
127
|
+
this.cardDataMap = (this.overallCardData || []).reduce((acc, item) => {
|
|
128
|
+
const normalizedDate = item?.date
|
|
129
|
+
? new Date(item.date).toISOString().split("T")[0]
|
|
130
|
+
: null;
|
|
131
|
+
if (normalizedDate) {
|
|
132
|
+
acc[normalizedDate] = {
|
|
133
|
+
...item,
|
|
134
|
+
ticketStatusLower: item?.ticketStatus
|
|
135
|
+
? String(item.ticketStatus).toLowerCase()
|
|
136
|
+
: "",
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return acc;
|
|
140
|
+
}, {});
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.overallCardData = [];
|
|
144
|
+
this.cardDataMap = {};
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
error: (err) => {
|
|
148
|
+
console.error("Error fetching loadCardData:", err);
|
|
149
|
+
this.overallCardData = [];
|
|
150
|
+
this.cardDataMap = {};
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
}
|
|
103
154
|
selectedTime;
|
|
104
155
|
folderName;
|
|
105
156
|
selectedTimes(val) {
|
|
@@ -111,14 +162,17 @@ export class ImgRvpsComponent {
|
|
|
111
162
|
}
|
|
112
163
|
folderDate;
|
|
113
164
|
imageFlow = false;
|
|
165
|
+
splitScreenEnabled = false; // Flag to enable split-screen view
|
|
114
166
|
// get Revops Api
|
|
115
167
|
getRvpsList;
|
|
116
168
|
getRvpsImageList;
|
|
117
169
|
objectsArray;
|
|
118
170
|
imagesArrayData;
|
|
171
|
+
listViewGroups = [];
|
|
119
172
|
selectIndex = 0;
|
|
120
173
|
footfallDate;
|
|
121
174
|
lengthValue;
|
|
175
|
+
viewMode = "grid";
|
|
122
176
|
getimages(index, obj) {
|
|
123
177
|
this.objectsArray = [];
|
|
124
178
|
this.selectIndex = index;
|
|
@@ -133,7 +187,7 @@ export class ImgRvpsComponent {
|
|
|
133
187
|
this.getRvpsImageList = [];
|
|
134
188
|
this.objectsArray = [];
|
|
135
189
|
this.getRevops();
|
|
136
|
-
this.getTotal();
|
|
190
|
+
// this.getTotal();
|
|
137
191
|
}
|
|
138
192
|
else {
|
|
139
193
|
this.lengthValue = false;
|
|
@@ -156,7 +210,6 @@ export class ImgRvpsComponent {
|
|
|
156
210
|
if (res && res.code === 200) {
|
|
157
211
|
if (this.getRvpsList?.length)
|
|
158
212
|
this.countData = res.data;
|
|
159
|
-
// console.log(this.countData)
|
|
160
213
|
}
|
|
161
214
|
else {
|
|
162
215
|
this.countData = [];
|
|
@@ -201,6 +254,8 @@ export class ImgRvpsComponent {
|
|
|
201
254
|
this.getRvpsList = res?.data;
|
|
202
255
|
this.imageUrl = this.rvpsService?.footfallCDN;
|
|
203
256
|
this.getRvpsImageList = res?.data?.result;
|
|
257
|
+
this.ticketReviewStatus = res?.data?.ticketStatus;
|
|
258
|
+
console.log('revops getRvpsListApi :', res?.data);
|
|
204
259
|
// Save the full footfall data (grouped by timeRange)
|
|
205
260
|
this.allFootfallData = res?.data?.result?.footfallData || [];
|
|
206
261
|
// Create timeRange + count object
|
|
@@ -350,11 +405,89 @@ export class ImgRvpsComponent {
|
|
|
350
405
|
backToFootfall1() {
|
|
351
406
|
this.selectedRadioType = undefined;
|
|
352
407
|
this.imageFlow = false;
|
|
408
|
+
this.splitScreenEnabled = false; // Disable split-screen when going back
|
|
409
|
+
this.selectImageArray = null;
|
|
353
410
|
}
|
|
354
411
|
selectImageArray;
|
|
355
412
|
remainingImageArray;
|
|
356
413
|
revopsTypeValue = false;
|
|
357
414
|
editBtnShow = false;
|
|
415
|
+
// when image selection from folder view
|
|
416
|
+
selectImageForSplitView(obj) {
|
|
417
|
+
this.splitScreenEnabled = true; // Enable split-screen when image is clicked
|
|
418
|
+
this.selectImageArray = obj;
|
|
419
|
+
// If duplicate is already selected, preserve the duplicate context
|
|
420
|
+
const isDuplicateMode = this.selectedRadioType === "duplicate";
|
|
421
|
+
if (!isDuplicateMode) {
|
|
422
|
+
this.revopsTypeValue = false;
|
|
423
|
+
this.selectedType = "";
|
|
424
|
+
this.selectedRadioType = undefined;
|
|
425
|
+
this.remainingImageArray = []; // Reset remaining images initially
|
|
426
|
+
this.remainingImagesGroups = []; // Reset groups
|
|
427
|
+
}
|
|
428
|
+
let filteredByType = [];
|
|
429
|
+
const selectedType = obj.revopsType?.toLowerCase();
|
|
430
|
+
// If we're in duplicate mode and clicking on a remaining image, keep the duplicate context
|
|
431
|
+
if (isDuplicateMode) {
|
|
432
|
+
// Keep the existing remaining images but update the selected image
|
|
433
|
+
// Don't reset the duplicate selection context
|
|
434
|
+
this.revopsTypeValue = false; // Allow editing this image
|
|
435
|
+
this.selectedType = ""; // Reset to allow new selection
|
|
436
|
+
// Keep selectedRadioType as 'duplicate' to maintain context
|
|
437
|
+
}
|
|
438
|
+
else if (selectedType === "duplicate" && Array.isArray(obj.duplicateImagePath)) {
|
|
439
|
+
const children = obj.duplicateImagePath.map((child) => {
|
|
440
|
+
const matched = this.overallArrayData.find((img) => img.templd === child.tempId);
|
|
441
|
+
return {
|
|
442
|
+
...child,
|
|
443
|
+
...(matched || {}),
|
|
444
|
+
parent: obj.templd,
|
|
445
|
+
};
|
|
446
|
+
});
|
|
447
|
+
filteredByType = [obj, ...children];
|
|
448
|
+
this.currentImageIndex = 0;
|
|
449
|
+
this.remainingImageArray = children;
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
// For non-duplicate images, don't populate remainingImageArray initially
|
|
453
|
+
// It will be populated when user selects a radio button
|
|
454
|
+
filteredByType = this.overallArrayData.filter((img) => img.revopsType?.toLowerCase() === selectedType);
|
|
455
|
+
this.currentImageIndex = filteredByType.findIndex((img) => img.templd === obj.templd);
|
|
456
|
+
// Only set remainingImageArray if there are other images of the same type
|
|
457
|
+
// Otherwise, leave it empty for radio button selection to populate
|
|
458
|
+
if (filteredByType.length > 1) {
|
|
459
|
+
this.remainingImageArray = filteredByType.filter((_, i) => i !== this.currentImageIndex);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
// Only auto-set revopsTypeValue if not in duplicate mode
|
|
463
|
+
if (!isDuplicateMode) {
|
|
464
|
+
if (obj?.revopsType === "duplicate" ||
|
|
465
|
+
obj?.revopsType === "employee" ||
|
|
466
|
+
obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
|
|
467
|
+
if (obj?.revopsType === "duplicate" &&
|
|
468
|
+
obj?.duplicateImagePath?.length > 0) {
|
|
469
|
+
this.editBtnShow = true;
|
|
470
|
+
}
|
|
471
|
+
else if (obj?.revopsType === "employee" ||
|
|
472
|
+
obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
|
|
473
|
+
this.editBtnShow = true;
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
this.editBtnShow = false;
|
|
477
|
+
}
|
|
478
|
+
this.revopsTypeValue = true;
|
|
479
|
+
this.selectedType = obj?.revopsType;
|
|
480
|
+
this.onRadioChange(obj?.revopsType);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
// In duplicate mode, allow editing the selected image
|
|
485
|
+
this.revopsTypeValue = false;
|
|
486
|
+
this.editBtnShow = false;
|
|
487
|
+
}
|
|
488
|
+
// Build remaining images groups by time range
|
|
489
|
+
this.buildRemainingImagesGroups();
|
|
490
|
+
}
|
|
358
491
|
imgFullView(obj) {
|
|
359
492
|
this.selectImageArray = obj;
|
|
360
493
|
this.imageFlow = true;
|
|
@@ -422,10 +555,13 @@ export class ImgRvpsComponent {
|
|
|
422
555
|
this.selectImageArray = obj;
|
|
423
556
|
// Remove selected from remaining list
|
|
424
557
|
this.remainingImageArray = this.remainingImageArray.filter((img) => img.templd !== obj.templd);
|
|
558
|
+
// Rebuild remaining images groups
|
|
559
|
+
this.buildRemainingImagesGroups();
|
|
425
560
|
this.imageFlow = true;
|
|
426
561
|
}
|
|
427
562
|
selectedType = ""; // default selected
|
|
428
563
|
selectedRadioType;
|
|
564
|
+
// -- Non-shoppers selection type --
|
|
429
565
|
onRadioChange(val) {
|
|
430
566
|
this.selectedRadioType = val;
|
|
431
567
|
this.selectedDuplicateImagesList = [];
|
|
@@ -434,7 +570,7 @@ export class ImgRvpsComponent {
|
|
|
434
570
|
if (this.selectImageArray?.revopsType?.toLowerCase() === "duplicate" &&
|
|
435
571
|
Array.isArray(this.selectImageArray?.duplicateImagePath) &&
|
|
436
572
|
this.selectImageArray.duplicateImagePath.length > 0) {
|
|
437
|
-
// 🔹 Case 1: Already in duplicate flow → keep children set by
|
|
573
|
+
// 🔹 Case 1: Already in duplicate flow → keep children set by selectImageForSplitView
|
|
438
574
|
this.remainingImageArray = this.remainingImageArray.map((child) => {
|
|
439
575
|
return { ...child, selected: false, isChecked: false };
|
|
440
576
|
});
|
|
@@ -451,6 +587,14 @@ export class ImgRvpsComponent {
|
|
|
451
587
|
img.isChecked = false;
|
|
452
588
|
});
|
|
453
589
|
}
|
|
590
|
+
// Rebuild remaining images groups after updating
|
|
591
|
+
this.buildRemainingImagesGroups();
|
|
592
|
+
console.log('remain image array ::', this.remainingImageArray);
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
// For non-duplicate types, clear remaining images
|
|
596
|
+
this.remainingImageArray = [];
|
|
597
|
+
this.remainingImagesGroups = [];
|
|
454
598
|
}
|
|
455
599
|
}
|
|
456
600
|
type = "footfall";
|
|
@@ -460,6 +604,8 @@ export class ImgRvpsComponent {
|
|
|
460
604
|
}
|
|
461
605
|
applyFilters() {
|
|
462
606
|
this.imageFlow = false;
|
|
607
|
+
this.splitScreenEnabled = false; // Reset split-screen when filters change
|
|
608
|
+
this.selectImageArray = null;
|
|
463
609
|
// Convert type to lowercase safely
|
|
464
610
|
const selectedType = this.type?.toLowerCase();
|
|
465
611
|
if (selectedType === "footfall") {
|
|
@@ -478,51 +624,136 @@ export class ImgRvpsComponent {
|
|
|
478
624
|
// }
|
|
479
625
|
// Set noData based on result
|
|
480
626
|
this.noData = !this.imagesArrayData?.length;
|
|
627
|
+
this.buildListViewGroups();
|
|
481
628
|
this.cd.detectChanges();
|
|
482
629
|
}
|
|
630
|
+
setViewMode(mode) {
|
|
631
|
+
if (this.viewMode !== mode) {
|
|
632
|
+
this.viewMode = mode;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
// Convert minutes → hr + mins
|
|
636
|
+
convertMinutes(totalMinutes) {
|
|
637
|
+
if (!totalMinutes && totalMinutes !== 0)
|
|
638
|
+
return { hours: 0, mins: 0 };
|
|
639
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
640
|
+
const mins = totalMinutes % 60;
|
|
641
|
+
return { hours, mins };
|
|
642
|
+
}
|
|
643
|
+
remainingImagesGroups = [];
|
|
644
|
+
buildRemainingImagesGroups() {
|
|
645
|
+
if (!this.remainingImageArray || this.remainingImageArray.length === 0) {
|
|
646
|
+
this.remainingImagesGroups = [];
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const order = [];
|
|
650
|
+
const map = new Map();
|
|
651
|
+
this.remainingImageArray.forEach((img) => {
|
|
652
|
+
const key = img?.timeRange || "NA";
|
|
653
|
+
if (!map.has(key)) {
|
|
654
|
+
map.set(key, []);
|
|
655
|
+
order.push(key);
|
|
656
|
+
}
|
|
657
|
+
map.get(key)?.push(img);
|
|
658
|
+
});
|
|
659
|
+
this.remainingImagesGroups = order.map((key) => ({
|
|
660
|
+
timeRange: key,
|
|
661
|
+
data: map.get(key) || [],
|
|
662
|
+
}));
|
|
663
|
+
console.log('my methd =>', this.remainingImageArray);
|
|
664
|
+
}
|
|
665
|
+
buildListViewGroups() {
|
|
666
|
+
if (this.type === "footfall") {
|
|
667
|
+
this.listViewGroups = (this.allFootfallData || [])
|
|
668
|
+
.filter((group) => Array.isArray(group?.data) && group.data.length)
|
|
669
|
+
.map((group) => ({
|
|
670
|
+
timeRange: group?.timeRange || "NA",
|
|
671
|
+
data: group?.data || [],
|
|
672
|
+
}));
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
const order = [];
|
|
676
|
+
const map = new Map();
|
|
677
|
+
(this.imagesArrayData || []).forEach((img) => {
|
|
678
|
+
const key = img?.timeRange || "NA";
|
|
679
|
+
if (!map.has(key)) {
|
|
680
|
+
map.set(key, []);
|
|
681
|
+
order.push(key);
|
|
682
|
+
}
|
|
683
|
+
map.get(key)?.push(img);
|
|
684
|
+
});
|
|
685
|
+
this.listViewGroups = order.map((key) => ({
|
|
686
|
+
timeRange: key,
|
|
687
|
+
data: map.get(key) || [],
|
|
688
|
+
}));
|
|
689
|
+
}
|
|
483
690
|
handleImageClick(evt, obj) {
|
|
484
|
-
//
|
|
485
|
-
if (this.selectedRadioType === "duplicate" &&
|
|
486
|
-
|
|
487
|
-
|
|
691
|
+
// When duplicate is selected, clicking on images should open them in zoom modal
|
|
692
|
+
if (this.selectedRadioType === "duplicate" && this.splitScreenEnabled) {
|
|
693
|
+
// Open image in zoom modal when duplicate is selected
|
|
694
|
+
// Store the clicked image temporarily for modal display
|
|
695
|
+
this.openImageZoomModal(this.imageUrl, obj);
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
698
|
+
// For split-screen view, clicking on related images should swap to that image
|
|
699
|
+
if (this.splitScreenEnabled && this.selectedRadioType !== "duplicate") {
|
|
700
|
+
this.selectImageForSplitView(obj);
|
|
488
701
|
}
|
|
489
702
|
else if (this.selectedRadioType !== "duplicate") {
|
|
490
703
|
this.imgSwap(obj); // existing non-duplicate click behavior
|
|
491
704
|
}
|
|
492
705
|
}
|
|
706
|
+
tempModalImage = null; // Temporary storage for modal image when duplicate is selected
|
|
707
|
+
openImageZoomModal(imageUrl, imageData) {
|
|
708
|
+
// Store the image data temporarily for modal display
|
|
709
|
+
this.tempModalImage = imageData;
|
|
710
|
+
this.isModalOpen = true;
|
|
711
|
+
const modalRef = this.modalService.open(this.imagePopup, {
|
|
712
|
+
centered: true,
|
|
713
|
+
size: "lg",
|
|
714
|
+
backdrop: "static",
|
|
715
|
+
keyboard: false,
|
|
716
|
+
});
|
|
717
|
+
}
|
|
493
718
|
selectedDuplicateImagesList = [];
|
|
719
|
+
toggleDuplicateSelection(img) {
|
|
720
|
+
if (!img || img.duplicateImagePath?.length > 0) {
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
const totalImages = this.overallArrayData.length;
|
|
724
|
+
const alreadyTaggedCount = this.countData?.duplicate || 0;
|
|
725
|
+
const maxSelectable = Math.round(totalImages * 0.2);
|
|
726
|
+
const currentlySelectedCount = this.remainingImageArray.filter((item) => item.selected).length;
|
|
727
|
+
const willSelect = !img.selected;
|
|
728
|
+
// ⛔ Block selection if trying to go beyond 20% cap
|
|
729
|
+
if (willSelect &&
|
|
730
|
+
currentlySelectedCount + alreadyTaggedCount >= maxSelectable) {
|
|
731
|
+
this.toast.getWarningToast(`You can select only ${maxSelectable} images (${this.getRvpsList?.data?.config?.duplicate ?? "20%"} of total footfall)`);
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
// ✅ Proceed with selection toggle
|
|
735
|
+
img.selected = !img.selected;
|
|
736
|
+
img.isChecked = img.selected;
|
|
737
|
+
// ✅ Always rebuild the selected list
|
|
738
|
+
this.selectedDuplicateImagesList = this.remainingImageArray
|
|
739
|
+
.filter((item) => item.selected)
|
|
740
|
+
.map((item) => ({
|
|
741
|
+
...item,
|
|
742
|
+
parent: item.parent || this.selectImageArray?.templd,
|
|
743
|
+
isChecked: true,
|
|
744
|
+
}));
|
|
745
|
+
// Rebuild remaining images groups after checkbox change
|
|
746
|
+
this.buildRemainingImagesGroups();
|
|
747
|
+
this.cd.detectChanges();
|
|
748
|
+
}
|
|
494
749
|
onImageCheckboxChange(evt, img, type) {
|
|
495
750
|
if (type === "duplicate") {
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
//
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
const maxSelectable = Math.round(totalImages * 0.2);
|
|
502
|
-
// console.log(maxSelectable)
|
|
503
|
-
// Count selected now (in UI)
|
|
504
|
-
const currentlySelectedCount = this.overallArrayData.filter((item) => item.selected).length;
|
|
505
|
-
const willSelect = !img.selected;
|
|
506
|
-
// ⛔ Block selection if trying to go beyond 10% cap
|
|
507
|
-
if (willSelect &&
|
|
508
|
-
currentlySelectedCount + alreadyTaggedCount >= maxSelectable) {
|
|
509
|
-
this.toast.getWarningToast(`You can select only ${maxSelectable} images (${this.getRvpsList?.data?.config?.duplicate ?? "20%"} of total footfall)`);
|
|
510
|
-
evt.target.checked = false;
|
|
511
|
-
this.cd.detectChanges();
|
|
512
|
-
return;
|
|
751
|
+
// Use the toggle method for duplicate selection
|
|
752
|
+
this.toggleDuplicateSelection(img);
|
|
753
|
+
// Update checkbox state to match selection
|
|
754
|
+
if (evt && evt.target) {
|
|
755
|
+
evt.target.checked = img.selected;
|
|
513
756
|
}
|
|
514
|
-
// ✅ Proceed with selection toggle
|
|
515
|
-
img.selected = !img.selected;
|
|
516
|
-
img.isChecked = img.selected;
|
|
517
|
-
// ✅ Always rebuild the selected list
|
|
518
|
-
this.selectedDuplicateImagesList = this.remainingImageArray
|
|
519
|
-
.filter((item) => item.selected)
|
|
520
|
-
.map((item) => ({
|
|
521
|
-
...item,
|
|
522
|
-
parent: item.parent || this.selectImageArray?.templd,
|
|
523
|
-
isChecked: true,
|
|
524
|
-
}));
|
|
525
|
-
// console.log('✅ selectedDuplicateImagesList:', this.selectedDuplicateImagesList);
|
|
526
757
|
}
|
|
527
758
|
}
|
|
528
759
|
clearValue() {
|
|
@@ -542,12 +773,16 @@ export class ImgRvpsComponent {
|
|
|
542
773
|
}));
|
|
543
774
|
// 3. Close image flow/full-view if open
|
|
544
775
|
this.imageFlow = false;
|
|
545
|
-
// 4. Reset
|
|
776
|
+
// 4. Reset split-screen and selected image
|
|
777
|
+
this.splitScreenEnabled = false;
|
|
546
778
|
this.selectImageArray = null;
|
|
547
779
|
this.currentImageIndex = 0;
|
|
548
780
|
this.remainingImageArray = [];
|
|
781
|
+
this.remainingImagesGroups = [];
|
|
549
782
|
// 5. (Optional) Reset radio buttons — if you have any specific flag
|
|
550
783
|
this.selectedRadioType = undefined;
|
|
784
|
+
this.selectedType = "";
|
|
785
|
+
this.revopsTypeValue = false;
|
|
551
786
|
}
|
|
552
787
|
popupType;
|
|
553
788
|
zoomPopup;
|
|
@@ -594,6 +829,8 @@ export class ImgRvpsComponent {
|
|
|
594
829
|
entryTime: img?.entryTime || img?.entryTme || "",
|
|
595
830
|
exitTime: img?.exitTime || "",
|
|
596
831
|
filePath: img?.filePath || "",
|
|
832
|
+
comments: this.userComment || "",
|
|
833
|
+
mode: 'web'
|
|
597
834
|
};
|
|
598
835
|
this.rvpsService
|
|
599
836
|
.getRvpsTag(obj)
|
|
@@ -605,6 +842,7 @@ export class ImgRvpsComponent {
|
|
|
605
842
|
this.imageFlow = false;
|
|
606
843
|
this.getRevops();
|
|
607
844
|
this.cancelSubmit();
|
|
845
|
+
this.loadCardData();
|
|
608
846
|
this.selectedRadioType = undefined;
|
|
609
847
|
this.selectedType = "";
|
|
610
848
|
}
|
|
@@ -628,6 +866,7 @@ export class ImgRvpsComponent {
|
|
|
628
866
|
tempRaisedPayload = null; // class-level variable for preview
|
|
629
867
|
prepareRaisedPayload(showOnly = false) { }
|
|
630
868
|
raisedPopup;
|
|
869
|
+
resetRequestPopup;
|
|
631
870
|
Raised() {
|
|
632
871
|
const payload = {
|
|
633
872
|
dateString: this.folderDate,
|
|
@@ -732,8 +971,16 @@ export class ImgRvpsComponent {
|
|
|
732
971
|
commentText;
|
|
733
972
|
getRaisedData;
|
|
734
973
|
submitRaised() {
|
|
735
|
-
const payload = this.tempRaisedPayload; // fresh data for API
|
|
974
|
+
// const payload = this.tempRaisedPayload; // fresh data for API
|
|
975
|
+
const payload = {
|
|
976
|
+
ticketName: "footfall-directory",
|
|
977
|
+
storeId: this.tempRaisedPayload.storeId,
|
|
978
|
+
dateString: this.tempRaisedPayload.dateString,
|
|
979
|
+
type: "create",
|
|
980
|
+
mode: "web"
|
|
981
|
+
};
|
|
736
982
|
this.getRaisedData = payload;
|
|
983
|
+
console.log('submit raised :', payload);
|
|
737
984
|
this.rvpsService
|
|
738
985
|
.getCreateRaisedTag(payload)
|
|
739
986
|
.pipe(takeUntil(this.destroy$))
|
|
@@ -743,12 +990,15 @@ export class ImgRvpsComponent {
|
|
|
743
990
|
this.toast.getSuccessToast(res?.message || "Ticket updated successfully");
|
|
744
991
|
this.imageFlow = false;
|
|
745
992
|
this.getRevops();
|
|
993
|
+
this.loadCardData();
|
|
746
994
|
this.cancelRasied();
|
|
747
995
|
this.selectedRadioType = undefined;
|
|
748
996
|
this.selectedType = "";
|
|
997
|
+
this.countData = [];
|
|
749
998
|
}
|
|
750
999
|
else {
|
|
751
1000
|
this.toast.getErrorToast("Failed to update");
|
|
1001
|
+
this.cancelRasied();
|
|
752
1002
|
}
|
|
753
1003
|
},
|
|
754
1004
|
error: (err) => {
|
|
@@ -758,6 +1008,7 @@ export class ImgRvpsComponent {
|
|
|
758
1008
|
err.message ||
|
|
759
1009
|
"Unknown error";
|
|
760
1010
|
this.toast.getErrorToast(msg);
|
|
1011
|
+
this.cancelRasied();
|
|
761
1012
|
},
|
|
762
1013
|
});
|
|
763
1014
|
}
|
|
@@ -824,6 +1075,7 @@ export class ImgRvpsComponent {
|
|
|
824
1075
|
}
|
|
825
1076
|
closeImage() {
|
|
826
1077
|
this.isModalOpen = false;
|
|
1078
|
+
this.tempModalImage = null; // Clear temporary image when closing modal
|
|
827
1079
|
this.modalService.dismissAll();
|
|
828
1080
|
}
|
|
829
1081
|
canEnableButton() {
|
|
@@ -866,20 +1118,214 @@ export class ImgRvpsComponent {
|
|
|
866
1118
|
// Update remaining images
|
|
867
1119
|
this.remainingImageArray = this.imagesArrayData.filter((_, i) => i !== this.currentImageIndex);
|
|
868
1120
|
}
|
|
1121
|
+
// Get current footfall count for selected date
|
|
1122
|
+
getCurrentFootfall() {
|
|
1123
|
+
if (!this.folderDate)
|
|
1124
|
+
return 0;
|
|
1125
|
+
const normalizedDate = new Date(this.folderDate).toISOString().split("T")[0];
|
|
1126
|
+
return this.cardDataMap[normalizedDate]?.footfallCount || 0;
|
|
1127
|
+
}
|
|
1128
|
+
// Get percentage change from footfallCountTrend
|
|
1129
|
+
getFootfallPercentageChange() {
|
|
1130
|
+
if (!this.folderDate)
|
|
1131
|
+
return 0;
|
|
1132
|
+
const normalizedDate = new Date(this.folderDate).toISOString().split("T")[0];
|
|
1133
|
+
return this.cardDataMap[normalizedDate]?.footfallCountTrend || 0;
|
|
1134
|
+
}
|
|
1135
|
+
// Format downtime from downtime key (in minutes)
|
|
1136
|
+
getFormattedDowntime() {
|
|
1137
|
+
if (!this.folderDate)
|
|
1138
|
+
return '-';
|
|
1139
|
+
const normalizedDate = new Date(this.folderDate).toISOString().split("T")[0];
|
|
1140
|
+
const downtimeMinutes = this.cardDataMap[normalizedDate]?.downtime || 0;
|
|
1141
|
+
if (!downtimeMinutes || downtimeMinutes === 0)
|
|
1142
|
+
return '-';
|
|
1143
|
+
const { hours, mins } = this.convertMinutes(downtimeMinutes);
|
|
1144
|
+
if (hours > 0 && mins > 0) {
|
|
1145
|
+
return `${hours}hr ${mins} mins`;
|
|
1146
|
+
}
|
|
1147
|
+
else if (hours > 0) {
|
|
1148
|
+
return `${hours}hr`;
|
|
1149
|
+
}
|
|
1150
|
+
else if (mins > 0) {
|
|
1151
|
+
return `${mins} mins`;
|
|
1152
|
+
}
|
|
1153
|
+
return '-';
|
|
1154
|
+
}
|
|
1155
|
+
// Get ticket status
|
|
1156
|
+
getTicketStatus() {
|
|
1157
|
+
if (!this.folderDate)
|
|
1158
|
+
return '-';
|
|
1159
|
+
const normalizedDate = new Date(this.folderDate).toISOString().split("T")[0];
|
|
1160
|
+
const status = this.cardDataMap[normalizedDate]?.ticketStatus;
|
|
1161
|
+
return status || '-';
|
|
1162
|
+
}
|
|
1163
|
+
// Check if there's downtime
|
|
1164
|
+
hasDowntime() {
|
|
1165
|
+
if (!this.folderDate)
|
|
1166
|
+
return false;
|
|
1167
|
+
const normalizedDate = new Date(this.folderDate).toISOString().split("T")[0];
|
|
1168
|
+
const downtime = this.cardDataMap[normalizedDate]?.downtime || 0;
|
|
1169
|
+
return downtime > 0;
|
|
1170
|
+
}
|
|
1171
|
+
// Get tagging data from ticketReviewStatus where actionType = "tagging"
|
|
1172
|
+
getTaggingData(type) {
|
|
1173
|
+
if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus) || !type) {
|
|
1174
|
+
return null;
|
|
1175
|
+
}
|
|
1176
|
+
return this.ticketReviewStatus.find((item) => item?.actionType === type) || null;
|
|
1177
|
+
}
|
|
1178
|
+
// Check if ticket status is raised
|
|
1179
|
+
isTicketRaised() {
|
|
1180
|
+
const status = this.getTicketStatus();
|
|
1181
|
+
return status !== '-' && status?.toLowerCase() === "raised";
|
|
1182
|
+
}
|
|
1183
|
+
// Check if ticket status is closed
|
|
1184
|
+
isTicketClosed() {
|
|
1185
|
+
const status = this.getTicketStatus();
|
|
1186
|
+
return status !== '-' && status?.toLowerCase() === "closed";
|
|
1187
|
+
}
|
|
1188
|
+
// Get all tagging data items (for initial and final revisions)
|
|
1189
|
+
getAllTaggingData() {
|
|
1190
|
+
if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus)) {
|
|
1191
|
+
return [];
|
|
1192
|
+
}
|
|
1193
|
+
return this.ticketReviewStatus.filter((item) => item?.actionType === "tagging") || [];
|
|
1194
|
+
}
|
|
1195
|
+
// Get initial revision data (first tagging item)
|
|
1196
|
+
getInitialRevisionData() {
|
|
1197
|
+
const allTagging = this.getAllTaggingData();
|
|
1198
|
+
return allTagging.length > 0 ? allTagging[0] : null;
|
|
1199
|
+
}
|
|
1200
|
+
// Get final revision data (last tagging item, or second if exists)
|
|
1201
|
+
getFinalRevisionData() {
|
|
1202
|
+
const allTagging = this.getAllTaggingData();
|
|
1203
|
+
return allTagging.length > 1 ? allTagging[allTagging.length - 1] : (allTagging.length > 0 ? allTagging[0] : null);
|
|
1204
|
+
}
|
|
1205
|
+
// Helper method to get count value by type from count array
|
|
1206
|
+
getCountByType(data, countType) {
|
|
1207
|
+
if (!data || !data.count) {
|
|
1208
|
+
return 0;
|
|
1209
|
+
}
|
|
1210
|
+
// Check if count is an array (new format)
|
|
1211
|
+
if (Array.isArray(data.count)) {
|
|
1212
|
+
const countItem = data.count.find((item) => item?.type === countType);
|
|
1213
|
+
return countItem?.value || 0;
|
|
1214
|
+
}
|
|
1215
|
+
// Fallback for old format (object)
|
|
1216
|
+
const keyMap = {
|
|
1217
|
+
'duplicate': 'duplicateCount',
|
|
1218
|
+
'employee': 'employeeCount',
|
|
1219
|
+
'junk': 'junkCount',
|
|
1220
|
+
'houseKeeping': 'houseKeepingCount'
|
|
1221
|
+
};
|
|
1222
|
+
const key = keyMap[countType];
|
|
1223
|
+
return key ? (data.count[key] || 0) : 0;
|
|
1224
|
+
}
|
|
1225
|
+
// Calculate total percentage: (sum of all count values / revicedFootfall) * 100
|
|
1226
|
+
// type: 'raised' | 'finalreview'
|
|
1227
|
+
getRevisionCalculation(type) {
|
|
1228
|
+
if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus || !type)) {
|
|
1229
|
+
return 0;
|
|
1230
|
+
}
|
|
1231
|
+
// Filter items based on actionType
|
|
1232
|
+
const taggingItems = this.ticketReviewStatus.filter((item) => item?.actionType === type);
|
|
1233
|
+
if (taggingItems.length === 0) {
|
|
1234
|
+
return 0;
|
|
1235
|
+
}
|
|
1236
|
+
if (!taggingItems[0] || !taggingItems[0].revicedFootfall || taggingItems[0].revicedFootfall === 0) {
|
|
1237
|
+
return 0;
|
|
1238
|
+
}
|
|
1239
|
+
const count = taggingItems[0].count || [];
|
|
1240
|
+
// Check if count is an array (new format) or object (old format)
|
|
1241
|
+
let totalCount = 0;
|
|
1242
|
+
if (Array.isArray(count)) {
|
|
1243
|
+
// New format: count is an array of objects with type and value
|
|
1244
|
+
const typesToSum = ['duplicate', 'employee', 'houseKeeping', 'junk'];
|
|
1245
|
+
totalCount = count
|
|
1246
|
+
.filter((item) => typesToSum.includes(item?.type))
|
|
1247
|
+
.reduce((sum, item) => sum + (item?.value || 0), 0);
|
|
1248
|
+
}
|
|
1249
|
+
// else {
|
|
1250
|
+
// // Old format: count is an object with keys
|
|
1251
|
+
// totalCount = (count.duplicateCount || 0) +
|
|
1252
|
+
// (count.employeeCount || 0) +
|
|
1253
|
+
// (count.junkCount || 0) +
|
|
1254
|
+
// (count.houseKeepingCount || 0);
|
|
1255
|
+
// }
|
|
1256
|
+
return Math.round((totalCount / taggingItems[0].revicedFootfall) * 100);
|
|
1257
|
+
}
|
|
1258
|
+
requestReset() {
|
|
1259
|
+
const modalRef = this.modalService.open(this.resetRequestPopup, {
|
|
1260
|
+
centered: true,
|
|
1261
|
+
size: "md",
|
|
1262
|
+
backdrop: "static",
|
|
1263
|
+
keyboard: false,
|
|
1264
|
+
});
|
|
1265
|
+
}
|
|
1266
|
+
cancelResetRequest() {
|
|
1267
|
+
this.modalService.dismissAll();
|
|
1268
|
+
}
|
|
1269
|
+
submitResetRequest() {
|
|
1270
|
+
let payload = {
|
|
1271
|
+
storeId: this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null,
|
|
1272
|
+
dateString: this.folderDate || ""
|
|
1273
|
+
};
|
|
1274
|
+
console.log('submitResetRequest Payload:', payload);
|
|
1275
|
+
// Close modal after submission
|
|
1276
|
+
this.modalService.dismissAll();
|
|
1277
|
+
this.service
|
|
1278
|
+
.sendVMSResetRequest(payload)
|
|
1279
|
+
.pipe(takeUntil(this.destroy$))
|
|
1280
|
+
?.subscribe({
|
|
1281
|
+
next: (res) => {
|
|
1282
|
+
if (res && res.code === 200) {
|
|
1283
|
+
this.loadCardData();
|
|
1284
|
+
this.toast.getSuccessToast("Request reset successfully");
|
|
1285
|
+
}
|
|
1286
|
+
else {
|
|
1287
|
+
this.toast.getErrorToast("Failed to reset request");
|
|
1288
|
+
}
|
|
1289
|
+
},
|
|
1290
|
+
error: (err) => {
|
|
1291
|
+
const msg = err.error?.error ||
|
|
1292
|
+
err.error ||
|
|
1293
|
+
err?.error?.message ||
|
|
1294
|
+
err.message ||
|
|
1295
|
+
"Unknown error";
|
|
1296
|
+
console.error('Error in submitResetRequest :', err);
|
|
1297
|
+
this.toast.getErrorToast(msg || "Unknown error occurred");
|
|
1298
|
+
},
|
|
1299
|
+
});
|
|
1300
|
+
}
|
|
1301
|
+
// Get normalized date for current folderDate
|
|
1302
|
+
getNormalizedDate() {
|
|
1303
|
+
if (!this.folderDate)
|
|
1304
|
+
return null;
|
|
1305
|
+
return new Date(this.folderDate).toISOString().split("T")[0];
|
|
1306
|
+
}
|
|
1307
|
+
// Get selected date's card data
|
|
1308
|
+
getSelectedDateCardData() {
|
|
1309
|
+
const normalizedDate = this.getNormalizedDate();
|
|
1310
|
+
return normalizedDate ? this.cardDataMap[normalizedDate] : null;
|
|
1311
|
+
}
|
|
869
1312
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, deps: [{ token: i1.TrafficService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.NgbModal }, { token: i4.ToastService }, { token: i5.TrafficRvpsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
870
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n<button \r\n [disabled]=\"!canEnableButton()\" \r\n class=\"btn btn-primary\" \r\n type=\"button\" \r\n (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n</button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n<ng-container *ngIf=\"!(countData?.length > 0)\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('junk')\">\r\n Junk\r\n <span\r\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.junk || 0 }}\r\n </span>\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n \r\n\r\n</ng-container>\r\n\r\n </div>\r\n<ng-container *ngIf=\"!imageFlow\">\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n <div *ngIf=\"loading\" 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=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n*ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n<!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n<ng-container >\r\n<img\r\nclass=\"img-src cursor-pointer\"\r\n[src]=\"imageUrl + obj?.filePath\"\r\n(error)=\"obj.filePath = null\"\r\nalt=\"\"\r\n(click)=\"imgFullView(obj)\"\r\n/>\r\n</ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span>\r\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\r\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 title-type\">\r\n Select non-shopper type\r\n </div>\r\n \r\n\r\n <section class=\"col-md-6 text-end\" *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\r\n \r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n \r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\r\n <ng-container *ngIf=\"editBtnShow\">\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n \r\n </div>\r\n </ng-container>\r\n </div>\r\n </section>\r\n \r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\"\r\n id=\"junk\" [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"junk\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>\r\n <span class=\"ms-5 tag-class\"> Junk</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input \r\n *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}} \r\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\r\n \r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Junk\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-model>\r\n <div class=\"mx-4\">\r\n <div class=\"row\">\r\n <div class=\" p-2 mb-2 mt-5\">\r\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\" cursor-pointer w-100 h-525px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\r\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n\r\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n \r\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n \r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>", styles: [".switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}\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: "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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.MagnifierDirective, selector: "[appMagnifier]" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
1313
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "resetRequestPopup", first: true, predicate: ["resetRequestPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'close'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations@lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\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: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
871
1314
|
}
|
|
872
1315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, decorators: [{
|
|
873
1316
|
type: Component,
|
|
874
|
-
args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n<button \r\n [disabled]=\"!canEnableButton()\" \r\n class=\"btn btn-primary\" \r\n type=\"button\" \r\n (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n</button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n<ng-container *ngIf=\"!(countData?.length > 0)\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('junk')\">\r\n Junk\r\n <span\r\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.junk || 0 }}\r\n </span>\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n \r\n\r\n</ng-container>\r\n\r\n </div>\r\n<ng-container *ngIf=\"!imageFlow\">\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n <div *ngIf=\"loading\" 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=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n*ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n<!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n<ng-container >\r\n<img\r\nclass=\"img-src cursor-pointer\"\r\n[src]=\"imageUrl + obj?.filePath\"\r\n(error)=\"obj.filePath = null\"\r\nalt=\"\"\r\n(click)=\"imgFullView(obj)\"\r\n/>\r\n</ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span>\r\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\r\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 title-type\">\r\n Select non-shopper type\r\n </div>\r\n \r\n\r\n <section class=\"col-md-6 text-end\" *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\r\n \r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n \r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\r\n <ng-container *ngIf=\"editBtnShow\">\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n \r\n </div>\r\n </ng-container>\r\n </div>\r\n </section>\r\n \r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\"\r\n id=\"junk\" [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"junk\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>\r\n <span class=\"ms-5 tag-class\"> Junk</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input \r\n *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}} \r\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\r\n \r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Junk\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-model>\r\n <div class=\"mx-4\">\r\n <div class=\"row\">\r\n <div class=\" p-2 mb-2 mt-5\">\r\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\" cursor-pointer w-100 h-525px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\r\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n fill=\"#12B76A\" />\r\n </svg></span>\r\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path\r\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n fill=\"#FEE4E2\" />\r\n <path\r\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"\r\n transform=\"translate(0.599609 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n\r\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n \r\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n \r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>", styles: [".switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}\n"] }]
|
|
1317
|
+
args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'close'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations@lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
875
1318
|
}], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i5.TrafficRvpsService }], propDecorators: { zoomPopup: [{
|
|
876
1319
|
type: ViewChild,
|
|
877
1320
|
args: ["zoomPopup"]
|
|
878
1321
|
}], raisedPopup: [{
|
|
879
1322
|
type: ViewChild,
|
|
880
1323
|
args: ["raisedPopup"]
|
|
1324
|
+
}], resetRequestPopup: [{
|
|
1325
|
+
type: ViewChild,
|
|
1326
|
+
args: ["resetRequestPopup"]
|
|
881
1327
|
}], imagePopup: [{
|
|
882
1328
|
type: ViewChild,
|
|
883
1329
|
args: ["imagePopup"]
|
|
884
1330
|
}] } });
|
|
885
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQU9qQjtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFYVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7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QU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO2FBQU0sSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtRQUVELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVyRSwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUNwRCxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQ2pELENBQUM7SUFDSixDQUFDO3dHQTEvQlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0Isb1ZDcEI3QixnOGhHQWttQ2M7OzRGRDlrQ0QsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7dU9BcW9CQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBMEZJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkEwTkMsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxFbGVtZW50UmVmLFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRyYWZmaWNSdnBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLXJ2cHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBUcmFmZmljU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItaW1nLXJ2cHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1nUnZwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgc3RvcmVJZGFycmF5OiBhbnk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgbm9ybWFsaXplOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcnZwc1NlcnZpY2U6IFRyYWZmaWNSdnBzU2VydmljZVxyXG4gICkge31cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XHJcbiAgdG9nZ2xlQWNjb3JkaW9uKCkge1xyXG4gICAgdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkID0gIXRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZDtcclxuICB9XHJcbiAgdXNlcnM6YW55O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRJbml0YWwoKTtcclxuICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XHJcbiAgfVxyXG4gIGdldEluaXRhbCgpIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcclxuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrbmF2ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnR5cGUgPSBcImZvb3RmYWxsXCI7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IFwiXCI7XHJcbiAgfVxyXG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XHJcbiAgYmFja25hdjogYm9vbGVhbjtcclxuICBkYXRlQXJyYXk6IGFueTtcclxuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xyXG4gICAgY29uc3QgZGF0ZXMgPSB0aGlzLmdldERhdGVSYW5nZUFycmF5KFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRvRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGVzIGFyZSB2YWxpZFxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxyXG4gICAgbGV0IGN1cnJlbnREYXRlID0gc3RhcnQ7XHJcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XHJcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcclxuICAgICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyAxKTsgLy8gSW5jcmVtZW50IHRoZSBkYXRlIGJ5IDEgZGF5XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICB9XHJcbiAgc2VsZWN0ZWRUaW1lOiBhbnk7XHJcbiAgZm9sZGVyTmFtZTogYW55O1xyXG4gIHNlbGVjdGVkVGltZXModmFsOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICB0aGlzLmdldFJldm9wcygpO1xyXG4gIH1cclxuICBmb2xkZXJEYXRlOiBhbnk7XHJcbiAgaW1hZ2VGbG93ID0gZmFsc2U7XHJcbiAgLy8gZ2V0IFJldm9wcyBBcGlcclxuICBnZXRSdnBzTGlzdDogYW55O1xyXG4gIGdldFJ2cHNJbWFnZUxpc3Q6IGFueTtcclxuICBvYmplY3RzQXJyYXk6IGFueTtcclxuICBpbWFnZXNBcnJheURhdGE6IGFueTtcclxuICBzZWxlY3RJbmRleDogYW55ID0gMDtcclxuICBmb290ZmFsbERhdGU6IGFueTtcclxuICBsZW5ndGhWYWx1ZTogYm9vbGVhbjtcclxuICBnZXRpbWFnZXMoaW5kZXg6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICB0aGlzLnNlbGVjdEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XHJcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xyXG4gICAgdGhpcy5zZXJ2aWNlPy5pc25vcm1hbGl6ZVNvdXJjZVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxpemUgPSBub3JtYWxpemU7XHJcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldFRvdGFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgY291bnREYXRhOiBhbnkgPSBbXTtcclxuICBnZXRUb3RhbCgpIHtcclxuICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICBjb25zdCBzdG9yZUlkID1cclxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRUb3RhbFZhbChzdG9yZUlkLCBkYXRlU3RyaW5nKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKSB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50RGF0YSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBpbWFnZVVybDogYW55O1xyXG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xyXG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhOiBhbnkgPSBbXTtcclxuICBvdmVyYWxsQXJyYXlEYXRhOiBhbnkgPSBbXTtcclxuICBhbGxGb290ZmFsbERhdGE6IGFueSA9IFtdO1xyXG4gIGdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHN0YXR1c0xpc3QgPSB0aGlzLmdldFJ2cHNMaXN0Py50aWNrZXRTdGF0dXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdGF0dXNMaXN0KSkge1xyXG4gICAgICByZXR1cm4gc3RhdHVzTGlzdC5tYXAoKHMpID0+IHM/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pOyAvLyBSZW1vdmVzIG51bGwvdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIGdldFJldm9wcygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5vYmplY3RzQXJyYXkgPVtdO1xyXG4gICAgLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuICAgIC8vIHRoaXMuZ2V0UnZwc0xpc3QgPVtdO1xyXG4gICAgLy8gdGhpcy5nZXRSdnBzSW1hZ2VMaXN0PVtdO1xyXG4gICAgLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXHJcbiAgICBjb25zdCBzdG9yZUlkID1cclxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XHJcbiAgICBjb25zdCBncm91cEJ5S2V5ID0gXCJ0aW1lXCI7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSBcImZvb3RmYWxsXCIgPyBcIlwiIDogdGhpcy50eXBlIHx8IFwiXCI7XHJcbiAgICBjb25zdCBwcm9jZXNzVHlwZSA9IFwiZm9vdGZhbGxcIjtcclxuXHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRSdnBzTGlzdEFwaShzdG9yZUlkLCBkYXRlU3RyaW5nLCBncm91cEJ5S2V5LCB0eXBlLCBwcm9jZXNzVHlwZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gdGhpcy5ydnBzU2VydmljZT8uZm9vdGZhbGxDRE47XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG5cclxuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcclxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZm9vdGZhbGxEYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIHRpbWVSYW5nZSArIGNvdW50IG9iamVjdFxyXG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2VzID0gdGhpcy5hbGxGb290ZmFsbERhdGEubWFwKFxyXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gdGltZVJhbmdlcy5tYXAoKHRpbWVSYW5nZTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIHRpbWVSYW5nZSxcclxuICAgICAgICAgICAgICBjb3VudDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoKGQ6IGFueSkgPT4gZC50aW1lUmFuZ2UgPT09IHRpbWVSYW5nZSlcclxuICAgICAgICAgICAgICAgICAgPy5kYXRhPy5sZW5ndGggfHwgMCxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAvLyBPbmx5IHJlc2V0IGlmIHByZXZpb3VzIHNlbGVjdGVkIHRpbWUgaXMgTk9UIGluIHRoZSBuZXcgbGlzdFxyXG4gICAgICAgICAgICBpZiAoIXRpbWVSYW5nZXMuaW5jbHVkZXModGhpcy5zZWxlY3RlZFRpbWUpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVzKHRoaXMub2JqZWN0c0FycmF5WzBdLnRpbWVSYW5nZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEgPVxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcclxuICAgICAgICAgICAgICApPy5kYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgLy8gQ291bnQgcmV2b3BzVHlwZXNcclxuICAgICAgICAgICAgY29uc3QgcmV2b3BzVHlwZUNvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgICAgIFwibm9uLXRhZ2dpbmdcIjogMCxcclxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IDAsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWU6IDAsXHJcbiAgICAgICAgICAgICAgXCJob3VzZS1rZWVwaW5nXCI6IDAsXHJcbiAgICAgICAgICAgICAganVuazogMCxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpdGVtLmRhdGE/LmZvckVhY2goKGltYWdlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5wdXNoKGltYWdlKTtcclxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnQrKztcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID1cclxuICAgICAgICAgICAgICAgICAgaW1hZ2UucmV2b3BzVHlwZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkgfHwgXCJ1bmtub3duXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibm9uLXRhZ2dpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSsrO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImVtcGxveWVlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0rKztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiaG91c2Uta2VlcGluZ1wiXSsrO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHR5cGUgPT09IFwianVua1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl0rKztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDinIUgQ291bnQgZHVwbGljYXRlcyBvbmx5IGZyb20gZHVwbGljYXRlSW1hZ2VQYXRoXHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSArPVxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgZm9vdGZhbGxDb3VudDogdG90YWxDb3VudCxcclxuICAgICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSxcclxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSxcclxuICAgICAgICAgICAgICBlbXBsb3llZTogcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0sXHJcbiAgICAgICAgICAgICAgaG91c2VrZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbXCJob3VzZS1rZWVwaW5nXCJdLFxyXG4gICAgICAgICAgICAgIGp1bms6IHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IHR5cGUgZmlsdGVyIGFmdGVyIGxvYWRpbmcgdGltZVJhbmdlIGRhdGFcclxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBmYWlsdXJlXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9XHJcbiAgICAgICAgICAgIGVyci5lcnJvci5lcnJvciB8fFxyXG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcclxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzOiBhbnk7XHJcbiAgZWRpdFZhbHVlKCkge1xyXG4gICAgY29uc3QgdHlwZSA9ICh0aGlzLnNlbGVjdGVkVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZEltYWdlID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBzZWxlY3RlZEltYWdlPy50ZW1wbGQ7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmXHJcbiAgICAgIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpXHJcbiAgICApIHtcclxuICAgICAgLy8gMS4gQ29udmVydCBkdXBsaWNhdGUgY2hpbGRyZW4gaW50byBjb25zaXN0ZW50IG9iamVjdHMgd2l0aCBwYXJlbnQgcmVmZXJlbmNlXHJcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkcmVuID0gc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKFxyXG4gICAgICAgIChjaGlsZDogYW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uY2hpbGQsXHJcbiAgICAgICAgICBwYXJlbnQ6IHNlbGVjdGVkVGVtcGxkLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIDIuIENvbGxlY3QgdGhlIHRlbXBsZCB2YWx1ZXMgb2YgZHVwbGljYXRlIGNoaWxkcmVuXHJcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkSWRzID0gZHVwbGljYXRlQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC50ZW1wSWRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIDMuIEZpbHRlciBvdXQgbm9uLXRhZ2dpbmcgaW1hZ2VzIGV4Y2VwdCB0aGUgc2VsZWN0ZWQgcGFyZW50ICYgaXRzIGNoaWxkcmVuXHJcbiAgICAgIGNvbnN0IG5vblRhZ2dpbmdJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzTm9uVGFnZ2luZyA9XHJcbiAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJub24tdGFnZ2luZ1wiO1xyXG4gICAgICAgIGNvbnN0IGlzTm90U2VsZWN0ZWQgPVxyXG4gICAgICAgICAgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQgJiZcclxuICAgICAgICAgICFkdXBsaWNhdGVDaGlsZElkcy5pbmNsdWRlcyhpbWcudGVtcGxkKTtcclxuICAgICAgICByZXR1cm4gaXNOb25UYWdnaW5nICYmIGlzTm90U2VsZWN0ZWQ7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gNC4gTWVyZ2UgZHVwbGljYXRlIGNoaWxkcmVuICsgb3RoZXIgbm9uLXRhZ2dpbmcgaW1hZ2VzXHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFsuLi5kdXBsaWNhdGVDaGlsZHJlbiwgLi4ubm9uVGFnZ2luZ0ltYWdlc107XHJcblxyXG4gICAgICAvLyA1LiBNYXJrIHNlbGVjdGVkOiBvbmx5IGR1cGxpY2F0ZSBpbWFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBpc0NoZWNrZWRcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNEdXBsaWNhdGUgPVxyXG4gICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCI7XHJcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gaXNEdXBsaWNhdGUgJiYgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyA2LiBTdG9yZSBvcmlnaW5hbCBjaGVja2VkIElEcyB0byBjb21wYXJlIGxhdGVyIGR1cmluZyBzdWJtaXRcclxuICAgICAgdGhpcy5vcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcclxuICAgICAgICAuZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZSlcclxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCk7XHJcblxyXG4gICAgICAvLyDinIUgNy4gRmlsbCBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Qgd2l0aCBwcmUtc2VsZWN0ZWQgZHVwbGljYXRlc1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcImR1cGxpY2F0ZVwiICYmXHJcbiAgICAgICAgICAgIGltZy5pc0NoZWNrZWQgPT09IHRydWVcclxuICAgICAgICApXHJcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAuLi5pbWcsXHJcbiAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgc2VsZWN0ZWRUZW1wbGQsXHJcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gTm90IGR1cGxpY2F0ZSB0eXBlIOKGkiBzaG93IG9ubHkgc2VsZWN0ZWQgdHlwZSAoZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGVkIGltYWdlKVxyXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gaW1nVHlwZSA9PT0gdHlwZSAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrVG9Gb290ZmFsbDEoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuICB9XHJcbiAgc2VsZWN0SW1hZ2VBcnJheTogYW55O1xyXG4gIHJlbWFpbmluZ0ltYWdlQXJyYXk6IGFueTtcclxuICByZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgZWRpdEJ0blNob3cgPSBmYWxzZTtcclxuaW1nRnVsbFZpZXcob2JqOiBhbnkpIHtcclxuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XHJcbiAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xyXG4gIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XHJcbiAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xyXG4gIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XHJcbiAgbGV0IGZpbHRlcmVkQnlUeXBlOiBhbnlbXSA9IFtdO1xyXG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkob2JqLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcclxuICAgIC8vIPCflLkgQ2FzZSAxOiBEdXBsaWNhdGUgcGFyZW50IOKGkiBzaG93IG9ubHkgcGFyZW50ICsgaXRzIGNoaWxkcmVuXHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IG9iai5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoZWQgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmluZChcclxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IGNoaWxkLnRlbXBJZFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgIC4uLihtYXRjaGVkIHx8IHt9KSxcclxuICAgICAgICBwYXJlbnQ6IG9iai50ZW1wbGQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcclxuXHJcbiAgICAvLyBjdXJyZW50IGluZGV4IGFsd2F5cyAwIChwYXJlbnQgZmlyc3QpXHJcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcclxuXHJcbiAgICAvLyByZW1haW5pbmcgPSBjaGlsZHJlbiBvbmx5XHJcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBjaGlsZHJlbjtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8g8J+UuSBDYXNlIDI6IE5vcm1hbCDihpIgZmlsdGVyIGJ5IHNhbWUgdHlwZVxyXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGZpbHRlcmVkQnlUeXBlLmZpbmRJbmRleChcclxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBvYmoudGVtcGxkXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IGZpbHRlcmVkQnlUeXBlLmZpbHRlcihcclxuICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8g4pyFIEhhbmRsZSBlZGl0IGJ1dHRvbiAvIHJhZGlvIGxvZ2ljXHJcbiAgaWYgKFxyXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XHJcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxyXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcclxuICApIHtcclxuICAgIGlmIChcclxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmXHJcbiAgICAgIG9iaj8uZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxyXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiIHx8IG9iaj8ucmV2b3BzVHlwZSA9PT1cImp1bmtcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xyXG4gICAgdGhpcy5vblJhZGlvQ2hhbmdlKG9iaj8ucmV2b3BzVHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuICBpbWdTd2FwKG9iajogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RJbWFnZUFycmF5KSB7XHJcbiAgICAgIC8vIEZpbmQgd2hlcmUgdGhlIG5ldyBzZWxlY3RlZCBpbWFnZSBpcyBpbiB0aGUgbGlzdFxyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBvYmoudGVtcGxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBSZXBsYWNlIHNlbGVjdGVkSW1hZ2VBcnJheSBiYWNrIGludG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uXHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlbaW5kZXhdID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGZhbGxiYWNrIGlmIG5vdCBmb3VuZFxyXG4gICAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5wdXNoKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgaW1hZ2VcclxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcclxuXHJcbiAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgZnJvbSByZW1haW5pbmcgbGlzdFxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcclxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxyXG4gIHNlbGVjdGVkUmFkaW9UeXBlOiBhbnk7XHJcbm9uUmFkaW9DaGFuZ2UodmFsOiBhbnkpIHtcclxuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8uZHVwbGljYXRlSW1hZ2VQYXRoKSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkuZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICAvLyDwn5S5IENhc2UgMTogQWxyZWFkeSBpbiBkdXBsaWNhdGUgZmxvdyDihpIga2VlcCBjaGlsZHJlbiBzZXQgYnkgaW1nRnVsbFZpZXdcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5Lm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7IC4uLmNoaWxkLCBzZWxlY3RlZDogZmFsc2UsIGlzQ2hlY2tlZDogZmFsc2UgfTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDwn5S5IENhc2UgMjogUmFkaW8gZHVwbGljYXRlIGZvciBub24tZHVwbGljYXRlIHBhcmVudCDihpIgc2hvdyBub24tdGFnZ2luZyBpbWFnZXNcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZDtcclxuXHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBpbWdUeXBlID09PSBcIm5vbi10YWdnaW5nXCIgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4gIHR5cGU6IGFueSA9IFwiZm9vdGZhbGxcIjtcclxuICBzZWxlY3RQbGFuVHJlbmRzKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XHJcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSB0aGlzLnR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkVHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XHJcbiAgICAgIC8vIEZvb3RmYWxsIHNob3dzIGFsbCBjdXJyZW50VGltZVJhbmdlRGF0YSAodGltZSByYW5nZSBiYXNlZClcclxuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbLi4udGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBGb3IgdGFnZ2VkIHR5cGVzIGxpa2UgJ2R1cGxpY2F0ZScsICdlbXBsb3llZScsICdob3VzZWtlZXBpbmcnXHJcbiAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy8gZWxzZSB7XHJcbiAgICAvLyAgIC8vIE5vbi10YWdnaW5nIG1lYW5zIG5vIHJldm9wc1R5cGUgLSBzaG93IGFsbCB1bm1hdGNoZWQgKG5vIHRhZylcclxuICAgIC8vICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgLy8gICAgICFpdGVtLnJldm9wc1R5cGVcclxuICAgIC8vICAgKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBTZXQgbm9EYXRhIGJhc2VkIG9uIHJlc3VsdFxyXG4gICAgdGhpcy5ub0RhdGEgPSAhdGhpcy5pbWFnZXNBcnJheURhdGE/Lmxlbmd0aDtcclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgaGFuZGxlSW1hZ2VDbGljayhldnQ6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIC8vIE9ubHkgdG9nZ2xlIGNoZWNrYm94IGlmIHJhZGlvIGlzICdkdXBsaWNhdGUnIGFuZCBpbWFnZSBpcyBub3QgYWxyZWFkeSB0YWdnZWRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxyXG4gICAgICAhKG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5vbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0LCBvYmosIFwiZHVwbGljYXRlXCIpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlICE9PSBcImR1cGxpY2F0ZVwiKSB7XHJcbiAgICAgIHRoaXMuaW1nU3dhcChvYmopOyAvLyBleGlzdGluZyBub24tZHVwbGljYXRlIGNsaWNrIGJlaGF2aW9yXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdDogYW55ID0gW107XHJcblxyXG4gIG9uSW1hZ2VDaGVja2JveENoYW5nZShldnQ6IGFueSwgaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIpIHtcclxuICAgICAgY29uc3QgdG90YWxJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubGVuZ3RoO1xyXG4gICAgICBjb25zdCBhbHJlYWR5VGFnZ2VkQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDA7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRvdGFsSW1hZ2VzKVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhhbHJlYWR5VGFnZ2VkQ291bnQpXHJcbiAgICAgIC8vIFRvdGFsIHRhZ2dhYmxlIGNvdW50ID0gYWxyZWFkeSB0YWdnZWQgKyBzZWxlY3RlZCBub3dcclxuICAgICAgY29uc3QgbWF4U2VsZWN0YWJsZSA9IE1hdGgucm91bmQodG90YWxJbWFnZXMgKiAwLjIpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhtYXhTZWxlY3RhYmxlKVxyXG4gICAgICAvLyBDb3VudCBzZWxlY3RlZCBub3cgKGluIFVJKVxyXG4gICAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkXHJcbiAgICAgICkubGVuZ3RoO1xyXG5cclxuICAgICAgY29uc3Qgd2lsbFNlbGVjdCA9ICFpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgICAvLyDim5QgQmxvY2sgc2VsZWN0aW9uIGlmIHRyeWluZyB0byBnbyBiZXlvbmQgMTAlIGNhcFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgd2lsbFNlbGVjdCAmJlxyXG4gICAgICAgIGN1cnJlbnRseVNlbGVjdGVkQ291bnQgKyBhbHJlYWR5VGFnZ2VkQ291bnQgPj0gbWF4U2VsZWN0YWJsZVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFdhcm5pbmdUb2FzdChcclxuICAgICAgICAgIGBZb3UgY2FuIHNlbGVjdCBvbmx5ICR7bWF4U2VsZWN0YWJsZX0gaW1hZ2VzICgke1xyXG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0Py5kYXRhPy5jb25maWc/LmR1cGxpY2F0ZSA/PyBcIjIwJVwiXHJcbiAgICAgICAgICB9IG9mIHRvdGFsIGZvb3RmYWxsKWBcclxuICAgICAgICApO1xyXG4gICAgICAgIGV2dC50YXJnZXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIFByb2NlZWQgd2l0aCBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICAgIGltZy5zZWxlY3RlZCA9ICFpbWcuc2VsZWN0ZWQ7XHJcbiAgICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgICAvLyDinIUgQWx3YXlzIHJlYnVpbGQgdGhlIHNlbGVjdGVkIGxpc3RcclxuICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcclxuICAgICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpXHJcbiAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgIHBhcmVudDogaXRlbS5wYXJlbnQgfHwgdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQsXHJcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ+KchSBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Q6JywgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJWYWx1ZSgpIHtcclxuICAgIHRoaXMuc2F2ZShcIm5vbi10YWdnaW5nXCIpO1xyXG4gICAgLy8gdGhpcy5zdWJtaXRWYWx1ZSgnbm9uLXRhZ2dpbmcnKVxyXG4gIH1cclxuICBjYW5jZWwoKSB7XHJcbiAgICAvLyAxLiBDbGVhciBzZWxlY3RlZCBkdXBsaWNhdGUgaW1hZ2VzIGxpc3RcclxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gICAgLy8gMi4gUmVzZXQgYWxsIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgaW4gb3ZlcmFsbCBpbWFnZSBsaXN0XHJcbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgICAgLi4uaW1nLFxyXG4gICAgICBpc0NoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZDogZmFsc2UsIC8vIGFzc3VtaW5nICdzZWxlY3RlZCcgaXMgY2hlY2tib3ggYmluZFxyXG4gICAgICBwYXJlbnQ6IG51bGwsIC8vIHJlc2V0IHBhcmVudCBpZiB1c2VkXHJcbiAgICAgIC8vIEFkZCBvdGhlciBmbGFncyBoZXJlIGlmIG5lZWRlZFxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIDMuIENsb3NlIGltYWdlIGZsb3cvZnVsbC12aWV3IGlmIG9wZW5cclxuICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcblxyXG4gICAgLy8gNC4gUmVzZXQgY3VycmVudGx5IHNlbGVjdGVkIGltYWdlXHJcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcclxuXHJcbiAgICAvLyA1LiAoT3B0aW9uYWwpIFJlc2V0IHJhZGlvIGJ1dHRvbnMg4oCUIGlmIHlvdSBoYXZlIGFueSBzcGVjaWZpYyBmbGFnXHJcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBwb3B1cFR5cGU6IGFueTtcclxuICBAVmlld0NoaWxkKFwiem9vbVBvcHVwXCIpIHpvb21Qb3B1cDogRWxlbWVudFJlZjtcclxuICBzYXZlKGNhdGVnb3J5OiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIiwgLy8gUHJldmVudCBjbG9zaW5nIG9uIG91dHNpZGUgY2xpY2tcclxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLCAvLyBQcmV2ZW50IGNsb3Npbmcgb24gRVNDIGtleVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBvcHVwVHlwZSA9IGNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU3VibWl0KCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcbiAgfVxyXG4gIHN1Ym1pdFZhbHVlKGNhdGVnb3J5OiBhbnkpIHtcclxuICAgIGxldCBkdXBsaWNhdGVJbWFnZXMgPSBbXTtcclxuXHJcbiAgICBpZiAoY2F0ZWdvcnkgPT09IFwiZHVwbGljYXRlXCIpIHtcclxuICAgICAgZHVwbGljYXRlSW1hZ2VzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCA9PT0gdHJ1ZSlcclxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgICAgICAgIHRlbXBJZDogaW1nLnRlbXBsZCB8fCBpbWcudGVtcElkIHx8IFwiXCIsXHJcbiAgICAgICAgICB0aW1lUmFuZ2U6IGltZy50aW1lUmFuZ2UgfHwgXCJcIixcclxuICAgICAgICAgIGVudHJ5VGltZTogaW1nLmVudHJ5VGltZSB8fCBpbWcuZW50cnlUbWUgfHwgXCJcIixcclxuICAgICAgICAgIGV4aXRUaW1lOiBpbWcuZXhpdFRpbWUgfHwgXCJcIixcclxuICAgICAgICAgIGZpbGVQYXRoOiBpbWcuZmlsZVBhdGgsXHJcbiAgICAgICAgICByZXZvcHNUeXBlOiBcImR1cGxpY2F0ZVwiLFxyXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbWcgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcblxyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBzdG9yZUlkOlxyXG4gICAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCIsXHJcbiAgICAgIHRlbXBJZDogaW1nPy50ZW1wbGQgfHwgMCxcclxuICAgICAgcmV2b3BzVHlwZTogY2F0ZWdvcnksXHJcbiAgICAgIHRpbWVSYW5nZTogaW1nPy50aW1lUmFuZ2UgfHwgXCJcIixcclxuICAgICAgaXNDaGVja2VkOiB0cnVlLFxyXG4gICAgICBkdXBsaWNhdGVJbWFnZTogZHVwbGljYXRlSW1hZ2VzLFxyXG4gICAgICBwcm9jZXNzVHlwZTogaW1nPy5wcm9jZXNzVHlwZSB8fCBcImZvb3RmYWxsXCIsXHJcbiAgICAgIGVudHJ5VGltZTogaW1nPy5lbnRyeVRpbWUgfHwgaW1nPy5lbnRyeVRtZSB8fCBcIlwiLFxyXG4gICAgICBleGl0VGltZTogaW1nPy5leGl0VGltZSB8fCBcIlwiLFxyXG4gICAgICBmaWxlUGF0aDogaW1nPy5maWxlUGF0aCB8fCBcIlwiLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRSdnBzVGFnKG9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgICByZXM/Lm1lc3NhZ2UgfHwgXCJUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbmNlbFN1Ym1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbXNnID1cclxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fCBlcnIuZXJyb3IgfHwgZXJyPy5tZXNzYWdlIHx8IFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBub0RhdGFNZXNzYWdlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgIGR1cGxpY2F0ZTogXCJObyBkdXBsaWNhdGVzIGZvdW5kXCIsXHJcbiAgICBlbXBsb3llZTogXCJObyBlbXBsb3llZS9zdGFmZiBmb3VuZFwiLFxyXG4gICAgXCJob3VzZS1rZWVwaW5nXCI6IFwiTm8gaG91c2Uga2VlcGluZyBmb3VuZFwiLFxyXG4gICAgXCJub24tdGFnZ2luZ1wiOiBcIk5vIG5vbi10YWdnaW5nIGZvdW5kXCIsXHJcbiAgICBqdW5rOiBcIk5vIGp1bmsgZm91bmRcIlxyXG4gIH07XHJcblxyXG4gIHRlbXBSYWlzZWRQYXlsb2FkOiBhbnkgPSBudWxsOyAvLyBjbGFzcy1sZXZlbCB2YXJpYWJsZSBmb3IgcHJldmlld1xyXG5cclxuICBwcmVwYXJlUmFpc2VkUGF5bG9hZChzaG93T25seSA9IGZhbHNlKTogYW55IHt9XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJyYWlzZWRQb3B1cFwiKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcclxuICBSYWlzZWQoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXHJcbiAgICAgIHRpY2tldE5hbWU6IFwiZm9vdGZhbGwtZGlyZWN0b3J5XCIsXHJcbiAgICAgIGZvb3RmYWxsQ291bnQ6IDAsXHJcbiAgICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxyXG4gICAgICBlbXBsb3llZUNvdW50OiAwLFxyXG4gICAgICBob3VzZUtlZXBpbmdDb3VudDogMCxcclxuICAgICAganVua0NvdW50OjAsXHJcbiAgICAgIGNvbW1lbnRzOiB0aGlzLmNvbW1lbnRUZXh0IHx8IFwiXCIsXHJcbiAgICAgIGR1cGxpY2F0ZUltYWdlczogW10sXHJcbiAgICAgIGhvdXNlS2VlcGluZzogW10sXHJcbiAgICAgIGVtcGxveWVlOiBbXSxcclxuICAgICAganVuazogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGxldCB0b3RhbENoZWNrZWRDb3VudCA9IDA7XHJcblxyXG4gICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xyXG5cclxuICAgICAgLy8g4pyFIENvdW50IG9ubHkgaWYgaXRlbSBpcyBjaGVja2VkIEFORCByZXZvcHNUeXBlIGlzICdub24tdGFnZ2luZydcclxuICAgICAgLy8gY29uc3QgaXNOb3RUYWdnZWQgPSB0eXBlID09PSAnbm9uLXRhZ2dpbmcnO1xyXG5cclxuICAgICAgLy8gaWYgKGlzTm90VGFnZ2VkKSB7XHJcbiAgICAgIC8vICAgdG90YWxDaGVja2VkQ291bnQrKztcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8gRFVQTElDQVRFIFRZUEVcclxuICAgICAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcclxuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0gaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGhcclxuICAgICAgICAgIC5maWx0ZXIoKGR1cDogYW55KSA9PiBkdXAuaXNDaGVja2VkKVxyXG4gICAgICAgICAgLm1hcCgoZHVwOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIHRlbXBJZDogZHVwLnRlbXBJZCB8fCBkdXAudGVtcGxkIHx8IFwiXCIsXHJcbiAgICAgICAgICAgIGZpbGVQYXRoOiBkdXAuZmlsZVBhdGgsXHJcbiAgICAgICAgICAgIGVudHJ5VGltZTogZHVwPy5lbnRyeVRpbWUgfHwgZHVwPy5lbnRyeVRtZSB8fCBcIlwiLFxyXG4gICAgICAgICAgICBleGl0VGltZTogZHVwLmV4aXRUaW1lLFxyXG4gICAgICAgICAgICB0aW1lUmFuZ2U6IGR1cC50aW1lUmFuZ2UsXHJcbiAgICAgICAgICAgIGlzQ2hlY2tlZDogZHVwLmlzQ2hlY2tlZCxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgaWYgKG5lc3RlZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgcGF5bG9hZC5kdXBsaWNhdGVJbWFnZXMucHVzaCh7XHJcbiAgICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxyXG4gICAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcclxuICAgICAgICAgICAgZGF0YTogbmVzdGVkRGF0YSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlQ291bnQgKz0gbmVzdGVkRGF0YS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBFTVBMT1lFRVxyXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImVtcGxveWVlXCIgJiYgaXNDaGVja2VkKSB7XHJcbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZS5wdXNoKHtcclxuICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXHJcbiAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBwYXlsb2FkLmVtcGxveWVlQ291bnQrKztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSE9VU0VLRUVQSU5HXHJcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiICYmIGlzQ2hlY2tlZCkge1xyXG4gICAgICAgIHBheWxvYWQuaG91c2VLZWVwaW5nLnB1c2goe1xyXG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcclxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcclxuICAgICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxyXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHBheWxvYWQuaG91c2VLZWVwaW5nQ291bnQrKztcclxuICAgICAgfSBcclxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJqdW5rXCIgJiYgaXNDaGVja2VkKSB7XHJcbiAgICAgICAgcGF5bG9hZC5qdW5rLnB1c2goe1xyXG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcclxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICAgICAgZW50cnlUaW1lIDogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXHJcbiAgICAgICAgICBleGl0VGltZSA6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgICAgICB0aW1lUmFuZ2UgOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgICAgIGlzQ2hlY2tlZCA6IGl0ZW0uaXNDaGVja2VkLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBwYXlsb2FkLmp1bmtDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBwYXlsb2FkLmZvb3RmYWxsQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZm9vdGZhbGxDb3VudDtcclxuXHJcbiAgICAvLyDwn5GHIFJldHVybiBvciBhc3NpZ25cclxuXHJcbiAgICB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkID0gcGF5bG9hZDtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmFpc2VkUG9wdXAsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6IFwibWRcIixcclxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXHJcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsUmFzaWVkKCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbW1lbnRUZXh0OiBhbnk7XHJcbiAgZ2V0UmFpc2VkRGF0YTogYW55O1xyXG4gIHN1Ym1pdFJhaXNlZCgpIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkOyAvLyBmcmVzaCBkYXRhIGZvciBBUElcclxuXHJcbiAgICB0aGlzLmdldFJhaXNlZERhdGEgPSBwYXlsb2FkO1xyXG5cclxuICAgIHRoaXMucnZwc1NlcnZpY2VcclxuICAgICAgLmdldENyZWF0ZVJhaXNlZFRhZyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICAgIHJlcz8ubWVzc2FnZSB8fCBcIlRpY2tldCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byB1cGRhdGVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPVxyXG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8XHJcbiAgICAgICAgICAgIGVyci5lcnJvciB8fFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgLy8gICAgIC8vIENvdW50IG9ubHkgdmFsaWQgZHVwbGljYXRlIGltYWdlcyB3aGVyZSBgZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMGBcclxuICAvLyAgICAgY29uc3QgdG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAvLyAgICAgICAgIGl0ZW0ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgKCFpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCB8fCBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDApXHJcbiAgLy8gICAgICkubGVuZ3RoO1xyXG5cclxuICAvLyAgICAgY29uc3QgbWF4QWxsb3dlZCA9IE1hdGguZmxvb3IodG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyAqIDAuMSk7IC8vIDEwJSBsaW1pdFxyXG5cclxuICAvLyAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnNvbWUoXHJcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGRcclxuICAvLyAgICAgKTtcclxuXHJcbiAgLy8gICAgIGlmIChpbWcuc2VsZWN0ZWQpIHtcclxuICAvLyAgICAgICAvLyDinYwgUmVhY2hlZCBtYXggYWxsb3dlZCDigJQgYmxvY2sgaXRcclxuICAvLyAgICAgICBpZiAodGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID49IG1heEFsbG93ZWQpIHtcclxuICAvLyAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAvLyAgICAgICAgICAgYE9ubHkgJHttYXhBbGxvd2VkfSBpbWFnZXMgY2FuIGJlIHNlbGVjdGVkIGFzIGR1cGxpY2F0ZSAoMTAlIG9mIHVudGFnZ2VkIGR1cGxpY2F0ZXMpLmBcclxuICAvLyAgICAgICAgICk7XHJcblxyXG4gIC8vICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGQpO1xyXG4gIC8vICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gIC8vICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGFbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICB9XHJcblxyXG4gIC8vICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgLy8g4pyFIEFkZCBpZiBub3QgYWxyZWFkeSBpbiBsaXN0XHJcbiAgLy8gICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5wdXNoKHtcclxuICAvLyAgICAgICAgICAgLi4uaW1nLFxyXG4gIC8vICAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXHJcbiAgLy8gICAgICAgICAgIHBhcmVudDogaW1nLnBhcmVudCB8fCBudWxsXHJcbiAgLy8gICAgICAgICB9KTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgLy8g4p2MIFJlbW92YWwgY2FzZVxyXG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QuZmlsdGVyKFxyXG4gIC8vICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgIT09IGltZy50ZW1wbGRcclxuICAvLyAgICAgICApO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgLy8g4pqg77iPIENhbGwgdGhpcyB0byB1cGRhdGUgYnV0dG9uIGVuYWJsZSBzdGF0ZVxyXG4gIC8vICAgdGhpcy5jaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGR1cGxpY2F0ZVNhdmVFbmFibGVkID0gZmFsc2U7XHJcblxyXG4gIC8vIGNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpIHtcclxuICAvLyAgIHRoaXMuZHVwbGljYXRlU2F2ZUVuYWJsZWQgPVxyXG4gIC8vICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPiAwO1xyXG4gIC8vIH1cclxuXHJcbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwiaW1hZ2VQb3B1cFwiKSBpbWFnZVBvcHVwOiBFbGVtZW50UmVmO1xyXG4gIHNlbGVjdGVkSW1hZ2VBcnJheSh1cmw6IGFueSwgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6IFwibGdcIixcclxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXHJcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VJbWFnZSgpIHtcclxuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICB9XHJcblxyXG4gIGNhbkVuYWJsZUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jb3VudERhdGEgfHwgIXRoaXMuZm9sZGVyRGF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBkdXBsaWNhdGUsIGhvdXNla2VlcGluZywgZW1wbG95ZWUsIGp1bmsgfSA9IHRoaXMuY291bnREYXRhO1xyXG5cclxuICAgIC8vIENoZWNrIGNvdW50IGNvbmRpdGlvblxyXG4gICAgY29uc3QgaGFzQ291bnQgPSBkdXBsaWNhdGUgPiAwIHx8IGhvdXNla2VlcGluZyA+IDAgfHwgZW1wbG95ZWUgPiAwIHx8IGp1bmsgPiAwO1xyXG5cclxuICAgIC8vIENvbnZlcnQgZm9sZGVyRGF0ZSB0byBEYXRlXHJcbiAgICBjb25zdCBmb2xkZXIgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSB0aW1lcyAocmVtb3ZlIGhvdXJzIGZvciBwcm9wZXIgZGF5IGNvbXBhcmlzb24pXHJcbiAgICBmb2xkZXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBpbiBkYXlzXHJcbiAgICBjb25zdCBkaWZmSW5UaW1lID0gdG9kYXkuZ2V0VGltZSgpIC0gZm9sZGVyLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGRpZmZJbkRheXMgPSBkaWZmSW5UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpO1xyXG5cclxuICAgIC8vIFdpdGhpbiBsYXN0IDcgZGF5cyDihpIgZGlmZiBiZXR3ZWVuIDAgYW5kIDdcclxuICAgIGNvbnN0IGlzV2l0aGluTGFzdDcgPSBkaWZmSW5EYXlzID49IDAgJiYgZGlmZkluRGF5cyA8PSA3O1xyXG5cclxuICAgIHJldHVybiBoYXNDb3VudCAmJiBpc1dpdGhpbkxhc3Q3O1xyXG4gIH1cclxuXHJcbiAgY3VycmVudEltYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZ2V0IGNhbk5hdmlnYXRlTGVmdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMDtcclxuICB9XHJcblxyXG4gIGdldCBjYW5OYXZpZ2F0ZVJpZ2h0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGggLSAxO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVJbWFnZShkaXJlY3Rpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSB7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZUxlZnQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleC0tO1xyXG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlUmlnaHQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGFbdGhpcy5jdXJyZW50SW1hZ2VJbmRleF07XHJcblxyXG4gICAgLy8gVXBkYXRlIHJlbWFpbmluZyBpbWFnZXNcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmZpbHRlcihcclxuICAgICAgKF86IGFueSwgaTogYW55KSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XHJcbiAgICApO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBtdC0zIHB4LTAgYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlY1wiPkltYWdlIERpcmVjdG9yeTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2NvcmRpb24tYXJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDVMNSAxTDkgNVwiIHN0cm9rZT1cIiMxYjg0ZmZcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNlY3Rpb24gKm5nSWY9XCJpc0FjY29yZGlvbkV4cGFuZGVkXCI+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMSBtdC01IHRleHQtY2VudGVyXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBkYXRlQXJyYXk7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXRpbWFnZXMoaSxvYmopXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgd2lkdGg9XCI1N1wiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NyA1NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjE1NDI5N1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiIzMzQjVGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzkuODIxNiAzNi4xNjY3QzM5LjgyMTYgMzYuNzg1NSAzOS41NzU4IDM3LjM3OSAzOS4xMzgyIDM3LjgxNjZDMzguNzAwNiAzOC4yNTQyIDM4LjEwNzEgMzguNSAzNy40ODgzIDM4LjVIMTguODIxNkMxOC4yMDI4IDM4LjUgMTcuNjA5MyAzOC4yNTQyIDE3LjE3MTcgMzcuODE2NkMxNi43MzQxIDM3LjM3OSAxNi40ODgzIDM2Ljc4NTUgMTYuNDg4MyAzNi4xNjY3VjE5LjgzMzNDMTYuNDg4MyAxOS4yMTQ1IDE2LjczNDEgMTguNjIxIDE3LjE3MTcgMTguMTgzNEMxNy42MDkzIDE3Ljc0NTggMTguMjAyOCAxNy41IDE4LjgyMTYgMTcuNUgyNC42NTQ5TDI2Ljk4ODMgMjFIMzcuNDg4M0MzOC4xMDcxIDIxIDM4LjcwMDYgMjEuMjQ1OCAzOS4xMzgyIDIxLjY4MzRDMzkuNTc1OCAyMi4xMjEgMzkuODIxNiAyMi43MTQ1IDM5LjgyMTYgMjMuMzMzM1YzNi4xNjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSAhPT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgd2lkdGg9XCI1N1wiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NyA1NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjQ2Mjg5MVwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNDAuMTMwMiAzNi4xNjY3QzQwLjEzMDIgMzYuNzg1NSAzOS44ODQ0IDM3LjM3OSAzOS40NDY4IDM3LjgxNjZDMzkuMDA5MiAzOC4yNTQyIDM4LjQxNTcgMzguNSAzNy43OTY5IDM4LjVIMTkuMTMwMkMxOC41MTE0IDM4LjUgMTcuOTE3OSAzOC4yNTQyIDE3LjQ4MDMgMzcuODE2NkMxNy4wNDI3IDM3LjM3OSAxNi43OTY5IDM2Ljc4NTUgMTYuNzk2OSAzNi4xNjY3VjE5LjgzMzNDMTYuNzk2OSAxOS4yMTQ1IDE3LjA0MjcgMTguNjIxIDE3LjQ4MDMgMTguMTgzNEMxNy45MTc5IDE3Ljc0NTggMTguNTExNCAxNy41IDE5LjEzMDIgMTcuNUgyNC45NjM1TDI3LjI5NjkgMjFIMzcuNzk2OUMzOC40MTU3IDIxIDM5LjAwOTIgMjEuMjQ1OCAzOS40NDY4IDIxLjY4MzRDMzkuODg0NCAyMi4xMjEgNDAuMTMwMiAyMi43MTQ1IDQwLjEzMDIgMjMuMzMzM1YzNi4xNjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjIuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhaW1hZ2VGbG93XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWNrbmF2XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlYyBtcy0yIG10LTFcIj57e2ZvbGRlckRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0gIFxyXG4gICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyBteC0yXCIgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJykgJiYgZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpXCI+XHJcbiAgVGlja2V0IFJhaXNlZFxyXG48L3NwYW4+XHJcbjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBteC0yXCIgKm5nSWY9XCJnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlRpY2tldCBDbG9zZWQ8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCIgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuPGJ1dHRvbiBcclxuICBbZGlzYWJsZWRdPVwiIWNhbkVuYWJsZUJ1dHRvbigpXCIgXHJcbiAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBcclxuICB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgKGNsaWNrKT1cIlJhaXNlZCgpXCI+XHJcbiAgUmFpc2UgdGlja2V0IGZvciBmb290ZmFsbFxyXG48L2J1dHRvbj5cclxuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJuYXYtZ3JvdXAgYmctd2hpdGUgYm9yZGVyLTEgYnRuLWdyb3VwIHctYXV0byBteS0yXCI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhKGNvdW50RGF0YT8ubGVuZ3RoID4gMClcIj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZm9vdGZhbGwnKVwiPlxyXG4gICAgICAgIFRvdGFsIEZvb3RmYWxsXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ25vbi10YWdnaW5nJylcIj5cclxuICAgICAgICBOb24tdGFnc1xyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZHVwbGljYXRlJylcIj5cclxuICAgICAgICBEdXBsaWNhdGVkXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2R1cGxpY2F0ZScgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2VtcGxveWVlJylcIj5cclxuICAgICAgICBFbXBsb3llZS9TdGFmZlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2p1bmsnKVwiPlxyXG4gICAgSnVua1xyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XHJcbiAgICBIb3VzZSBLZWVwaW5nXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uaG91c2VrZWVwaW5nIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgXHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1hZ2VGbG93XCI+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdmb290ZmFsbCdcIiBjbGFzcz1cImQtZmxleCBtdC0yIG1iLTIgdy0xMDAgb3ZlcmZsb3cteCBweC0wXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uIFwiIHN0eWxlPVwibWFyZ2luOiA2NHB4O2JvcmRlci1yYWRpdXM6IDhweDtcclxuYmFja2dyb3VuZDogdmFyKC0tR3JheS01MCwgI0Y5RkFGQik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMTMuMzMzM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1LjMzMiA1MS45OTk5SDMzLjY2NTRDMzIuNzgxMyA1MS45OTk5IDMxLjkzMzUgNTEuNjQ4NyAzMS4zMDgzIDUxLjAyMzZDMzAuNjgzMiA1MC4zOTg1IDMwLjMzMiA0OS41NTA2IDMwLjMzMiA0OC42NjY2VjMzLjY2NjZDMzAuMzMyIDMyLjc4MjUgMzAuNjgzMiAzMS45MzQ3IDMxLjMwODMgMzEuMzA5NkMzMS45MzM1IDMwLjY4NDQgMzIuNzgxMyAzMC4zMzMzIDMzLjY2NTQgMzAuMzMzM0g0OC42NjU0QzQ5LjU0OTQgMzAuMzMzMyA1MC4zOTczIDMwLjY4NDQgNTEuMDIyNCAzMS4zMDk2QzUxLjY0NzUgMzEuOTM0NyA1MS45OTg3IDMyLjc4MjUgNTEuOTk4NyAzMy42NjY2VjM1LjMzMzNNNDUuMzMyIDQxLjk5OTlINjAuMzMyQzYyLjE3MyA0MS45OTk5IDYzLjY2NTQgNDMuNDkyMyA2My42NjU0IDQ1LjMzMzNWNjAuMzMzM0M2My42NjU0IDYyLjE3NDIgNjIuMTczIDYzLjY2NjYgNjAuMzMyIDYzLjY2NjZINDUuMzMyQzQzLjQ5MTEgNjMuNjY2NiA0MS45OTg3IDYyLjE3NDIgNDEuOTk4NyA2MC4zMzMzVjQ1LjMzMzNDNDEuOTk4NyA0My40OTIzIDQzLjQ5MTEgNDEuOTk5OSA0NS4zMzIgNDEuOTk5OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9EYXRhTWVzc2FnZXNbdHlwZT8udG9Mb3dlckNhc2UoKV0gfHwgJ05vIGRhdGEgZm91bmQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIGNvbnRhaW4gaGlnaC00MDBweCBzY3JvbGwteVwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgPG5nLWNvbnRhaW5lclxyXG5cclxuKm5nRm9yPVwibGV0IG9iaiBvZiBpbWFnZXNBcnJheURhdGFcIlxyXG4+XHJcbjxkaXYgICpuZ0lmPVwidHlwZSAhPT0gJ2R1cGxpY2F0ZScgfHwgKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCIgIGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiPlxyXG48IS0tIENvbmRpdGlvbjogT25seSBzaG93IGlmIG5vdCBkdXBsaWNhdGUgT1IgZHVwbGljYXRlIHdpdGggbm9uLWVtcHR5IGR1cGxpY2F0ZUltYWdlUGF0aCAtLT5cclxuPG5nLWNvbnRhaW5lciA+XHJcbjxpbWdcclxuY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyXCJcclxuW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxyXG4oZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiXHJcbmFsdD1cIlwiXHJcbihjbGljayk9XCJpbWdGdWxsVmlldyhvYmopXCJcclxuLz5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0gJ2R1cGxpY2F0ZScgfHwgKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCIgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fSA8c3BhbiAqbmdJZj1cIih0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiIGNsYXNzPVwibXgtMiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cclxuXHJcbiAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGZ1bGwgaW1hZ2UgVmlldyAtLT5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e3NlbGVjdEltYWdlQXJyYXk/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiBtYi0yICBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0aXRsZS10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Qgbm9uLXNob3BwZXIgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCIgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJWYWx1ZSgpXCI+Q2xlYXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFsZXJ0LXRvYXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKHNlbGVjdGVkVHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRCdG5TaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJldm9wc1R5cGVWYWx1ZVwiIGNsYXNzPVwibWItNSB0ZXh0LWVuZFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS44MTA3OVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJkdXBsaWNhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkdXBsaWNhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZHVwbGljYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImR1cGxpY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtcGxveWVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkVtcGxveWVlL1N0YWZmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmdcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPiBIb3VzZSBLZWVwaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwianVua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImp1bmtcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInanVuaydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwidXNlcnM/LnJvbGUgPT09J3VzZXInICYmIHRoaXMudXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnIHx8IHJldm9wc1R5cGVWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgPHBhdGggZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEp1bms8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIG10LTMgaGlnaC00MDBweCBzY3JvbGwteVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiICpuZ0Zvcj1cImxldCBvYmogb2YgcmVtYWluaW5nSW1hZ2VBcnJheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgKm5nSWY9XCJzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIiB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvYmouc2VsZWN0ZWRcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZShvYmosICdkdXBsaWNhdGUnKVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIlxyXG4gIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgW2NoZWNrZWRdPVwib2JqLnNlbGVjdGVkXCJcclxuICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gIChjaGFuZ2UpPVwib25JbWFnZUNoZWNrYm94Q2hhbmdlKCRldmVudCwgb2JqLCAnZHVwbGljYXRlJylcIlxyXG4gIFtkaXNhYmxlZF09XCJvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXCJcclxuLz5cclxuXHJcbjxpbWdcclxuICBjbGFzcz1cImltZy1zcmNcIlxyXG4gIFtuZ0NsYXNzXT1cInNlbGVjdGVkUmFkaW9UeXBlICE9PSAnZHVwbGljYXRlJyA/ICdjdXJzb3ItcG9pbnRlcicgOiAnY3Vyc29yLXBvaW50ZXInXCJcclxuICBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiXHJcbiAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxyXG4gIGFsdD1cIlwiXHJcbiAgKGNsaWNrKT1cImhhbmRsZUltYWdlQ2xpY2soJGV2ZW50LCBvYmopXCJcclxuLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZCA/IG9iaj8udGVtcGxkIDogb2JqPy50ZW1wSWR9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdhcHByb3ZlZCdcIiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSA/IG9iaj8uZW50cnlUbWUgOm9iaj8uZW50cnlUaW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cclxuXHJcbiAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3pvb21Qb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJteS0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwODhfOTgzMzcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjE2OTMgMTMuMzMzM1YxOC4zMzMzTTI5LjE2OTMgMTguMzMzM0gyNC4xNjkzTTI5LjE2OTMgMTguMzMzM0wyNS4zMDI2IDE0LjdDMjQuNDA3IDEzLjgwMzkgMjMuMjk5IDEzLjE0OTMgMjIuMDgxOSAxMi43OTczQzIwLjg2NDkgMTIuNDQ1MyAxOS41Nzg1IDEyLjQwNzMgMTguMzQyOCAxMi42ODY5QzE3LjEwNzIgMTIuOTY2NSAxNS45NjI0IDEzLjU1NDUgMTUuMDE1NSAxNC4zOTYyQzE0LjA2ODUgMTUuMjM3OCAxMy4zNTAyIDE2LjMwNTYgMTIuOTI3NiAxNy41TTEwLjgzNTkgMjYuNjY2NlYyMS42NjY2TTEwLjgzNTkgMjEuNjY2NkgxNS44MzU5TTEwLjgzNTkgMjEuNjY2NkwxNC43MDI2IDI1LjNDMTUuNTk4MiAyNi4xOTYxIDE2LjcwNjIgMjYuODUwNiAxNy45MjMzIDI3LjIwMjdDMTkuMTQwMyAyNy41NTQ3IDIwLjQyNjcgMjcuNTkyNyAyMS42NjI0IDI3LjMxMzFDMjIuODk4IDI3LjAzMzUgMjQuMDQyOCAyNi40NDU1IDI0Ljk4OTcgMjUuNjAzOEMyNS45MzY3IDI0Ljc2MjEgMjYuNjU1IDIzLjY5NDMgMjcuMDc3NiAyMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwODhfOTgzMzdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCAxMClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5UYWdnaW5nIGFzIGVtcGxveWVlL3N0YWZmIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPlRhZ2dpbmcgYXMgZHVwbGljYXRlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnXCI+VGFnZ2luZyBhcyBob3VzZSBrZWVwaW5nIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+Q2xlYXIgZHVwbGljYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPlRhZ2dpbmcgYXMganVuazwvc3Bhbj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZW1wbG95ZWUvc3RhZmY/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGR1cGxpY2F0ZXM/IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5UaGlzIHdpbGwgcmVtb3ZlIHRhZ2dlZCBkdXBsaWNhdGVzIGFuZCBtb3ZlIHRoZW0gdG9cclxuICAgICAgICAgICAgICAgICAgICAnTm9uLXRhZycuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBqdW5rPzwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFN1Ym1pdCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICBZZXMsIFRhZ1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIFllcywgY2xlYXJcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3JhaXNlZFBvcHVwIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBib3JkZXItMCBwLTAgdy0xMDAgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIxLjI1MSAxMS4wODA2QzIxLjc0MDUgMTEuMDY5OSAyMi4yMTUzIDExLjI0ODcgMjIuNTc2MiAxMS41Nzk2TDIzLjQ5MjIgMTIuNDIwNEMyMy44MDg5IDEyLjcwOTcgMjMuODkzIDEzLjEwMTcgMjMuODY1MiAxMy40MjYzVjEzLjQyNzJDMjMuODM2IDEzLjc0NzggMjMuNjk1NCAxNC4wNTkyIDIzLjQ3ODUgMTQuMjk0NEMyMy4zNjk5IDE0LjQxMyAyMy4yODY1IDE0LjU1MjUgMjMuMjMxNCAxNC43MDM2QzIzLjE3NjQgMTQuODU0OCAyMy4xNTEyIDE1LjAxNTUgMjMuMTU4MiAxNS4xNzYzQzIzLjE2NTIgMTUuMzM3IDIzLjIwMzUgMTUuNDk1MyAyMy4yNzE1IDE1LjY0MTFDMjMuMzM5NCAxNS43ODY5IDIzLjQzNjIgMTUuOTE3MiAyMy41NTQ3IDE2LjAyNTlDMjMuNjczMyAxNi4xMzQ2IDIzLjgxMTcgMTYuMjE5OCAyMy45NjI5IDE2LjI3NDlDMjQuMTE0MSAxNi4zMyAyNC4yNzQ4IDE2LjM1NDEgMjQuNDM1NSAxNi4zNDcyQzI0LjU5NjEgMTYuMzQwMiAyNC43NTM3IDE2LjMwMTcgMjQuODk5NCAxNi4yMzM5QzI1LjAwODkgMTYuMTgyOSAyNS4xMTA2IDE2LjExNiAyNS4yMDAyIDE2LjAzNTZMMjUuMzcwMSAxNS44NjU3QzI1LjU3NTkgMTUuNjc0OCAyNS44Mzg1IDE1LjU0MDggMjYuMTE1MiAxNS40OTA3QzI2LjI5NzIgMTUuNDU0NiAyNi40ODUgMTUuNDYxNyAyNi42NjQxIDE1LjUxMDNDMjYuODQzOSAxNS41NTkxIDI3LjAxMDMgMTUuNjQ5IDI3LjE0OTQgMTUuNzcyOUwyNy4xNTE0IDE1Ljc3NDlMMjguMjU5OCAxNi43OTA1QzI4LjQ0NSAxNi45NjA1IDI4LjU5NDggMTcuMTY1OCAyOC43MDAyIDE3LjM5NEMyOC44MDU2IDE3LjYyMjMgMjguODY0OCAxNy44Njk0IDI4Ljg3NCAxOC4xMjA2QzI4Ljg4MzIgMTguMzcyIDI4Ljg0MjMgMTguNjIzNCAyOC43NTM5IDE4Ljg1ODlDMjguNjY1NSAxOS4wOTQxIDI4LjUzMTYgMTkuMzA5NiAyOC4zNTk0IDE5LjQ5MjdMMjAuMTExMyAyOC4yNTgzQzE5LjkzNyAyOC40NDM0IDE5LjcyNjggMjguNTkxMiAxOS40OTQxIDI4LjY5MzhDMTkuMjYxNCAyOC43OTY1IDE5LjAxMDIgMjguODUyMiAxOC43NTU5IDI4Ljg1NkMxOC41MDE2IDI4Ljg1OTcgMTguMjQ5MyAyOC44MTE5IDE4LjAxMzcgMjguNzE2M0MxNy43Nzc5IDI4LjYyMDYgMTcuNTYzNiAyOC40Nzg0IDE3LjM4MzggMjguMjk4M0wxNi4yNTM5IDI3LjE2ODVDMTUuNzUxMSAyNi42NjU2IDE1Ljg4MzIgMjUuOTU1MiAxNi4xNTE0IDI1LjU1NDJMMTYuMjA2MSAyNS40NjQ0QzE2LjMyNDEgMjUuMjQ4NiAxNi4zNzQyIDI1LjAwMDggMTYuMzQ5NiAyNC43NTQ0QzE2LjMyMTQgMjQuNDczMSAxNi4xOTcgMjQuMjEwMiAxNS45OTcxIDI0LjAxMDNDMTUuNzk3MSAyMy44MTAzIDE1LjUzNDMgMjMuNjg1OSAxNS4yNTI5IDIzLjY1NzdDMTQuOTcxNSAyMy42Mjk3IDE0LjY4ODcgMjMuNjk5NSAxNC40NTMxIDIzLjg1NkgxNC40NTIxQzE0LjA0OTQgMjQuMTIyMiAxMy4zNDA3IDI0LjI1NTIgMTIuODM3OSAyMy43NTE1TDExLjY3OTcgMjIuNTkzM0MxMS41MDM0IDIyLjQxNjkgMTEuMzY0IDIyLjIwNzQgMTEuMjY4NiAyMS45NzcxQzExLjE3MzEgMjEuNzQ2NyAxMS4xMjMxIDIxLjQ5OTkgMTEuMTIzIDIxLjI1MDVDMTEuMTIzIDIxLjAwMSAxMS4xNzMxIDIwLjc1MzUgMTEuMjY4NiAyMC41MjI5QzExLjM2NCAyMC4yOTI2IDExLjUwMzQgMjAuMDgzMSAxMS42Nzk3IDE5LjkwNjdMMTkuOTQ5MiAxMS42MzYyQzIwLjI5NTQgMTEuMjkwMiAyMC43NjE2IDExLjA5MTIgMjEuMjUxIDExLjA4MDZaTTIxLjI3ODMgMTIuMzgwNEMyMS4xMjM3IDEyLjM4MzggMjAuOTc2NSAxMi40NDY4IDIwLjg2NzIgMTIuNTU2MkwxMi41OTY3IDIwLjgyNTdDMTIuNTQwOSAyMC44ODE0IDEyLjQ5NyAyMC45NDgyIDEyLjQ2NjggMjEuMDIxQzEyLjQzNjcgMjEuMDkzOCAxMi40MjA5IDIxLjE3MTcgMTIuNDIwOSAyMS4yNTA1QzEyLjQyMDkgMjEuMzI5MiAxMi40MzY3IDIxLjQwNzMgMTIuNDY2OCAyMS40OEMxMi40OTcgMjEuNTUyOCAxMi41NDEgMjEuNjE5NiAxMi41OTY3IDIxLjY3NTNMMTMuNzA2MSAyMi43ODM3TDEzLjczMTQgMjIuNzcyQzE0LjIxNjkgMjIuNDQ4NSAxNC43OTkzIDIyLjMwMzUgMTUuMzc5OSAyMi4zNjA4QzE1Ljk2MDggMjIuNDE4MyAxNi41MDQyIDIyLjY3NDcgMTYuOTE3IDIzLjA4NzRDMTcuMzI5OCAyMy41MDAyIDE3LjU4NyAyNC4wNDM2IDE3LjY0NDUgMjQuNjI0NUMxNy43MDIgMjUuMjA1NSAxNy41NTY1IDI1Ljc4OTIgMTcuMjMyNCAyNi4yNzQ5TDE3LjIzMDUgMjYuMjc1OUMxNy4yMjYxIDI2LjI4MjIgMTcuMjIyNiAyNi4yODkzIDE3LjIxOTcgMjYuMjk2NEwxOC4zMDE4IDI3LjM4MDRDMTguMzU4NSAyNy40MzcyIDE4LjQyNjYgMjcuNDgyIDE4LjUwMSAyNy41MTIyQzE4LjU3NTUgMjcuNTQyNSAxOC42NTU5IDI3LjU1NzQgMTguNzM2MyAyNy41NTYyQzE4LjgxNjYgMjcuNTU0OSAxOC44OTYzIDI3LjUzNzggMTguOTY5NyAyNy41MDU0QzE5LjA0MyAyNy40NzI5IDE5LjEwOTEgMjcuNDI2MSAxOS4xNjQxIDI3LjM2NzdMMjcuNDEzMSAxOC42MDIxQzI3LjQ2NzMgMTguNTQ0MiAyNy41MDkzIDE4LjQ3NjEgMjcuNTM3MSAxOC40MDE5QzI3LjU2NDkgMTguMzI3NiAyNy41NzgxIDE4LjI0ODcgMjcuNTc1MiAxOC4xNjk0QzI3LjU3MjIgMTguMDkwMiAyNy41NTM4IDE4LjAxMTkgMjcuNTIwNSAxNy45Mzk5QzI3LjQ4NzIgMTcuODY3OSAyNy40Mzk0IDE3LjgwMzIgMjcuMzgwOSAxNy43NDk1TDI2LjMyMjMgMTYuNzc3OEMyNi4yOTI1IDE2Ljc4ODUgMjYuMjY0OCAxNi44MDUzIDI2LjI0MzIgMTYuODI4NkMyNi4wMjE3IDE3LjA3ODggMjUuNzUyOSAxNy4yODI3IDI1LjQ1MjEgMTcuNDI4MkMyNS4xNSAxNy41NzQzIDI0LjgyMTQgMTcuNjU4NSAyNC40ODYzIDE3LjY3NjNDMjQuMTUxMSAxNy42OTQgMjMuODE1IDE3LjY0NTIgMjMuNDk5IDE3LjUzMTdDMjMuMTgzMiAxNy40MTgzIDIyLjg5MjggMTcuMjQyOSAyMi42NDU1IDE3LjAxNjFDMjIuMzk4MiAxNi43ODkzIDIyLjE5ODggMTYuNTE1MyAyMi4wNTg2IDE2LjIxMDRDMjEuOTE4MyAxNS45MDU1IDIxLjg0MDQgMTUuNTc1MiAyMS44MjkxIDE1LjIzOTdDMjEuODE3OCAxNC45MDQzIDIxLjg3MzcgMTQuNTcgMjEuOTkzMiAxNC4yNTYzQzIyLjExMjEgMTMuOTQ0MiAyMi4yOTE1IDEzLjY1ODcgMjIuNTIxNSAxMy40MTY1TDIyLjU1NDcgMTMuMzY1N0MyMi41NTk0IDEzLjM1NTIgMjIuNTYwNyAxMy4zNDM3IDIyLjU2MzUgMTMuMzMyNUwyMS42OTczIDEyLjUzODZWMTIuNTM3NkMyMS41ODMzIDEyLjQzMzEgMjEuNDMyOSAxMi4zNzcgMjEuMjc4MyAxMi4zODA0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjAuM1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlJhaXNlIHRpY2tldHMgZm9yIHRoZSBmb2xsb3dpbmc8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlJhaXNpbmcgYSB0aWNrZXQgZm9yIGZvb3RmYWxsIGNvdW50IGlzc3Vlcy4gTWFrZSBzdXJlIGFsbCByZWNvcmRzIGFyZSBpZGVudGlmaWVkIGZvclxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmVtcGxveWVlQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudDonMCcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRW1wbG95ZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5ob3VzZUtlZXBpbmdDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5ob3VzZUtlZXBpbmdDb3VudCA6JzAnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgSG91c2UgS2VlcGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/Lmp1bmtDb3VudCA6JzAnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2NyaXB0aW9uIChPcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFJhc2llZCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgUmFpc2UgVGlja2V0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVBvcHVwIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHAtMiAgbWItMiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7c2VsZWN0SW1hZ2VBcnJheT8uZW50cnlUbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBweS0yIHB4LTBcIj4gLS0+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcHktMiBtYi0yIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZUltYWdlKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
1331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBV2pCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQWZWLFVBQVUsQ0FBTTtJQUNoQixZQUFZLENBQU07SUFDbEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsU0FBUyxDQUFNO0lBQ2YsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUMxQyxrQkFBa0IsR0FBUSxFQUFFLENBQUM7SUFDN0IsV0FBVyxDQUFNO0lBQ2pCLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDM0IsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsS0FBSyxDQUFLO0lBQ1YsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixNQUFNLFFBQVEsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pELFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNO3FCQUN4QyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7cUJBQ3JDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQ0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDbkU7b0JBQ0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixTQUFTLENBQU07SUFDZixnQkFBZ0I7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUM3QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztRQUNsRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztRQUM5RCxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFFL0IsK0JBQStCO1FBQy9CLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUNsRCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELG1DQUFtQztRQUNuQyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsT0FBTyxXQUFXLElBQUksR0FBRyxFQUFFO1lBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1lBQzdFLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCO1NBQy9FO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixZQUFZO1FBQ1YsTUFBTSxPQUFPLEdBQ2IsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoRixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVc7YUFDYix5QkFBeUIsQ0FDeEIsT0FBTyxFQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUM3QjthQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLEVBQUUsU0FBUyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3BELENBQUMsR0FBMkIsRUFBRSxJQUFTLEVBQUUsRUFBRTt3QkFDekMsTUFBTSxjQUFjLEdBQUcsSUFBSSxFQUFFLElBQUk7NEJBQy9CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLGNBQWMsRUFBRTs0QkFDbEIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHO2dDQUNwQixHQUFHLElBQUk7Z0NBQ1AsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFlBQVk7b0NBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQ0FDekMsQ0FBQyxDQUFDLEVBQUU7NkJBQ1AsQ0FBQzt5QkFDSDt3QkFDRCxPQUFPLEdBQUcsQ0FBQztvQkFDYixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2lCQUN2QjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxZQUFZLENBQU07SUFDbEIsVUFBVSxDQUFNO0lBQ2hCLGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELFVBQVUsQ0FBTTtJQUNoQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLG1DQUFtQztJQUMvRCxpQkFBaUI7SUFDakIsV0FBVyxDQUFNO0lBQ2pCLGdCQUFnQixDQUFNO0lBQ3RCLFlBQVksQ0FBTTtJQUNsQixlQUFlLENBQU07SUFDckIsY0FBYyxHQUE4QyxFQUFFLENBQUM7SUFDL0QsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixZQUFZLENBQU07SUFDbEIsV0FBVyxDQUFVO0lBQ3JCLFFBQVEsR0FBb0IsTUFBTSxDQUFDO0lBQ25DLFNBQVMsQ0FBQyxLQUFVLEVBQUUsR0FBUTtRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCO1lBQzdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsbUJBQW1CO2FBQ3BCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFNBQVMsR0FBUSxFQUFFLENBQUM7SUFDcEIsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUNYLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXO2FBQ2IsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7YUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsRUFBRSxTQUFTLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBRTNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNO3dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDekQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ3JCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsUUFBUSxDQUFNO0lBQ2QsZUFBZSxDQUFNO0lBQ3JCLG9CQUFvQixHQUFRLEVBQUUsQ0FBQztJQUMvQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQixpQkFBaUI7UUFDZixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCO1NBQ2xHO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHlCQUF5QjtRQUN6Qiw2QkFBNkI7UUFDN0Isd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QiwyQkFBMkI7UUFDM0IsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUUvQixJQUFJLENBQUMsV0FBVzthQUNiLGNBQWMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO2FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDO29CQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7b0JBQzFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQztvQkFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2xELHFEQUFxRDtvQkFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO29CQUU3RCxrQ0FBa0M7b0JBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUN6QyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDOUIsQ0FBQztvQkFDRixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3RELFNBQVM7d0JBQ1QsS0FBSyxFQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQzs0QkFDOUQsRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUM7cUJBQ3hCLENBQUMsQ0FBQyxDQUFDO29CQUNKLDhEQUE4RDtvQkFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3BEO29CQUVELHNDQUFzQztvQkFDdEMsSUFBSSxDQUFDLG9CQUFvQjt3QkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQ3BELEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFFaEIsb0JBQW9CO29CQUNwQixNQUFNLGVBQWUsR0FBOEI7d0JBQ2pELGFBQWEsRUFBRSxDQUFDO3dCQUNoQixTQUFTLEVBQUUsQ0FBQzt3QkFDWixRQUFRLEVBQUUsQ0FBQzt3QkFDWCxlQUFlLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSSxFQUFFLENBQUM7cUJBQ1IsQ0FBQztvQkFFRixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7b0JBRTNCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7NEJBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xDLFVBQVUsRUFBRSxDQUFDOzRCQUViLE1BQU0sSUFBSSxHQUNSLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxDQUFDOzRCQUV0RCxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7Z0NBQzFCLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDOzZCQUNsQztpQ0FBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7Z0NBQzlCLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDOzZCQUMvQjtpQ0FBTSxJQUFJLElBQUksS0FBSyxlQUFlLEVBQUU7Z0NBQ25DLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDOzZCQUNwQztpQ0FBTSxJQUFHLElBQUksS0FBSyxNQUFNLEVBQUU7Z0NBQ3pCLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDOzZCQUMzQjs0QkFFRCxrREFBa0Q7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQ0FDM0MsZUFBZSxDQUFDLFdBQVcsQ0FBQztvQ0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQzs2QkFDbkM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRzt3QkFDZixhQUFhLEVBQUUsVUFBVTt3QkFDekIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxhQUFhLENBQUM7d0JBQ3ZDLFNBQVMsRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDO3dCQUN2QyxRQUFRLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQzt3QkFDckMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxlQUFlLENBQUM7d0JBQzlDLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO3FCQUM5QixDQUFDO29CQUVGLGlEQUFpRDtvQkFDakQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUVwQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsdUJBQXVCO2lCQUN4QjtxQkFBTTtvQkFDTCxxQkFBcUI7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDZixHQUFHLENBQUMsS0FBSztvQkFDVCxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQ25CLEdBQUcsQ0FBQyxPQUFPO29CQUNYLGVBQWUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwyQkFBMkIsQ0FBTTtJQUNqQyxTQUFTO1FBQ1AsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRyxhQUFhLEVBQUUsTUFBTSxDQUFDO1FBRTdDLElBQ0UsSUFBSSxLQUFLLFdBQVc7WUFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFDL0M7WUFDQSw4RUFBOEU7WUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUM1RCxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDZixHQUFHLEtBQUs7Z0JBQ1IsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUNILENBQUM7WUFFRixxREFBcUQ7WUFDckQsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQzdDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUM3QixDQUFDO1lBRUYsNkVBQTZFO1lBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqRSxNQUFNLFlBQVksR0FDaEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLGFBQWEsQ0FBQztnQkFDekQsTUFBTSxhQUFhLEdBQ2pCLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYztvQkFDN0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLFlBQVksSUFBSSxhQUFhLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7WUFFSCx5REFBeUQ7WUFDekQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7WUFFdkUscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDNUMsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVcsQ0FBQztnQkFDdkQsR0FBRyxDQUFDLFFBQVEsR0FBRyxXQUFXLElBQUksR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7WUFDdkQsQ0FBQyxDQUFDLENBQUM7WUFFSCwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3hELE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7aUJBQzVDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpDLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjtpQkFDeEQsTUFBTSxDQUNMLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDWCxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVztnQkFDcEQsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQ3pCO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEIsR0FBRyxHQUFHO2dCQUNOLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLGNBQWM7Z0JBQ3BDLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLHNGQUFzRjtZQUN0RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sT0FBTyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQyx1Q0FBdUM7UUFDeEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBQ0QsZ0JBQWdCLENBQU07SUFDdEIsbUJBQW1CLENBQU07SUFDekIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLHdDQUF3QztJQUN4Qyx1QkFBdUIsQ0FBQyxHQUFRO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyw0Q0FBNEM7UUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUU1QixtRUFBbUU7UUFDbkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsQ0FBQztRQUUvRCxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQztZQUNsRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsZUFBZTtTQUNqRDtRQUVELElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRW5ELDJGQUEyRjtRQUMzRixJQUFJLGVBQWUsRUFBRTtZQUNuQixtRUFBbUU7WUFDbkUsOENBQThDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMsMkJBQTJCO1lBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUMsK0JBQStCO1lBQ3ZELDREQUE0RDtTQUM3RDthQUFNLElBQUksWUFBWSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2hGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDekQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQztnQkFDRixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO2lCQUNuQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxjQUFjLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7U0FDckM7YUFBTTtZQUNMLHlFQUF5RTtZQUN6RSx3REFBd0Q7WUFDeEQsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzNDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLFlBQVksQ0FDN0QsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUMvQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUN4QyxDQUFDO1lBQ0YsMEVBQTBFO1lBQzFFLG1FQUFtRTtZQUNuRSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FDOUMsQ0FBQyxDQUFNLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUNwRCxDQUFDO2FBQ0g7U0FDRjtRQUVELHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLElBQ0UsR0FBRyxFQUFFLFVBQVUsS0FBSyxXQUFXO2dCQUMvQixHQUFHLEVBQUUsVUFBVSxLQUFLLFVBQVU7Z0JBQzlCLEdBQUcsRUFBRSxVQUFVLEtBQUssZUFBZSxJQUFJLEdBQUcsRUFBRSxVQUFVLEtBQUksTUFBTSxFQUNoRTtnQkFDQSxJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztvQkFDL0IsR0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQ25DO29CQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtxQkFBTSxJQUNMLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtvQkFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxlQUFlLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQ2hFO29CQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDckM7U0FDRjthQUFNO1lBQ0wsc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO1FBRUQsOENBQThDO1FBQzlDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFbkQsSUFBSSxZQUFZLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDekUsZ0VBQWdFO1lBQ2hFLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDekQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQztnQkFDRixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO2lCQUNuQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFFSCxjQUFjLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUVwQyx3Q0FBd0M7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztZQUUzQiw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztTQUNyQzthQUFNO1lBQ0wsMENBQTBDO1lBQzFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUMzQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxZQUFZLENBQzdELENBQUM7WUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FDL0MsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQztZQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUM5QyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQ3BELENBQUM7U0FDSDtRQUdELHFDQUFxQztRQUNyQyxJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztZQUMvQixHQUFHLEVBQUUsVUFBVSxLQUFLLFVBQVU7WUFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxlQUFlLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQ2hFO1lBQ0EsSUFDRSxHQUFHLEVBQUUsVUFBVSxLQUFLLFdBQVc7Z0JBQy9CLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUNuQztnQkFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtpQkFBTSxJQUNMLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtnQkFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxlQUFlLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQ2hFO2dCQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1lBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUdDLE9BQU8sQ0FBQyxHQUFRO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQzlDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQ3hDLENBQUM7WUFFRiw2REFBNkQ7WUFDN0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsd0JBQXdCO2dCQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3REO1NBQ0Y7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUU1QixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQ3hELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQ3hDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksR0FBUSxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0MsaUJBQWlCLENBQU07SUFDdkIsb0NBQW9DO0lBQ3BDLGFBQWEsQ0FBQyxHQUFRO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEIsSUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLFdBQVc7Z0JBQ2hFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDO2dCQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDbkQ7Z0JBQ0Esc0ZBQXNGO2dCQUN0RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUNyRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ3pELENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsZ0ZBQWdGO2dCQUNoRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO2dCQUVyRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNuRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JELE9BQU8sT0FBTyxLQUFLLGFBQWEsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztnQkFDcEUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxpREFBaUQ7WUFDakQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtTQUMvRDthQUFNO1lBQ0wsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFHQyxJQUFJLEdBQVEsVUFBVSxDQUFDO0lBQ3ZCLGdCQUFnQixDQUFDLElBQVM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLHlDQUF5QztRQUMxRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRTdCLG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRTlDLElBQUksWUFBWSxLQUFLLFVBQVUsRUFBRTtZQUMvQiw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNMLGdFQUFnRTtZQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQ2pELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLFlBQVksQ0FDL0QsQ0FBQztTQUNIO1FBQ0QsU0FBUztRQUNULHFFQUFxRTtRQUNyRSwyRUFBMkU7UUFDM0UsdUJBQXVCO1FBQ3ZCLE9BQU87UUFDUCxJQUFJO1FBRUosNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQztRQUU1QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBcUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCw4QkFBOEI7SUFDNUIsY0FBYyxDQUFDLFlBQW9CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFSCxxQkFBcUIsR0FBOEMsRUFBRSxDQUFDO0lBRTlELDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7WUFDaEMsT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBRXJDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM1QyxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDakIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakI7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLFNBQVMsRUFBRSxHQUFHO1lBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtTQUN6QixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7aUJBQy9DLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQ3ZFLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEIsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksSUFBSTtnQkFDbkMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRTthQUN4QixDQUFDLENBQUMsQ0FBQztZQUNOLE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUVyQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsU0FBUyxFQUFFLEdBQUc7WUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1NBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELGdCQUFnQixDQUFDLEdBQVEsRUFBRSxHQUFRO1FBQ2pDLGdGQUFnRjtRQUNoRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3JFLHNEQUFzRDtZQUN0RCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsT0FBTztTQUNSO1FBRUQsOEVBQThFO1FBQzlFLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFDckUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsY0FBYyxHQUFRLElBQUksQ0FBQyxDQUFDLCtEQUErRDtJQUUzRixrQkFBa0IsQ0FBQyxRQUFhLEVBQUUsU0FBYztRQUM5QyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDJCQUEyQixHQUFRLEVBQUUsQ0FBQztJQUV0Qyx3QkFBd0IsQ0FBQyxHQUFRO1FBQy9CLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUMsT0FBTztTQUNSO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNqRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUMxRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNwRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQzVELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUM3QixDQUFDLE1BQU0sQ0FBQztRQUVULE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUVqQyxtREFBbUQ7UUFDbkQsSUFDRSxVQUFVO1lBQ1Ysc0JBQXNCLEdBQUcsa0JBQWtCLElBQUksYUFBYSxFQUM1RDtZQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUN4Qix1QkFBdUIsYUFBYSxZQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEtBQy9DLHFCQUFxQixDQUN0QixDQUFDO1lBQ0YsT0FBTztTQUNSO1FBRUQsa0NBQWtDO1FBQ2xDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzdCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUU3QixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDeEQsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ3BDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQixHQUFHLElBQUk7WUFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTtZQUNwRCxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUMsQ0FBQztRQUVOLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsR0FBUSxFQUFFLElBQVk7UUFDcEQsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3hCLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsMkNBQTJDO1lBQzNDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDbkM7U0FDRjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QixrQ0FBa0M7SUFDcEMsQ0FBQztJQUNELE1BQU07UUFDSiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsR0FBRyxHQUFHO1lBQ04sU0FBUyxFQUFFLEtBQUs7WUFDaEIsUUFBUSxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsSUFBSSxFQUFFLHVCQUF1QjtZQUNyQyxpQ0FBaUM7U0FDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUVoQyxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsU0FBUyxDQUFNO0lBQ1MsU0FBUyxDQUFhO0lBQzlDLElBQUksQ0FBQyxRQUFhO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEQsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLEVBQUUsNkJBQTZCO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxXQUFXLENBQUMsUUFBYTtRQUN2QixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSSxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQzVCLGVBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDOUIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM5QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ3RCLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRWxDLE1BQU0sR0FBRyxHQUFHO1lBQ1YsT0FBTyxFQUNMLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsSUFBSTtZQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDakMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztZQUN4QixVQUFVLEVBQUUsUUFBUTtZQUNwQixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLGVBQWU7WUFDL0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLElBQUksVUFBVTtZQUMzQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDaEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRTtZQUM3QixRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVc7YUFDYixVQUFVLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDeEIsR0FBRyxFQUFFLE9BQU8sSUFBSSw2QkFBNkIsQ0FDOUMsQ0FBQztvQkFDRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQzlDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEdBQUcsR0FDUCxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksZUFBZSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsR0FBOEI7UUFDMUMsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxRQUFRLEVBQUUseUJBQXlCO1FBQ25DLGVBQWUsRUFBRSx3QkFBd0I7UUFDekMsYUFBYSxFQUFFLHNCQUFzQjtRQUNyQyxJQUFJLEVBQUUsZUFBZTtLQUN0QixDQUFDO0lBRUYsaUJBQWlCLEdBQVEsSUFBSSxDQUFDLENBQUMsbUNBQW1DO0lBRWxFLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxLQUFLLElBQVEsQ0FBQztJQUVwQixXQUFXLENBQWE7SUFDbEIsaUJBQWlCLENBQWE7SUFDOUQsTUFBTTtRQUNKLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3BFLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsYUFBYSxFQUFFLENBQUM7WUFDaEIsY0FBYyxFQUFFLENBQUM7WUFDakIsYUFBYSxFQUFFLENBQUM7WUFDaEIsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixTQUFTLEVBQUMsQ0FBQztZQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDaEMsZUFBZSxFQUFFLEVBQUU7WUFDbkIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztZQUUxQyxrRUFBa0U7WUFDbEUsOENBQThDO1lBRTlDLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsSUFBSTtZQUVKLGlCQUFpQjtZQUNqQixJQUFJLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtxQkFDdkMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO3FCQUNuQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtvQkFDdEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29CQUN0QixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2hELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtvQkFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCLENBQUMsQ0FBQyxDQUFDO2dCQUVOLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO3dCQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixJQUFJLEVBQUUsVUFBVTtxQkFDakIsQ0FBQyxDQUFDO29CQUVILE9BQU8sQ0FBQyxjQUFjLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztpQkFDN0M7YUFDRjtZQUVELFdBQVc7aUJBQ04sSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLFNBQVMsRUFBRTtnQkFDekMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2xELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzFCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7WUFFRCxlQUFlO2lCQUNWLElBQUksSUFBSSxLQUFLLGVBQWUsSUFBSSxTQUFTLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO29CQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDN0I7aUJBQ0ksSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ25ELFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtvQkFDeEIsU0FBUyxFQUFHLElBQUksQ0FBQyxTQUFTO29CQUMxQixTQUFTLEVBQUcsSUFBSSxDQUFDLFNBQVM7aUJBQzNCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7UUFFdEQsc0JBQXNCO1FBRXRCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFNO0lBQ2pCLGFBQWEsQ0FBTTtJQUNuQixZQUFZO1FBQ1YsZ0VBQWdFO1FBQ2hFLE1BQU0sT0FBTyxHQUFHO1lBQ2QsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU87WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVO1lBQzdDLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsV0FBVzthQUNiLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUN4QixHQUFHLEVBQUUsT0FBTyxJQUFJLDZCQUE2QixDQUM5QyxDQUFDO29CQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSztvQkFDaEIsR0FBRyxDQUFDLEtBQUs7b0JBQ1QsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPO29CQUNuQixHQUFHLENBQUMsT0FBTztvQkFDWCxlQUFlLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsZ0NBQWdDO0lBQ2hDLG1GQUFtRjtJQUNuRixzRUFBc0U7SUFDdEUsdUJBQXVCO0lBQ3ZCLGdIQUFnSDtJQUNoSCxnQkFBZ0I7SUFFaEIsbUZBQW1GO0lBRW5GLG1FQUFtRTtJQUNuRSxrREFBa0Q7SUFDbEQsU0FBUztJQUVULDBCQUEwQjtJQUMxQiw0Q0FBNEM7SUFDNUMscUVBQXFFO0lBQ3JFLG9DQUFvQztJQUNwQyxtR0FBbUc7SUFDbkcsYUFBYTtJQUViLGdDQUFnQztJQUNoQyxvR0FBb0c7SUFDcEcsOEJBQThCO0lBQzlCLDJEQUEyRDtJQUMzRCxZQUFZO0lBRVosNkJBQTZCO0lBQzdCLGtDQUFrQztJQUNsQyxjQUFjO0lBRWQsa0JBQWtCO0lBQ2xCLFVBQVU7SUFFVix3Q0FBd0M7SUFDeEMsOEJBQThCO0lBQzlCLGtEQUFrRDtJQUNsRCxvQkFBb0I7SUFDcEIsNkJBQTZCO0lBQzdCLHVDQUF1QztJQUN2QyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsb0ZBQW9GO0lBQ3BGLG9EQUFvRDtJQUNwRCxXQUFXO0lBQ1gsUUFBUTtJQUNSLE1BQU07SUFFTixrREFBa0Q7SUFDbEQscUNBQXFDO0lBQ3JDLElBQUk7SUFFSixnQ0FBZ0M7SUFFaEMsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyw2RkFBNkY7SUFDN0YsSUFBSTtJQUVKLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDSyxVQUFVLENBQWE7SUFDaEQsa0JBQWtCLENBQUMsR0FBUSxFQUFFLElBQVM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLDJDQUEyQztRQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVuRSx3QkFBd0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUUvRSw2QkFBNkI7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFekIsMkRBQTJEO1FBQzNELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQiwrQkFBK0I7UUFDL0IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELDRDQUE0QztRQUM1QyxNQUFNLGFBQWEsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFFekQsT0FBTyxRQUFRLElBQUksYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDOUIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBMkI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFFM0MsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7YUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO1FBRUQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJFLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3BELENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0Msa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLGFBQWEsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsa0JBQWtCLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBRXhFLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxLQUFLLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUUxRCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxHQUFHLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQztTQUNsQzthQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNwQixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNqQyxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQzlELE9BQU8sTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNqRSxPQUFPLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoRixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN4RixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLGNBQWM7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsT0FBTyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQUM7SUFDOUQsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDO0lBQzlELENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDdkUsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0YsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxzQkFBc0I7UUFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxvQkFBb0I7UUFDbEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxjQUFjLENBQUMsSUFBUyxFQUFFLFNBQWlCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMzRSxPQUFPLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO1NBQzlCO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sTUFBTSxHQUE4QjtZQUN4QyxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLFVBQVUsRUFBRSxlQUFlO1lBQzNCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGNBQWMsRUFBRSxtQkFBbUI7U0FDcEMsQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixpQ0FBaUM7SUFDakMsc0JBQXNCLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBRTtZQUNqRixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDOUYsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDakcsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFDLGlFQUFpRTtRQUNqRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLCtEQUErRDtZQUMvRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLFVBQVUsR0FBRyxLQUFLO2lCQUNmLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RELE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFDRCxTQUFTO1FBQ1QsZ0RBQWdEO1FBQ2hELGdEQUFnRDtRQUNoRCwrQ0FBK0M7UUFDL0MsMkNBQTJDO1FBQzNDLGlEQUFpRDtRQUNqRCxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUM5RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxPQUFPLEdBQUc7WUFDWixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEYsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtTQUNsQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTzthQUNULG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixFQUFFLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUNyRDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixNQUFNLEdBQUcsR0FDUCxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUs7b0JBQ2hCLEdBQUcsQ0FBQyxLQUFLO29CQUNULEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTztvQkFDbkIsR0FBRyxDQUFDLE9BQU87b0JBQ1gsZUFBZSxDQUFDO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksd0JBQXdCLENBQUMsQ0FBQztZQUM1RCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGdDQUFnQztJQUNoQyx1QkFBdUI7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO3dHQWovQ1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNmJDcEI3Qix3aTBNQTBzRWM7OzRGRHRyRUQsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7dU9BNDVCQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBNkZJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDUSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQW9PTCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsRWxlbWVudFJlZixWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYWZmaWNSdnBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLXJ2cHMuc2VydmljZVwiO1xuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJsaWItaW1nLXJ2cHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIEltZ1J2cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGhlYWRlckRhdGE6IGFueTtcbiAgc3RvcmVJZGFycmF5OiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBub0RhdGEgPSBmYWxzZTtcbiAgbm9ybWFsaXplOiBhbnk7XG4gIG92ZXJhbGxDYXJkRGF0YTogYW55ID0gW107XG4gIGNhcmREYXRhTWFwOiB7IFtkYXRlOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICB0aWNrZXRSZXZpZXdTdGF0dXM6IGFueSA9IFtdO1xuICB1c2VyQ29tbWVudDogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLFxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXG4gICkge31cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbiAgaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XG4gIHRvZ2dsZUFjY29yZGlvbigpIHtcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xuICB9XG4gIHVzZXJzOmFueTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRJbml0YWwoKTtcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xuICAgIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcbiAgfVxuICBnZXRJbml0YWwoKSB7XG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnZGF0YSA6JywgZGF0YSk7XG4gICAgICAgIGlmIChkYXRhICE9PSBudWxsIHx8IGRhdGE/LmNsaWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xuICAgICAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcbiAgICAgICAgICAgIC5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpO1xuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlEYXRlUmFuZ2UoKTtcbiAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlID09PSB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XG4gICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnR5cGUgPSBcImZvb3RmYWxsXCI7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSBcIlwiO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuICB9XG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XG4gIGJhY2tuYXY6IGJvb2xlYW47XG4gIGRhdGVBcnJheTogYW55O1xuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5nZXREYXRlUmFuZ2VBcnJheShcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcbiAgICApO1xuICAgIHRoaXMuZGF0ZUFycmF5ID0gZGF0ZXM7XG4gIH1cblxuICBnZXREYXRlUmFuZ2VBcnJheShmcm9tRGF0ZTogc3RyaW5nLCB0b0RhdGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxuICAgIGNvbnN0IGRhdGVBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcbiAgICBpZiAoaXNOYU4oc3RhcnQuZ2V0VGltZSgpKSB8fCBpc05hTihlbmQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcbiAgICB9XG5cbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xuICAgIHdoaWxlIChjdXJyZW50RGF0ZSA8PSBlbmQpIHtcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlQXJyYXk7XG4gIH1cblxuICAvLyBMb2FkIGNhcmQgZGF0YVxuICBsb2FkQ2FyZERhdGEoKSB7XG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbDtcbiAgICBpZiAoIXN0b3JlSWQgfHwgIXRoaXMuaGVhZGVyRGF0YT8uZGF0ZSkge1xuICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0SW1hZ2VEaXJlY3RvcnlDYXJkRGF0YShcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxuICAgICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSByZXM/LmRhdGEgfHwgW107XG4gICAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0gKHRoaXMub3ZlcmFsbENhcmREYXRhIHx8IFtdKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gaXRlbT8uZGF0ZVxuICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICBhY2Nbbm9ybWFsaXplZERhdGVdID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXRTdGF0dXNMb3dlcjogaXRlbT8udGlja2V0U3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoaXRlbS50aWNrZXRTdGF0dXMpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIGxvYWRDYXJkRGF0YTpcIiwgZXJyKTtcbiAgICAgICAgICB0aGlzLm92ZXJhbGxDYXJkRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cblxuICBzZWxlY3RlZFRpbWU6IGFueTtcbiAgZm9sZGVyTmFtZTogYW55O1xuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB2YWw7XG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZTtcbiAgICB0aGlzLmdldFJldm9wcygpO1xuICB9XG4gIGZvbGRlckRhdGU6IGFueTtcbiAgaW1hZ2VGbG93ID0gZmFsc2U7XG4gIHNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBGbGFnIHRvIGVuYWJsZSBzcGxpdC1zY3JlZW4gdmlld1xuICAvLyBnZXQgUmV2b3BzIEFwaVxuICBnZXRSdnBzTGlzdDogYW55O1xuICBnZXRSdnBzSW1hZ2VMaXN0OiBhbnk7XG4gIG9iamVjdHNBcnJheTogYW55O1xuICBpbWFnZXNBcnJheURhdGE6IGFueTtcbiAgbGlzdFZpZXdHcm91cHM6IEFycmF5PHsgdGltZVJhbmdlOiBzdHJpbmc7IGRhdGE6IGFueVtdIH0+ID0gW107XG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xuICBmb290ZmFsbERhdGU6IGFueTtcbiAgbGVuZ3RoVmFsdWU6IGJvb2xlYW47XG4gIHZpZXdNb2RlOiBcImdyaWRcIiB8IFwibGlzdFwiID0gXCJncmlkXCI7XG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuZm9sZGVyRGF0ZSA9IG9iajtcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xuICAgIHRoaXMuc2VydmljZT8uaXNub3JtYWxpemVTb3VyY2VcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZSkge1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgLy8gdGhpcy5nZXRUb3RhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICBjb3VudERhdGE6IGFueSA9IFtdO1xuICBnZXRUb3RhbCgpIHtcbiAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgIGNvbnN0IHN0b3JlSWQgPVxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFRvdGFsVmFsKHN0b3JlSWQsIGRhdGVTdHJpbmcpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKSB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHt9LFxuICAgICAgfSk7XG4gIH1cbiAgaW1hZ2VVcmw6IGFueTtcbiAgcmV2b3BzVHlwZUNvdW50OiBhbnk7XG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhOiBhbnkgPSBbXTtcbiAgb3ZlcmFsbEFycmF5RGF0YTogYW55ID0gW107XG4gIGFsbEZvb3RmYWxsRGF0YTogYW55ID0gW107XG4gIGdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0dXNMaXN0ID0gdGhpcy5nZXRSdnBzTGlzdD8udGlja2V0U3RhdHVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0YXR1c0xpc3QpKSB7XG4gICAgICByZXR1cm4gc3RhdHVzTGlzdC5tYXAoKHMpID0+IHM/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pOyAvLyBSZW1vdmVzIG51bGwvdW5kZWZpbmVkXG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuICBnZXRSZXZvcHMoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xuICAgIC8vIHRoaXMub2JqZWN0c0FycmF5ID1bXTtcbiAgICAvLyB0aGlzLm92ZXJhbGxBcnJheURhdGEgPVtdO1xuICAgIC8vIHRoaXMuZ2V0UnZwc0xpc3QgPVtdO1xuICAgIC8vIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdD1bXTtcbiAgICAvLyB0aGlzLmFsbEZvb3RmYWxsRGF0YSA9W11cbiAgICBjb25zdCBzdG9yZUlkID1cbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xuICAgIGNvbnN0IGdyb3VwQnlLZXkgPSBcInRpbWVcIjtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSBcImZvb3RmYWxsXCIgPyBcIlwiIDogdGhpcy50eXBlIHx8IFwiXCI7XG4gICAgY29uc3QgcHJvY2Vzc1R5cGUgPSBcImZvb3RmYWxsXCI7XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0UnZwc0xpc3RBcGkoc3RvcmVJZCwgZGF0ZVN0cmluZywgZ3JvdXBCeUtleSwgdHlwZSwgcHJvY2Vzc1R5cGUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgICAgICAgdGhpcy5pbWFnZVVybCA9IHRoaXMucnZwc1NlcnZpY2U/LmZvb3RmYWxsQ0ROO1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gcmVzPy5kYXRhPy5yZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLnRpY2tldFJldmlld1N0YXR1cyA9IHJlcz8uZGF0YT8udGlja2V0U3RhdHVzO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jldm9wcyBnZXRSdnBzTGlzdEFwaSA6JywgcmVzPy5kYXRhKTtcbiAgICAgICAgICAgIC8vIFNhdmUgdGhlIGZ1bGwgZm9vdGZhbGwgZGF0YSAoZ3JvdXBlZCBieSB0aW1lUmFuZ2UpXG4gICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5mb290ZmFsbERhdGEgfHwgW107XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aW1lUmFuZ2UgKyBjb3VudCBvYmplY3RcbiAgICAgICAgICAgIGNvbnN0IHRpbWVSYW5nZXMgPSB0aGlzLmFsbEZvb3RmYWxsRGF0YS5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSB0aW1lUmFuZ2VzLm1hcCgodGltZVJhbmdlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgIHRpbWVSYW5nZSxcbiAgICAgICAgICAgICAgY291bnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZCgoZDogYW55KSA9PiBkLnRpbWVSYW5nZSA9PT0gdGltZVJhbmdlKVxuICAgICAgICAgICAgICAgICAgPy5kYXRhPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgcHJldmlvdXMgc2VsZWN0ZWQgdGltZSBpcyBOT1QgaW4gdGhlIG5ldyBsaXN0XG4gICAgICAgICAgICBpZiAoIXRpbWVSYW5nZXMuaW5jbHVkZXModGhpcy5zZWxlY3RlZFRpbWUpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lcyh0aGlzLm9iamVjdHNBcnJheVswXS50aW1lUmFuZ2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIHRpbWVSYW5nZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YSA9XG4gICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aW1lUmFuZ2UgPT09IHRoaXMuc2VsZWN0ZWRUaW1lXG4gICAgICAgICAgICAgICk/LmRhdGEgfHwgW107XG5cbiAgICAgICAgICAgIC8vIENvdW50IHJldm9wc1R5cGVzXG4gICAgICAgICAgICBjb25zdCByZXZvcHNUeXBlQ291bnQ6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gICAgICAgICAgICAgIFwibm9uLXRhZ2dpbmdcIjogMCxcbiAgICAgICAgICAgICAgZHVwbGljYXRlOiAwLFxuICAgICAgICAgICAgICBlbXBsb3llZTogMCxcbiAgICAgICAgICAgICAgXCJob3VzZS1rZWVwaW5nXCI6IDAsXG4gICAgICAgICAgICAgIGp1bms6IDAsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgdG90YWxDb3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZGF0YT8uZm9yRWFjaCgoaW1hZ2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5wdXNoKGltYWdlKTtcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50Kys7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgICAgICAgICAgIGltYWdlLnJldm9wc1R5cGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8IFwidW5rbm93blwiO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibm9uLXRhZ2dpbmdcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wibm9uLXRhZ2dpbmdcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJob3VzZS1rZWVwaW5nXCJdKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHR5cGUgPT09IFwianVua1wiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJqdW5rXCJdKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8g4pyFIENvdW50IGR1cGxpY2F0ZXMgb25seSBmcm9tIGR1cGxpY2F0ZUltYWdlUGF0aFxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSArPVxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSB7XG4gICAgICAgICAgICAgIGZvb3RmYWxsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICAgIG5vblRhZ3M6IHJldm9wc1R5cGVDb3VudFtcIm5vbi10YWdnaW5nXCJdLFxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSxcbiAgICAgICAgICAgICAgZW1wbG95ZWU6IHJldm9wc1R5cGVDb3VudFtcImVtcGxveWVlXCJdLFxuICAgICAgICAgICAgICBob3VzZWtlZXBpbmc6IHJldm9wc1R5cGVDb3VudFtcImhvdXNlLWtlZXBpbmdcIl0sXG4gICAgICAgICAgICAgIGp1bms6IHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IHR5cGUgZmlsdGVyIGFmdGVyIGxvYWRpbmcgdGltZVJhbmdlIGRhdGFcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB0aGlzLm5vRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGZhaWx1cmVcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID1cbiAgICAgICAgICAgIGVyci5lcnJvci5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgb3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzOiBhbnk7XG4gIGVkaXRWYWx1ZSgpIHtcbiAgICBjb25zdCB0eXBlID0gKHRoaXMuc2VsZWN0ZWRUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBzZWxlY3RlZEltYWdlPy50ZW1wbGQ7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICBBcnJheS5pc0FycmF5KHNlbGVjdGVkSW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoKVxuICAgICkge1xuICAgICAgLy8gMS4gQ29udmVydCBkdXBsaWNhdGUgY2hpbGRyZW4gaW50byBjb25zaXN0ZW50IG9iamVjdHMgd2l0aCBwYXJlbnQgcmVmZXJlbmNlXG4gICAgICBjb25zdCBkdXBsaWNhdGVDaGlsZHJlbiA9IHNlbGVjdGVkSW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoLm1hcChcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgcGFyZW50OiBzZWxlY3RlZFRlbXBsZCxcbiAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIDIuIENvbGxlY3QgdGhlIHRlbXBsZCB2YWx1ZXMgb2YgZHVwbGljYXRlIGNoaWxkcmVuXG4gICAgICBjb25zdCBkdXBsaWNhdGVDaGlsZElkcyA9IGR1cGxpY2F0ZUNoaWxkcmVuLm1hcChcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLnRlbXBJZFxuICAgICAgKTtcblxuICAgICAgLy8gMy4gRmlsdGVyIG91dCBub24tdGFnZ2luZyBpbWFnZXMgZXhjZXB0IHRoZSBzZWxlY3RlZCBwYXJlbnQgJiBpdHMgY2hpbGRyZW5cbiAgICAgIGNvbnN0IG5vblRhZ2dpbmdJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc05vblRhZ2dpbmcgPVxuICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcIm5vbi10YWdnaW5nXCI7XG4gICAgICAgIGNvbnN0IGlzTm90U2VsZWN0ZWQgPVxuICAgICAgICAgIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkICYmXG4gICAgICAgICAgIWR1cGxpY2F0ZUNoaWxkSWRzLmluY2x1ZGVzKGltZy50ZW1wbGQpO1xuICAgICAgICByZXR1cm4gaXNOb25UYWdnaW5nICYmIGlzTm90U2VsZWN0ZWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gNC4gTWVyZ2UgZHVwbGljYXRlIGNoaWxkcmVuICsgb3RoZXIgbm9uLXRhZ2dpbmcgaW1hZ2VzXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbLi4uZHVwbGljYXRlQ2hpbGRyZW4sIC4uLm5vblRhZ2dpbmdJbWFnZXNdO1xuXG4gICAgICAvLyA1LiBNYXJrIHNlbGVjdGVkOiBvbmx5IGR1cGxpY2F0ZSBpbWFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBpc0NoZWNrZWRcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9XG4gICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCI7XG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGlzRHVwbGljYXRlICYmIGltZy5pc0NoZWNrZWQgPT09IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgLy8gNi4gU3RvcmUgb3JpZ2luYWwgY2hlY2tlZCBJRHMgdG8gY29tcGFyZSBsYXRlciBkdXJpbmcgc3VibWl0XG4gICAgICB0aGlzLm9yaWdpbmFsQ2hlY2tlZER1cGxpY2F0ZUlkcyA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgICAuZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQpO1xuXG4gICAgICAvLyDinIUgNy4gRmlsbCBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Qgd2l0aCBwcmUtc2VsZWN0ZWQgZHVwbGljYXRlc1xuICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgICAgICAgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLmltZyxcbiAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgc2VsZWN0ZWRUZW1wbGQsXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vdCBkdXBsaWNhdGUgdHlwZSDihpIgc2hvdyBvbmx5IHNlbGVjdGVkIHR5cGUgKGV4Y2x1ZGluZyB0aGUgY3VycmVudCBzZWxlY3RlZCBpbWFnZSlcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgPT09IHR5cGUgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBiYWNrVG9Gb290ZmFsbDEoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7IC8vIERpc2FibGUgc3BsaXQtc2NyZWVuIHdoZW4gZ29pbmcgYmFja1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gIH1cbiAgc2VsZWN0SW1hZ2VBcnJheTogYW55O1xuICByZW1haW5pbmdJbWFnZUFycmF5OiBhbnk7XG4gIHJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuXG4gIGVkaXRCdG5TaG93ID0gZmFsc2U7XG4gIC8vIHdoZW4gaW1hZ2Ugc2VsZWN0aW9uIGZyb20gZm9sZGVyIHZpZXdcbiAgc2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqOiBhbnkpIHtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IHRydWU7IC8vIEVuYWJsZSBzcGxpdC1zY3JlZW4gd2hlbiBpbWFnZSBpcyBjbGlja2VkXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuICAgIFxuICAgIC8vIElmIGR1cGxpY2F0ZSBpcyBhbHJlYWR5IHNlbGVjdGVkLCBwcmVzZXJ2ZSB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBjb25zdCBpc0R1cGxpY2F0ZU1vZGUgPSB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiO1xuICAgIFxuICAgIGlmICghaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdOyAvLyBSZXNldCByZW1haW5pbmcgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTsgLy8gUmVzZXQgZ3JvdXBzXG4gICAgfVxuICAgIFxuICAgIGxldCBmaWx0ZXJlZEJ5VHlwZTogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSBvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIElmIHdlJ3JlIGluIGR1cGxpY2F0ZSBtb2RlIGFuZCBjbGlja2luZyBvbiBhIHJlbWFpbmluZyBpbWFnZSwga2VlcCB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBpZiAoaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICAvLyBLZWVwIHRoZSBleGlzdGluZyByZW1haW5pbmcgaW1hZ2VzIGJ1dCB1cGRhdGUgdGhlIHNlbGVjdGVkIGltYWdlXG4gICAgICAvLyBEb24ndCByZXNldCB0aGUgZHVwbGljYXRlIHNlbGVjdGlvbiBjb250ZXh0XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlOyAvLyBBbGxvdyBlZGl0aW5nIHRoaXMgaW1hZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjsgLy8gUmVzZXQgdG8gYWxsb3cgbmV3IHNlbGVjdGlvblxuICAgICAgLy8gS2VlcCBzZWxlY3RlZFJhZGlvVHlwZSBhcyAnZHVwbGljYXRlJyB0byBtYWludGFpbiBjb250ZXh0XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmQoXG4gICAgICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgICAgcGFyZW50OiBvYmoudGVtcGxkLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tZHVwbGljYXRlIGltYWdlcywgZG9uJ3QgcG9wdWxhdGUgcmVtYWluaW5nSW1hZ2VBcnJheSBpbml0aWFsbHlcbiAgICAgIC8vIEl0IHdpbGwgYmUgcG9wdWxhdGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcmFkaW8gYnV0dG9uXG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcbiAgICAgIC8vIE9ubHkgc2V0IHJlbWFpbmluZ0ltYWdlQXJyYXkgaWYgdGhlcmUgYXJlIG90aGVyIGltYWdlcyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgICAvLyBPdGhlcndpc2UsIGxlYXZlIGl0IGVtcHR5IGZvciByYWRpbyBidXR0b24gc2VsZWN0aW9uIHRvIHBvcHVsYXRlXG4gICAgICBpZiAoZmlsdGVyZWRCeVR5cGUubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXG4gICAgICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBhdXRvLXNldCByZXZvcHNUeXBlVmFsdWUgaWYgbm90IGluIGR1cGxpY2F0ZSBtb2RlXG4gICAgaWYgKCFpc0R1cGxpY2F0ZU1vZGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgICAgIG9iaj8uZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBvYmo/LnJldm9wc1R5cGU7XG4gICAgICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbiBkdXBsaWNhdGUgbW9kZSwgYWxsb3cgZWRpdGluZyB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIEJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGJ5IHRpbWUgcmFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cblxuICBpbWdGdWxsVmlldyhvYmo6IGFueSkge1xuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgIC8vIPCflLkgQ2FzZSAxOiBEdXBsaWNhdGUgcGFyZW50IOKGkiBzaG93IG9ubHkgcGFyZW50ICsgaXRzIGNoaWxkcmVuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kKFxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IGNoaWxkLnRlbXBJZFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgIHBhcmVudDogb2JqLnRlbXBsZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcblxuICAgIC8vIGN1cnJlbnQgaW5kZXggYWx3YXlzIDAgKHBhcmVudCBmaXJzdClcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcblxuICAgIC8vIHJlbWFpbmluZyA9IGNoaWxkcmVuIG9ubHlcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBjaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICAvLyDwn5S5IENhc2UgMjogTm9ybWFsIOKGkiBmaWx0ZXIgYnkgc2FtZSB0eXBlXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRUeXBlXG4gICAgKTtcblxuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcbiAgICApO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gZmlsdGVyZWRCeVR5cGUuZmlsdGVyKFxuICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgKTtcbiAgfVxuXG5cbiAgLy8g4pyFIEhhbmRsZSBlZGl0IGJ1dHRvbiAvIHJhZGlvIGxvZ2ljXG4gIGlmIChcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgfHxcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICkge1xuICAgIGlmIChcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgb2JqPy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xuICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICB9XG59XG5cblxuICBpbWdTd2FwKG9iajogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcblxuICAgICAgLy8gUmVwbGFjZSBzZWxlY3RlZEltYWdlQXJyYXkgYmFjayBpbnRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlbaW5kZXhdID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZmFsbGJhY2sgaWYgbm90IGZvdW5kXG4gICAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5wdXNoKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuXG4gICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXG4gICAgKTtcblxuICAgIC8vIFJlYnVpbGQgcmVtYWluaW5nIGltYWdlcyBncm91cHNcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgXG4gICAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xuICB9XG5cbiAgc2VsZWN0ZWRUeXBlOiBhbnkgPSBcIlwiOyAvLyBkZWZhdWx0IHNlbGVjdGVkXG4gIHNlbGVjdGVkUmFkaW9UeXBlOiBhbnk7XG4gIC8vIC0tIE5vbi1zaG9wcGVycyBzZWxlY3Rpb24gdHlwZSAtLVxuICBvblJhZGlvQ2hhbmdlKHZhbDogYW55KSB7XG4gIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB2YWw7XG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG5cbiAgY29uc3QgdHlwZSA9ICh2YWwgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcblxuICBpZiAodHlwZSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdEltYWdlQXJyYXk/LmR1cGxpY2F0ZUltYWdlUGF0aCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgLy8g8J+UuSBDYXNlIDE6IEFscmVhZHkgaW4gZHVwbGljYXRlIGZsb3cg4oaSIGtlZXAgY2hpbGRyZW4gc2V0IGJ5IHNlbGVjdEltYWdlRm9yU3BsaXRWaWV3XG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmNoaWxkLCBzZWxlY3RlZDogZmFsc2UsIGlzQ2hlY2tlZDogZmFsc2UgfTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDwn5S5IENhc2UgMjogUmFkaW8gZHVwbGljYXRlIGZvciBub24tZHVwbGljYXRlIHBhcmVudCDihpIgc2hvdyBub24tdGFnZ2luZyBpbWFnZXNcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XG5cbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgPT09IFwibm9uLXRhZ2dpbmdcIiAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBSZWJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGFmdGVyIHVwZGF0aW5nXG4gICAgdGhpcy5idWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpO1xuICAgIGNvbnNvbGUubG9nKCdyZW1haW4gaW1hZ2UgYXJyYXkgOjonLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRm9yIG5vbi1kdXBsaWNhdGUgdHlwZXMsIGNsZWFyIHJlbWFpbmluZyBpbWFnZXNcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuICB9XG59XG5cblxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XG4gIHNlbGVjdFBsYW5UcmVuZHModHlwZTogYW55KSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBSZXNldCBzcGxpdC1zY3JlZW4gd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG5cbiAgICAvLyBDb252ZXJ0IHR5cGUgdG8gbG93ZXJjYXNlIHNhZmVseVxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IHRoaXMudHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZm9vdGZhbGxcIikge1xuICAgICAgLy8gRm9vdGZhbGwgc2hvd3MgYWxsIGN1cnJlbnRUaW1lUmFuZ2VEYXRhICh0aW1lIHJhbmdlIGJhc2VkKVxuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbLi4udGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciB0YWdnZWQgdHlwZXMgbGlrZSAnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNla2VlcGluZydcbiAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGVsc2Uge1xuICAgIC8vICAgLy8gTm9uLXRhZ2dpbmcgbWVhbnMgbm8gcmV2b3BzVHlwZSAtIHNob3cgYWxsIHVubWF0Y2hlZCAobm8gdGFnKVxuICAgIC8vICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgIC8vICAgICAhaXRlbS5yZXZvcHNUeXBlXG4gICAgLy8gICApO1xuICAgIC8vIH1cblxuICAgIC8vIFNldCBub0RhdGEgYmFzZWQgb24gcmVzdWx0XG4gICAgdGhpcy5ub0RhdGEgPSAhdGhpcy5pbWFnZXNBcnJheURhdGE/Lmxlbmd0aDtcblxuICAgIHRoaXMuYnVpbGRMaXN0Vmlld0dyb3VwcygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHNldFZpZXdNb2RlKG1vZGU6IFwiZ3JpZFwiIHwgXCJsaXN0XCIpIHtcbiAgICBpZiAodGhpcy52aWV3TW9kZSAhPT0gbW9kZSkge1xuICAgICAgdGhpcy52aWV3TW9kZSA9IG1vZGU7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBtaW51dGVzIOKGkiBociArIG1pbnNcbiAgICBjb252ZXJ0TWludXRlcyh0b3RhbE1pbnV0ZXM6IG51bWJlcikge1xuICAgICAgaWYgKCF0b3RhbE1pbnV0ZXMgJiYgdG90YWxNaW51dGVzICE9PSAwKSByZXR1cm4geyBob3VyczogMCwgbWluczogMCB9O1xuICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHRvdGFsTWludXRlcyAvIDYwKTtcbiAgICAgIGNvbnN0IG1pbnMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICAgIHJldHVybiB7IGhvdXJzLCBtaW5zIH07XG4gICAgfVxuXG4gIHJlbWFpbmluZ0ltYWdlc0dyb3VwczogQXJyYXk8eyB0aW1lUmFuZ2U6IHN0cmluZzsgZGF0YTogYW55W10gfT4gPSBbXTtcblxuICBwcml2YXRlIGJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCkge1xuICAgIGlmICghdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5IHx8IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBpbWc/LnRpbWVSYW5nZSB8fCBcIk5BXCI7XG4gICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICBtYXAuc2V0KGtleSwgW10pO1xuICAgICAgICBvcmRlci5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgICBtYXAuZ2V0KGtleSk/LnB1c2goaW1nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG5cbiAgICBjb25zb2xlLmxvZygnbXkgbWV0aGQgPT4nLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGlzdFZpZXdHcm91cHMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gKHRoaXMuYWxsRm9vdGZhbGxEYXRhIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChncm91cDogYW55KSA9PiBBcnJheS5pc0FycmF5KGdyb3VwPy5kYXRhKSAmJiBncm91cC5kYXRhLmxlbmd0aClcbiAgICAgICAgLm1hcCgoZ3JvdXA6IGFueSkgPT4gKHtcbiAgICAgICAgICB0aW1lUmFuZ2U6IGdyb3VwPy50aW1lUmFuZ2UgfHwgXCJOQVwiLFxuICAgICAgICAgIGRhdGE6IGdyb3VwPy5kYXRhIHx8IFtdLFxuICAgICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgKHRoaXMuaW1hZ2VzQXJyYXlEYXRhIHx8IFtdKS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaW1nPy50aW1lUmFuZ2UgfHwgXCJOQVwiO1xuICAgICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgb3JkZXIucHVzaChrZXkpO1xuICAgICAgfVxuICAgICAgbWFwLmdldChrZXkpPy5wdXNoKGltZyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG4gIH1cbiAgaGFuZGxlSW1hZ2VDbGljayhldnQ6IGFueSwgb2JqOiBhbnkpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCwgY2xpY2tpbmcgb24gaW1hZ2VzIHNob3VsZCBvcGVuIHRoZW0gaW4gem9vbSBtb2RhbFxuICAgIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkKSB7XG4gICAgICAvLyBPcGVuIGltYWdlIGluIHpvb20gbW9kYWwgd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIC8vIFN0b3JlIHRoZSBjbGlja2VkIGltYWdlIHRlbXBvcmFyaWx5IGZvciBtb2RhbCBkaXNwbGF5XG4gICAgICB0aGlzLm9wZW5JbWFnZVpvb21Nb2RhbCh0aGlzLmltYWdlVXJsLCBvYmopO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igc3BsaXQtc2NyZWVuIHZpZXcsIGNsaWNraW5nIG9uIHJlbGF0ZWQgaW1hZ2VzIHNob3VsZCBzd2FwIHRvIHRoYXQgaW1hZ2VcbiAgICBpZiAodGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgJiYgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5zZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5pbWdTd2FwKG9iaik7IC8vIGV4aXN0aW5nIG5vbi1kdXBsaWNhdGUgY2xpY2sgYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICB0ZW1wTW9kYWxJbWFnZTogYW55ID0gbnVsbDsgLy8gVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIG1vZGFsIGltYWdlIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkXG5cbiAgb3BlbkltYWdlWm9vbU1vZGFsKGltYWdlVXJsOiBhbnksIGltYWdlRGF0YTogYW55KSB7XG4gICAgLy8gU3RvcmUgdGhlIGltYWdlIGRhdGEgdGVtcG9yYXJpbHkgZm9yIG1vZGFsIGRpc3BsYXlcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gaW1hZ2VEYXRhO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OiBhbnkgPSBbXTtcblxuICB0b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nOiBhbnkpIHtcbiAgICBpZiAoIWltZyB8fCBpbWcuZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGFscmVhZHlUYWdnZWRDb3VudCA9IHRoaXMuY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMDtcbiAgICBjb25zdCBtYXhTZWxlY3RhYmxlID0gTWF0aC5yb3VuZCh0b3RhbEltYWdlcyAqIDAuMik7XG4gICAgY29uc3QgY3VycmVudGx5U2VsZWN0ZWRDb3VudCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maWx0ZXIoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkXG4gICAgKS5sZW5ndGg7XG5cbiAgICBjb25zdCB3aWxsU2VsZWN0ID0gIWltZy5zZWxlY3RlZDtcblxuICAgIC8vIOKblCBCbG9jayBzZWxlY3Rpb24gaWYgdHJ5aW5nIHRvIGdvIGJleW9uZCAyMCUgY2FwXG4gICAgaWYgKFxuICAgICAgd2lsbFNlbGVjdCAmJlxuICAgICAgY3VycmVudGx5U2VsZWN0ZWRDb3VudCArIGFscmVhZHlUYWdnZWRDb3VudCA+PSBtYXhTZWxlY3RhYmxlXG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LmdldFdhcm5pbmdUb2FzdChcbiAgICAgICAgYFlvdSBjYW4gc2VsZWN0IG9ubHkgJHttYXhTZWxlY3RhYmxlfSBpbWFnZXMgKCR7XG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdD8uZGF0YT8uY29uZmlnPy5kdXBsaWNhdGUgPz8gXCIyMCVcIlxuICAgICAgICB9IG9mIHRvdGFsIGZvb3RmYWxsKWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g4pyFIFByb2NlZWQgd2l0aCBzZWxlY3Rpb24gdG9nZ2xlXG4gICAgaW1nLnNlbGVjdGVkID0gIWltZy5zZWxlY3RlZDtcbiAgICBpbWcuaXNDaGVja2VkID0gaW1nLnNlbGVjdGVkO1xuXG4gICAgLy8g4pyFIEFsd2F5cyByZWJ1aWxkIHRoZSBzZWxlY3RlZCBsaXN0XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZClcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudCB8fCB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCxcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgfSkpO1xuXG4gICAgLy8gUmVidWlsZCByZW1haW5pbmcgaW1hZ2VzIGdyb3VwcyBhZnRlciBjaGVja2JveCBjaGFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0OiBhbnksIGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgLy8gVXNlIHRoZSB0b2dnbGUgbWV0aG9kIGZvciBkdXBsaWNhdGUgc2VsZWN0aW9uXG4gICAgICB0aGlzLnRvZ2dsZUR1cGxpY2F0ZVNlbGVjdGlvbihpbWcpO1xuICAgICAgLy8gVXBkYXRlIGNoZWNrYm94IHN0YXRlIHRvIG1hdGNoIHNlbGVjdGlvblxuICAgICAgaWYgKGV2dCAmJiBldnQudGFyZ2V0KSB7XG4gICAgICAgIGV2dC50YXJnZXQuY2hlY2tlZCA9IGltZy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbGVhclZhbHVlKCkge1xuICAgIHRoaXMuc2F2ZShcIm5vbi10YWdnaW5nXCIpO1xuICAgIC8vIHRoaXMuc3VibWl0VmFsdWUoJ25vbi10YWdnaW5nJylcbiAgfVxuICBjYW5jZWwoKSB7XG4gICAgLy8gMS4gQ2xlYXIgc2VsZWN0ZWQgZHVwbGljYXRlIGltYWdlcyBsaXN0XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcblxuICAgIC8vIDIuIFJlc2V0IGFsbCBjaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGluIG92ZXJhbGwgaW1hZ2UgbGlzdFxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgLi4uaW1nLFxuICAgICAgaXNDaGVja2VkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSwgLy8gYXNzdW1pbmcgJ3NlbGVjdGVkJyBpcyBjaGVja2JveCBiaW5kXG4gICAgICBwYXJlbnQ6IG51bGwsIC8vIHJlc2V0IHBhcmVudCBpZiB1c2VkXG4gICAgICAvLyBBZGQgb3RoZXIgZmxhZ3MgaGVyZSBpZiBuZWVkZWRcbiAgICB9KSk7XG5cbiAgICAvLyAzLiBDbG9zZSBpbWFnZSBmbG93L2Z1bGwtdmlldyBpZiBvcGVuXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcblxuICAgIC8vIDQuIFJlc2V0IHNwbGl0LXNjcmVlbiBhbmQgc2VsZWN0ZWQgaW1hZ2VcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gW107XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcblxuICAgIC8vIDUuIChPcHRpb25hbCkgUmVzZXQgcmFkaW8gYnV0dG9ucyDigJQgaWYgeW91IGhhdmUgYW55IHNwZWNpZmljIGZsYWdcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICB9XG4gIHBvcHVwVHlwZTogYW55O1xuICBAVmlld0NoaWxkKFwiem9vbVBvcHVwXCIpIHpvb21Qb3B1cDogRWxlbWVudFJlZjtcbiAgc2F2ZShjYXRlZ29yeTogYW55KSB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuem9vbVBvcHVwLCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIHNpemU6IFwibWRcIixcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLCAvLyBQcmV2ZW50IGNsb3Npbmcgb24gb3V0c2lkZSBjbGlja1xuICAgICAga2V5Ym9hcmQ6IGZhbHNlLCAvLyBQcmV2ZW50IGNsb3Npbmcgb24gRVNDIGtleVxuICAgIH0pO1xuICAgIHRoaXMucG9wdXBUeXBlID0gY2F0ZWdvcnk7XG4gIH1cblxuICBjYW5jZWxTdWJtaXQoKSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuXG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcbiAgfVxuICBzdWJtaXRWYWx1ZShjYXRlZ29yeTogYW55KSB7XG4gICAgbGV0IGR1cGxpY2F0ZUltYWdlcyA9IFtdO1xuXG4gICAgaWYgKGNhdGVnb3J5ID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICBkdXBsaWNhdGVJbWFnZXMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgdGVtcElkOiBpbWcudGVtcGxkIHx8IGltZy50ZW1wSWQgfHwgXCJcIixcbiAgICAgICAgICB0aW1lUmFuZ2U6IGltZy50aW1lUmFuZ2UgfHwgXCJcIixcbiAgICAgICAgICBlbnRyeVRpbWU6IGltZy5lbnRyeVRpbWUgfHwgaW1nLmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGltZy5leGl0VGltZSB8fCBcIlwiLFxuICAgICAgICAgIGZpbGVQYXRoOiBpbWcuZmlsZVBhdGgsXG4gICAgICAgICAgcmV2b3BzVHlwZTogXCJkdXBsaWNhdGVcIixcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWcgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XG5cbiAgICBjb25zdCBvYmogPSB7XG4gICAgICBzdG9yZUlkOlxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiLFxuICAgICAgdGVtcElkOiBpbWc/LnRlbXBsZCB8fCAwLFxuICAgICAgcmV2b3BzVHlwZTogY2F0ZWdvcnksXG4gICAgICB0aW1lUmFuZ2U6IGltZz8udGltZVJhbmdlIHx8IFwiXCIsXG4gICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICBkdXBsaWNhdGVJbWFnZTogZHVwbGljYXRlSW1hZ2VzLFxuICAgICAgcHJvY2Vzc1R5cGU6IGltZz8ucHJvY2Vzc1R5cGUgfHwgXCJmb290ZmFsbFwiLFxuICAgICAgZW50cnlUaW1lOiBpbWc/LmVudHJ5VGltZSB8fCBpbWc/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICBleGl0VGltZTogaW1nPy5leGl0VGltZSB8fCBcIlwiLFxuICAgICAgZmlsZVBhdGg6IGltZz8uZmlsZVBhdGggfHwgXCJcIixcbiAgICAgIGNvbW1lbnRzOiB0aGlzLnVzZXJDb21tZW50IHx8IFwiXCIsXG4gICAgICBtb2RlOiAnd2ViJ1xuICAgIH07XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0UnZwc1RhZyhvYmopXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcbiAgICAgICAgICAgICAgcmVzPy5tZXNzYWdlIHx8IFwiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU3VibWl0KCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fCBlcnIuZXJyb3IgfHwgZXJyPy5tZXNzYWdlIHx8IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBub0RhdGFNZXNzYWdlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBkdXBsaWNhdGU6IFwiTm8gZHVwbGljYXRlcyBmb3VuZFwiLFxuICAgIGVtcGxveWVlOiBcIk5vIGVtcGxveWVlL3N0YWZmIGZvdW5kXCIsXG4gICAgXCJob3VzZS1rZWVwaW5nXCI6IFwiTm8gaG91c2Uga2VlcGluZyBmb3VuZFwiLFxuICAgIFwibm9uLXRhZ2dpbmdcIjogXCJObyBub24tdGFnZ2luZyBmb3VuZFwiLFxuICAgIGp1bms6IFwiTm8ganVuayBmb3VuZFwiXG4gIH07XG5cbiAgdGVtcFJhaXNlZFBheWxvYWQ6IGFueSA9IG51bGw7IC8vIGNsYXNzLWxldmVsIHZhcmlhYmxlIGZvciBwcmV2aWV3XG5cbiAgcHJlcGFyZVJhaXNlZFBheWxvYWQoc2hvd09ubHkgPSBmYWxzZSk6IGFueSB7fVxuXG4gIEBWaWV3Q2hpbGQoXCJyYWlzZWRQb3B1cFwiKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcInJlc2V0UmVxdWVzdFBvcHVwXCIpIHJlc2V0UmVxdWVzdFBvcHVwOiBFbGVtZW50UmVmO1xuICBSYWlzZWQoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlLFxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXG4gICAgICB0aWNrZXROYW1lOiBcImZvb3RmYWxsLWRpcmVjdG9yeVwiLFxuICAgICAgZm9vdGZhbGxDb3VudDogMCxcbiAgICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxuICAgICAgZW1wbG95ZWVDb3VudDogMCxcbiAgICAgIGhvdXNlS2VlcGluZ0NvdW50OiAwLFxuICAgICAganVua0NvdW50OjAsXG4gICAgICBjb21tZW50czogdGhpcy5jb21tZW50VGV4dCB8fCBcIlwiLFxuICAgICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcbiAgICAgIGhvdXNlS2VlcGluZzogW10sXG4gICAgICBlbXBsb3llZTogW10sXG4gICAgICBqdW5rOiBbXSxcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsQ2hlY2tlZENvdW50ID0gMDtcblxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xuXG4gICAgICAvLyDinIUgQ291bnQgb25seSBpZiBpdGVtIGlzIGNoZWNrZWQgQU5EIHJldm9wc1R5cGUgaXMgJ25vbi10YWdnaW5nJ1xuICAgICAgLy8gY29uc3QgaXNOb3RUYWdnZWQgPSB0eXBlID09PSAnbm9uLXRhZ2dpbmcnO1xuXG4gICAgICAvLyBpZiAoaXNOb3RUYWdnZWQpIHtcbiAgICAgIC8vICAgdG90YWxDaGVja2VkQ291bnQrKztcbiAgICAgIC8vIH1cblxuICAgICAgLy8gRFVQTElDQVRFIFRZUEVcbiAgICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZERhdGEgPSBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aFxuICAgICAgICAgIC5maWx0ZXIoKGR1cDogYW55KSA9PiBkdXAuaXNDaGVja2VkKVxuICAgICAgICAgIC5tYXAoKGR1cDogYW55KSA9PiAoe1xuICAgICAgICAgICAgdGVtcElkOiBkdXAudGVtcElkIHx8IGR1cC50ZW1wbGQgfHwgXCJcIixcbiAgICAgICAgICAgIGZpbGVQYXRoOiBkdXAuZmlsZVBhdGgsXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGR1cD8uZW50cnlUaW1lIHx8IGR1cD8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICAgIGV4aXRUaW1lOiBkdXAuZXhpdFRpbWUsXG4gICAgICAgICAgICB0aW1lUmFuZ2U6IGR1cC50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGR1cC5pc0NoZWNrZWQsXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmIChuZXN0ZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXlsb2FkLmR1cGxpY2F0ZUltYWdlcy5wdXNoKHtcbiAgICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICAgICAgZGF0YTogbmVzdGVkRGF0YSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlQ291bnQgKz0gbmVzdGVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRU1QTE9ZRUVcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZS5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmVtcGxveWVlQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgLy8gSE9VU0VLRUVQSU5HXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5ob3VzZUtlZXBpbmcucHVzaCh7XG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxuICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGF5bG9hZC5ob3VzZUtlZXBpbmdDb3VudCsrO1xuICAgICAgfSBcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwianVua1wiICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICBwYXlsb2FkLmp1bmsucHVzaCh7XG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICBlbnRyeVRpbWUgOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICBleGl0VGltZSA6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlIDogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgaXNDaGVja2VkIDogaXRlbS5pc0NoZWNrZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBheWxvYWQuanVua0NvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXlsb2FkLmZvb3RmYWxsQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZm9vdGZhbGxDb3VudDtcblxuICAgIC8vIPCfkYcgUmV0dXJuIG9yIGFzc2lnblxuXG4gICAgdGhpcy50ZW1wUmFpc2VkUGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmFpc2VkUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSYXNpZWQoKSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG4gIH1cblxuICBjb21tZW50VGV4dDogYW55O1xuICBnZXRSYWlzZWREYXRhOiBhbnk7XG4gIHN1Ym1pdFJhaXNlZCgpIHtcbiAgICAvLyBjb25zdCBwYXlsb2FkID0gdGhpcy50ZW1wUmFpc2VkUGF5bG9hZDsgLy8gZnJlc2ggZGF0YSBmb3IgQVBJXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHRpY2tldE5hbWU6IFwiZm9vdGZhbGwtZGlyZWN0b3J5XCIsXG4gICAgICBzdG9yZUlkOiB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkLnN0b3JlSWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkLmRhdGVTdHJpbmcsXG4gICAgICB0eXBlOiBcImNyZWF0ZVwiLFxuICAgICAgbW9kZTogXCJ3ZWJcIlxuICAgIH1cbiAgICB0aGlzLmdldFJhaXNlZERhdGEgPSBwYXlsb2FkO1xuICAgIGNvbnNvbGUubG9nKCdzdWJtaXQgcmFpc2VkIDonLCBwYXlsb2FkKVxuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRDcmVhdGVSYWlzZWRUYWcocGF5bG9hZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxuICAgICAgICAgICAgICByZXM/Lm1lc3NhZ2UgfHwgXCJUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID1cbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3IgfHxcbiAgICAgICAgICAgIGVyci5lcnJvciB8fFxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fFxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIG9uSW1hZ2VDaGVja2JveENoYW5nZShpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gIC8vICAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XG4gIC8vICAgICAvLyBDb3VudCBvbmx5IHZhbGlkIGR1cGxpY2F0ZSBpbWFnZXMgd2hlcmUgYGR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDBgXG4gIC8vICAgICBjb25zdCB0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT5cbiAgLy8gICAgICAgICBpdGVtLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmICghaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGggfHwgaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwKVxuICAvLyAgICAgKS5sZW5ndGg7XG5cbiAgLy8gICAgIGNvbnN0IG1heEFsbG93ZWQgPSBNYXRoLmZsb29yKHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgKiAwLjEpOyAvLyAxMCUgbGltaXRcblxuICAvLyAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnNvbWUoXG4gIC8vICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkID09PSBpbWcudGVtcGxkXG4gIC8vICAgICApO1xuXG4gIC8vICAgICBpZiAoaW1nLnNlbGVjdGVkKSB7XG4gIC8vICAgICAgIC8vIOKdjCBSZWFjaGVkIG1heCBhbGxvd2VkIOKAlCBibG9jayBpdFxuICAvLyAgICAgICBpZiAodGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID49IG1heEFsbG93ZWQpIHtcbiAgLy8gICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXG4gIC8vICAgICAgICAgICBgT25seSAke21heEFsbG93ZWR9IGltYWdlcyBjYW4gYmUgc2VsZWN0ZWQgYXMgZHVwbGljYXRlICgxMCUgb2YgdW50YWdnZWQgZHVwbGljYXRlcykuYFxuICAvLyAgICAgICAgICk7XG5cbiAgLy8gICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGQpO1xuICAvLyAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgLy8gICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YVtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIH0pO1xuXG4gIC8vICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgLy8g4pyFIEFkZCBpZiBub3QgYWxyZWFkeSBpbiBsaXN0XG4gIC8vICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xuICAvLyAgICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnB1c2goe1xuICAvLyAgICAgICAgICAgLi4uaW1nLFxuICAvLyAgICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAvLyAgICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IG51bGxcbiAgLy8gICAgICAgICB9KTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgLy8g4p2MIFJlbW92YWwgY2FzZVxuICAvLyAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LmZpbHRlcihcbiAgLy8gICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCAhPT0gaW1nLnRlbXBsZFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIC8vIOKaoO+4jyBDYWxsIHRoaXMgdG8gdXBkYXRlIGJ1dHRvbiBlbmFibGUgc3RhdGVcbiAgLy8gICB0aGlzLmNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpO1xuICAvLyB9XG5cbiAgLy8gZHVwbGljYXRlU2F2ZUVuYWJsZWQgPSBmYWxzZTtcblxuICAvLyBjaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKSB7XG4gIC8vICAgdGhpcy5kdXBsaWNhdGVTYXZlRW5hYmxlZCA9XG4gIC8vICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPiAwO1xuICAvLyB9XG5cbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZChcImltYWdlUG9wdXBcIikgaW1hZ2VQb3B1cDogRWxlbWVudFJlZjtcbiAgc2VsZWN0ZWRJbWFnZUFycmF5KHVybDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5pbWFnZVBvcHVwLCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIHNpemU6IFwibGdcIixcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VJbWFnZSgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy50ZW1wTW9kYWxJbWFnZSA9IG51bGw7IC8vIENsZWFyIHRlbXBvcmFyeSBpbWFnZSB3aGVuIGNsb3NpbmcgbW9kYWxcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cblxuICBjYW5FbmFibGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvdW50RGF0YSB8fCAhdGhpcy5mb2xkZXJEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgZHVwbGljYXRlLCBob3VzZWtlZXBpbmcsIGVtcGxveWVlLCBqdW5rIH0gPSB0aGlzLmNvdW50RGF0YTtcblxuICAgIC8vIENoZWNrIGNvdW50IGNvbmRpdGlvblxuICAgIGNvbnN0IGhhc0NvdW50ID0gZHVwbGljYXRlID4gMCB8fCBob3VzZWtlZXBpbmcgPiAwIHx8IGVtcGxveWVlID4gMCB8fCBqdW5rID4gMDtcblxuICAgIC8vIENvbnZlcnQgZm9sZGVyRGF0ZSB0byBEYXRlXG4gICAgY29uc3QgZm9sZGVyID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKTtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBOb3JtYWxpemUgdGltZXMgKHJlbW92ZSBob3VycyBmb3IgcHJvcGVyIGRheSBjb21wYXJpc29uKVxuICAgIGZvbGRlci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGluIGRheXNcbiAgICBjb25zdCBkaWZmSW5UaW1lID0gdG9kYXkuZ2V0VGltZSgpIC0gZm9sZGVyLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmSW5EYXlzID0gZGlmZkluVGltZSAvICgxMDAwICogMzYwMCAqIDI0KTtcblxuICAgIC8vIFdpdGhpbiBsYXN0IDcgZGF5cyDihpIgZGlmZiBiZXR3ZWVuIDAgYW5kIDdcbiAgICBjb25zdCBpc1dpdGhpbkxhc3Q3ID0gZGlmZkluRGF5cyA+PSAwICYmIGRpZmZJbkRheXMgPD0gNztcblxuICAgIHJldHVybiBoYXNDb3VudCAmJiBpc1dpdGhpbkxhc3Q3O1xuICB9XG5cbiAgY3VycmVudEltYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIGdldCBjYW5OYXZpZ2F0ZUxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPiAwO1xuICB9XG5cbiAgZ2V0IGNhbk5hdmlnYXRlUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGggLSAxO1xuICB9XG5cbiAgbmF2aWdhdGVJbWFnZShkaXJlY3Rpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5pbWFnZXNBcnJheURhdGEubGVuZ3RoO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZUxlZnQpIHtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgtLTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiICYmIHRoaXMuY2FuTmF2aWdhdGVSaWdodCkge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCsrO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhW3RoaXMuY3VycmVudEltYWdlSW5kZXhdO1xuXG4gICAgLy8gVXBkYXRlIHJlbWFpbmluZyBpbWFnZXNcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLmltYWdlc0FycmF5RGF0YS5maWx0ZXIoXG4gICAgICAoXzogYW55LCBpOiBhbnkpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcbiAgICApO1xuICB9XG5cbiAgLy8gR2V0IGN1cnJlbnQgZm9vdGZhbGwgY291bnQgZm9yIHNlbGVjdGVkIGRhdGVcbiAgZ2V0Q3VycmVudEZvb3RmYWxsKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAwO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICByZXR1cm4gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmZvb3RmYWxsQ291bnQgfHwgMDtcbiAgfVxuXG4gIC8vIEdldCBwZXJjZW50YWdlIGNoYW5nZSBmcm9tIGZvb3RmYWxsQ291bnRUcmVuZFxuICBnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIDA7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZm9vdGZhbGxDb3VudFRyZW5kIHx8IDA7XG4gIH1cblxuICAvLyBGb3JtYXQgZG93bnRpbWUgZnJvbSBkb3dudGltZSBrZXkgKGluIG1pbnV0ZXMpXG4gIGdldEZvcm1hdHRlZERvd250aW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAnLSc7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IGRvd250aW1lTWludXRlcyA9IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5kb3dudGltZSB8fCAwO1xuICAgIFxuICAgIGlmICghZG93bnRpbWVNaW51dGVzIHx8IGRvd250aW1lTWludXRlcyA9PT0gMCkgcmV0dXJuICctJztcbiAgICBcbiAgICBjb25zdCB7IGhvdXJzLCBtaW5zIH0gPSB0aGlzLmNvbnZlcnRNaW51dGVzKGRvd250aW1lTWludXRlcyk7XG4gICAgaWYgKGhvdXJzID4gMCAmJiBtaW5zID4gMCkge1xuICAgICAgcmV0dXJuIGAke2hvdXJzfWhyICR7bWluc30gbWluc2A7XG4gICAgfSBlbHNlIGlmIChob3VycyA+IDApIHtcbiAgICAgIHJldHVybiBgJHtob3Vyc31ocmA7XG4gICAgfSBlbHNlIGlmIChtaW5zID4gMCkge1xuICAgICAgcmV0dXJuIGAke21pbnN9IG1pbnNgO1xuICAgIH1cbiAgICByZXR1cm4gJy0nO1xuICB9XG5cbiAgLy8gR2V0IHRpY2tldCBzdGF0dXNcbiAgZ2V0VGlja2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAnLSc7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy50aWNrZXRTdGF0dXM7XG4gICAgcmV0dXJuIHN0YXR1cyB8fCAnLSc7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGVyZSdzIGRvd250aW1lXG4gIGhhc0Rvd250aW1lKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IGRvd250aW1lID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmRvd250aW1lIHx8IDA7XG4gICAgcmV0dXJuIGRvd250aW1lID4gMDtcbiAgfVxuXG4gIC8vIEdldCB0YWdnaW5nIGRhdGEgZnJvbSB0aWNrZXRSZXZpZXdTdGF0dXMgd2hlcmUgYWN0aW9uVHlwZSA9IFwidGFnZ2luZ1wiXG4gIGdldFRhZ2dpbmdEYXRhKHR5cGU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnRpY2tldFJldmlld1N0YXR1cyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLnRpY2tldFJldmlld1N0YXR1cykgfHwgIXR5cGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy5hY3Rpb25UeXBlID09PSB0eXBlKSB8fCBudWxsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyByYWlzZWRcbiAgaXNUaWNrZXRSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcInJhaXNlZFwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyBjbG9zZWRcbiAgaXNUaWNrZXRDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcImNsb3NlZFwiO1xuICB9XG5cbiAgLy8gR2V0IGFsbCB0YWdnaW5nIGRhdGEgaXRlbXMgKGZvciBpbml0aWFsIGFuZCBmaW5hbCByZXZpc2lvbnMpXG4gIGdldEFsbFRhZ2dpbmdEYXRhKCk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IFwidGFnZ2luZ1wiKSB8fCBbXTtcbiAgfVxuXG4gIC8vIEdldCBpbml0aWFsIHJldmlzaW9uIGRhdGEgKGZpcnN0IHRhZ2dpbmcgaXRlbSlcbiAgZ2V0SW5pdGlhbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMCA/IGFsbFRhZ2dpbmdbMF0gOiBudWxsO1xuICB9XG5cbiAgLy8gR2V0IGZpbmFsIHJldmlzaW9uIGRhdGEgKGxhc3QgdGFnZ2luZyBpdGVtLCBvciBzZWNvbmQgaWYgZXhpc3RzKVxuICBnZXRGaW5hbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMSA/IGFsbFRhZ2dpbmdbYWxsVGFnZ2luZy5sZW5ndGggLSAxXSA6IChhbGxUYWdnaW5nLmxlbmd0aCA+IDAgPyBhbGxUYWdnaW5nWzBdIDogbnVsbCk7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBjb3VudCB2YWx1ZSBieSB0eXBlIGZyb20gY291bnQgYXJyYXlcbiAgZ2V0Q291bnRCeVR5cGUoZGF0YTogYW55LCBjb3VudFR5cGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLmNvdW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5jb3VudCkpIHtcbiAgICAgIGNvbnN0IGNvdW50SXRlbSA9IGRhdGEuY291bnQuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy50eXBlID09PSBjb3VudFR5cGUpO1xuICAgICAgcmV0dXJuIGNvdW50SXRlbT8udmFsdWUgfHwgMDtcbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbGJhY2sgZm9yIG9sZCBmb3JtYXQgKG9iamVjdClcbiAgICBjb25zdCBrZXlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZHVwbGljYXRlJzogJ2R1cGxpY2F0ZUNvdW50JyxcbiAgICAgICdlbXBsb3llZSc6ICdlbXBsb3llZUNvdW50JyxcbiAgICAgICdqdW5rJzogJ2p1bmtDb3VudCcsXG4gICAgICAnaG91c2VLZWVwaW5nJzogJ2hvdXNlS2VlcGluZ0NvdW50J1xuICAgIH07XG4gICAgXG4gICAgY29uc3Qga2V5ID0ga2V5TWFwW2NvdW50VHlwZV07XG4gICAgcmV0dXJuIGtleSA/IChkYXRhLmNvdW50W2tleV0gfHwgMCkgOiAwO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRvdGFsIHBlcmNlbnRhZ2U6IChzdW0gb2YgYWxsIGNvdW50IHZhbHVlcyAvIHJldmljZWRGb290ZmFsbCkgKiAxMDBcbiAgLy8gdHlwZTogJ3JhaXNlZCcgfCAnZmluYWxyZXZpZXcnXG4gIGdldFJldmlzaW9uQ2FsY3VsYXRpb24odHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICF0eXBlICkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtcyBiYXNlZCBvbiBhY3Rpb25UeXBlXG4gICAgY29uc3QgdGFnZ2luZ0l0ZW1zID0gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IHR5cGUpO1xuICAgIGlmICh0YWdnaW5nSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoIXRhZ2dpbmdJdGVtc1swXSB8fCAhdGFnZ2luZ0l0ZW1zWzBdLnJldmljZWRGb290ZmFsbCB8fCB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY291bnQgPSB0YWdnaW5nSXRlbXNbMF0uY291bnQgfHwgW107XG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpIG9yIG9iamVjdCAob2xkIGZvcm1hdClcbiAgICBsZXQgdG90YWxDb3VudCA9IDA7XG4gICAgXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY291bnQpKSB7XG4gICAgICAvLyBOZXcgZm9ybWF0OiBjb3VudCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggdHlwZSBhbmQgdmFsdWVcbiAgICAgIGNvbnN0IHR5cGVzVG9TdW0gPSBbJ2R1cGxpY2F0ZScsICdlbXBsb3llZScsICdob3VzZUtlZXBpbmcnLCAnanVuayddO1xuICAgICAgdG90YWxDb3VudCA9IGNvdW50XG4gICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdHlwZXNUb1N1bS5pbmNsdWRlcyhpdGVtPy50eXBlKSlcbiAgICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IGFueSkgPT4gc3VtICsgKGl0ZW0/LnZhbHVlIHx8IDApLCAwKTtcbiAgICB9IFxuICAgIC8vIGVsc2Uge1xuICAgIC8vICAgLy8gT2xkIGZvcm1hdDogY291bnQgaXMgYW4gb2JqZWN0IHdpdGgga2V5c1xuICAgIC8vICAgdG90YWxDb3VudCA9IChjb3VudC5kdXBsaWNhdGVDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5lbXBsb3llZUNvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50Lmp1bmtDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5ob3VzZUtlZXBpbmdDb3VudCB8fCAwKTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHRvdGFsQ291bnQgLyB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsKSAqIDEwMCk7XG4gIH1cblxuICByZXF1ZXN0UmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmVzZXRSZXF1ZXN0UG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSZXNldFJlcXVlc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICB9XG5cbiAgc3VibWl0UmVzZXRSZXF1ZXN0KCk6IHZvaWQge1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiXG4gICAgfTtcbiAgICBjb25zb2xlLmxvZygnc3VibWl0UmVzZXRSZXF1ZXN0IFBheWxvYWQ6JywgcGF5bG9hZCk7XG4gICAgLy8gQ2xvc2UgbW9kYWwgYWZ0ZXIgc3VibWlzc2lvblxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5zZW5kVk1TUmVzZXRSZXF1ZXN0KHBheWxvYWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiUmVxdWVzdCByZXNldCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byByZXNldCByZXF1ZXN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gc3VibWl0UmVzZXRSZXF1ZXN0IDonLCBlcnIpO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cgfHwgXCJVbmtub3duIGVycm9yIG9jY3VycmVkXCIpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgXG4gIH1cblxuICAvLyBHZXQgbm9ybWFsaXplZCBkYXRlIGZvciBjdXJyZW50IGZvbGRlckRhdGVcbiAgZ2V0Tm9ybWFsaXplZERhdGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICB9XG5cbiAgLy8gR2V0IHNlbGVjdGVkIGRhdGUncyBjYXJkIGRhdGFcbiAgZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKTogYW55IHtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IHRoaXMuZ2V0Tm9ybWFsaXplZERhdGUoKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZERhdGUgPyB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXSA6IG51bGw7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTMgcHgtMCBib3JkZXItYm90dG9tLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8IS0tIGZvciBuZXcgbmF2aWdhdGlvbiBjaGFuZ2VzIC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gb2xkIHZpZXcgd2hpbGUgZm9sZGVyIHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cIm1haW5oZWFkaW5nIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDQwcHg7XCI+SW1hZ2UgRGlyZWN0b3J5PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPCEtLSBuZXcgdmlldyB3aGlsZSBub3QgaW4gZm9sZGVyIHZpZXcgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWNrbmF2ICYmICFpbWFnZUZsb3dcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGJhY2sgZnJvbSBpbWFnZSBmbG93IC0tPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImltYWdlRmxvd1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwxKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlY1wiPkltYWdlIERpcmVjdG9yeSB8IHt7Zm9sZGVyRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJtYWluaGVhZGluZy0xIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjY29yZGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c2VjdGlvbiAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5IHB4LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbGlzdC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZFwiICpuZ0Zvcj1cImxldCBvYmogb2YgZGF0ZUFycmF5OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZS1jYXJkLWFjdGl2ZSc6IGkgPT09IHNlbGVjdEluZGV4fVwiIChjbGljayk9XCJnZXRpbWFnZXMoaSwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNhbGVuZGFyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNjY2NyAyLjY2NjY3SDEyVjJDMTIgMS42MzE4MSAxMS43MDE1IDEuMzMzMzMgMTEuMzMzMyAxLjMzMzMzQzEwLjk2NTEgMS4zMzMzMyAxMC42NjY3IDEuNjMxODEgMTAuNjY2NyAyVjIuNjY2NjdINS4zMzMzM1YyQzUuMzMzMzMgMS42MzE4MSA1LjAzNDg2IDEuMzMzMzMgNC42NjY2NyAxLjMzMzMzQzQuMjk4NDggMS4zMzMzMyA0IDEuNjMxODEgNCAyVjIuNjY2NjdIMy4zMzMzM0MyLjU5Njk1IDIuNjY2NjcgMiAzLjI2MzYyIDIgNFYxMy4zMzMzQzIgMTQuMDY5NyAyLjU5Njk1IDE0LjY2NjcgMy4zMzMzMyAxNC42NjY3SDEyLjY2NjdDMTMuNDAzIDE0LjY2NjcgMTQgMTQuMDY5NyAxNCAxMy4zMzMzVjRDMTQgMy4yNjM2MiAxMy40MDMgMi42NjY2NyAxMi42NjY3IDIuNjY2NjdaTTEyLjY2NjcgMTMuMzMzM0gzLjMzMzMzVjZIMTIuNjY2N1YxMy4zMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXRleHRcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmREYXRhTWFwW29ial0/LnRpY2tldFN0YXR1c0xvd2VyIGFzIHN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgbXMtMlwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1zdWNjZXNzJzogc3RhdHVzID09PSAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC13YXJuaW5nJzogc3RhdHVzID09PSAncmFpc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1kZWZhdWx0Jzogc3RhdHVzICE9PSAnY2xvc2VkJyAmJiBzdGF0dXMgIT09ICdyYWlzZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0dXMgPT09ICdjbG9zZWQnID8gJ1RpY2tldCBjbG9zZWQnIDogKHN0YXR1cyA9PT0gJ3JhaXNlZCcgPyAnVGlja2V0IHJhaXNlZCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyZERhdGFNYXBbb2JqXT8udGlja2V0U3RhdHVzIHx8ICcnKSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZmFsbC1jb3VudFwiPnt7IGNhcmREYXRhTWFwW29ial0/LmZvb3RmYWxsQ291bnQgfHwgMCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RmYWxsLWxhYmVsXCI+VG90YWwgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IEJsb2NrIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ2Jsb2NrJ1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTJcIiBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjEzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHJhaXNlIHRpY2tldCBmb3IgbmV4dCB7eyBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5ub09mQmxvY2tlZERheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnMCcgfX0gZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBhY2hpZXZlZCA5NSUgYWNjdXJhY3kgZm9yIHRoZSB0aHJlZSB0aWNrZXRzIHJhaXNlZCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguIFRoaXMgbGltaXRzIHlvdSBmcm9tIHJhaXNpbmcgbW9yZSB0aWNrZXRzIHRvIGF2b2lkIHJlZHVuZGFuY3kuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHN0aWxsIHdhbnQgdG8gcmFpc2UgdGlja2V0cywgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0UmVzZXQoKVwiPnNlbmQgcmVxdWVzdDwvc3Bhbj4gdG8gcmVzZXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IFJlcXVlc3QgU3VjY2VzcyBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAyMUwyMyAxMkwyIDNWMTBMMTcgMTJMMiAxNFYyMVpcIiBmaWxsPVwiIzEwQjk4MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBSZXF1ZXN0IFNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IHRvIGVuYWJsZSB0aWNrZXQgcmFpc2luZyBoYXMgYmVlbiBzdWJtaXR0ZWQuIFlvdSdsbCBiZSBub3RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgaXQncyBhcHByb3ZlZC4gUGxlYXNlIGVuc3VyZSBmdXR1cmUgdGlja2V0IGFjY3VyYWN5IHJlbWFpbnMgd2l0aGluIHRoZSA5NSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZmFsbFRyZW5kc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrZXRTdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgZW5kIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJiYWNrbmF2XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKSAmJiBnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0IFJhaXNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5UaWNrZXQgQ2xvc2VkPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuRW5hYmxlQnV0dG9uKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmFpc2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFpc2UgdGlja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgbXktMiBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY291bnREYXRhPy5sZW5ndGggPiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBGb290ZmFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmZvb3RmYWxsQ291bnQgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnbm9uLXRhZ2dpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdkdXBsaWNhdGUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wbG95ZWUvU3RhZmZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5lbXBsb3llZSB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdqdW5rJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5qdW5rIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdob3VzZS1rZWVwaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgdmlldy10b2dnbGUgbXMtYXV0b1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUb2dnbGUgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTMgcHktMlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogdmlld01vZGUgPT09ICdncmlkJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Vmlld01vZGUoJ2dyaWQnKVwiIGFyaWEtbGFiZWw9XCJHcmlkIHZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxMVwiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxMVwiIHk9XCIxMVwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiByeD1cIjFcIiBzdHJva2U9XCIjNDc1NDY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInZpZXdNb2RlID09PSAnZ3JpZCcgPyAnI0VBRjhGRicgOiAnbm9uZSdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTMgcHktMlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogdmlld01vZGUgPT09ICdsaXN0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Vmlld01vZGUoJ2xpc3QnKVwiIGFyaWEtbGFiZWw9XCJMaXN0IHZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDIwIDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdsaXN0JyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjQuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxLjVcIiByeD1cIjAuNzVcIiBmaWxsPVwiIzQ3NTQ2N1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjEyLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMS41XCIgcng9XCIwLjc1XCIgZmlsbD1cIiM0NzU0NjdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxMVwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiByeD1cIjFcIiBzdHJva2U9XCIjNDc1NDY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInZpZXdNb2RlID09PSAnbGlzdCcgPyAnI0VBRjhGRicgOiAnbm9uZSdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdmb290ZmFsbCcgJiYgdmlld01vZGUgPT09ICdncmlkJ1wiIGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14IHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdhY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYmFkZ2UtbnVtLXByaW1hcnknIDonYmFkZ2UtbnVtLW11dGVkJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gXCIgc3R5bGU9XCJtYXJnaW46IDY0cHg7Ym9yZGVyLXJhZGl1czogOHB4O1xuYmFja2dyb3VuZDogdmFyKC0tR3JheS01MCwgI0Y5RkFGQik7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS4zMzIgNTEuOTk5OUgzMy42NjU0QzMyLjc4MTMgNTEuOTk5OSAzMS45MzM1IDUxLjY0ODcgMzEuMzA4MyA1MS4wMjM2QzMwLjY4MzIgNTAuMzk4NSAzMC4zMzIgNDkuNTUwNiAzMC4zMzIgNDguNjY2NlYzMy42NjY2QzMwLjMzMiAzMi43ODI1IDMwLjY4MzIgMzEuOTM0NyAzMS4zMDgzIDMxLjMwOTZDMzEuOTMzNSAzMC42ODQ0IDMyLjc4MTMgMzAuMzMzMyAzMy42NjU0IDMwLjMzMzNINDguNjY1NEM0OS41NDk0IDMwLjMzMzMgNTAuMzk3MyAzMC42ODQ0IDUxLjAyMjQgMzEuMzA5NkM1MS42NDc1IDMxLjkzNDcgNTEuOTk4NyAzMi43ODI1IDUxLjk5ODcgMzMuNjY2NlYzNS4zMzMzTTQ1LjMzMiA0MS45OTk5SDYwLjMzMkM2Mi4xNzMgNDEuOTk5OSA2My42NjU0IDQzLjQ5MjMgNjMuNjY1NCA0NS4zMzMzVjYwLjMzMzNDNjMuNjY1NCA2Mi4xNzQyIDYyLjE3MyA2My42NjY2IDYwLjMzMiA2My42NjY2SDQ1LjMzMkM0My40OTExIDYzLjY2NjYgNDEuOTk4NyA2Mi4xNzQyIDQxLjk5ODcgNjAuMzMzM1Y0NS4zMzMzQzQxLjk5ODcgNDMuNDkyMyA0My40OTExIDQxLjk5OTkgNDUuMzMyIDQxLjk5OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUgbXktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9EYXRhTWVzc2FnZXNbdHlwZT8udG9Mb3dlckNhc2UoKV0gfHwgJ05vIGRhdGEgZm91bmQnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BsaXQtc2NyZWVuIGxheW91dCAob25seSBzaG93biBhZnRlciBjbGlja2luZyBhbiBpbWFnZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGxpdC1zY3JlZW4tY29udGFpbmVyXCIgKm5nSWY9XCJzcGxpdFNjcmVlbkVuYWJsZWQgJiYgIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMZWZ0IFBhbmVsOiBUaHVtYm5haWwgTGlzdCArIFJlbGF0ZWQgSW1hZ2VzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2VzIExpc3QgKGhpZGRlbiB3aGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlICE9PSAnZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWxpc3Qtc2VjdGlvblwiICpuZ0Zvcj1cImxldCBncm91cCBvZiBsaXN0Vmlld0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIxNDlfMjM0NDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDkuMDAwNzdINC43NVY5LjYyNTc3QzQuNzUgOS45OTA0NSA0LjYwNTEzIDEwLjM0MDIgNC4zNDcyNyAxMC41OThDNC4wODk0MSAxMC44NTU5IDMuNzM5NjcgMTEuMDAwOCAzLjM3NSAxMS4wMDA4QzMuMDEwMzMgMTEuMDAwOCAyLjY2MDU5IDEwLjg1NTkgMi40MDI3MyAxMC41OThDMi4xNDQ4NyAxMC4zNDAyIDIgOS45OTA0NSAyIDkuNjI1NzdWOS4wMDA3N1pNNCAzLjA2MDc3QzUgMy4wNjA3NyA1LjUgNC41MDA3NyA1LjUgNS41MDA3N0M1LjUgNi4wMDA3NyA1LjI1IDYuNTAwNzcgNSA3LjI1MDc3TDQuNzUgOC4wMDA3N0gyQzIgNy41MDA3NyAxLjc1IDYuNzUwNzcgMS43NSA1LjUwMDc3QzEuNzUgNC4yNTA3NyAyLjc0OSAzLjA2MDc3IDQgMy4wNjA3N1pNMTAuMDI3IDcuMDQ5NzdMOS45MTg1IDcuNjY1MjdDOS44NTExNyA4LjAyMDU4IDkuNjQ2NTYgOC4zMzUwNyA5LjM0OTAxIDguNTQwNkM5LjA1MTQ2IDguNzQ2MTMgOC42ODQ5MiA4LjgyNjE2IDguMzI4NzggOC43NjMzN0M3Ljk3MjYzIDguNzAwNTcgNy42NTU1NyA4LjQ5OTk5IDcuNDQ2MjYgOC4yMDUwOUM3LjIzNjk1IDcuOTEwMTggNy4xNTIyNSA3LjU0NDY5IDcuMjEwNSA3LjE4Nzc3TDcuMzE4NSA2LjU3Mjc3TDEwLjAyNyA3LjA0OTc3Wk05LjA4OSAwLjg1MzI3MkMxMC4zMjEgMS4wNzAyNyAxMS4wOTggMi40MTU3NyAxMC44ODEgMy42NDY3N0MxMC42NjQgNC44Nzc3NyAxMC4yODc1IDUuNTcyNzcgMTAuMjAxIDYuMDY1MjdMNy40OTI1IDUuNTg3NzdMNy4zNzY1IDQuODA1NzdDNy4yNjA1IDQuMDIzNzcgNy4xMDE1IDMuNDg3NzcgNy4xODggMi45OTU3N0M3LjM2MTUgMi4wMTA3NyA4LjEwNCAwLjY3OTc3MiA5LjA4OSAwLjg1MzI3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMTQ5XzIzNDQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+e3sgZ3JvdXA/LmRhdGE/Lmxlbmd0aCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWl0ZW1cIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdyb3VwPy5kYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IHNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCA9PT0gb2JqPy50ZW1wbGR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEltYWdlRm9yU3BsaXRWaWV3KG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRodW1ibmFpbC1pbWFnZVwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCIgYWx0PVwiXCIgKm5nSWY9XCJvYmo/LmZpbGVQYXRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweDsgcGFkZGluZzogMjBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICM2NjcwODU7IGZvbnQtc2l6ZTogMTFweDtcIj5ObyBwcmV2aWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFuZ28taWRcIj5UYW5nbyBJRDoge3sgb2JqPy50ZW1wbGQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS10aW1lXCI+RW50cnkgVGltZToge3sgb2JqPy5lbnRyeVRtZSB8fCBvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxlZnQgcGFuZWwgaW1hZ2UgbG9nbyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDgzOTggNi4yNTAwMUgxLjY2NzMyQzEuNDQ2MyA2LjI1MDAxIDEuMjM0MzQgNi4xNjIyMSAxLjA3ODA2IDYuMDA1OTNDMC45MjE3ODIgNS44NDk2NSAwLjgzMzk4NCA1LjYzNzY5IDAuODMzOTg0IDUuNDE2NjhWMS42NjY2OEMwLjgzMzk4NCAxLjQ0NTY2IDAuOTIxNzgyIDEuMjMzNyAxLjA3ODA2IDEuMDc3NDJDMS4yMzQzNCAwLjkyMTE0MSAxLjQ0NjMgMC44MzMzNDQgMS42NjczMiAwLjgzMzM0NEg1LjQxNzMyQzUuNjM4MzMgMC44MzMzNDQgNS44NTAyOSAwLjkyMTE0MSA2LjAwNjU3IDEuMDc3NDJDNi4xNjI4NSAxLjIzMzcgNi4yNTA2NSAxLjQ0NTY2IDYuMjUwNjUgMS42NjY2OFYyLjA4MzM0TTQuNTgzOTggMy43NTAwMUg4LjMzMzk4QzguNzk0MjIgMy43NTAwMSA5LjE2NzMyIDQuMTIzMTEgOS4xNjczMiA0LjU4MzM0VjguMzMzMzRDOS4xNjczMiA4Ljc5MzU4IDguNzk0MjIgOS4xNjY2OCA4LjMzMzk4IDkuMTY2NjhINC41ODM5OEM0LjEyMzc1IDkuMTY2NjggMy43NTA2NSA4Ljc5MzU4IDMuNzUwNjUgOC4zMzMzNFY0LjU4MzM0QzMuNzUwNjUgNC4xMjMxMSA0LjEyMzc1IDMuNzUwMDEgNC41ODM5OCAzLjc1MDAxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWxhdGVkIEltYWdlcyBTZWN0aW9uIChPTkxZIHNob3duIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWxpc3Qtc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHJlbWFpbmluZ0ltYWdlc0dyb3VwcyAmJiByZW1haW5pbmdJbWFnZXNHcm91cHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0aW1lLXJhbmdlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+U2VsZWN0IHJlbGF0ZWQgaW1hZ2VzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlbWFpbmluZ0ltYWdlc0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNnB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS10aXRsZVwiPnt7IGdyb3VwPy50aW1lUmFuZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLWNvdW50XCI+I3t7IGdyb3VwPy5kYXRhPy5sZW5ndGggfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pdGVtXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBncm91cD8uZGF0YVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBvYmouc2VsZWN0ZWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgYWJzb2x1dGUgZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDVweDsgcmlnaHQ6IDVweDsgei1pbmRleDogMjtcIiAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2Rpc2FibGVkXT1cIm9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRodW1ibmFpbC1pbWFnZSBjdXJzb3ItcG9pbnRlclwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCIgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiICpuZ0lmPVwib2JqPy5maWxlUGF0aFwiIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXcgY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImhlaWdodDogMTIwcHg7IHBhZGRpbmc6IDIwcHg7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjNjY3MDg1OyBmb250LXNpemU6IDExcHg7XCI+Tm8gcHJldmlldzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhbmdvLWlkXCI+VGFuZ28gSUQ6IHt7IG9iaj8udGVtcGxkIHx8IG9iaj8udGVtcElkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXRpbWVcIj5FbnRyeSBUaW1lOiB7eyBvYmo/LmVudHJ5VG1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8uZW50cnlUaW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBQYW5lbDogU2VsZWN0ZWQgSW1hZ2UgRGV0YWlscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZURldGFpbFZpZXc7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzZWxlY3RJbWFnZUFycmF5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXBhbmVsXCIgKm5nSWY9XCIhc2VsZWN0SW1hZ2VBcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY29sb3I6IHZhcigtLUdyYXktNTAwLCAjNjY3MDg1KTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDtcIj5TZWxlY3QgYW4gaW1hZ2UgdG8gdmlldyBkZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgRGV0YWlsIFZpZXcgVGVtcGxhdGUgZm9yIFNwbGl0LVNjcmVlbiBSaWdodCBQYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZURldGFpbFZpZXcgbGV0LW9iaj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTMgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYzFcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIGFsdD1cIlwiICpuZ0lmPVwib2JqPy5maWxlUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gWm9vbSBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiem9vbS1pY29uLWJ1dHRvblwiIChjbGljayk9XCJvcGVuSW1hZ2Vab29tTW9kYWwoaW1hZ2VVcmwsIG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4zMzMzIDE4LjMzMzNMMTUgMTVNMTYuNjY2NyA5LjE2NjY3QzE2LjY2NjcgMTMuMzA2NyAxMy4zMDY3IDE2LjY2NjcgOS4xNjY2NyAxNi42NjY3QzUuMDI2NjcgMTYuNjY2NyAxLjY2NjY3IDEzLjMwNjcgMS42NjY2NyA5LjE2NjY3QzEuNjY2NjcgNS4wMjY2NyA1LjAyNjY3IDEuNjY2NjcgOS4xNjY2NyAxLjY2NjY3QzEzLjMwNjcgMS42NjY2NyAxNi42NjY3IDUuMDI2NjcgMTYuNjY2NyA5LjE2NjY3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuMTY2NjcgNi42NjY2N1YxMS42NjY3TTYuNjY2NjcgOS4xNjY2N0gxMS42NjY3XCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIiBzdHlsZT1cImhlaWdodDogMzc1cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1vbWVudC48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yIG10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSB8fCBvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5TZWxlY3Qgbm9uLXNob3BwZXIgdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCIgY2xhc3M9XCJtYi0zIHRleHQtZW5kIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGVhciBUYWcgQnV0dG9uICh2aXNpYmxlIHdoZW4gRWRpdCBidXR0b24gT1IgU2F2ZS9DYW5jZWwgYnV0dG9ucyBhcmUgdmlzaWJsZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgfHwgKHJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fCAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFyLXRhZyBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0OVwiIGhlaWdodD1cIjQ5XCIgdmlld0JveD1cIjAgMCA0OSA0OVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzUxNl85Njg0MSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuMTY3OTdcIiB5PVwiMS4wODQ0N1wiIHdpZHRoPVwiNDQuMDM0MlwiIGhlaWdodD1cIjQ0LjAyODRcIiByeD1cIjguNjc0NDVcIiBmaWxsPVwiI0ZFRjNGMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjcxMDEyXCIgeT1cIjEuNjI2NjNcIiB3aWR0aD1cIjQyLjk0OTlcIiBoZWlnaHQ9XCI0Mi45NDQxXCIgcng9XCI4LjEzMjI5XCIgc3Ryb2tlPVwiI0ZFRjNGMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjA4NDMxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzMuNDg5MyAyMS4zNjEzTDMzLjQ5MTIgMjEuMzY0M0MzNC4wNTMzIDIxLjkyOTcgMzQuMzY5IDIyLjY5NDkgMzQuMzY5MSAyMy40OTIyQzM0LjM2OTEgMjQuMjg5NSAzNC4wNTMzIDI1LjA1NDYgMzMuNDkxMiAyNS42MjAxTDI2LjcyNTYgMzIuMzg1N0MyNi40NDU0IDMyLjY2NjEgMjYuMTEyMiAzMi44ODgyIDI1Ljc0NjEgMzMuMDRDMjUuMzc5OCAzMy4xOTE5IDI0Ljk4NzMgMzMuMjcwNSAyNC41OTA4IDMzLjI3MDVDMjQuMTk0MiAzMy4yNzA1IDIzLjgwMSAzMy4xOTE5IDIzLjQzNDYgMzMuMDRDMjMuMDY4NiAzMi44ODgzIDIyLjczNjEgMzIuNjY1OSAyMi40NTYxIDMyLjM4NTdMMjAuNzY3NiAzMC42OTkyTDIyLjM2ODIgMjkuMDk4NkwyNC4wNTU3IDMwLjc4NDJMMjQuMDU2NiAzMC43ODUyQzI0LjEyNjcgMzAuODU1MyAyNC4yMTAyIDMwLjkxMTIgMjQuMzAxOCAzMC45NDkyQzI0LjM5MzMgMzAuOTg3MiAyNC40OTE3IDMxLjAwNjggMjQuNTkwOCAzMS4wMDY4QzI0LjY4OTkgMzEuMDA2OCAyNC43ODgzIDMwLjk4NzIgMjQuODc5OSAzMC45NDkyQzI0Ljk3MTMgMzAuOTExMyAyNS4wNTQxIDMwLjg1NTIgMjUuMTI0IDMwLjc4NTJIMjUuMTI1TDMxLjg4NzcgMjQuMDIxNUMzMi4wMjY3IDIzLjg4MDQgMzIuMTA1NSAyMy42OTAzIDMyLjEwNTUgMjMuNDkyMkMzMi4xMDU0IDIzLjI5NDEgMzIuMDI2NyAyMy4xMDM5IDMxLjg4NzcgMjIuOTYyOUwzMC4xOTYzIDIxLjI3MTVMMzEuNzk3OSAxOS42Njk5TDMzLjQ4OTMgMjEuMzYxM1pNMjQuNjk4MiAxMi45MzM2QzI0Ljk1NzEgMTIuOTU5NCAyNS4yMDExIDEzLjA3MzMgMjUuMzg2NyAxMy4yNTg4TDMwLjE5NzMgMTguMDY5M0wyOC41OTU3IDE5LjY3MDlMMjQuMTE2MiAxNS4xOTE0SDE2LjI4NTJWMjMuMDIyNUwyMC43NjY2IDI3LjQ5OUwxOS4xNjYgMjkuMDk5NkwxNC4zNTM1IDI0LjI5M0MxNC4xNDExIDI0LjA4MDcgMTQuMDIxNSAyMy43OTI1IDE0LjAyMTUgMjMuNDkyMlYxNC4wNTk2QzE0LjAyMTcgMTMuNDM0NiAxNC41MjgzIDEyLjkyNzcgMTUuMTUzMyAxMi45Mjc3SDI0LjU4NTlMMjQuNjk4MiAxMi45MzM2Wk0xOS44Nzg5IDE3LjY0MzZDMjAuNTAzOCAxNy42NDM2IDIxLjAxMDMgMTguMTUwNiAyMS4wMTA3IDE4Ljc3NTRDMjEuMDEwNyAxOS40MDA1IDIwLjUwNCAxOS45MDgyIDE5Ljg3ODkgMTkuOTA4MkgxOS44NjkxQzE5LjI0NDIgMTkuOTA4IDE4LjczNzMgMTkuNDAwNCAxOC43MzczIDE4Ljc3NTRDMTguNzM3OCAxOC4xNTA4IDE5LjI0NDUgMTcuNjQzOCAxOS44NjkxIDE3LjY0MzZIMTkuODc4OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNCNDIzMThcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMzLjE2OTkgMTQuMDg0NUwxNS4xNjk5IDMyLjA4NDVcIiBzdHJva2U9XCIjQjQyMzE4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF81MTZfOTY4NDFcIiB4PVwiLTAuMDAwNjQzMjUzXCIgeT1cIjAuMDAwMTY2NjU1XCIgd2lkdGg9XCI0OC4zNzI0XCIgaGVpZ2h0PVwiNDguMzY1NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTE2Xzk2ODQxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTE2Xzk2ODQxXCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENhbmNlbCBhbmQgU2F2ZSBCdXR0b25zICh3aGVuICFyZXZvcHNUeXBlVmFsdWUpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaWQ9XCJhbGVydC10b2FzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8IChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFZGl0IEJ1dHRvbiAod2hlbiByZXZvcHNUeXBlVmFsdWUgJiYgZWRpdEJ0blNob3cpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWUgJiYgZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJlZGl0VmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjY1NTQgMS43MTA0N0MxNC44OTI3IDEuNDczMTUgMTUuMTc0NSAxLjI4NDkgMTUuNDg0NSAxLjE1NjQ2QzE1Ljc5NDYgMS4wMjgwMiAxNi4xMjY5IDAuOTYxOTE0IDE2LjQ2MjYgMC45NjE5MTRDMTYuNzk4MiAwLjk2MTkxNCAxNy4xMzA1IDEuMDI4MDIgMTcuNDQwNiAxLjE1NjQ2QzE3Ljc1MDcgMS4yODQ5IDE4LjAzMjQgMS40NzMxNSAxOC4yNjk3IDEuNzEwNDdDMTguNTA3MSAxLjk0Nzc5IDE4LjY5NTMgMi4yMjk1MyAxOC44MjM4IDIuNTM5NjFDMTguOTUyMiAyLjg0OTY5IDE5LjAxODMgMy4xODIwMiAxOS4wMTgzIDMuNTE3NjVDMTkuMDE4MyAzLjg1MzI3IDE4Ljk1MjIgNC4xODU2MSAxOC44MjM4IDQuNDk1NjhDMTguNjk1MyA0LjgwNTc2IDE4LjUwNzEgNS4wODc1IDE4LjI2OTcgNS4zMjQ4Mkw2LjA3MTMgMTcuNTIzM0wxLjEwMTU2IDE4Ljg3ODZMMi40NTY5NSAxMy45MDg5TDE0LjY1NTQgMS43MTA0N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImR1cGxpY2F0ZS1zcGxpdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidkdXBsaWNhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtcGxveWVlLXNwbGl0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkVtcGxveWVlL1N0YWZmPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmctc3BsaXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkhvdXNlIEtlZXBpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJqdW5rXCIgaWQ9XCJqdW5rLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidqdW5rJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnIHx8IHJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVuay1zcGxpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkp1bms8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlbWFya3MgKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCIzXCIgcGxhY2Vob2xkZXI9XCJDb21tZW50IGhlcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyQ29tbWVudFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEdyaWQvTGlzdCBWaWV3IChzaG93biB3aGVuIHNwbGl0LXNjcmVlbiBpcyBub3QgZW5hYmxlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBjb250YWluIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnICYmICFub0RhdGEgJiYgIWxvYWRpbmcgJiYgIXNwbGl0U2NyZWVuRW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb2JqIG9mIGltYWdlc0FycmF5RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZUNhcmQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvYmogfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LXZpZXctd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnbGlzdCcgJiYgIW5vRGF0YSAmJiAhbG9hZGluZyAmJiAhc3BsaXRTY3JlZW5FbmFibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBtYi01XCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RWaWV3R3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtdGl0bGVcIj57eyBncm91cD8udGltZVJhbmdlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtY291bnQgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIxNDlfMjM0NDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgOS4wMDA3N0g0Ljc1VjkuNjI1NzdDNC43NSA5Ljk5MDQ1IDQuNjA1MTMgMTAuMzQwMiA0LjM0NzI3IDEwLjU5OEM0LjA4OTQxIDEwLjg1NTkgMy43Mzk2NyAxMS4wMDA4IDMuMzc1IDExLjAwMDhDMy4wMTAzMyAxMS4wMDA4IDIuNjYwNTkgMTAuODU1OSAyLjQwMjczIDEwLjU5OEMyLjE0NDg3IDEwLjM0MDIgMiA5Ljk5MDQ1IDIgOS42MjU3N1Y5LjAwMDc3Wk00IDMuMDYwNzdDNSAzLjA2MDc3IDUuNSA0LjUwMDc3IDUuNSA1LjUwMDc3QzUuNSA2LjAwMDc3IDUuMjUgNi41MDA3NyA1IDcuMjUwNzdMNC43NSA4LjAwMDc3SDJDMiA3LjUwMDc3IDEuNzUgNi43NTA3NyAxLjc1IDUuNTAwNzdDMS43NSA0LjI1MDc3IDIuNzQ5IDMuMDYwNzcgNCAzLjA2MDc3Wk0xMC4wMjcgNy4wNDk3N0w5LjkxODUgNy42NjUyN0M5Ljg1MTE3IDguMDIwNTggOS42NDY1NiA4LjMzNTA3IDkuMzQ5MDEgOC41NDA2QzkuMDUxNDYgOC43NDYxMyA4LjY4NDkyIDguODI2MTYgOC4zMjg3OCA4Ljc2MzM3QzcuOTcyNjMgOC43MDA1NyA3LjY1NTU3IDguNDk5OTkgNy40NDYyNiA4LjIwNTA5QzcuMjM2OTUgNy45MTAxOCA3LjE1MjI1IDcuNTQ0NjkgNy4yMTA1IDcuMTg3NzdMNy4zMTg1IDYuNTcyNzdMMTAuMDI3IDcuMDQ5NzdaTTkuMDg5IDAuODUzMjcyQzEwLjMyMSAxLjA3MDI3IDExLjA5OCAyLjQxNTc3IDEwLjg4MSAzLjY0Njc3QzEwLjY2NCA0Ljg3Nzc3IDEwLjI4NzUgNS41NzI3NyAxMC4yMDEgNi4wNjUyN0w3LjQ5MjUgNS41ODc3N0w3LjM3NjUgNC44MDU3N0M3LjI2MDUgNC4wMjM3NyA3LjEwMTUgMy40ODc3NyA3LjE4OCAyLjk5NTc3QzcuMzYxNSAyLjAxMDc3IDguMTA0IDAuNjc5NzcyIDkuMDg5IDAuODUzMjcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMTQ5XzIzNDQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPnt7IGdyb3VwPy5kYXRhPy5sZW5ndGggfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IGxpc3QtZ3JvdXAtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9iaiBvZiBncm91cD8uZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW1hZ2VDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb2JqIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZUNhcmQgbGV0LW9iaj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29uZGl0aW9uOiBPbmx5IHNob3cgaWYgbm90IGR1cGxpY2F0ZSBPUiBkdXBsaWNhdGUgd2l0aCBub24tZW1wdHkgZHVwbGljYXRlSW1hZ2VQYXRoIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIih0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGh9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdhcHByb3ZlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPCEtLSBmdWxsIGltYWdlIFZpZXcgLS0+XG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgQmxvY2sgQWxlcnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5yYWlzZWRTdGF0dXNFbmFibGVkID09PSAnYmxvY2snXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMlwiIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDhWMTNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcmFpc2UgdGlja2V0IGZvciBuZXh0IHt7IGdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/Lm5vT2ZCbG9ja2VkRGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICcwJyB9fSBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBsb29rcyBsaWtlIHlvdSBoYXZlIGFjaGlldmVkIDk1JSBhY2N1cmFjeSBmb3IgdGhlIHRocmVlIHRpY2tldHMgcmFpc2VkIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aC4gVGhpcyBsaW1pdHMgeW91IGZyb20gcmFpc2luZyBtb3JlIHRpY2tldHMgdG8gYXZvaWQgcmVkdW5kYW5jeS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3RpbGwgd2FudCB0byByYWlzZSB0aWNrZXRzLCA8c3BhbiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RSZXNldCgpXCI+c2VuZCByZXF1ZXN0PC9zcGFuPiB0byByZXNldC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmVxdWVzdCBTdWNjZXNzIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ3JlcXVlc3QnXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDIxTDIzIDEyTDIgM1YxMEwxNyAxMkwyIDE0VjIxWlwiIGZpbGw9XCIjMTBCOTgxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0IFJlcXVlc3QgU2VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIHJlcXVlc3QgdG8gZW5hYmxlIHRpY2tldCByYWlzaW5nIGhhcyBiZWVuIHN1Ym1pdHRlZC4gWW91J2xsIGJlIG5vdGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCdzIGFwcHJvdmVkLiBQbGVhc2UgZW5zdXJlIGZ1dHVyZSB0aWNrZXQgYWNjdXJhY3kgcmVtYWlucyB3aXRoaW4gdGhlIDk1JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0yIG1iLTIgdy0xMDAgb3ZlcmZsb3cteCBweC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGZhbGxUcmVuZHNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpY2tldFN0YXR1c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wIG10LTMganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBweC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0VGlja2V0U3RhdHVzKCl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWlzZSB0aWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ25vbi10YWdnaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnanVuaycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5qdW5rIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBib3JkZXItZ3JheSBpbWctdHJhZmZpY1wiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiAgbWItMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyIGgtNDUwcHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkSW1hZ2VBcnJheShpbWFnZVVybCwgc2VsZWN0SW1hZ2VBcnJheSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJbWFnZUFycmF5KGltYWdlVXJsLCBzZWxlY3RJbWFnZUFycmF5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgc2VsZWN0SW1hZ2VBcnJheT8uZmlsZVBhdGhcIiBhbHQ9XCJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHwgKHRlbXBNb2RhbEltYWdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXNlbGVjdEltYWdlQXJyYXk/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcC0yIG1iLTIgIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Qgbm9uLXNob3BwZXIgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5DbGVhcjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaWQ9XCJhbGVydC10b2FzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC42NTU0IDEuNzEwNDdDMTQuODkyNyAxLjQ3MzE1IDE1LjE3NDUgMS4yODQ5IDE1LjQ4NDUgMS4xNTY0NkMxNS43OTQ2IDEuMDI4MDIgMTYuMTI2OSAwLjk2MTkxNCAxNi40NjI2IDAuOTYxOTE0QzE2Ljc5ODIgMC45NjE5MTQgMTcuMTMwNSAxLjAyODAyIDE3LjQ0MDYgMS4xNTY0NkMxNy43NTA3IDEuMjg0OSAxOC4wMzI0IDEuNDczMTUgMTguMjY5NyAxLjcxMDQ3QzE4LjUwNzEgMS45NDc3OSAxOC42OTUzIDIuMjI5NTMgMTguODIzOCAyLjUzOTYxQzE4Ljk1MjIgMi44NDk2OSAxOS4wMTgzIDMuMTgyMDIgMTkuMDE4MyAzLjUxNzY1QzE5LjAxODMgMy44NTMyNyAxOC45NTIyIDQuMTg1NjEgMTguODIzOCA0LjQ5NTY4QzE4LjY5NTMgNC44MDU3NiAxOC41MDcxIDUuMDg3NSAxOC4yNjk3IDUuMzI0ODJMNi4wNzEzIDE3LjUyMzNMMS4xMDE1NiAxOC44Nzg2TDIuNDU2OTUgMTMuOTA4OUwxNC42NTU0IDEuNzEwNDdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQ8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkdXBsaWNhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZHVwbGljYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkR1cGxpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbXBsb3llZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidlbXBsb3llZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJob3VzZS1rZWVwaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmdcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEhvdXNlIEtlZXBpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwianVua1wiIGlkPVwianVua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB0aGlzLnVzZXJzPy51c2VyVHlwZSA9PT0nY2xpZW50JyB8fCByZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJqdW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj4gSnVuazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBtdC0zIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCIgKm5nRm9yPVwibGV0IG9iaiBvZiByZW1haW5pbmdJbWFnZUFycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvYmosICdkdXBsaWNhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnID8gJ2N1cnNvci1wb2ludGVyJyA6ICdjdXJzb3ItcG9pbnRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGQgPyBvYmo/LnRlbXBsZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lID8gb2JqPy5lbnRyeVRtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b2JqPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjem9vbVBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwODhfOTgzMzcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuMTY5MyAxMy4zMzMzVjE4LjMzMzNNMjkuMTY5MyAxOC4zMzMzSDI0LjE2OTNNMjkuMTY5MyAxOC4zMzMzTDI1LjMwMjYgMTQuN0MyNC40MDcgMTMuODAzOSAyMy4yOTkgMTMuMTQ5MyAyMi4wODE5IDEyLjc5NzNDMjAuODY0OSAxMi40NDUzIDE5LjU3ODUgMTIuNDA3MyAxOC4zNDI4IDEyLjY4NjlDMTcuMTA3MiAxMi45NjY1IDE1Ljk2MjQgMTMuNTU0NSAxNS4wMTU1IDE0LjM5NjJDMTQuMDY4NSAxNS4yMzc4IDEzLjM1MDIgMTYuMzA1NiAxMi45Mjc2IDE3LjVNMTAuODM1OSAyNi42NjY2VjIxLjY2NjZNMTAuODM1OSAyMS42NjY2SDE1LjgzNTlNMTAuODM1OSAyMS42NjY2TDE0LjcwMjYgMjUuM0MxNS41OTgyIDI2LjE5NjEgMTYuNzA2MiAyNi44NTA2IDE3LjkyMzMgMjcuMjAyN0MxOS4xNDAzIDI3LjU1NDcgMjAuNDI2NyAyNy41OTI3IDIxLjY2MjQgMjcuMzEzMUMyMi44OTggMjcuMDMzNSAyNC4wNDI4IDI2LjQ0NTUgMjQuOTg5NyAyNS42MDM4QzI1LjkzNjcgMjQuNzYyMSAyNi42NTUgMjMuNjk0MyAyNy4wNzc2IDIyLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwODhfOTgzMzdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMTApXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPlRhZ2dpbmcgYXMgZW1wbG95ZWUvc3RhZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPlRhZ2dpbmcgYXMgZHVwbGljYXRlcyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPlRhZ2dpbmcgYXMgaG91c2Uga2VlcGluZyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5DbGVhciBkdXBsaWNhdGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPlRhZ2dpbmcgYXMganVuazwvc3Bhbj5cblxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGVtcGxveWVlL3N0YWZmPzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZHVwbGljYXRlcz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+VGhpcyB3aWxsIHJlbW92ZSB0YWdnZWQgZHVwbGljYXRlcyBhbmQgbW92ZSB0aGVtIHRvXG4gICAgICAgICAgICAgICAgICAgICdOb24tdGFnJy48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09J2p1bmsnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGp1bms/PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XG4gICAgICAgICAgICAgICAgWWVzLCBUYWdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cbiAgICAgICAgICAgICAgICBZZXMsIGNsZWFyXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS4yNTEgMTEuMDgwNkMyMS43NDA1IDExLjA2OTkgMjIuMjE1MyAxMS4yNDg3IDIyLjU3NjIgMTEuNTc5NkwyMy40OTIyIDEyLjQyMDRDMjMuODA4OSAxMi43MDk3IDIzLjg5MyAxMy4xMDE3IDIzLjg2NTIgMTMuNDI2M1YxMy40MjcyQzIzLjgzNiAxMy43NDc4IDIzLjY5NTQgMTQuMDU5MiAyMy40Nzg1IDE0LjI5NDRDMjMuMzY5OSAxNC40MTMgMjMuMjg2NSAxNC41NTI1IDIzLjIzMTQgMTQuNzAzNkMyMy4xNzY0IDE0Ljg1NDggMjMuMTUxMiAxNS4wMTU1IDIzLjE1ODIgMTUuMTc2M0MyMy4xNjUyIDE1LjMzNyAyMy4yMDM1IDE1LjQ5NTMgMjMuMjcxNSAxNS42NDExQzIzLjMzOTQgMTUuNzg2OSAyMy40MzYyIDE1LjkxNzIgMjMuNTU0NyAxNi4wMjU5QzIzLjY3MzMgMTYuMTM0NiAyMy44MTE3IDE2LjIxOTggMjMuOTYyOSAxNi4yNzQ5QzI0LjExNDEgMTYuMzMgMjQuMjc0OCAxNi4zNTQxIDI0LjQzNTUgMTYuMzQ3MkMyNC41OTYxIDE2LjM0MDIgMjQuNzUzNyAxNi4zMDE3IDI0Ljg5OTQgMTYuMjMzOUMyNS4wMDg5IDE2LjE4MjkgMjUuMTEwNiAxNi4xMTYgMjUuMjAwMiAxNi4wMzU2TDI1LjM3MDEgMTUuODY1N0MyNS41NzU5IDE1LjY3NDggMjUuODM4NSAxNS41NDA4IDI2LjExNTIgMTUuNDkwN0MyNi4yOTcyIDE1LjQ1NDYgMjYuNDg1IDE1LjQ2MTcgMjYuNjY0MSAxNS41MTAzQzI2Ljg0MzkgMTUuNTU5MSAyNy4wMTAzIDE1LjY0OSAyNy4xNDk0IDE1Ljc3MjlMMjcuMTUxNCAxNS43NzQ5TDI4LjI1OTggMTYuNzkwNUMyOC40NDUgMTYuOTYwNSAyOC41OTQ4IDE3LjE2NTggMjguNzAwMiAxNy4zOTRDMjguODA1NiAxNy42MjIzIDI4Ljg2NDggMTcuODY5NCAyOC44NzQgMTguMTIwNkMyOC44ODMyIDE4LjM3MiAyOC44NDIzIDE4LjYyMzQgMjguNzUzOSAxOC44NTg5QzI4LjY2NTUgMTkuMDk0MSAyOC41MzE2IDE5LjMwOTYgMjguMzU5NCAxOS40OTI3TDIwLjExMTMgMjguMjU4M0MxOS45MzcgMjguNDQzNCAxOS43MjY4IDI4LjU5MTIgMTkuNDk0MSAyOC42OTM4QzE5LjI2MTQgMjguNzk2NSAxOS4wMTAyIDI4Ljg1MjIgMTguNzU1OSAyOC44NTZDMTguNTAxNiAyOC44NTk3IDE4LjI0OTMgMjguODExOSAxOC4wMTM3IDI4LjcxNjNDMTcuNzc3OSAyOC42MjA2IDE3LjU2MzYgMjguNDc4NCAxNy4zODM4IDI4LjI5ODNMMTYuMjUzOSAyNy4xNjg1QzE1Ljc1MTEgMjYuNjY1NiAxNS44ODMyIDI1Ljk1NTIgMTYuMTUxNCAyNS41NTQyTDE2LjIwNjEgMjUuNDY0NEMxNi4zMjQxIDI1LjI0ODYgMTYuMzc0MiAyNS4wMDA4IDE2LjM0OTYgMjQuNzU0NEMxNi4zMjE0IDI0LjQ3MzEgMTYuMTk3IDI0LjIxMDIgMTUuOTk3MSAyNC4wMTAzQzE1Ljc5NzEgMjMuODEwMyAxNS41MzQzIDIzLjY4NTkgMTUuMjUyOSAyMy42NTc3QzE0Ljk3MTUgMjMuNjI5NyAxNC42ODg3IDIzLjY5OTUgMTQuNDUzMSAyMy44NTZIMTQuNDUyMUMxNC4wNDk0IDI0LjEyMjIgMTMuMzQwNyAyNC4yNTUyIDEyLjgzNzkgMjMuNzUxNUwxMS42Nzk3IDIyLjU5MzNDMTEuNTAzNCAyMi40MTY5IDExLjM2NCAyMi4yMDc0IDExLjI2ODYgMjEuOTc3MUMxMS4xNzMxIDIxLjc0NjcgMTEuMTIzMSAyMS40OTk5IDExLjEyMyAyMS4yNTA1QzExLjEyMyAyMS4wMDEgMTEuMTczMSAyMC43NTM1IDExLjI2ODYgMjAuNTIyOUMxMS4zNjQgMjAuMjkyNiAxMS41MDM0IDIwLjA4MzEgMTEuNjc5NyAxOS45MDY3TDE5Ljk0OTIgMTEuNjM2MkMyMC4yOTU0IDExLjI5MDIgMjAuNzYxNiAxMS4wOTEyIDIxLjI1MSAxMS4wODA2Wk0yMS4yNzgzIDEyLjM4MDRDMjEuMTIzNyAxMi4zODM4IDIwLjk3NjUgMTIuNDQ2OCAyMC44NjcyIDEyLjU1NjJMMTIuNTk2NyAyMC44MjU3QzEyLjU0MDkgMjAuODgxNCAxMi40OTcgMjAuOTQ4MiAxMi40NjY4IDIxLjAyMUMxMi40MzY3IDIxLjA5MzggMTIuNDIwOSAyMS4xNzE3IDEyLjQyMDkgMjEuMjUwNUMxMi40MjA5IDIxLjMyOTIgMTIuNDM2NyAyMS40MDczIDEyLjQ2NjggMjEuNDhDMTIuNDk3IDIxLjU1MjggMTIuNTQxIDIxLjYxOTYgMTIuNTk2NyAyMS42NzUzTDEzLjcwNjEgMjIuNzgzN0wxMy43MzE0IDIyLjc3MkMxNC4yMTY5IDIyLjQ0ODUgMTQuNzk5MyAyMi4zMDM1IDE1LjM3OTkgMjIuMzYwOEMxNS45NjA4IDIyLjQxODMgMTYuNTA0MiAyMi42NzQ3IDE2LjkxNyAyMy4wODc0QzE3LjMyOTggMjMuNTAwMiAxNy41ODcgMjQuMDQzNiAxNy42NDQ1IDI0LjYyNDVDMTcuNzAyIDI1LjIwNTUgMTcuNTU2NSAyNS43ODkyIDE3LjIzMjQgMjYuMjc0OUwxNy4yMzA1IDI2LjI3NTlDMTcuMjI2MSAyNi4yODIyIDE3LjIyMjYgMjYuMjg5MyAxNy4yMTk3IDI2LjI5NjRMMTguMzAxOCAyNy4zODA0QzE4LjM1ODUgMjcuNDM3MiAxOC40MjY2IDI3LjQ4MiAxOC41MDEgMjcuNTEyMkMxOC41NzU1IDI3LjU0MjUgMTguNjU1OSAyNy41NTc0IDE4LjczNjMgMjcuNTU2MkMxOC44MTY2IDI3LjU1NDkgMTguODk2MyAyNy41Mzc4IDE4Ljk2OTcgMjcuNTA1NEMxOS4wNDMgMjcuNDcyOSAxOS4xMDkxIDI3LjQyNjEgMTkuMTY0MSAyNy4zNjc3TDI3LjQxMzEgMTguNjAyMUMyNy40NjczIDE4LjU0NDIgMjcuNTA5MyAxOC40NzYxIDI3LjUzNzEgMTguNDAxOUMyNy41NjQ5IDE4LjMyNzYgMjcuNTc4MSAxOC4yNDg3IDI3LjU3NTIgMTguMTY5NEMyNy41NzIyIDE4LjA5MDIgMjcuNTUzOCAxOC4wMTE5IDI3LjUyMDUgMTcuOTM5OUMyNy40ODcyIDE3Ljg2NzkgMjcuNDM5NCAxNy44MDMyIDI3LjM4MDkgMTcuNzQ5NUwyNi4zMjIzIDE2Ljc3NzhDMjYuMjkyNSAxNi43ODg1IDI2LjI2NDggMTYuODA1MyAyNi4yNDMyIDE2LjgyODZDMjYuMDIxNyAxNy4wNzg4IDI1Ljc1MjkgMTcuMjgyNyAyNS40NTIxIDE3LjQyODJDMjUuMTUgMTcuNTc0MyAyNC44MjE0IDE3LjY1ODUgMjQuNDg2MyAxNy42NzYzQzI0LjE1MTEgMTcuNjk0IDIzLjgxNSAxNy42NDUyIDIzLjQ5OSAxNy41MzE3QzIzLjE4MzIgMTcuNDE4MyAyMi44OTI4IDE3LjI0MjkgMjIuNjQ1NSAxNy4wMTYxQzIyLjM5ODIgMTYuNzg5MyAyMi4xOTg4IDE2LjUxNTMgMjIuMDU4NiAxNi4yMTA0QzIxLjkxODMgMTUuOTA1NSAyMS44NDA0IDE1LjU3NTIgMjEuODI5MSAxNS4yMzk3QzIxLjgxNzggMTQuOTA0MyAyMS44NzM3IDE0LjU3IDIxLjk5MzIgMTQuMjU2M0MyMi4xMTIxIDEzLjk0NDIgMjIuMjkxNSAxMy42NTg3IDIyLjUyMTUgMTMuNDE2NUwyMi41NTQ3IDEzLjM2NTdDMjIuNTU5NCAxMy4zNTUyIDIyLjU2MDcgMTMuMzQzNyAyMi41NjM1IDEzLjMzMjVMMjEuNjk3MyAxMi41Mzg2VjEyLjUzNzZDMjEuNTgzMyAxMi40MzMxIDIxLjQzMjkgMTIuMzc3IDIxLjI3ODMgMTIuMzgwNFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzZSB0aWNrZXRzIGZvciB0aGUgZm9sbG93aW5nPC9zcGFuPlxuXG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxuXG5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgOicwJ319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5qdW5rQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50IDonMCd9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBKdW5rXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb24gKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsUmFzaWVkKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgc3RhcnQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgKHRlbXBNb2RhbEltYWdlPy5maWxlUGF0aCB8fCBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyAodGVtcE1vZGFsSW1hZ2U/LmZpbGVQYXRoIHx8IHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoKVwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcGxkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7KHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LmlzUGFyZW50XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHB5LTIgcHgtMFwiPiAtLT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcHktMiBtYi0yIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZUltYWdlKClcIj5DbG9zZTwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRm9vdGZhbGwgVHJlbmRzIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNmb290ZmFsbFRyZW5kc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbWItM1wiPlxuICAgICAgICA8IS0tIFRvdGFsIEZvb3RmYWxsIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtYi0zIG1iLW1kLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRvdGFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRDdXJyZW50Rm9vdGZhbGwoKSB8fCAwIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgIDwhLS0gW25nQ2xhc3NdPVwiZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCkgPj0gMCA/ICd1cCcgOiAnZG93bidcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXRyZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1LjMzMjcgMy45OTk5OEw4Ljk5OTM1IDEwLjMzMzNMNS42NjYwMiA2Ljk5OTk4TDAuNjY2MDE2IDEyTTE1LjMzMjcgMy45OTk5OEgxMS4zMzI3TTE1LjMzMjcgMy45OTk5OFY3Ljk5OTk4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xODY4MVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMTBCOTgxXCI+e3tnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSB9fSUgPC9zcGFuPjxzcGFuPnZzIFllc3RlcmRheTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUb3RhbCBEb3dudGltZSBDYXJkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbWItMyBtYi1tZC0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtdGl0bGVcIj5Ub3RhbCBEb3dudGltZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dudGltZS1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEuOTAwNCAxMi4xNjc1QzIyLjk5NTggMTIuMTY3NSAyNC4wNDIzIDEyLjM5MTggMjQuOTk3NyAxMi43OTg3QzI1Ljk4ODkgMTMuMjIwNyAyNi44ODA5IDEzLjg0MDIgMjcuNjI3OSAxNC42MDg3QzI4LjM3MzQgMTUuMzc1NiAyOC45NzU2IDE2LjI5MzEgMjkuMzg1NyAxNy4zMTYyQzI5Ljc4MTMgMTguMjk5IDI5Ljk5OTMgMTkuMzc1NiAyOS45OTkzIDIwLjUwMDhDMjkuOTk5MyAyMS42Mjc3IDI5Ljc4MTMgMjIuNzA0MyAyOS4zODU3IDIzLjY4NzFDMjguOTc1NiAyNC43MDY4IDI4LjM3MzQgMjUuNjI0NCAyNy42MjYzIDI2LjM5MjlDMjYuODgwOSAyNy4xNTk4IDI1Ljk4ODkgMjcuNzc5MyAyNC45OTQ1IDI4LjIwMTJDMjQuMDM5MSAyOC42MDgxIDIyLjk5MjUgMjguODMyNSAyMS44OTg4IDI4LjgzMjVDMjAuODAzNCAyOC44MzI1IDE5Ljc1NjggMjguNjA4MSAxOC44MDE0IDI4LjIwMTJDMTcuODEwMiAyNy43NzkzIDE2LjkxODMgMjcuMTU5OCAxNi4xNzI5IDI2LjM5MjlMMTYuMTcxMiAyNi4zOTEyQzE1LjQyNDIgMjUuNjIyNyAxNC44MjM2IDI0LjcwNTIgMTQuNDEzNCAyMy42ODcxQzE0LjI4NjUgMjMuMzcwNyAxNC4xNzc0IDIzLjA0NTkgMTQuMDg3OSAyMi43MTI3QzE0LjI1NzIgMjIuNzI5NCAxNC40Mjk3IDIyLjczNzggMTQuNjAzOCAyMi43Mzc4QzE0LjkzNDIgMjIuNzM3OCAxNS4yNTY1IDIyLjcwNzYgMTUuNTcwNiAyMi42NDlDMTUuNjIyNyAyMi44MDk4IDE1LjY3OTcgMjIuOTY4OCAxNS43NDE1IDIzLjEyNDZDMTYuMDc4NSAyMy45NjE3IDE2LjU3MzIgMjQuNzE1MiAxNy4xODg1IDI1LjM0ODFDMTcuODAzNyAyNS45ODEgMTguNTM3OCAyNi40OSAxOS4zNDk5IDI2LjgzNjZDMjAuMTMyOCAyNy4xNjk4IDIwLjk5MzggMjcuMzU1NyAyMS44OTg4IDI3LjM1NTdDMjIuODAzNyAyNy4zNTU3IDIzLjY2MzEgMjcuMTcxNSAyNC40NDc2IDI2LjgzNjZDMjUuMjYxNCAyNi40OSAyNS45OTM4IDI1Ljk4MSAyNi42MDkxIDI1LjM0ODFDMjcuMjI0MyAyNC43MTUyIDI3LjcxOTEgMjMuOTYwMSAyOC4wNTYgMjMuMTI0NkMyOC4zNzk5IDIyLjMxOTIgMjguNTYwNSAyMS40MzM0IDI4LjU2MDUgMjAuNTAyNUMyOC41NjA1IDE5LjU3MTUgMjguMzgxNSAxOC42ODc1IDI4LjA1NiAxNy44ODA0QzI3LjcxOTEgMTcuMDQzMiAyNy4yMjQzIDE2LjI4OTggMjYuNjA5MSAxNS42NTY5QzI1Ljk5MzggMTUuMDI0IDI1LjI1OTggMTQuNTE0OSAyNC40NDc2IDE0LjE2ODRDMjMuNjY0NyAxMy44MzUyIDIyLjgwMzcgMTMuNjQ5MyAyMS44OTg4IDEzLjY0OTNDMjAuOTkzOCAxMy42NDkzIDIwLjEzNDQgMTMuODMzNSAxOS4zNDk5IDE0LjE2ODRDMTkuMjc5OSAxNC4xOTg1IDE5LjIxIDE0LjIzMDMgMTkuMTQxNiAxNC4yNjIxQzE4Ljg3NDcgMTMuODMwMSAxOC41NTI0IDEzLjQzODMgMTguMTgyOSAxMy4wOTg0QzE4LjM4NDggMTIuOTkxMyAxOC41OTE1IDEyLjg5MjUgMTguODAxNCAxMi44MDIxQzE5Ljc2MDEgMTIuMzkxOCAyMC44MDUgMTIuMTY3NSAyMS45MDA0IDEyLjE2NzVaTTIwLjk3MSAxNi41MzkzQzIwLjk3MSAxNi4zMzUgMjEuMDUyNCAxNi4xNTA4IDIxLjE4MSAxNi4wMTY5QzIxLjMxMTIgMTUuODgyOSAyMS40OTAyIDE1LjgwMDkgMjEuNjg4OCAxNS44MDA5QzIxLjg4NzQgMTUuODAwOSAyMi4wNjY0IDE1Ljg4MjkgMjIuMTk2NiAxNi4wMTY5QzIyLjMyNjggMTYuMTUwOCAyMi40MDY2IDE2LjMzNSAyMi40MDY2IDE2LjUzOTNWMjAuNDI3MUwyNS4yMzA1IDIyLjE1MDFDMjUuMzk5NyAyMi4yNTM5IDI1LjUxMzcgMjIuNDE5NiAyNS41NTkyIDIyLjYwMjFDMjUuNjA0OCAyMi43ODQ3IDI1LjU4MzcgMjIuOTg1NiAyNS40ODI3IDIzLjE1OTdWMjMuMTYxNEMyNS4zODE4IDIzLjMzNTUgMjUuMjIwNyAyMy40NTI3IDI1LjA0MzMgMjMuNDk5NkMyNC44NjU5IDIzLjU0NjUgMjQuNjcwNiAyMy41MjQ3IDI0LjUwMTMgMjMuNDIwOUgyNC40OTk3TDIxLjM0MDUgMjEuNDkzN0MyMS4yMzE0IDIxLjQzMTggMjEuMTQxOSAyMS4zNDEzIDIxLjA3NjggMjEuMjM0MkMyMS4wMTAxIDIxLjEyMiAyMC45NzEgMjAuOTg5NyAyMC45NzEgMjAuODQ5MVYxNi41MzkzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMzkxMyAxMi42MDk1QzE2LjgxNjQgMTIuNjA5NSAxOC43ODI2IDE0LjYzMjEgMTguNzgyNiAxNy4xMjY5QzE4Ljc4MjYgMTkuNjIxOCAxNi44MTY0IDIxLjY0NDQgMTQuMzkxMyAyMS42NDQ0QzExLjk2NjEgMjEuNjQ0NCAxMCAxOS42MjE4IDEwIDE3LjEyNjlDMTAgMTQuNjMyMSAxMS45NjYxIDEyLjYwOTUgMTQuMzkxMyAxMi42MDk1Wk0xNC4zOTEzIDE5LjcxNzJMMTYuNzQ4IDE2LjcyMDFIMTUuMjg0OFYxNS4xMjYxSDEzLjQ5NzdWMTYuNzIwMUgxMi4wMzQ1TDE0LjM5MTMgMTkuNzE3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGMDQ0MzhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRGb3JtYXR0ZWREb3dudGltZSgpIHx8ICctJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1ldHJpYy10YWcgc3VjY2Vzc1wiICpuZ0lmPVwiaGFzRG93bnRpbWUoKVwiPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjY3IDMuNUw1LjI1IDkuOTE2NjdMMi4zMzMzNCA3XCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPklzc3VlIHN1Ym1pdHRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNSAyLjVMNy41IDUuNUwxMC41IDIuNVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRpY2tldCBTdGF0dXMgQ2FyZCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRpY2tldCBzdGF0dXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy12YWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1yYWlzZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ3JhaXNlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1jbG9zZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2Nsb3NlJ1xuICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFRpY2tldFN0YXR1cygpID09PSAnLScgPyAnLScgOiAoZ2V0VGlja2V0U3RhdHVzKCkgfCB0aXRsZWNhc2UpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0UmVxdWVzdFBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0zIGZ3LWJvbGRcIj5cbiAgICAgICAgICAgICAgICBSZXNldCByZXF1ZXN0LlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTNcIj5cbiAgICAgICAgICAgICAgICBZb3UncmUgcmVxdWVzdGluZyB0byByZS1lbmFibGUgZm9vdGZhbGwgdGlja2V0cywgZGlzYWJsZWQgYWZ0ZXIgdGhyZWUgaW5zdGFuY2VzIG9mIGV4Y2VlZGluZyA5NSVcbiAgICAgICAgICAgICAgICBhY2N1cmFjeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0wXCI+XG4gICAgICAgICAgICAgICAgUGxlYXNlIGVuc3VyZSBmdXR1cmUgYWNjdXJhY3kgc3RheXMgb24gb3Igd2l0aGluIDk1JS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgYm9yZGVyLTAgcC0wIG10LTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNhbmNlbFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgU2VuZCBSZXF1ZXN0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpY2tldFN0YXR1c1RlbXBsYXRlIGxldC1tb2RlbD5cbiAgICA8IS0tIFRpY2tldCBSZXZpZXcgQ2FyZCAoc2hvd24gd2hlbiB0aWNrZXQgc3RhdHVzIGlzIHJhaXNlZCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCIoaXNUaWNrZXRSYWlzZWQoKSB8fCBpc1RpY2tldENsb3NlZCgpKSAmJiBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmV2aWV3LWNhcmRcIj5cbiAgICAgICAgICAgIDwhLS0gQWN0dWFsIEZvb3RmYWxsIEhlYWRlciAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbnVtYmVyXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uZm9vdGZhbGwgfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1sYWJlbFwiPkFjdHVhbCBGb290ZmFsbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgQ3JlYXRlZCBCeSBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jcmVhdG9yLXNlY3Rpb25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXJcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiIGFsdD1cIlByb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhci1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiAxMEMxNy42NTY5IDEwIDE5IDExLjM0MzEgMTkgMTNDMTkgMTQuNjU2OSAxNy42NTY5IDE2IDE2IDE2QzE0LjM0MzEgMTYgMTMgMTQuNjU2OSAxMyAxM0MxMyAxMS4zNDMxIDE0LjM0MzEgMTAgMTYgMTBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMjJDMTEgMTkuMjM4NiAxMy4yMzg2IDE3IDE2IDE3QzE4Ljc2MTQgMTcgMjEgMTkuMjM4NiAyMSAyMlYyM0gxMVYyMlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWxhYmVsXCI+VGlja2V0IGNyZWF0ZWQgYnk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItZW1haWxcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3Itc2VwYXJhdG9yXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXRpbWVcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdCB8IGRhdGU6J2g6bW06c3MgYSAtIGQgTU1NIHl5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IFJldmlzZWQgRm9vdGZhbGwgYW5kIE1ldHJpY3MgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1mb290ZmFsbC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXIgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZEZvb3RmYWxsIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkUGVyYyB8fCAwIH19JSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtYXJyb3dcIj7ihpM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5SZXZpc2VkIGZvb3RmYWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+KHt7IGdldFJldmlzaW9uQ2FsY3VsYXRpb24oJ3RhZ2dpbmcnKX19JSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2R1cGxpY2F0ZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RHVwbGljYXRlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdlbXBsb3llZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdob3VzZUtlZXBpbmcnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkhvdXNlIEtlZXBpbmc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRpY2tldCBGaW5hbCByZXZpc2lvbiBDYXJkIChzaG93biB3aGVuIHRpY2tldCBzdGF0dXMgaXMgY2xvc2VkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIiAqbmdJZj1cImlzVGlja2V0Q2xvc2VkKCkgJiYgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXZpZXctY2FyZFwiPlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgY2FyZCBzZWN0aW9uIGluIHJldmlzaW9uIHN0YXJ0IC0tPlxuXG4gICAgICAgICAgICA8IS0tIEFjdHVhbCBGb290ZmFsbCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLW51bWJlclwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmZvb3RmYWxsIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbGFiZWxcIj5BY3R1YWwgRm9vdGZhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IENyZWF0ZWQgQnkgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY3JlYXRvci1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIiBhbHQ9XCJQcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXItcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgMTBDMTcuNjU2OSAxMCAxOSAxMS4zNDMxIDE5IDEzQzE5IDE0LjY1NjkgMTcuNjU2OSAxNiAxNiAxNkMxNC4zNDMxIDE2IDEzIDE0LjY1NjkgMTMgMTNDMTMgMTEuMzQzMSAxNC4zNDMxIDEwIDE2IDEwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDIyQzExIDE5LjIzODYgMTMuMjM4NiAxNyAxNiAxN0MxOC43NjE0IDE3IDIxIDE5LjIzODYgMjEgMjJWMjNIMTFWMjJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1sYWJlbFwiPlRpY2tldCBjcmVhdGVkIGJ5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLWVtYWlsXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXNlcGFyYXRvclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+4oCiPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci10aW1lXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXQgfCBkYXRlOidoOm1tOnNzIGEgLSBkIE1NTSB5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRpY2tldCBSZXZpc2VkIEZvb3RmYWxsIGFuZCBNZXRyaWNzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZm9vdGZhbGwtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyIGJsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZFBlcmMgfHwgMCB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWFycm93XCI+4oaTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCd0YWdnaW5nJyl9fSUpPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdkdXBsaWNhdGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkR1cGxpY2F0ZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZW1wbG95ZWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkVtcGxveWVlL1N0YWZmPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2p1bmsnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkp1bms8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnaG91c2VLZWVwaW5nJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5Ib3VzZSBLZWVwaW5nPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBjYXJkIHNlY3Rpb24gaW4gcmV2aXNpb24gZW5kIC0tPlxuXG4gICAgICAgICAgICA8IS0tIEZpbmFsIFJldmlzaW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2lvbi10aXRsZVwiPkZpbmFsIHJldmlzaW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbmFsLXJldmlzaW9uLW5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHJlYWNoIGNlbnRyYWxvcGVyYXRpb25zJiM2NDtsZW5za2FydC5pbiBmb3IgYW55IGZ1cnRoZXIgZGlzY3JlcGFuY2llc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3Jyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgnZmluYWxyZXZpZXcnKT8ucmV2aWNlZFBlcmMgfHwgMH19JSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1hcnJvd1wiPuKGkTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCdmaW5hbHJldmlldycpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdkdXBsaWNhdGUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdlbXBsb3llZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkVtcGxveWVlL1N0YWZmPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpLCAnaG91c2VLZWVwaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|