tango-app-ui-analyse-traffic 3.3.0-beta.13 → 3.3.0-beta.14
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/traffic-analysis/traffic-analysis.component.mjs +39 -36
- package/fesm2022/tango-app-ui-analyse-traffic.mjs +38 -35
- package/fesm2022/tango-app-ui-analyse-traffic.mjs.map +1 -1
- package/lib/components/traffic-analysis/traffic-analysis.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -84,6 +84,7 @@ export class TrafficAnalysisComponent {
|
|
|
84
84
|
recaplaoding;
|
|
85
85
|
recapnoData;
|
|
86
86
|
recapsGrouped = [];
|
|
87
|
+
isAverage = false; // Toggle state for the switch
|
|
87
88
|
handleClickOutside(event) {
|
|
88
89
|
const clickedInside = event.target.closest('.tooltip-popup, .label');
|
|
89
90
|
if (!clickedInside) {
|
|
@@ -133,7 +134,6 @@ export class TrafficAnalysisComponent {
|
|
|
133
134
|
bounceValue;
|
|
134
135
|
ngOnInit() {
|
|
135
136
|
mapboxgl.accessToken = 'pk.eyJ1IjoiYmFsYWppdGFuZ28iLCJhIjoiY20wZ2xiem55MDFxYTJ3b21zb3FjNHdwayJ9.nnIIzt7OeYlYHufGE8lFWQ';
|
|
136
|
-
this.valueType = "actual";
|
|
137
137
|
this.gs.dataRangeValue
|
|
138
138
|
.pipe(takeUntil(this.destroy$), debounceTime(300))
|
|
139
139
|
.subscribe((data) => {
|
|
@@ -147,6 +147,8 @@ export class TrafficAnalysisComponent {
|
|
|
147
147
|
this.dateType = "weekly";
|
|
148
148
|
else if (this.dateLength === 0)
|
|
149
149
|
this.dateType = "daily";
|
|
150
|
+
this.valueType = "actual";
|
|
151
|
+
this.isAverage = false;
|
|
150
152
|
this.storeIdarray = this.headerData?.stores.filter((store) => store.checked).map((store) => store.storeId);
|
|
151
153
|
this.tableobj = {
|
|
152
154
|
fromDate: data?.date.startDate,
|
|
@@ -163,7 +165,9 @@ export class TrafficAnalysisComponent {
|
|
|
163
165
|
this.performance();
|
|
164
166
|
this.getZone();
|
|
165
167
|
this.getZoneValue();
|
|
166
|
-
|
|
168
|
+
setTimeout(() => {
|
|
169
|
+
this.getMap();
|
|
170
|
+
}, 1000);
|
|
167
171
|
if (this.storeIdarray.length === 1)
|
|
168
172
|
this.getRecap();
|
|
169
173
|
// this.initMap();
|
|
@@ -405,38 +409,37 @@ export class TrafficAnalysisComponent {
|
|
|
405
409
|
}
|
|
406
410
|
previousValue = null;
|
|
407
411
|
changeValue(method) {
|
|
408
|
-
if (this.previousValue === method) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
412
|
+
// if (this.previousValue === method) {
|
|
413
|
+
// // If the same value is clicked again, reset the values
|
|
414
|
+
// this.conversionValue = '';
|
|
415
|
+
// this.valueConversionRate = null;
|
|
416
|
+
// this.previousValue = null; // Reset previousValue
|
|
417
|
+
// } else {
|
|
418
|
+
// // Otherwise, set the new value and update conversion rate
|
|
419
|
+
this.previousValue = method;
|
|
420
|
+
if (this.previousValue === 'potentialBuyers') {
|
|
421
|
+
this.conversionValue = 'Potential Buyers';
|
|
413
422
|
}
|
|
414
423
|
else {
|
|
415
|
-
|
|
416
|
-
this.previousValue = method;
|
|
417
|
-
if (this.previousValue === 'potentialBuyers') {
|
|
418
|
-
this.conversionValue = 'Potential Buyers';
|
|
419
|
-
}
|
|
420
|
-
else {
|
|
421
|
-
this.conversionValue = method;
|
|
422
|
-
}
|
|
423
|
-
// Update conversion rates based on the selected method
|
|
424
|
-
if (this.previousValue === 'footfall') {
|
|
425
|
-
this.valueConversionRate = this.getCardGraphData?.conversion?.footfall.rate;
|
|
426
|
-
}
|
|
427
|
-
else if (this.previousValue === 'engagers') {
|
|
428
|
-
this.valueConversionRate = this.getCardGraphData?.conversion?.engagers.rate;
|
|
429
|
-
}
|
|
430
|
-
else if (this.previousValue === 'potentialBuyers') {
|
|
431
|
-
this.valueConversionRate = this.getCardGraphData?.conversion?.potentialBuyers.rate;
|
|
432
|
-
}
|
|
433
|
-
else if (this.previousValue === 'nob') {
|
|
434
|
-
this.valueConversionRate = this.getCardGraphData?.conversion?.nob.nob;
|
|
435
|
-
}
|
|
436
|
-
else {
|
|
437
|
-
this.valueConversionRate = this.getCardData?.conversion?.rate;
|
|
438
|
-
}
|
|
424
|
+
this.conversionValue = method;
|
|
439
425
|
}
|
|
426
|
+
// Update conversion rates based on the selected method
|
|
427
|
+
if (this.previousValue === 'footfall') {
|
|
428
|
+
this.valueConversionRate = this.getCardGraphData?.conversion?.footfall.rate;
|
|
429
|
+
}
|
|
430
|
+
else if (this.previousValue === 'engagers') {
|
|
431
|
+
this.valueConversionRate = this.getCardGraphData?.conversion?.engagers.rate;
|
|
432
|
+
}
|
|
433
|
+
else if (this.previousValue === 'potentialBuyers') {
|
|
434
|
+
this.valueConversionRate = this.getCardGraphData?.conversion?.potentialBuyers.rate;
|
|
435
|
+
}
|
|
436
|
+
else if (this.previousValue === 'nob') {
|
|
437
|
+
this.valueConversionRate = this.getCardGraphData?.conversion?.nob.nob;
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
this.valueConversionRate = this.getCardData?.conversion?.rate;
|
|
441
|
+
}
|
|
442
|
+
// }
|
|
440
443
|
}
|
|
441
444
|
getCardGraph() {
|
|
442
445
|
this.cardloading = true;
|
|
@@ -911,9 +914,9 @@ export class TrafficAnalysisComponent {
|
|
|
911
914
|
selectPlan(type) {
|
|
912
915
|
this.type = type;
|
|
913
916
|
}
|
|
914
|
-
isAverage = false; // Toggle state for the switch
|
|
915
917
|
// Toggle function for the switch
|
|
916
|
-
toggleAverage() {
|
|
918
|
+
toggleAverage(evt) {
|
|
919
|
+
this.isAverage = evt.target.checked;
|
|
917
920
|
this.tableobj.fromDate = this.headerData.date.startDate,
|
|
918
921
|
this.tableobj.toDate = this.headerData.date.endDate,
|
|
919
922
|
delete this.tableobj.recapVideoDate;
|
|
@@ -1220,11 +1223,11 @@ line-height: 13px;">
|
|
|
1220
1223
|
}
|
|
1221
1224
|
}
|
|
1222
1225
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficAnalysisComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.Router }, { token: i2.ExcelService }, { token: i3.TrafficService }, { token: i4.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i5.ToastService }, { token: i6.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
1223
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TrafficAnalysisComponent, selector: "lib-traffic-analysis", host: { listeners: { "document:click": "handleClickOutside($event)" } }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["t"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-US', { minimumFractionDigits: 0 }) : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverage\" (change)=\"toggleAverage()\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!cardNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <div *ngIf=\"dateLength > 0\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div *ngIf=\"dateLength > 5\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div *ngIf=\"dateLength > 28\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='nob' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3\">\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\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\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path 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\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='nob'\" (click)=\"changeValue('nob')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='nob'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall'\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='nob' || conversionValue ===''\" class=\"percent-value\">--%</span>\r\n <span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\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\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\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\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\"><span class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path 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\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" 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\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\"> {{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" style=\"width: 100%; height: 258px;\"></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default ms-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" 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=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'bottom': point.top, 'left': point.left}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}}</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"306\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Sum</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('average')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Average</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\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 <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 0\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Dwell DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bellow12')\">Bellow12 <svg [ngClass]=\"sortedColumn === 'bellow12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bellow12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.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, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:34%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:49.5%;height:20%}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:57%;height:20%}.img-nodata{width:38%;height:20%}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:43%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:39%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:35%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i9.TrafficChartsComponent, selector: "lib-traffic-charts" }, { kind: "component", type: i10.TrafficCardChartsComponent, selector: "lib-traffic-card-charts" }, { kind: "component", type: i11.ImageDocComponent, selector: "lib-image-doc" }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
1226
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TrafficAnalysisComponent, selector: "lib-traffic-analysis", host: { listeners: { "document:click": "handleClickOutside($event)" } }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["t"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-US', { minimumFractionDigits: 0 }) : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!cardNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <div *ngIf=\"dateLength > 0\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div *ngIf=\"dateLength > 5\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div *ngIf=\"dateLength > 28\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='nob' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3\">\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\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\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path 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\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='nob'\" (click)=\"changeValue('nob')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='nob'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall'\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='nob' || conversionValue ===''\" class=\"percent-value\">--%</span>\r\n <span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\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\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\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\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\"><span class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path 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\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" 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\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\"> {{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" style=\"width: 100%; height: 258px;\"></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default ms-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" 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=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'bottom': point.top, 'left': point.left}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}}</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"306\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Sum</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('average')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Average</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\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 <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Dwell DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.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, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:34%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:49.5%;height:20%}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:57%;height:20%}.img-nodata{width:38%;height:20%}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:43%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:39%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:35%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i9.TrafficChartsComponent, selector: "lib-traffic-charts" }, { kind: "component", type: i10.TrafficCardChartsComponent, selector: "lib-traffic-card-charts" }, { kind: "component", type: i11.ImageDocComponent, selector: "lib-image-doc" }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
1224
1227
|
}
|
|
1225
1228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficAnalysisComponent, decorators: [{
|
|
1226
1229
|
type: Component,
|
|
1227
|
-
args: [{ selector: "lib-traffic-analysis", template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-US', { minimumFractionDigits: 0 }) : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverage\" (change)=\"toggleAverage()\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!cardNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <div *ngIf=\"dateLength > 0\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div *ngIf=\"dateLength > 5\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div *ngIf=\"dateLength > 28\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='nob' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3\">\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\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\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path 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\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='nob'\" (click)=\"changeValue('nob')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='nob'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall'\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='nob' || conversionValue ===''\" class=\"percent-value\">--%</span>\r\n <span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous week</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\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\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\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\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\"><span class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous week</span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path 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\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" 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\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\"> {{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" style=\"width: 100%; height: 258px;\"></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default ms-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" 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=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'bottom': point.top, 'left': point.left}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}}</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"306\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Sum</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('average')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Average</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\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 <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 0\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Dwell DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bellow12')\">Bellow12 <svg [ngClass]=\"sortedColumn === 'bellow12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bellow12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.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, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:34%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:49.5%;height:20%}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:57%;height:20%}.img-nodata{width:38%;height:20%}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:43%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:39%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:35%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}\n"] }]
|
|
1230
|
+
args: [{ selector: "lib-traffic-analysis", template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-US', { minimumFractionDigits: 0 }) : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!cardNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-2\">\r\n <div *ngIf=\"dateLength > 0\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div *ngIf=\"dateLength > 5\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div *ngIf=\"dateLength > 28\" class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='nob' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3\">\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\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\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path 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\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px mx-4\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='nob'\" (click)=\"changeValue('nob')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg *ngIf=\"conversionValue ==='nob'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall'\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers'\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='nob' || conversionValue ===''\" class=\"percent-value\">--%</span>\r\n <span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-US', { minimumFractionDigits: 0 }):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-US', { minimumFractionDigits: 0 }) ?? '--'}}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\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\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\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\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\"><span class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span><span class=\"week-font\">\r\n vs previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path 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\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" 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\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\"> {{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" style=\"width: 100%; height: 258px;\"></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default ms-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\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 title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" 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=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'bottom': point.top, 'left': point.left}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src mb-3 background-image\" />\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }}</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}}</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations \r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> -->\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"306\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Sum</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"onValueType('average')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Average</span> </button>\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\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 <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Dwell DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.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, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:34%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:49.5%;height:20%}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:57%;height:20%}.img-nodata{width:38%;height:20%}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:43%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:39%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:35%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}\n"] }]
|
|
1228
1231
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.Router }, { type: i2.ExcelService }, { type: i3.TrafficService }, { type: i4.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i5.ToastService }, { type: i6.NgbModal }], propDecorators: { handleClickOutside: [{
|
|
1229
1232
|
type: HostListener,
|
|
1230
1233
|
args: ['document:click', ['$event']]
|
|
@@ -1243,4 +1246,4 @@ function getDaysBetweenDates(fromDate, toDate) {
|
|
|
1243
1246
|
const differenceInDays = Math.floor(differenceInMs / millisecondsPerDay);
|
|
1244
1247
|
return differenceInDays;
|
|
1245
1248
|
}
|
|
1246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQU1ULFNBQVMsRUFFVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sd0JBQXdCO0lBMkZ6QjtJQUNBO0lBQ0E7SUFBNEI7SUFBc0I7SUFDbEQ7SUFBK0I7SUFDL0I7SUFBOEI7SUFBNEI7SUE5RjVELFFBQVEsQ0FBVztJQUNuQixlQUFlLENBQVc7SUFDMUIsdUJBQXVCLENB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Q0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzt3R0FqeENVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLG1PQ2hDckMsNnF1SUF3NkNBOzs0RkR4NENhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7NFRBMkRoQyxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNkNQLE9BQU87c0JBQXpDLFNBQVM7dUJBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUF3ckNuQyxTQUFTLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUMzRCwyQ0FBMkM7SUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFN0IsMkNBQTJDO0lBQzNDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFdkQsK0RBQStEO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUV6RSxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE5nWm9uZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSG9zdExpc3RlbmVyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW01IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1XCI7XHJcbmltcG9ydCAqIGFzIGFtNXh5IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3h5XCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvdGhlbWVzL0FuaW1hdGVkXCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfUmVzcG9uc2l2ZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvUmVzcG9uc2l2ZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTVwZXJjZW50IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3BlcmNlbnRcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtYXBib3hnbCBmcm9tICdtYXBib3gtZ2wnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBWaWRlb1VybENvbXBvbmVudCB9IGZyb20gXCIuLi92aWRlby11cmwvdmlkZW8tdXJsLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRyYWZmaWMtYW5hbHlzaXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWZmaWNBbmFseXNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGxpbmVyb290OiBhbTUuUm9vdDtcclxuICBwcml2YXRlIGJvdW5jZWRsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBwb3RlbnRpYWxCdXllcnNsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBlbmdhZ2Vyc2xpbmVyb290OiBhbTUuUm9vdDtcclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0RGlyZWN0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xyXG4gIHByaXZhdGUgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGdldENhcmREYXRhOiBhbnkgPSBbXTtcclxuICBoZWF0TWFwRGF0YTogYW55ID0gW107XHJcbiAgZ2V0Q2FyZEdyYXBoRGF0YTogYW55O1xyXG4gIGdldFN1bW1hcnlUYWJsZURhdGE6IGFueTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgdG90YWxJdGVtcyA9IDE7XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gIHBhZ2VTaXplID0gMTA7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIGxpbWl0OiBudW1iZXIgPSAxMDtcclxuICBnZXRSZWNhcFZpZGVvRGF0YTogYW55O1xyXG4gIHRhYmxlb2JqOiBhbnk7XHJcbiAgaGVhdE1hcHJvb3Q6IGFtNS5Sb290O1xyXG4gIHZhbHVlVHlwZT1cImFjdHVhbFwiXHJcbiAgZGF0ZVR5cGU9XCJkYWlseVwiO1xyXG4gIHBvaW50czphbnkgPSBbXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgdHlwZVZhbHVlOiBhbnkgPSdzdW0nO1xyXG4gIHZhbHVlQ29udmVyc2lvblJhdGU6IGFueTtcclxuICBjb252ZXJzaW9uVmFsdWU6IGFueT0nJztcclxuICBzZWFyY2hWYWx1ZTogYW55O1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPXRydWU7XHJcbiAgbm9EYXRhOiBib29sZWFuID1mYWxzZTtcclxuICBjYXJkbG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICBjYXJkTm9kYXRhOiBib29sZWFuID1mYWxzZTtcclxuICBoZWF0bG9hZGluZyA9IHRydWVcclxuICBoZWF0bm9EYXRhID0gZmFsc2VcclxuICBzdG9yZUlkYXJyYXk6IGFueSA9W107XHJcbiAgZ2V0UmVjYXBEYXRhOiBhbnk9W107XHJcbiAgZm9ybTogYW55O1xyXG4gIGZvb3RmYWxsVmFsdWU6IGFueTtcclxuICBkYXRlTGVuZ3RoOiBudW1iZXI7XHJcbiAgcGVyZm9ybWFuY2Vub0RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIHBlcmZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICB6b25lRHdlbGxUaW1lU3BsaXREYXRhOiBhbnk9W107XHJcbiAgc3RvcmVPcGVyYXRpb25EYXRhOiBhbnk9W107XHJcbiAgZm9vdGZhbGxOYW1lOiBzdHJpbmc9J0Zvb3RmYWxsJztcclxuICBib3VuY2VMYWJlbDogYW55O1xyXG4gIGZvb3RmYWxsTGFiZWw6IGFueTtcclxuICBjb2xWYWx1ZTogYW55O1xyXG4gIHJlY2FwbGFvZGluZzogYm9vbGVhbjtcclxuICByZWNhcG5vRGF0YTogYm9vbGVhbjtcclxuICByZWNhcHNHcm91cGVkOiBhbnlbXT1bXTtcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLnRvb2x0aXAtcG9wdXAsIC5sYWJlbCcpO1xyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVG9vbHRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFjdGl2ZVRvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhdUxvY2F0aW9uczogYW55W10gPSBbXTtcclxuICBtYXBPcHRpb25zOiBnb29nbGUubWFwcy5NYXBPcHRpb25zID0ge1xyXG4gICAgbWFwSWQ6IFwiREVNT19NQVBfSURcIixcclxuICAgIGNlbnRlcjogeyBsYXQ6IDAsIGxuZzogMCB9LCAgLy8gSW5pdGlhbCBjZW50ZXJcclxuICAgIHpvb206IDQsXHJcbiAgfTtcclxuXHJcbiAgcGVyZm9ybWFuY2VEYXRhOmFueSA9IFtdO1xyXG4gIG1wYWxvYWRpbmcgPXRydWU7XHJcbiAgbWFwbm9EYXRhPSBmYWxzZTtcclxuICBmb290ZmFsbGRhdGFzZXRzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2Zvb3RmYWxsJywgbGFiZWw6ICdGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdib3VuY2VkJywgbGFiZWw6ICdCb3VuY2VkIEZvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2VuZ2FnZXInLCBsYWJlbDogJ0VuZ2FnZXJzJyB9LFxyXG4gICAgeyB2YWx1ZTogJ21pc3NlZE9wcG9ydHVuaXR5JywgbGFiZWw6ICdNaXNzZWQgT3Bwb3J0dW5pdHknIH0sXHJcbiAgICB7IHZhbHVlOiAncG90ZW50aWFsQnV5ZXInLCBsYWJlbDogJ1BvdGVudGlhbCBCdXllcicgfSxcclxuICAgIHsgdmFsdWU6ICdjb252ZXJzaW9uJywgbGFiZWw6ICdDb252ZXJzaW9uJyB9XHJcbiAgXTtcclxuICBib3VuY2VkYXRhc2V0cyA9IFtcclxuICAgIHsgdmFsdWU6ICdmb290ZmFsbCcsIGxhYmVsOiAnRm9vdGZhbGwnIH0sXHJcbiAgICB7IHZhbHVlOiAnYm91bmNlZCcsIGxhYmVsOiAnQm91bmNlZCBGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdlbmdhZ2VyJywgbGFiZWw6ICdFbmdhZ2VycycgfSxcclxuICAgIHsgdmFsdWU6ICdtaXNzZWRPcHBvcnR1bml0eScsIGxhYmVsOiAnTWlzc2VkIE9wcG9ydHVuaXR5JyB9LFxyXG4gICAgeyB2YWx1ZTogJ3BvdGVudGlhbEJ1eWVyJywgbGFiZWw6ICdQb3RlbnRpYWwgQnV5ZXInIH0sXHJcbiAgICB7IHZhbHVlOiAnY29udmVyc2lvbicsIGxhYmVsOiAnQ29udmVyc2lvbicgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUcmFmZmljU2VydmljZSxwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdG9hc3Q6VG9hc3RTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgKSB7XHJcbiAgIFxyXG4gIH1cclxuICBAVmlld0NoaWxkKFwidFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbHRpcDogTmdiVG9vbHRpcDtcclxuICB0b29sdGlwVmFsdWU6IHN0cmluZztcclxuICBib3VuY2VWYWx1ZTphbnk7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAobWFwYm94Z2wgYXMgYW55KS5hY2Nlc3NUb2tlbiA9ICdway5leUoxSWpvaVltRnNZV3BwZEdGdVoyOGlMQ0poSWpvaVkyMHdaMnhpZW01NU1ERnhZVEozYjIxemIzRmpOSGR3YXlKOS5ubklJenQ3T2VZbFlIdWZHRThsRldRJztcclxudGhpcy52YWx1ZVR5cGU9XCJhY3R1YWxcIlxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZihkYXRhICE9PW51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsIHx8ICFkYXRhPy5zdG9yZXMubGVuZ3RoKXtcclxuICAgICAgICAvLyBPbmx5IHByb2Nlc3MgdGhlIGxhdGVzdCBkYXRhIGFmdGVyIGRlYm91bmNlIHRpbWVcclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuZGF0ZUxlbmd0aCA9IGdldERheXNCZXR3ZWVuRGF0ZXMoZGF0YT8uZGF0ZS5zdGFydERhdGUsIGRhdGE/LmRhdGUuZW5kRGF0ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUxlbmd0aCA+IDI4KVxyXG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IFwibW9udGhseVwiO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZGF0ZUxlbmd0aCA+IDUpXHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0gXCJ3ZWVrbHlcIjtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0ZUxlbmd0aCA9PT0gMClcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSBcImRhaWx5XCI7XHJcbiAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgICAgICB0aGlzLnRhYmxlb2JqID0ge1xyXG4gICAgICAgICAgZnJvbURhdGU6IGRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAgICAgdG9EYXRlOiBkYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgICAgICBzdG9yZUlkOiBkYXRhPy5zdG9yZXMuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGRhdGE/LmNsaWVudCA/IGRhdGE/LmNsaWVudCA6JycsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IHRoaXMudmFsdWVUeXBlLFxyXG4gICAgICAgICAgZGF0ZVR5cGU6IHRoaXMuZGF0ZVR5cGUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gQ2FsbCBtZXRob2RzIHRvIHVwZGF0ZSB0aGUgdmlld1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FyZCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FyZEdyYXBoKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gICAgICAgIHRoaXMucGVyZm9ybWFuY2UoKTtcclxuICAgICAgICB0aGlzLmdldFpvbmUoKTtcclxuICAgICAgICB0aGlzLmdldFpvbmVWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0TWFwKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA9PT0gMSlcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjYXAoKTtcclxuICAgICAgICAvLyB0aGlzLmluaXRNYXAoKTtcclxuICAgICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IFwiRGVmYXVsdCBUb29sdGlwIFRleHRcIjtcclxufVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IHRoaXMuZm9vdGZhbGxkYXRhc2V0c1swXS52YWx1ZTtcclxuICAgIHRoaXMuYm91bmNlVmFsdWUgPSB0aGlzLmJvdW5jZWRhdGFzZXRzWzFdLnZhbHVlO1xyXG4gICAgdGhpcy5mb290ZmFsbExhYmVsID0gdGhpcy5mb290ZmFsbGRhdGFzZXRzWzBdLmxhYmVsO1xyXG4gICAgdGhpcy5ib3VuY2VMYWJlbCA9IHRoaXMuYm91bmNlZGF0YXNldHNbMV0ubGFiZWw7XHJcbiAgfVxyXG4gIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ib3VuY2VkYXRhc2V0cy5maWx0ZXIoZGF0YXNldCA9PiBkYXRhc2V0LnZhbHVlICE9PSB0aGlzLmZvb3RmYWxsVmFsdWUpO1xyXG4gIH1cclxuICBcclxuICAvLyBGaWx0ZXIgdGhlIGZvb3RmYWxsIG9wdGlvbnMgd2hlbiB0aGUgYm91bmNlVmFsdWUgY2hhbmdlc1xyXG4gIGdldEZpbHRlcmVkRm9vdGZhbGxEYXRhc2V0cygpIHtcclxuICAgIHJldHVybiB0aGlzLmZvb3RmYWxsZGF0YXNldHMuZmlsdGVyKGRhdGFzZXQgPT4gZGF0YXNldC52YWx1ZSAhPT0gdGhpcy5ib3VuY2VWYWx1ZSk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IGV2dC50YXJnZXQudmFsdWU7XHJcbmlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0JvdW5jZWQgRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0VuZ2FnZXJzJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnTWlzc2VkIE9wcG9ydHVuaXR5J1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnUG90ZW50aWFsIEJ1eWVyJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gIHRoaXMuZm9vdGZhbGxMYWJlbCA9ICdjb252ZXJzaW9uJ1xyXG4gICAgaWYodGhpcy5mb290ZmFsbFZhbHVlICE9PSB0aGlzLmJvdW5jZVZhbHVlKVxyXG4gICAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgICBlbHNlIFxyXG4gICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTYW1lIHZhbHVlIG5vdCBmaWx0ZXJlZCcpXHJcbiAgfVxyXG4gIG9uQm91bmNlQ2hhbmdlKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmJvdW5jZVZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcclxuICAgIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnQm91bmNlZCBGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnRW5nYWdlcnMnXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdNaXNzZWQgT3Bwb3J0dW5pdHknXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdQb3RlbnRpYWwgQnV5ZXInXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gICAgICB0aGlzLmJvdW5jZUxhYmVsID0gJ2NvbnZlcnNpb24nXHJcbiAgICBpZih0aGlzLmZvb3RmYWxsVmFsdWUgIT09IHRoaXMuYm91bmNlVmFsdWUpXHJcbiAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgZWxzZSBcclxuICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NhbWUgdmFsdWUgbm90IGZpbHRlcmVkJylcclxuICB9XHJcbiAgY29udmVydFBlcmNlbnRUb1BpeGVscyhwZXJjZW50OiBzdHJpbmcsIG1heFBlcmNlbnQ6IG51bWJlciwgYmFzZURpbWVuc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIC8vIFJlbW92ZSB0aGUgJyUnIHNpZ24gYW5kIHBhcnNlIHRoZSB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KHBlcmNlbnQucmVwbGFjZSgnJScsICcnKSk7XHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gMDtcclxuICBcclxuICAgIC8vIENhbGN1bGF0ZSBwaXhlbCB2YWx1ZSBiYXNlZCBvbiB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGFuZCBiYXNlIGRpbWVuc2lvblxyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFBlcmNlbnQpICogYmFzZURpbWVuc2lvbjtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldE1heFBlcmNlbnRhZ2UoZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgLy8gRXh0cmFjdCBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2UgdmFsdWUgZnJvbSB0aGUgZmllbGRcclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbVtmaWVsZF0pIHx8IDApKTtcclxuICB9XHJcbiAgXHJcblxyXG5cclxuICBub3JtYWxpemVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgbWF4VG9wUGVyY2VudCA9IE1hdGgubWF4KC4uLmRhdGEubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtLnRvcC5yZXBsYWNlKCclJywgJycpKSkpO1xyXG4gICAgY29uc3QgbWF4TGVmdFBlcmNlbnQgPSBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbS5sZWZ0LnJlcGxhY2UoJyUnLCAnJykpKSk7XHJcbiAgXHJcbiAgICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAuLi5pdGVtLFxyXG4gICAgICB0b3A6IHRoaXMuc2NhbGVQZXJjZW50KGl0ZW0udG9wLCBtYXhUb3BQZXJjZW50KSArICclJyxcclxuICAgICAgbGVmdDogdGhpcy5zY2FsZVBlcmNlbnQoaXRlbS5sZWZ0LCBtYXhMZWZ0UGVyY2VudCkgKyAnJSdcclxuICAgIH0pKTtcclxuICB9XHJcbiAgXHJcbiAgc2NhbGVQZXJjZW50KHBlcmNlbnQ6IHN0cmluZywgbWF4UGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBlcmNlbnRWYWx1ZSA9IHBhcnNlRmxvYXQocGVyY2VudC5yZXBsYWNlKCclJywgJycpKTtcclxuICAgIHJldHVybiAoKHBlcmNlbnRWYWx1ZSAvIG1heFBlcmNlbnQpICogMTAwKS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuLy8gVG9nZ2xlIHRoZSB0b29sdGlwIGRpc3BsYXlcclxudG9nZ2xlVG9vbHRpcChwb2ludE5hbWU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlVG9vbHRpcCA9IHRoaXMuYWN0aXZlVG9vbHRpcCA9PT0gcG9pbnROYW1lID8gbnVsbCA6IHBvaW50TmFtZTtcclxufVxyXG5cclxucGVyZm9ybWFuY2UoKXtcclxuICB0aGlzLnBlcmZvcm1hbmNlTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5wZXJmb3JtYW5jZW5vRGF0YSA9IGZhbHNlO1xyXG4gIGxldCBvYmogPSB7XHJcbiAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgIHByb2Nlc3N0eXBlMTogdGhpcy5mb290ZmFsbFZhbHVlLFxyXG4gICBwcm9jZXNzdHlwZTIgOiB0aGlzLmJvdW5jZVZhbHVlXHJcbiAgfTtcclxuICB0aGlzLnNlcnZpY2UucGVyZm9ybWFuY2VNYXRyaXgob2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICA/LnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSByZXM/LmRhdGE/LnBlcmZvcm1hbmNlRGF0YVxyXG4gICAgICAgIHRoaXMucGVyZm9ybWFuY2VEYXRhID0gdGhpcy5ub3JtYWxpemVEYXRhKHRoaXMucGVyZm9ybWFuY2VEYXRhKTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgbWF4aW11bSBwZXJjZW50YWdlc1xyXG4gICAgICAgIGNvbnN0IG1heFRvcCA9IE1hdGgubWF4KC4uLnRoaXMucGVyZm9ybWFuY2VEYXRhLm1hcCgoaXRlbTphbnkpID0+IHBhcnNlRmxvYXQoaXRlbS50b3AucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBjb25zdCBtYXhMZWZ0ID0gTWF0aC5tYXgoLi4udGhpcy5wZXJmb3JtYW5jZURhdGEubWFwKChpdGVtOmFueSkgPT4gcGFyc2VGbG9hdChpdGVtLmxlZnQucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDb252ZXJ0IHBlcmZvcm1hbmNlIGRhdGEgdG8gcGl4ZWwgdmFsdWVzXHJcbiAgICAgICAgdGhpcy5wb2ludHMgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gKHtcclxuICAgICAgICAgIG5hbWU6IGRhdGEuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgYXZnRm9vdGZhbGw6IGRhdGEuYXZnLFxyXG4gICAgICAgICAgb3BlblRpbWU6IGRhdGEuYXZnT3BlblRpbWUsXHJcbiAgICAgICAgICBjbG9zZVRpbWU6IGRhdGEuYXZnQ2xvc2VUaW1lLFxyXG4gICAgICAgICAgdG9wOiB0aGlzLmNvbnZlcnRQZXJjZW50VG9QaXhlbHMoZGF0YS50b3AsIG1heFRvcCwgNTAwKSArICdweCcsIC8vIEFzc3VtaW5nIDUwMHB4IGFzIHRoZSBiYXNlIGhlaWdodFxyXG4gICAgICAgICAgbGVmdDogdGhpcy5jb252ZXJ0UGVyY2VudFRvUGl4ZWxzKGRhdGEubGVmdCwgbWF4TGVmdCwgNTAwKSArICdweCcgIC8vIEFzc3VtaW5nIDEwMDBweCBhcyB0aGUgYmFzZSB3aWR0aFxyXG4gICAgICAgIH0pKTsgXHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nIHtcclxuICAgIC8vIExvZ2ljIHRvIGRldGVybWluZSB0aGUgdG9vbHRpcCB0ZXh0XHJcbiAgICByZXR1cm4gXCJEeW5hbWljIFRvb2x0aXAgVGV4dCBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldENhcmQoKSB7XHJcbiAgICB0aGlzLmhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGVcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9IHJlcz8uZGF0YT8uY2FyZDtcclxuICAgICAgICAgICAgdGhpcy5oZWF0TWFwRGF0YSA9IHJlcz8uZGF0YT8uZnVubmVsQ2hhcnQ7XHJcbiAgICAgICAgICAvLyAgIGlmKHRoaXMudmFsdWVUeXBlID09PSAnYXZlcmFnZScpe1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMuZm9vdGZhbGxOYW1lID0gJ0F2Zy4gRm9vdGZhbGwnXHJcbiAgICAgICAgICAvLyAgIHRoaXMudGFibGVvYmoudmFsdWVUeXBlID10aGlzLnZhbHVlVHlwZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgICAgICAgIC8vICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8uY291bnQ7XHJcbiAgICAgICAgICAvLyAgfSAgZWxzZSB7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnRm9vdGZhbGwnXHJcbiAgICAgICAgICAvLyAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICAgICAgICAvLyAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgLy8gICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8ucmF0ZTtcclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlXHJcbiAgICAgICAgICAgIHRoaXMuaGVhdE1hcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEgPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5oZWF0bm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0UmVjYXAoKSB7XHJcbiAgICB0aGlzLnJlY2FwbGFvZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlOyBkZWxldGUgdGhpcy50YWJsZW9iai5mcm9tRGF0ZTtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai50b0RhdGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZTsgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmouc2VhcmNoOyBkZWxldGUgdGhpcy50YWJsZW9iai5vZmZzZXQ7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnNvcnRCeTsgZGVsZXRlIHRoaXMudGFibGVvYmouc29ydDtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai5leHBvcnQ7XHJcbiAgICAgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZSA9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldFJlY2FwVmlkZW8odGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcERhdGEgPSByZXM/LmRhdGE/LnJlY2FwVmlkZW9EYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwUmVjYXBzKCk7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIHRoaXMucmVjYXBsYW9kaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWNhcG5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAgICBcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5yZWNhcGxhb2RpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ3JvdXBSZWNhcHMoKSB7XHJcbiAgICB0aGlzLnJlY2Fwc0dyb3VwZWQgPSBbXTtcclxuICAgIGxldCBncm91cFNpemUgPSB0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGggPT09IDEgPyAxIDogMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoOyBpICs9IGdyb3VwU2l6ZSkge1xyXG4gICAgICB0aGlzLnJlY2Fwc0dyb3VwZWQucHVzaCh0aGlzLmdldFJlY2FwRGF0YS5zbGljZShpLCBpICsgZ3JvdXBTaXplKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbFZhbHVlID0gdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoID09PSAxID8gJ2NvbC1tZC0xMicgOiAnY29sLW1kLTYnO1xyXG4gIH1cclxuICB2aWRlb0NsaWNrKG9iajphbnkpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZGVvVXJsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvVXJsID0gb2JqO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0ZT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgcHJldmlvdXNWYWx1ZTogYW55ID0gbnVsbDtcclxuICBjaGFuZ2VWYWx1ZShtZXRob2Q6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gbWV0aG9kKSB7XHJcbiAgICAgIC8vIElmIHRoZSBzYW1lIHZhbHVlIGlzIGNsaWNrZWQgYWdhaW4sIHJlc2V0IHRoZSB2YWx1ZXNcclxuICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gbnVsbDsgLy8gUmVzZXQgcHJldmlvdXNWYWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIG5ldyB2YWx1ZSBhbmQgdXBkYXRlIGNvbnZlcnNpb24gcmF0ZVxyXG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnUG90ZW50aWFsIEJ1eWVycyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gVXBkYXRlIGNvbnZlcnNpb24gcmF0ZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIG1ldGhvZFxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1ZhbHVlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5yYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gJ2VuZ2FnZXJzJykge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdub2InKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5ub2Iubm9iO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Q2FyZEdyYXBoKCkge1xyXG4gICAgdGhpcy5jYXJkbG9hZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMuY2FyZE5vZGF0YSA9ZmFsc2U7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5ub3JtYWxpemVkRGF0YTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnByb2Nlc3NUeXBlO1xyXG4gICAgdGhpcy50YWJsZW9iai5kYXRlVHlwZSA9IHRoaXMuZGF0ZVR5cGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldENhcmRHcmFwaExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGhEYXRhID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmRsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTm9kYXRhID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5mb290ZmFsbGxpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5ib3VuY2VkbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLnBvdGVudGlhbGxpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYoIXJlcyB8fCByZXMuY29kZSA9PT0gMjA0KXtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGhEYXRhPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmRsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTm9kYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnByb2Nlc3NUeXBlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoubm9ybWFsaXplZERhdGE7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5kYXRlVHlwZTtcclxuICAgICh0aGlzLnRhYmxlb2JqLmxpbWl0ID0gdGhpcy5saW1pdCksICh0aGlzLnRhYmxlb2JqLm9mZnNldCA9IHRoaXMub2Zmc2V0KTtcclxuICAgICh0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWUpLCBcclxuICAgICAodGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPSB0aGlzLnR5cGVWYWx1ZSk7XHJcbiAgICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0U3VtbWFyeVRhYmxlTGlzdCh0aGlzLnRhYmxlb2JqKVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdW1tYXJ5VGFibGVEYXRhID0gcmVzPy5kYXRhLnN1bW1hcnlEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YT8udG90YWxDb3VudDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7YGBcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAwO1xyXG4gICAgdGhpcy5saW1pdD0xMDtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IE51bWJlcihwYWdlT2Zmc2V0KTtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gdGhpcy5vZmZzZXQgPSB0aGlzLmN1cnJlbnRQYWdlIC0xO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMDtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZVR5cGUodHlwZTphbnkpe1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICAgdGhpcy50eXBlVmFsdWUgPXR5cGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9dHlwZTtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5saW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMubGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmJvdW5jZWRsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMuYm91bmNlZGxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2FnZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmhlYXRNYXByb290KSB7XHJcbiAgICAgICAgdGhpcy5oZWF0TWFwcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIGNhcmQgbGluZSBDaGFydHMgU3RhcnRcclxuXHJcbiAgZm9vdGZhbGxsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJGb290ZmFsbFwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5saW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMubGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIkZvb3RmYWxsXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpdGVtLmRhdGUpLmdldFRpbWUoKSwgLy8gQ29udmVydCBkYXRlIHN0cmluZyB0byB0aW1lc3RhbXBcclxuICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgIH0pKTtcclxuICAgICAvLyBFbnN1cmUgdGhhdCBkYXRhIGhhcyBhdCBsZWFzdCAyIHBvaW50cyBmb3IgbGluZSBjaGFydFxyXG4gICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBkdXBsaWNhdGVQb2ludCA9IHsgLi4uZGF0YVswXSB9OyAvLyBDbG9uZSB0aGUgZXhpc3RpbmcgcG9pbnRcclxuICAgICAgZHVwbGljYXRlUG9pbnQuZGF0ZSArPSAxOyAvLyBBZGQgYSBzbWFsbCBvZmZzZXQgdG8gdGhlIGRhdGVcclxuICAgICAgZGF0YS5wdXNoKGR1cGxpY2F0ZVBvaW50KTsgLy8gQWRkIHRoZSBkdXBsaWNhdGUgcG9pbnQgdG8gZGF0YVxyXG4gICAgfVxyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjUsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHsgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmxpbmVyb290ID0gcm9vdDtcclxuICB9LDApXHJcbiAgfVxyXG4gIGJvdW5jZWRsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJCb3VuY2VkUmF0ZVwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ib3VuY2VkbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIGxldCByb290OiBhbnk7XHJcbiAgICByb290ID0gYW01LlJvb3QubmV3KFwiQm91bmNlZFJhdGVcIik7XHJcbiAgICByb290LnNldFRoZW1lcyhbXHJcbiAgICAgIGFtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCksXHJcbiAgICAgIGFtNXRoZW1lc19SZXNwb25zaXZlLm5ldyhyb290KSxcclxuICAgIF0pO1xyXG4gICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgYW01eHkuWFlDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgIHBhblg6IHRydWUsXHJcbiAgICAgICAgcGFuWTogdHJ1ZSxcclxuICAgICAgICB3aGVlbFg6IFwicGFuWFwiLFxyXG4gICAgICAgIHdoZWVsWTogXCJ6b29tWFwiLFxyXG4gICAgICAgIHBpbmNoWm9vbVg6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIC8vIEFkZCBkYXRhXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuXHJcbiAgcG90ZW50aWFsbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiUG90ZW50aWFsQnV5ZXJzXCIpO1xyXG4gICAgICBpZiAoIWNoYXJ0RGl2KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIGxldCByb290OiBhbnk7XHJcbiAgICByb290ID0gYW01LlJvb3QubmV3KFwiUG90ZW50aWFsQnV5ZXJzXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uZGF0YS5tYXAoXHJcbiAgICAgIChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290ID0gcm9vdDtcclxuICB9LDApXHJcbiAgfVxyXG5cclxuICBlbmdhZ2Vyc2xpbmVDaGFydHMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVuZ2FnZXJzXCIpO1xyXG4gICAgICBpZiAoIWNoYXJ0RGl2KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2FnZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcImVuZ2FnZXJzXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpdGVtLmRhdGUpLmdldFRpbWUoKSwgLy8gQ29udmVydCBkYXRlIHN0cmluZyB0byB0aW1lc3RhbXBcclxuICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgIH0pKTtcclxuICAgIGxldCBjdXJzb3IgPSBjaGFydC5zZXQoXHJcbiAgICAgIFwiY3Vyc29yXCIsXHJcbiAgICAgIGFtNXh5LlhZQ3Vyc29yLm5ldyhyb290LCB7XHJcbiAgICAgICAgYmVoYXZpb3I6IFwibm9uZVwiLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGN1cnNvci5saW5lWS5zZXQoXCJ2aXNpYmxlXCIsIGZhbHNlKTtcclxuICAgIC8vIENyZWF0ZSBheGVzXHJcbiAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5EYXRlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG1heERldmlhdGlvbjogMC4yLFxyXG4gICAgICAgIGJhc2VJbnRlcnZhbDogeyB0aW1lVW5pdDogXCJkYXlcIiwgY291bnQ6IDEgfSxcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwgeyBtaW5vckdyaWRFbmFibGVkOiB0cnVlIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHsgcGFuOiBcInpvb21cIiB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBzZXJpZXNcclxuICAgIGxldCBzZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgYW01eHkuTGluZVNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG5hbWU6IFwiU2VyaWVzXCIsXHJcbiAgICAgICAgeEF4aXM6IHhBeGlzLFxyXG4gICAgICAgIHlBeGlzOiB5QXhpcyxcclxuICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIHZhbHVlWEZpZWxkOiBcImRhdGVcIixcclxuICAgICAgICBzdHJva2U6IGFtNS5jb2xvcigweDAwYTNmZiksIC8vIFNldCB0aGUgbGluZSBjb2xvciBoZXJlIChyZWQgaW4gdGhpcyBjYXNlKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNlcmllcy5idWxsZXRzLnB1c2goZnVuY3Rpb24gKCkge1xyXG4gICAgICBsZXQgYnVsbGV0Q2lyY2xlID0gYW01LkNpcmNsZS5uZXcocm9vdCwge1xyXG4gICAgICAgIHJhZGl1czogMCxcclxuICAgICAgICBmaWxsOiBzZXJpZXMuZ2V0KFwiZmlsbFwiKVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGFtNS5CdWxsZXQubmV3KHJvb3QsIHtcclxuICAgICAgICBzcHJpdGU6IGJ1bGxldENpcmNsZVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHNlcmllcy5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgIHNlcmllcy5zZXQoXHJcbiAgICAgIFwidG9vbHRpcFwiLFxyXG4gICAgICBhbTUuVG9vbHRpcC5uZXcocm9vdCwge1xyXG4gICAgICAgIGxhYmVsVGV4dDogXCJ7dmFsdWVZfVwiLFxyXG4gICAgICAgIGdldEZpbGxGcm9tU3ByaXRlOiBmYWxzZSwgLy8gUHJldmVudHMgdGhlIHRvb2x0aXAgZnJvbSBpbmhlcml0aW5nIGNvbG9yIGZyb20gdGhlIHNwcml0ZVxyXG4gICAgICAgIGJhY2tncm91bmQ6IGFtNS5SZWN0YW5nbGUubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGZpbGw6IGFtNS5jb2xvcigweGRhZjFmZiksIC8vIFNldCB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kIGNvbG9yIGhlcmUgKGJsdWUgaW4gdGhpcyBjYXNlKVxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuZW5nYWdlcnNsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuICAvLyBjYXJkIGxpbmUgQ2hhcnRzIEVuZFxyXG5cclxuICBoZWF0TWFwKCkge1xyXG4gICAgdGhpcy5oZWF0bG9hZGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLmhlYXRub0RhdGEgPSBmYWxzZVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjaGFydGRpdlwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5oZWF0TWFwcm9vdCkge1xyXG4gICAgICAgIHRoaXMuaGVhdE1hcHJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdCA9IGFtNS5Sb290Lm5ldyhcImNoYXJ0ZGl2XCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW2FtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCldKTtcclxuXHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTVwZXJjZW50LlNsaWNlZENoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuaGVhdE1hcERhdGE7XHJcblxyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTVwZXJjZW50LkZ1bm5lbFNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgIGFsaWduTGFiZWxzOiBmYWxzZSxcclxuICAgICAgICBvcmllbnRhdGlvbjogXCJob3Jpem9udGFsXCIsXHJcbiAgICAgICAgdmFsdWVGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGNhdGVnb3J5RmllbGQ6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBib3R0b21SYXRpbzogMSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLmFwcGVhcigpO1xyXG4gICAgLy8gVXBkYXRlIHRoZSBsYWJlbCB0ZW1wbGF0ZSB0byBpbmNsdWRlIHRoZSBwZXJjZW50YWdlXHJcbiAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgIHBvcHVsYXRlVGV4dDogdHJ1ZSxcclxuICAgICAgdGV4dDogXCJ7Y2F0ZWdvcnl9ICh7dmFsdWV9JSkgOiB7Y291bnR9XCIsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaGVhdE1hcHJvb3QgPSByb290O1xyXG4gICAgY2hhcnQuYXBwZWFyKDEwMDAsIDEwMCk7XHJcbiAgfSwwKTtcclxuXHJcbiAgfVxyXG5cclxuICB0eXBlOiBhbnkgPSBcImRhaWx5XCI7XHJcbiAgc2VsZWN0UGxhbih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgfVxyXG4gIGlzQXZlcmFnZTogYm9vbGVhbiA9IGZhbHNlOyAvLyBUb2dnbGUgc3RhdGUgZm9yIHRoZSBzd2l0Y2hcclxuXHJcbiAgLy8gVG9nZ2xlIGZ1bmN0aW9uIGZvciB0aGUgc3dpdGNoXHJcbiAgdG9nZ2xlQXZlcmFnZSgpIHtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5saW1pdDsgZGVsZXRlIHRoaXMudGFibGVvYmouZXhwb3J0O1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoub2Zmc2V0O1xyXG4gICAgaWYodGhpcy5pc0F2ZXJhZ2UgPT09IHRydWUpe1xyXG4gICAgdGhpcy52YWx1ZVR5cGUgPSAnYXZlcmFnZSc7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnQXZnLiBGb290ZmFsbCdcclxuICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPXRoaXMudmFsdWVUeXBlO1xyXG4gICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlO1xyXG4gIH0gIGVsc2Uge1xyXG4gICAgIHRoaXMuZm9vdGZhbGxOYW1lID0gJ0Zvb3RmYWxsJ1xyXG4gICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPSdhY3R1YWwnO1xyXG4gICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgfVxyXG4gIHRoaXMucHJldmlvdXNWYWx1ZSA9ICdmb290ZmFsbCc7IFxyXG4gXHJcbiAgICB0aGlzLmdldENhcmQoKTtcclxuICAgIHRoaXMuZ2V0Q2FyZEdyYXBoKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2FtZXJhVmlldygpe1xyXG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOmFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTphbnkpID0+IHN0b3JlLnN0b3JlSWQpXHJcbiAgICBsZXQgZGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gICAgZGF0YS5zdG9yZSA9IHRoaXMuc3RvcmVJZGFycmF5WzBdO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQoZGF0YSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzXCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5WzBdfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0WExTWCgpIHtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gMDtcclxuICAgIHRoaXMudGFibGVvYmoubGltaXQgPSAxMDAwMDtcclxuICAgICh0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9IHRoaXMudHlwZVZhbHVlKTtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSB0cnVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0RXhwb3J0KHRoaXMudGFibGVvYmopXHJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmV4Y2VsU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcInN0b3Jlc0xpc3RcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7fSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy50YWJsZW9iai5saW1pdCA9IHRoaXMubGltaXQ7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4gPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRlZENvbHVtbiA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLnNvcnRCeSA9IHRoaXMuc29ydERpcmVjdGlvbiwgLy9bMS0+YXNjLCAtMS0+REVzY11cclxuICAgIHRoaXMudGFibGVvYmouc29ydCA9IHRoaXMuc29ydGVkQ29sdW1uLCAvLyBDb2x1bW4gTmFtZVxyXG4gICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWFwKCkge1xyXG4gICAgdGhpcy5tcGFsb2FkaW5nID10cnVlO1xyXG4gICAgdGhpcy5tYXBub0RhdGE9IGZhbHNlO1xyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIHN0b3JlRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2VNYXBzKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgIC8vIGlmIChyZXMgJiYgcmVzLmRhdGEgJiYgcmVzLmRhdGEuc3RvcmVEYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVMb2NhdGlvbnMgPSByZXMuZGF0YS5zdG9yZURhdGE7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gVXBkYXRlIG1hcE9wdGlvbnMgY2VudGVyIGlmIG5lZWRlZFxyXG4gICAgICAgICAgICBpZiAodGhpcy5hdUxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlyc3RMb2NhdGlvbiA9IHRoaXMuYXVMb2NhdGlvbnNbMF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpcnN0TG9jYXRpb24gJiYgdHlwZW9mIGZpcnN0TG9jYXRpb24ubGF0ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZmlyc3RMb2NhdGlvbi5sbmcgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgY2VudGVyOiB7IGxhdDogZmlyc3RMb2NhdGlvbi5sYXQsIGxuZzogZmlyc3RMb2NhdGlvbi5sbmcgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAgdGhpcy5nZXREYXRhKCk7IH0sMTAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHt9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7fVxyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5tcGFsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgIHRoaXMubWFwbm9EYXRhPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSBpZihyZXMgPT09IG51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5tcGFsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVMb2NhdGlvbnMgPVtdO1xyXG4gICAgICAgICAgICB0aGlzLm1wYWxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmF1TG9jYXRpb25zID1bXTtcclxuICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubWFwbm9EYXRhPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG1hcDogbWFwYm94Z2wuTWFwO1xyXG4gIGdldERhdGEoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWFwQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpO1xyXG4gICAgICBpZiAoIW1hcENvbnRhaW5lcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgLy8gQ2hlY2sgdGhhdCBsb2NhdGlvbnMgZXhpc3QgYmVmb3JlIHByb2NlZWRpbmdcclxuICAgIGlmICh0aGlzLmF1TG9jYXRpb25zPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgY29uc3QgZ2VvanNvbiA9IHtcclxuICAgICAgJ3R5cGUnOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxyXG4gICAgICAnZmVhdHVyZXMnOiB0aGlzLmF1TG9jYXRpb25zLm1hcCgoc3RvcmUsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICd0eXBlJzogJ0ZlYXR1cmUnLFxyXG4gICAgICAgICdwcm9wZXJ0aWVzJzoge1xyXG4gICAgICAgICAgJ3N0b3JlTmFtZSc6IHN0b3JlLnN0b3JlTmFtZSwgICAgICAgICAvLyBTdG9yZSBuYW1lXHJcbiAgICAgICAgICAnaW1hZ2VJZCc6IDEwMTEgKyBpbmRleCwgICAgICAgICAgICAgIC8vIER5bmFtaWMgaW1hZ2UgSURcclxuICAgICAgICAgICdpY29uU2l6ZSc6IFs2MCwgNjBdLCAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IGljb24gc2l6ZSBhcyBuZWVkZWRcclxuICAgICAgICAgICdmb290ZmFsbCc6IHN0b3JlLmF2Z0Zvb3RmYWxsLCAgICAgICAgLy8gRm9vdGZhbGwgZGF0YVxyXG4gICAgICAgICAgJ29wZW5UaW1lJzogc3RvcmUub3BlblRpbWUsICAgICAgICAgICAvLyBPcGVuIHRpbWVcclxuICAgICAgICAgICdjbG9zZVRpbWUnOiBzdG9yZS5jbG9zZVRpbWUsICAgICAgICAgLy8gQ2xvc2UgdGltZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ2dlb21ldHJ5Jzoge1xyXG4gICAgICAgICAgJ3R5cGUnOiAnUG9pbnQnLFxyXG4gICAgICAgICAgJ2Nvb3JkaW5hdGVzJzogW3N0b3JlLmxuZywgc3RvcmUubGF0XSAgLy8gQ29vcmRpbmF0ZXMgZnJvbSBzdG9yZSBkYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSlcclxuICAgIH07XHJcbiAgXHJcbiAgICAvLyBEeW5hbWljYWxseSBzZXQgbWFwIGNlbnRlciBiYXNlZCBvbiB0aGUgZmlyc3QgbG9jYXRpb25cclxuICAgIGNvbnN0IGZpcnN0TG9jYXRpb24gPSB0aGlzLmF1TG9jYXRpb25zWzBdO1xyXG4gXHJcbiAgICB0aGlzLm1hcCA9IG5ldyBtYXBib3hnbC5NYXAoe1xyXG4gICAgICBjb250YWluZXI6ICdtYXAnLFxyXG4gICAgICBzdHlsZTogJ21hcGJveDovL3N0eWxlcy9tYXBib3gvc3RyZWV0cy12MTInLFxyXG4gICAgICBjZW50ZXI6IFtmaXJzdExvY2F0aW9uLmxuZywgZmlyc3RMb2NhdGlvbi5sYXRdLCAvLyBDZW50ZXIgbWFwIG9uIHRoZSBmaXJzdCBsb2NhdGlvblxyXG4gICAgICB6b29tOiA1IC8vIEFkanVzdCB6b29tIGFzIG5lY2Vzc2FyeVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgICAvLyBBZGQgbWFya2VycyB0byB0aGUgbWFwXHJcbiAgICBnZW9qc29uLmZlYXR1cmVzLmZvckVhY2goZmVhdHVyZSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgZ2VvbWV0cnkgfSA9IGZlYXR1cmU7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gcHJvcGVydGllcy5pY29uU2l6ZVswXTtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gcHJvcGVydGllcy5pY29uU2l6ZVsxXTtcclxuICAgICAgZWwuY2xhc3NOYW1lID0gJ21hcmtlcic7XHJcbiAgICAgIGVsLmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1pY29uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgd2lkdGg6ICR7d2lkdGh9cHg7IGhlaWdodDogJHtoZWlnaHR9cHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tR3JheS03MDAsICMzNDQwNTQpO1xyXG50ZXh0LWFsaWduOiBjZW50ZXI7XHJcbmZvbnQtZmFtaWx5OiBJbnRlcjtcclxuZm9udC1zaXplOiA5LjAwN3B4O1xyXG5mb250LXN0eWxlOiBub3JtYWw7XHJcbmZvbnQtd2VpZ2h0OiA2MDA7XHJcbmxpbmUtaGVpZ2h0OiAxM3B4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItY29udGVudFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJtYi0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMzM2NTQgMy4zNjM3TDEuMjk2NTggMy40MjYxMUMwLjg3NzY5OCA0LjE2NzAxIDEuMzI0OTMgNS4xMDMzNSAyLjEyOTMxIDUuMjEwNzZDMi4yMDIxOCA1LjIxOTY3IDIuMjY5OTkgNS4yMjQzOCAyLjMzNjI1IDUuMjI0MzhDMi43NzAyMSA1LjIyNDM4IDMuMTUzOSA1LjAzODIxIDMuNDIxMzIgNC43NDc5M0wzLjgzNjY2IDQuMjk3MUw0LjI1MDU5IDQuNzQ5MjNDNC41MTQ3NiA1LjAzNzc4IDQuODk3NTggNS4yMjQzOCA1LjMzNDQ4IDUuMjI0MzhDNS43Njk0MSA1LjIyNDM4IDYuMTU0NDMgNS4wMzc1MiA2LjQxODM3IDQuNzQ5MjNMNi44MzM1OSA0LjI5NTY4TDcuMjQ4ODIgNC43NDkyM0M3LjUxMjc1IDUuMDM3NTIgNy44OTc3NyA1LjIyNDM4IDguMzMyNzEgNS4yMjQzOEM4Ljc2NzY0IDUuMjI0MzggOS4xNTI2NiA1LjAzNzUyIDkuNDE2NiA0Ljc0OTIzTDkuODMxODIgNC4yOTU2OEwxMC4yNDcgNC43NDkyM0MxMC41MTEgNS4wMzc1MiAxMC44OTYgNS4yMjQzOCAxMS4zMzA5IDUuMjI0MzhDMTEuMzk1IDUuMjI0MzggMTEuNDY0OSA1LjIxOTY2IDExLjUzNzIgNS4yMTA4M0MxMi4zNTkzIDUuMDk4NzUgMTIuODA4IDQuMTEyMjUgMTIuMzI4NiAzLjM2NDA4QzEyLjMyODYgMy4zNjQwMyAxMi4zMjg1IDMuMzYzOTkgMTIuMzI4NSAzLjM2Mzk1TDExLjAwODggMS4zMDYyMUwxMS4wMDgxIDEuMzA1MTFDMTAuOTk2NyAxLjI4NzIyIDEwLjk2ODYgMS4yNjgwNCAxMC45MzMyIDEuMjY4MDRIMi43Mjk0MkMyLjY5NDAzIDEuMjY4MDQgMi42NjU4OSAxLjI4NzIyIDIuNjU0NDggMS4zMDUxMUwyLjY1NDAxIDEuMzA1ODRMMS4zMzY1NCAzLjM2MzdaTTExLjA3MzEgNy4wNjY2N1Y5LjQxNzUzVjkuOTgwNDlIMTAuNTEwMUgzLjE1MjQ4SDIuNTg5NTJWOS40MTc1M1Y3LjA2NzAyQzIuNTA2NzggNy4wNzMxOCAyLjQyMzA4IDcuMDc2MzQgMi4zMzg1NSA3LjA3NjM0QzIuMzA2NzkgNy4wNzYzNCAyLjI3NTI1IDcuMDc1ODcgMi4yNDM5MiA3LjA3NDk1VjkuNDE3NTNWMTAuODY5NkMyLjI0MzkyIDExLjM1MjYgMi42NDQ2NyAxMS43NTg3IDMuMTUyNDggMTEuNzU4N0gxMC41MTAxQzExLjAxNzkgMTEuNzU4NyAxMS40MTg3IDExLjM1MjYgMTEuNDE4NyAxMC44Njk2VjkuNDE3NTNWNy4wNzUwOUMxMS4zODg4IDcuMDc1OTEgMTEuMzU4NyA3LjA3NjM0IDExLjMyODYgNy4wNzYzNEMxMS4yNDI4IDcuMDc2MzQgMTEuMTU3NSA3LjA3MzA4IDExLjA3MzEgNy4wNjY2N1pcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS4xMjU5MlwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICR7cHJvcGVydGllcy5zdG9yZU5hbWV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgO1xyXG4gICAgICAvLyBlbC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKGh0dHBzOi8vcGljc3VtLnBob3Rvcy9pZC8ke3Byb3BlcnRpZXMuaW1hZ2VJZH0vJHt3aWR0aH0vJHtoZWlnaHR9KWA7XHJcbiAgICAgIGVsLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9ICcxMDAlJztcclxuICBcclxuICAgICAgLy8gQ3JlYXRlIGEgcG9wdXAgaW5zdGFuY2Ugd2l0aCB0aGUgZmVhdHVyZSBwcm9wZXJ0aWVzXHJcbiAgICAgIGNvbnN0IHBvcHVwID0gbmV3IG1hcGJveGdsLlBvcHVwKHsgb2Zmc2V0OiAyNSB9KSAgXHJcbiAgICAgIC8vIFVzZSB0aGUgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZmVhdHVyZVxyXG4gICAgICBjb25zdCBjb29yZGluYXRlczogW251bWJlciwgbnVtYmVyXSA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgXHJcbiAgICAgIC8vIEFkZCBtYXJrZXJzIHRvIHRoZSBtYXBcclxuICAgICAgbmV3IG1hcGJveGdsLk1hcmtlcihlbClcclxuICAgICAgICAuc2V0TG5nTGF0KGNvb3JkaW5hdGVzKVxyXG4gICAgICAgIC5zZXRQb3B1cChwb3B1cCkgIC8vIEF0dGFjaCB0aGUgcG9wdXAgdG8gdGhlIG1hcmtlclxyXG4gICAgICAgIC5hZGRUbyh0aGlzLm1hcCk7XHJcbiAgICB9KTtcclxuICB9LDApXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9yZVZpZXcoKXtcclxudGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYWZmaWMvZXhwbG9yZSddKVxyXG4gIH1cclxuICBkYXRlVmFsdWUodHlwZTphbnkpe1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmV4cG9ydDtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm9mZnNldDtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLmRhdGVUeXBlID0gdHlwZTtcclxuICAgIHRoaXMudGFibGVvYmouZGF0ZVR5cGU9IHRoaXMuZGF0ZVR5cGU7XHJcbiAgICB0aGlzLmdldENhcmRHcmFwaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFpvbmUoKXtcclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnpvbmVEd2VsbFRpbWUob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09PSAyMDApe1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVEd2VsbFRpbWVTcGxpdERhdGEgPSByZXMuZGF0YS56b25lRHdlbGxUaW1lU3BsaXREYXRhO1xyXG4gICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVEd2VsbFRpbWVTcGxpdERhdGEgPVtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuem9uZUR3ZWxsVGltZVNwbGl0RGF0YT1bXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG4gIGdldFpvbmVWYWx1ZSgpe1xyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2Uuc3RvcmVPcGVyYXRpb24ob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09PSAyMDApe1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlT3BlcmF0aW9uRGF0YSA9IHJlcy5kYXRhLnN0b3JlT3BlcmF0aW9uRGF0YVswXTtcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZU9wZXJhdGlvbkRhdGEgPVtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVPcGVyYXRpb25EYXRhPVtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICBcclxuICB9XHJcblxyXG4gIHN0b3JlVmlldyhkYXRhOmFueSl7XHJcbiAgICAvLyBjb25zdCBtYXRjaGVkU3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQgJiYgc3RvcmUuc3RvcmVJZCA9PT0gb2JqLnN0b3JlSWQpO1xyXG4gICAgLy8gLy8gY29uc29sZS5sb2coJ01hdGNoZWQgU3RvcmVzOicsIG1hdGNoZWRTdG9yZXMpO1xyXG4gICAgLy8gLy8gVXBkYXRlIHRoZSBiYWxhbmNlIHN0b3JlcyAodGhvc2Ugbm90IGluIHRoZSBtYXRjaGVkIHN0b3JlcykgdG8gc2V0IHRoZWlyIGNoZWNrZWQgcHJvcGVydHkgdG8gZmFsc2VcclxuICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IGFueSkgPT4ge1xyXG4gICAgLy8gICBpZiAoIW1hdGNoZWRTdG9yZXMuc29tZSgobWF0Y2hlZFN0b3JlOmFueSkgPT4gbWF0Y2hlZFN0b3JlLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpKSB7XHJcbiAgICAvLyAgICAgc3RvcmUuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFN0b3JlczonLCB0aGlzLmhlYWRlckRhdGEuc3RvcmVzKTtcclxuICAgIGNvbnN0IGRhdGF2YWx1ZTogYW55ID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICk7XHJcbiAgICBkYXRhdmFsdWUuc3RvcmUgPSBkYXRhO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhdmFsdWUpKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQoZGF0YXZhbHVlKVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS9zdG9yZXMvY2FtZXJhc1wiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczogeyBzdG9yZUlkOiBkYXRhfSxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgZ29Ub1pvbmUoKXtcclxuICAgIGNvbnN0IGRhdGF2YWx1ZTogYW55ID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICk7XHJcbiAgICBkYXRhdmFsdWUuc3RvcmUgPSBkYXRhdmFsdWUuc3RvcmVzWzBdLnN0b3JlSWQ7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KGRhdGF2YWx1ZSkpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dChkYXRhdmFsdWUpXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzXCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IGRhdGF2YWx1ZS5zdG9yZXNbMF0uc3RvcmVJZH0sXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgaW50ZXJ2YWxJZDogYW55O1xyXG5cclxuXHJcbiAgcHJldlNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dFNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4IDwgdGhpcy5yZWNhcHNHcm91cGVkLmxlbmd0aCAtIDEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXgrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9TbGlkZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucmVjYXBzR3JvdXBlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIERhdGFDb250ZXh0IHtcclxuICBjYXRlZ29yeTogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgY291bnQ6IG51bWJlcjtcclxufVxyXG5mdW5jdGlvbiBnZXREYXlzQmV0d2VlbkRhdGVzKGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAvLyBQYXJzZSB0aGUgZGF0ZSBzdHJpbmdzIGludG8gRGF0ZSBvYmplY3RzXHJcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7XHJcbiAgY29uc3QgZW5kID0gbmV3IERhdGUodG9EYXRlKTtcclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kc1xyXG4gIGNvbnN0IGRpZmZlcmVuY2VJbk1zID0gZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcclxuXHJcbiAgLy8gQ29udmVydCBtaWxsaXNlY29uZHMgdG8gZGF5cyAoMSBkYXkgPSA4NjQwMDAwMCBtaWxsaXNlY29uZHMpXHJcbiAgY29uc3QgbWlsbGlzZWNvbmRzUGVyRGF5ID0gODY0MDAwMDA7XHJcbiAgY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBtaWxsaXNlY29uZHNQZXJEYXkpO1xyXG5cclxuICByZXR1cm4gZGlmZmVyZW5jZUluRGF5cztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGlzcGxheSBmb290ZmFsbCBjb3VudCBvciAnLS0nIGlmIG5vdCBhdmFpbGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7IGdldENhcmREYXRhPy5mb290ZmFsbD8uY291bnQgPyBnZXRDYXJkRGF0YS5mb290ZmFsbC5jb3VudC50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSA6ICctLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+e3tmb290ZmFsbE5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3dpdGNoIHRvZ2dsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTFcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIiBbKG5nTW9kZWwpXT1cImlzQXZlcmFnZVwiIChjaGFuZ2UpPVwidG9nZ2xlQXZlcmFnZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtNVwiPkF2ZXJhZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkbG9hZGluZ1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJsb2FkZXItaW1nXCIgc3JjPVwiYXNzZXRzL3RhbmdvL2xheW91dC9Mb2FkZXIuZ2lmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZE5vZGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGExXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZTFcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY29udmVyc2lvbiBmdW5uZWw8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWNhcmROb2RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwIHBlLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgaWQ9XCJGb290ZmFsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRlTGVuZ3RoID4gMFwiIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCIgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J2RhaWx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiIChjbGljayk9XCJkYXRlVmFsdWUoJ2RhaWx5JylcIj4xRDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGVMZW5ndGggPiA1XCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J3dlZWtseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIiAgKGNsaWNrKT1cImRhdGVWYWx1ZSgnd2Vla2x5JylcIj4xVzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGVMZW5ndGggPiAyOFwiIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCIgIFtuZ0NsYXNzXT1cImRhdGVUeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCdtb250aGx5JylcIj4xTTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgcHJldmlvdXMgd2Vlazwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGxlZnQtNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3t2YWx1ZUNvbnZlcnNpb25SYXRlICA/IHZhbHVlQ29udmVyc2lvblJhdGUgOiAnLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+Q29udmVyc2lvbiA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZm9vdGZhbGwnIHx8IGNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnIHx8IGNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgfHwgY29udmVyc2lvblZhbHVlID09PSdub2InIFwiPiAtIHt7Y29udmVyc2lvblZhbHVlIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBweCBwdC0xMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggbXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nZm9vdGZhbGwnXCIgKGNsaWNrKT1cImNoYW5nZVZhbHVlKCdmb290ZmFsbCcpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC03NXB4IG14LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2VuZ2FnZXJzJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnZW5nYWdlcnMnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMjFWMTlDMTcgMTcuOTM5MSAxNi41Nzg2IDE2LjkyMTcgMTUuODI4NCAxNi4xNzE2QzE1LjA3ODMgMTUuNDIxNCAxNC4wNjA5IDE1IDEzIDE1SDVDMy45MzkxMyAxNSAyLjkyMTcyIDE1LjQyMTQgMi4xNzE1NyAxNi4xNzE2QzEuNDIxNDMgMTYuOTIxNyAxIDE3LjkzOTEgMSAxOVYyMU0yMyAyMVYxOUMyMi45OTkzIDE4LjExMzcgMjIuNzA0NCAxNy4yNTI4IDIyLjE2MTQgMTYuNTUyM0MyMS42MTg0IDE1Ljg1MTkgMjAuODU4MSAxNS4zNTE2IDIwIDE1LjEzTTE2IDMuMTNDMTYuODYwNCAzLjM1MDMgMTcuNjIzIDMuODUwNyAxOC4xNjc2IDQuNTUyMzFDMTguNzEyMiA1LjI1MzkyIDE5LjAwNzggNi4xMTY4MyAxOS4wMDc4IDcuMDA1QzE5LjAwNzggNy44OTMxNyAxOC43MTIyIDguNzU2MDggMTguMTY3NiA5LjQ1NzY5QzE3LjYyMyAxMC4xNTkzIDE2Ljg2MDQgMTAuNjU5NyAxNiAxMC44OE0xMyA3QzEzIDkuMjA5MTQgMTEuMjA5MSAxMSA5IDExQzYuNzkwODYgMTEgNSA5LjIwOTE0IDUgN0M1IDQuNzkwODYgNi43OTA4NiAzIDkgM0MxMS4yMDkxIDMgMTMgNC43OTA4NiAxMyA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAyMVYxOUMxNyAxNy45MzkxIDE2LjU3ODYgMTYuOTIxNyAxNS44Mjg0IDE2LjE3MTZDMTUuMDc4MyAxNS40MjE0IDE0LjA2MDkgMTUgMTMgMTVINUMzLjkzOTEzIDE1IDIuOTIxNzIgMTUuNDIxNCAyLjE3MTU3IDE2LjE3MTZDMS40MjE0MyAxNi45MjE3IDEgMTcuOTM5MSAxIDE5VjIxTTIzIDIxVjE5QzIyLjk5OTMgMTguMTEzNyAyMi43MDQ0IDE3LjI1MjggMjIuMTYxNCAxNi41NTIzQzIxLjYxODQgMTUuODUxOSAyMC44NTgxIDE1LjM1MTYgMjAgMTUuMTNNMTYgMy4xM0MxNi44NjA0IDMuMzUwMyAxNy42MjMgMy44NTA3IDE4LjE2NzYgNC41NTIzMUMxOC43MTIyIDUuMjUzOTIgMTkuMDA3OCA2LjExNjgzIDE5LjAwNzggNy4wMDVDMTkuMDA3OCA3Ljg5MzE3IDE4LjcxMjIgOC43NTYwOCAxOC4xNjc2IDkuNDU3NjlDMTcuNjIzIDEwLjE1OTMgMTYuODYwNCAxMC42NTk3IDE2IDEwLjg4TTEzIDdDMTMgOS4yMDkxNCAxMS4yMDkxIDExIDkgMTFDNi43OTA4NiAxMSA1IDkuMjA5MTQgNSA3QzUgNC43OTA4NiA2Ljc5MDg2IDMgOSAzQzExLjIwOTEgMyAxMyA0Ljc5MDg2IDEzIDdaXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggbXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nUG90ZW50aWFsIEJ1eWVycydcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ3BvdGVudGlhbEJ1eWVycycpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjAwMzkgNi4wMDE5NUgyMC4wMDM5QzIwLjYwMzkgNi4wMDE5NSAyMS4wMDM5IDYuNDAxOTUgMjEuMDAzOSA3LjAwMTk1VjkuMDAxOTVDMTkuMzAzOSA5LjAwMTk1IDE4LjAwMzkgNy43MDE5NSAxOC4wMDM5IDYuMDAxOTVaTTYuMDAzOTEgNi4wMDE5NUg0LjAwMzkxQzMuNDAzOTEgNi4wMDE5NSAzLjAwMzkxIDYuNDAxOTUgMy4wMDM5MSA3LjAwMTk1VjkuMDAxOTVDNC43MDM5MSA5LjAwMTk1IDYuMDAzOTEgNy43MDE5NSA2LjAwMzkxIDYuMDAxOTVaTTIxLjAwMzkgMTcuMDAyVjE1LjAwMkMxOS4zMDM5IDE1LjAwMiAxOC4wMDM5IDE2LjMwMiAxOC4wMDM5IDE4LjAwMkgyMC4wMDM5QzIwLjYwMzkgMTguMDAyIDIxLjAwMzkgMTcuNjAyIDIxLjAwMzkgMTcuMDAyWk0zLjAwMzkxIDE1LjAwMlYxNy4wMDJDMy4wMDM5MSAxNy42MDIgMy40MDM5MSAxOC4wMDIgNC4wMDM5MSAxOC4wMDJINi4wMDM5MUM2LjAwMzkxIDE2LjMwMiA0LjcwMzkxIDE1LjAwMiAzLjAwMzkxIDE1LjAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J1BvdGVudGlhbCBCdXllcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiIGQ9XCJNMjAuMDAzOSAxOC4wMDJINC4wMDM5MUMzLjQwMzkxIDE4LjAwMiAzLjAwMzkxIDE3LjYwMiAzLjAwMzkxIDE3LjAwMlY3LjAwMTk1QzMuMDAzOTEgNi40MDE5NSAzLjQwMzkxIDYuMDAxOTUgNC4wMDM5MSA2LjAwMTk1SDIwLjAwMzlDMjAuNjAzOSA2LjAwMTk1IDIxLjAwMzkgNi40MDE5NSAyMS4wMDM5IDcuMDAxOTVWMTcuMDAyQzIxLjAwMzkgMTcuNjAyIDIwLjYwMzkgMTguMDAyIDIwLjAwMzkgMTguMDAyWk0xMi4wMDM5IDguMDAxOTVDMTAuMzAzOSA4LjAwMTk1IDkuMDAzOTEgOS44MDE5NSA5LjAwMzkxIDEyLjAwMkM5LjAwMzkxIDE0LjIwMiAxMC4zMDM5IDE2LjAwMiAxMi4wMDM5IDE2LjAwMkMxMy43MDM5IDE2LjAwMiAxNS4wMDM5IDE0LjIwMiAxNS4wMDM5IDEyLjAwMkMxNS4wMDM5IDkuODAxOTUgMTMuNzAzOSA4LjAwMTk1IDEyLjAwMzkgOC4wMDE5NVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTguMDAzOSA2LjAwMTk1SDIwLjAwMzlDMjAuNjAzOSA2LjAwMTk1IDIxLjAwMzkgNi40MDE5NSAyMS4wMDM5IDcuMDAxOTVWOS4wMDE5NUMxOS4zMDM5IDkuMDAxOTUgMTguMDAzOSA3LjcwMTk1IDE4LjAwMzkgNi4wMDE5NVpNNi4wMDM5MSA2LjAwMTk1SDQuMDAzOTFDMy40MDM5MSA2LjAwMTk1IDMuMDAzOTEgNi40MDE5NSAzLjAwMzkxIDcuMDAxOTVWOS4wMDE5NUM0LjcwMzkxIDkuMDAxOTUgNi4wMDM5MSA3LjcwMTk1IDYuMDAzOTEgNi4wMDE5NVpNMjEuMDAzOSAxNy4wMDJWMTUuMDAyQzE5LjMwMzkgMTUuMDAyIDE4LjAwMzkgMTYuMzAyIDE4LjAwMzkgMTguMDAySDIwLjAwMzlDMjAuNjAzOSAxOC4wMDIgMjEuMDAzOSAxNy42MDIgMjEuMDAzOSAxNy4wMDJaTTMuMDAzOTEgMTUuMDAyVjE3LjAwMkMzLjAwMzkxIDE3LjYwMiAzLjQwMzkxIDE4LjAwMiA0LjAwMzkxIDE4LjAwMkg2LjAwMzkxQzYuMDAzOTEgMTYuMzAyIDQuNzAzOTEgMTUuMDAyIDMuMDAzOTEgMTUuMDAyWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC03NXB4IG14LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J25vYidcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ25vYicpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdub2InXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMyBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2VuZ2FnZXJzJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LnBvdGVudGlhbEJ1eWVycy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nbm9iJyB8fCBjb252ZXJzaW9uVmFsdWUgPT09JydcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4tLSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgcHJldmlvdXMgd2Vlazwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3tnZXRDYXJkRGF0YT8uYm91bmNlZD8ucmF0ZSA/IGdldENhcmREYXRhPy5ib3VuY2VkPy5yYXRlIDonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+Qm91bmNlZCBSYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTm9kYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwiQm91bmNlZFJhdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBwcmV2aW91cyB3ZWVrPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucmF0ZSA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXIgXCI+UG90ZW50aWFsIEJ1eWVyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZE5vZGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGExXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZTFcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY29udmVyc2lvbiBmdW5uZWw8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2FyZE5vZGF0YVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cIlBvdGVudGlhbEJ1eWVyc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgcHJldmlvdXMgd2Vlazwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZW5kLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPlBvdGVudGlhbCBCdXllciBEaXN0cmlidXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5DYXRlZ29yeS13aXNlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC03IG1iLTNcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMC4yNSAyMVYxOUMyMC4yNSAxNy45MzkxIDE5LjgyODYgMTYuOTIxNyAxOS4wNzg0IDE2LjE3MTZDMTguMzI4MyAxNS40MjE0IDE3LjMxMDkgMTUgMTYuMjUgMTVIOC4yNUM3LjE4OTEzIDE1IDYuMTcxNzIgMTUuNDIxNCA1LjQyMTU3IDE2LjE3MTZDNC42NzE0MyAxNi45MjE3IDQuMjUgMTcuOTM5MSA0LjI1IDE5VjIxTTE2LjI1IDdDMTYuMjUgOS4yMDkxNCAxNC40NTkxIDExIDEyLjI1IDExQzEwLjA0MDkgMTEgOC4yNSA5LjIwOTE0IDguMjUgN0M4LjI1IDQuNzkwODYgMTAuMDQwOSAzIDEyLjI1IDNDMTQuNDU5MSAzIDE2LjI1IDQuNzkwODYgMTYuMjUgN1pcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudCBtdC0yIG1zLTFcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pOictLSd9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyIG1zLTFcIj5TaW5nbGU8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB3ZWVrLWZvbnRcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uYWdlR3JvdXAgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIHByZXZpb3VzIHdlZWs8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC03IG1iLTNcIj48c3Bhbj4gPHN2ZyB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI2IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEQ0RDRENcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIi00NjAuNVwiIHk9XCItMzQwLjVcIiB3aWR0aD1cIjc4M1wiIGhlaWdodD1cIjE5NDdcIiByeD1cIjQuNVwiIHN0cm9rZT1cIiM5NzQ3RkZcIiBzdHJva2UtZGFzaGFycmF5PVwiMTAgNVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD1cInBhdGgtMi1pbnNpZGUtMV83MDdfMTMxMDZcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTS0xODkgLTg5Qy0xODkgLTk1LjYyNzQgLTE4My42MjcgLTEwMSAtMTc3IC0xMDFIMjk1QzMwMS42MjcgLTEwMSAzMDcgLTk1LjYyNzQgMzA3IC04OVY4NUMzMDcgOTEuNjI3NCAzMDEuNjI3IDk3IDI5NSA5N0gtMTc3Qy0xODMuNjI3IDk3IC0xODkgOTEuNjI3NCAtMTg5IDg1Vi04OVpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNLTE4OSAtODlDLTE4OSAtOTUuNjI3NCAtMTgzLjYyNyAtMTAxIC0xNzcgLTEwMUgyOTVDMzAxLjYyNyAtMTAxIDMwNyAtOTUuNjI3NCAzMDcgLTg5Vjg1QzMwNyA5MS42Mjc0IDMwMS42MjcgOTcgMjk1IDk3SC0xNzdDLTE4My42MjcgOTcgLTE4OSA5MS42Mjc0IC0xODkgODVWLTg5WlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTS0xOTAgLTg5Qy0xOTAgLTk2LjE3OTcgLTE4NC4xOCAtMTAyIC0xNzcgLTEwMkgyOTRDMzAxLjE4IC0xMDIgMzA3IC05Ni4xNzk3IDMwNyAtODlDMzA3IC05NS4wNzUxIDMwMS42MjcgLTEwMCAyOTUgLTEwMEgtMTc3Qy0xODMuMDc1IC0xMDAgLTE4OCAtOTUuMDc1MSAtMTg4IC04OUgtMTkwWk0zMDcgODVDMzA3IDkyLjE3OTcgMzAxLjE4IDk4IDI5NCA5OEgtMTc3Qy0xODQuMTggOTggLTE5MCA5Mi4xNzk3IC0xOTAgODVILTE4OEMtMTg4IDkxLjA3NTEgLTE4My4wNzUgOTYgLTE3NyA5NkgyOTVDMzAxLjYyNyA5NiAzMDcgOTEuMDc1MSAzMDcgODVaTS0xNzcgOThDLTE4NC4xOCA5OCAtMTkwIDkyLjE3OTcgLTE5MCA4NVYtODlDLTE5MCAtOTYuMTc5NyAtMTg0LjE4IC0xMDIgLTE3NyAtMTAyVi0xMDBDLTE4My4wNzUgLTEwMCAtMTg4IC05NS4wNzUxIC0xODggLTg5Vjg1Qy0xODggOTEuMDc1MSAtMTgzLjA3NSA5NiAtMTc3IDk2Vjk4Wk0zMDcgLTEwMVY5N1YtMTAxWlwiIGZpbGw9XCIjRDBENUREXCIgbWFzaz1cInVybCgjcGF0aC0yLWluc2lkZS0xXzcwN18xMzEwNilcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTYtaW5zaWRlLTJfNzA3XzEzMTA2XCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjcxMDY0IDcuMzg0NjJDOC4xOTU1MiA3LjM4NDYyIDguNjc1NjUgNy4yODkxMSA5LjEyMzYyIDcuMTAzNTZDOS41NzE1OSA2LjkxOCA5Ljk3ODYzIDYuNjQ2MDMgMTAuMzIxNSA2LjMwMzE2QzEwLjY2NDQgNS45NjAzIDEwLjkzNjMgNS41NTMyNiAxMS4xMjE5IDUuMTA1MjlDMTEuMzA3NCA0LjY1NzMyIDExLjQwMjkgNC4xNzcxOSAxMS40MDI5IDMuNjkyMzFDMTEuNDAyOSAzLjIwNzQzIDExLjMwNzQgMi43MjcyOSAxMS4xMjE5IDIuMjc5MzJDMTAuOTM2MyAxLjgzMTM1IDEwLjY2NDQgMS40MjQzMSAxMC4zMjE1IDEuMDgxNDVDOS45Nzg2MyAwLjczODU5IDkuNTcxNTkgMC40NjY2MTYgOS4xMjM2MiAwLjI4MTA2QzguNjc1NjUgMC4wOTU1MDQzIDguMTk1NTIgLTcuMjI1MjllLTA5IDcuNzEwNjQgMEM2LjczMTM4IDEuNDU5MjFlLTA4IDUuNzkyMjIgMC4zODkwMSA1LjA5OTc4IDEuMDgxNDVDNC40MDczNCAxLjc3Mzg5IDQuMDE4MzMgMi43MTMwNSA0LjAxODMzIDMuNjkyMzFDNC4wMTgzMyA0LjY3MTU3IDQuNDA3MzQgNS42MTA3MiA1LjA5OTc4IDYuMzAzMTZDNS43OTIyMiA2Ljk5NTYxIDYuNzMxMzggNy4zODQ2MiA3LjcxMDY0IDcuMzg0NjJaTTE4Ljc4NzYgNy4zODQ2MkMxOS4yNzI0IDcuMzg0NjIgMTkuNzUyNiA3LjI4OTExIDIwLjIwMDUgNy4xMDM1NkMyMC42NDg1IDYuOTE4IDIxLjA1NTYgNi42NDYwMyAyMS4zOTg0IDYuMzAzMTZDMjEuNzQxMyA1Ljk2MDMgMjIuMDEzMyA1LjU1MzI2IDIyLjE5ODggNS4xMDUyOUMyMi4zODQ0IDQuNjU3MzIgMjIuNDc5OSA0LjE3NzE5IDIyLjQ3OTkgMy42OTIzMUMyMi40Nzk5IDMuMjA3NDMgMjIuMzg0NCAyLjcyNzI5IDIyLjE5ODggMi4yNzkzMkMyMi4wMTMzIDEuODMxMzUgMjEuNzQxMyAxLjQyNDMxIDIxLjM5ODQgMS4wODE0NUMyMS4wNTU2IDAuNzM4NTkgMjAuNjQ4NSAwLjQ2NjYxNiAyMC4yMDA1IDAuMjgxMDZDMTkuNzUyNiAwLjA5NTUwNDMgMTkuMjcyNCAtNy4yMjUyOWUtMDkgMTguNzg3NiAwQzE3LjgwODMgMS40NTkyMWUtMDggMTYuODY5MSAwLjM4OTAxIDE2LjE3NjcgMS4wODE0NUMxNS40ODQzIDEuNzczODkgMTUuMDk1MyAyLjcxMzA1IDE1LjA5NTMgMy42OTIzMUMxNS4wOTUzIDQuNjcxNTcgMTUuNDg0MyA1LjYxMDcyIDE2LjE3NjcgNi4zMDMxNkMxNi44NjkxIDYuOTk1NjEgMTcuODA4MyA3LjM4NDYyIDE4Ljc4NzYgNy4zODQ2MlpNMC45NDE0MDYgMTAuNzM2QzAuOTQxNDA2IDEwLjQ1NzUgMC45OTYyNTggMTAuMTgxOCAxLjEwMjgzIDkuOTI0NDhDMS4yMDk0IDkuNjY3MTkgMS4zNjU2IDkuNDMzNDIgMS41NjI1MiA5LjIzNjVDMS43NTk0NCA5LjAzOTU4IDEuOTkzMjEgOC44ODMzOCAyLjI1MDUgOC43NzY4MUMyLjUwNzc4IDguNjcwMjQgMi43ODM1NCA4LjYxNTM5IDMuMDYyMDIgOC42MTUzOUg4Ljk4NDQ4QzguNTUxNjkgOS4zNjM0NSA4LjMyNDUyIDEwLjIxMjcgOC4zMjYwMiAxMS4wNzY5QzguMzI1MTkgMTEuNzc1NSA4LjQ3MzQxIDEyLjQ2NjIgOC43NjA3OSAxMy4xMDI5QzkuMDQ4MTYgMTMuNzM5NiA5LjQ2ODA3IDE0LjMwNzcgOS45OTI0OCAxNC43NjkySDguNjAwNDhDOC4wMTQxOCAxNC43Njg3IDcuNDM4MDMgMTQuOTIyMiA2LjkyOTY5IDE1LjIxNDRDNi40MjEzNCAxNS41MDY1IDUuOTk4NjQgMTUuOTI3IDUuNzAzODcgMTYuNDMzOEMzLjcyMTEgMTYuMDQ0OSAyLjUxNjE4IDE1LjA3ODIgMS44MTQ2NCAxMy45OTJDMC45NDE0MDYgMTIuNjQgMC45NDE0MDYgMTEuMjQzMSAwLjk0MTQwNiAxMS4wMDEyVjEwLjczNlpNMTcuODk3NyAxNC43NjkyQzE4LjQ4NCAxNC43Njg3IDE5LjA2MDIgMTQuOTIyMiAxOS41Njg1IDE1LjIxNDRDMjAuMDc2OSAxNS41MDY1IDIwLjQ5OTYgMTUuOTI3IDIwLjc5NDMgMTYuNDMzOEMyMi43NzcxIDE2LjA0NDkgMjMuOTgyIDE1LjA3ODIgMjQuNjgzNiAxMy45OTJDMjUuNTU2OCAxMi42NCAyNS41NTY4IDExLjI0MzEgMjUuNTU2OCAxMS4wMDEyVjEwLjczNjZDMjUuNTU2OSAxMC40NTgxIDI1LjUwMjEgMTAuMTgyMyAyNS4zOTU1IDkuOTI0OUMyNS4yODkgOS42Njc1NSAyNS4xMzI4IDkuNDMzNyAyNC45MzU5IDkuMjM2NzJDMjQuNzM5IDkuMDM5NzMgMjQuNTA1MiA4Ljg4MzQ4IDI0LjI0NzggOC43NzY4N0MyMy45OTA1IDguNjcwMjYgMjMuNzE0NyA4LjYxNTM5IDIzLjQzNjIgOC42MTUzOUgxNy41MTM3QzE3Ljk0NjUgOS4zNjM0NSAxOC4xNzM3IDEwLjIxMjcgMTguMTcyMiAxMS4wNzY5QzE4LjE3MyAxMS43NzU1IDE4LjAyNDggMTIuNDY2MiAxNy43Mzc0IDEzLjEwMjlDMTcuNDUgMTMuNzM5NiAxNy4wMzAxIDE0LjMwNzcgMTYuNTA1NyAxNC43NjkySDE3Ljg5NzdaTTE2Ljk0MTQgMTEuMDc2OUMxNi45NDE0IDEyLjA1NjIgMTYuNTUyNCAxMi45OTUzIDE1Ljg2IDEzLjY4NzhDMTUuMTY3NSAxNC4zODAyIDE0LjIyODQgMTQuNzY5MiAxMy4yNDkxIDE0Ljc2OTJDMTIuMjY5OCAxNC43NjkyIDExLjMzMDcgMTQuMzgwMiAxMC42MzgyIDEzLjY4NzhDOS45NDU4IDEyLjk5NTMgOS41NTY3OSAxMi4wNTYyIDkuNTU2NzkgMTEuMDc2OUM5LjU1Njc5IDEwLjA5NzcgOS45NDU4IDkuMTU4NTEgMTAuNjM4MiA4LjQ2NjA3QzExLjMzMDcgNy43NzM2MyAxMi4yNjk4IDcuMzg0NjIgMTMuMjQ5MSA3LjM4NDYyQzE0LjIyODQgNy4zODQ2MiAxNS4xNjc1IDcuNzczNjMgMTUuODYgOC40NjYwN0MxNi41NTI0IDkuMTU4NTEgMTYuOTQxNCAxMC4wOTc3IDE2Ljk0MTQgMTEuMDc2OVpNNi40Nzk4NyAxOC4xMjA2QzYuNDc5ODcgMTcuNTU4MiA2LjcwMzI5IDE3LjAxODggNy4xMDA5OCAxNi42MjExQzcuNDk4NjcgMTYuMjIzNCA4LjAzODA2IDE2IDguNjAwNDggMTZIMTcuODk3N0MxOC40NjAxIDE2IDE4Ljk5OTUgMTYuMjIzNCAxOS4zOTcyIDE2LjYyMTFDMTkuNzk0OSAxNy4wMTg4IDIwLjAxODMgMTcuNTU4MiAyMC4wMTgzIDE4LjEyMDZWMTguMzg1OEMyMC4wMTgzIDE4LjYyODMgMjAuMDE4MyAyMC4wMjQ2IDE5LjE0NTEgMjEuMzc2NkMxOC4yMzI1IDIyLjc4OTUgMTYuNDY5NCAyNCAxMy4yNDkxIDI0QzEwLjAyODggMjQgOC4yNjU3MSAyMi43ODk1IDcuMzUzMSAyMS4zNzY2QzYuNDc5ODcgMjAuMDI0NiA2LjQ3OTg3IDE4LjYyNzcgNi40Nzk4NyAxOC4zODU4VjE4LjEyMDZaXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcuNzEwNjQgNy4zODQ2MkM4LjE5NTUyIDcuMzg0NjIgOC42NzU2NSA3LjI4OTExIDkuMTIzNjIgNy4xMDM1NkM5LjU3MTU5IDYuOTE4IDkuOTc4NjMgNi42NDYwMyAxMC4zMjE1IDYuMzAzMTZDMTAuNjY0NCA1Ljk2MDMgMTAuOTM2MyA1LjU1MzI2IDExLjEyMTkgNS4xMDUyOUMxMS4zMDc0IDQuNjU3MzIgMTEuNDAyOSA0LjE3NzE5IDExLjQwMjkgMy42OTIzMUMxMS40MDI5IDMuMjA3NDMgMTEuMzA3NCAyLjcyNzI5IDExLjEyMTkgMi4yNzkzMkMxMC45MzYzIDEuODMxMzUgMTAuNjY0NCAxLjQyNDMxIDEwLjMyMTUgMS4wODE0NUM5Ljk3ODYzIDAuNzM4NTkgOS41NzE1OSAwLjQ2NjYxNiA5LjEyMzYyIDAuMjgxMDZDOC42NzU2NSAwLjA5NTUwNDMgOC4xOTU1MiAtNy4yMjUyOWUtMDkgNy43MTA2NCAwQzYuNzMxMzggMS40NTkyMWUtMDggNS43OTIyMiAwLjM4OTAxIDUuMDk5NzggMS4wODE0NUM0LjQwNzM0IDEuNzczODkgNC4wMTgzMyAyLjcxMzA1IDQuMDE4MzMgMy42OTIzMUM0LjAxODMzIDQuNjcxNTcgNC40MDczNCA1LjYxMDcyIDUuMDk5NzggNi4zMDMxNkM1Ljc5MjIyIDYuOTk1NjEgNi43MzEzOCA3LjM4NDYyIDcuNzEwNjQgNy4zODQ2MlpNMTguNzg3NiA3LjM4NDYyQzE5LjI3MjQgNy4zODQ2MiAxOS43NTI2IDcuMjg5MTEgMjAuMjAwNSA3LjEwMzU2QzIwLjY0ODUgNi45MTggMjEuMDU1NiA2LjY0NjAzIDIxLjM5ODQgNi4zMDMxNkMyMS43NDEzIDUuOTYwMyAyMi4wMTMzIDUuNTUzMjYgMjIuMTk4OCA1LjEwNTI5QzIyLjM4NDQgNC42NTczMiAyMi40Nzk5IDQuMTc3MTkgMjIuNDc5OSAzLjY5MjMxQzIyLjQ3OTkgMy4yMDc0MyAyMi4zODQ0IDIuNzI3MjkgMjIuMTk4OCAyLjI3OTMyQzIyLjAxMzMgMS44MzEzNSAyMS43NDEzIDEuNDI0MzEgMjEuMzk4NCAxLjA4MTQ1QzIxLjA1NTYgMC43Mzg1OSAyMC42NDg1IDAuNDY2NjE2IDIwLjIwMDUgMC4yODEwNkMxOS43NTI2IDAuMDk1NTA0MyAxOS4yNzI0IC03LjIyNTI5ZS0wOSAxOC43ODc2IDBDMTcuODA4MyAxLjQ1OTIxZS0wOCAxNi44NjkxIDAuMzg5MDEgMTYuMTc2NyAxLjA4MTQ1QzE1LjQ4NDMgMS43NzM4OSAxNS4wOTUzIDIuNzEzMDUgMTUuMDk1MyAzLjY5MjMxQzE1LjA5NTMgNC42NzE1NyAxNS40ODQzIDUuNjEwNzIgMTYuMTc2NyA2LjMwMzE2QzE2Ljg2OTEgNi45OTU2MSAxNy44MDgzIDcuMzg0NjIgMTguNzg3NiA3LjM4NDYyWk0wLjk0MTQwNiAxMC43MzZDMC45NDE0MDYgMTAuNDU3NSAwLjk5NjI1OCAxMC4xODE4IDEuMTAyODMgOS45MjQ0OEMxLjIwOTQgOS42NjcxOSAxLjM2NTYgOS40MzM0MiAxLjU2MjUyIDkuMjM2NUMxLjc1OTQ0IDkuMDM5NTggMS45OTMyMSA4Ljg4MzM4IDIuMjUwNSA4Ljc3NjgxQzIuNTA3NzggOC42NzAyNCAyLjc4MzU0IDguNjE1MzkgMy4wNjIwMiA4LjYxNTM5SDguOTg0NDhDOC41NTE2OSA5LjM2MzQ1IDguMzI0NTIgMTAuMjEyNyA4LjMyNjAyIDExLjA3NjlDOC4zMjUxOSAxMS43NzU1IDguNDczNDEgMTIuNDY2MiA4Ljc2MDc5IDEzLjEwMjlDOS4wNDgxNiAxMy43Mzk2IDkuNDY4MDcgMTQuMzA3NyA5Ljk5MjQ4IDE0Ljc2OTJIOC42MDA0OEM4LjAxNDE4IDE0Ljc2ODcgNy40MzgwMyAxNC45MjIyIDYuOTI5NjkgMTUuMjE0NEM2LjQyMTM0IDE1LjUwNjUgNS45OTg2NCAxNS45MjcgNS43MDM4NyAxNi40MzM4QzMuNzIxMSAxNi4wNDQ5IDIuNTE2MTggMTUuMDc4MiAxLjgxNDY0IDEzLjk5MkMwLjk0MTQwNiAxMi42NCAwLjk0MTQwNiAxMS4yNDMxIDAuOTQxNDA2IDExLjAwMTJWMTAuNzM2Wk0xNy44OTc3IDE0Ljc2OTJDMTguNDg0IDE0Ljc2ODcgMTkuMDYwMiAxNC45MjIyIDE5LjU2ODUgMTUuMjE0NEMyMC4wNzY5IDE1LjUwNjUgMjAuNDk5NiAxNS45MjcgMjAuNzk0MyAxNi40MzM4QzIyLjc3NzEgMTYuMDQ0OSAyMy45ODIgMTUuMDc4MiAyNC42ODM2IDEzLjk5MkMyNS41NTY4IDEyLjY0IDI1LjU1NjggMTEuMjQzMSAyNS41NTY4IDExLjAwMTJWMTAuNzM2NkMyNS41NTY5IDEwLjQ1ODEgMjUuNTAyMSAxMC4xODIzIDI1LjM5NTUgOS45MjQ5QzI1LjI4OSA5LjY2NzU1IDI1LjEzMjggOS40MzM3IDI0LjkzNTkgOS4yMzY3MkMyNC43MzkgOS4wMzk3MyAyNC41MDUyIDguODgzNDggMjQuMjQ3OCA4Ljc3Njg3QzIzLjk5MDUgOC42NzAyNiAyMy43MTQ3IDguNjE1MzkgMjMuNDM2MiA4LjYxNTM5SDE3LjUxMzdDMTcuOTQ2NSA5LjM2MzQ1IDE4LjE3MzcgMTAuMjEyNyAxOC4xNzIyIDExLjA3NjlDMTguMTczIDExLjc3NTUgMTguMDI0OCAxMi40NjYyIDE3LjczNzQgMTMuMTAyOUMxNy40NSAxMy43Mzk2IDE3LjAzMDEgMTQuMzA3NyAxNi41MDU3IDE0Ljc2OTJIMTcuODk3N1pNMTYuOTQxNCAxMS4wNzY5QzE2Ljk0MTQgMTIuMDU2MiAxNi41NTI0IDEyLjk5NTMgMTUuODYgMTMuNjg3OEMxNS4xNjc1IDE0LjM4MDIgMTQuMjI4NCAxNC43NjkyIDEzLjI0OTEgMTQuNzY5MkMxMi4yNjk4IDE0Ljc2OTIgMTEuMzMwNyAxNC4zODAyIDEwLjYzODIgMTMuNjg3OEM5Ljk0NTggMTIuOTk1MyA5LjU1Njc5IDEyLjA1NjIgOS41NTY3OSAxMS4wNzY5QzkuNTU2NzkgMTAuMDk3NyA5Ljk0NTggOS4xNTg1MSAxMC42MzgyIDguNDY2MDdDMTEuMzMwNyA3Ljc3MzYzIDEyLjI2OTggNy4zODQ2MiAxMy4yNDkxIDcuMzg0NjJDMTQuMjI4NCA3LjM4NDYyIDE1LjE2NzUgNy43NzM2MyAxNS44NiA4LjQ2NjA3QzE2LjU1MjQgOS4xNTg1MSAxNi45NDE0IDEwLjA5NzcgMTYuOTQxNCAxMS4wNzY5Wk02LjQ3OTg3IDE4LjEyMDZDNi40Nzk4NyAxNy41NTgyIDYuNzAzMjkgMTcuMDE4OCA3LjEwMDk4IDE2LjYyMTFDNy40OTg2NyAxNi4yMjM0IDguMDM4MDYgMTYgOC42MDA0OCAxNkgxNy44OTc3QzE4LjQ2MDEgMTYgMTguOTk5NSAxNi4yMjM0IDE5LjM5NzIgMTYuNjIxMUMxOS43OTQ5IDE3LjAxODggMjAuMDE4MyAxNy41NTgyIDIwLjAxODMgMTguMTIwNlYxOC4zODU4QzIwLjAxODMgMTguNjI4MyAyMC4wMTgzIDIwLjAyNDYgMTkuMTQ1MSAyMS4zNzY2QzE4LjIzMjUgMjIuNzg5NSAxNi40Njk0IDI0IDEzLjI0OTEgMjRDMTAuMDI4OCAyNCA4LjI2NTcxIDIyLjc4OTUgNy4zNTMxIDIxLjM3NjZDNi40Nzk4NyAyMC4wMjQ2IDYuNDc5ODcgMTguNjI3NyA2LjQ3OTg3IDE4LjM4NThWMTguMTIwNlpcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiM1wiIG1hc2s9XCJ1cmwoI3BhdGgtNi1pbnNpZGUtMl83MDdfMTMxMDYpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudCBtcy0xIG10LTJcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5jb3VudCA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5jb3VudC50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KTonLS0nfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlciBtcy0xXCI+R3JvdXA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCI+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHdlZWstZm9udFwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndlZWstZm9udFwiPiB2cyBwcmV2aW91cyB3ZWVrPC9zcGFuPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC03IG1iLTNcIj48c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudCBtdC0yXCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNQZXJzb25zPy5jb3VudCA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1BlcnNvbnM/LmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pOictLSd9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyIG1zLTFcIj5QZXJzb25zPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG1iLTNcIj48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgd2Vlay1mb250XCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGEucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgdGV4dC1jZW50ZXIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMiB3ZWVrLWZvbnRcIj4gQXZnLiBHcm91cCBzaXplPC9zcGFuPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/LmVuZ2FnZXJzPy5yYXRlID8gZ2V0Q2FyZERhdGE/LmVuZ2FnZXJzPy5yYXRlIDonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+RW5nYWdlcnMgUmF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZE5vZGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGExXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZTFcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY29udmVyc2lvbiBmdW5uZWw8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2FyZE5vZGF0YVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cImVuZ2FnZXJzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgcHJldmlvdXMgd2Vlazwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtOTBweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImdldENhcmREYXRhPy5yZXZlbnVlPy5jdXJyZW5jeSAhPT0naW5yJ1wiPiA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJtZS0xXCI+JDwvc3Bhbj4ge3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgPz8gJy0tJ319PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LnJldmVudWU/LmN1cnJlbmN5ID09PSdpbnInXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj48c3BhbiBjbGFzcz1cIm1lLTFcIj7igrk8L3NwYW4+IHt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pID8/ICctLSd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gUmV2ZW51ZSBMb3NzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG10LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzM4ODVfMjUzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwiI0VBRjhGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRUFGOEZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zODg1XzI1MzEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI3LjQ1ODUgMTcuMjI1MUMyNy44MTMzIDE4Ljg1NTYgMjcuNjcwNyAyMC41NjE0IDI3LjA1MDUgMjIuMTAyN0wyNS44NTkzIDIxLjM4MzhMMjYuMDE3IDI2LjA5N0wzMCAyMy44ODM0TDI4LjcxNyAyMy4xMDg2QzMwLjcxNzEgMTguNDgyMyAyOS4wNzI2IDEyLjkzMzMgMjQuNzc5OSAxMC4zNDA3QzIzLjMzMjggOS40NjYzMyAyMS42OTE4IDkuMDA0MDYgMjAuMDIwNiA5LjAwMDAzQzE4LjM0OTQgOC45OTU5OSAxNi43MDY0IDkuNDUwMzMgMTUuMjU1NSAxMC4zMTc3TDE2LjIwNDkgMTIuMDU0NEMxNy41OTMzIDExLjIyNDkgMTkuMTk1MyAxMC44NzEyIDIwLjc4NTggMTEuMDQzQzIyLjM3NjQgMTEuMjE0OSAyMy44NzU0IDExLjkwMzYgMjUuMDcyMyAxMy4wMTI1QzI2LjI2OTIgMTQuMTIxNCAyNy4xMDM3IDE1LjU5NDYgMjcuNDU4NSAxNy4yMjUxWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NDAyIDIwLjc3NTlDMTIuMTg1NCAxOS4xNDUyIDEyLjMyODIgMTcuNDM5MiAxMi45NDg1IDE1Ljg5NzhMMTQuMTM5OCAxNi42MTY3TDEzLjk4MiAxMS45MDM1TDEwIDE0LjExODFMMTEuMjgzIDE0Ljg5MDlDOS4yODE5OSAxOS41MTgyIDEwLjkyNjQgMjUuMDY2MiAxNS4yMTkyIDI3LjY1ODhDMTYuNjY2MSAyOC41MzMzIDE4LjMwNzEgMjguOTk1OCAxOS45NzgzIDI5QzIxLjY0OTUgMjkuMDA0MiAyMy4yOTI2IDI4LjU1IDI0Ljc0MzUgMjcuNjgyOEwyMy43OTUxIDI1Ljk0NjFDMjIuNDA2NyAyNi43NzYgMjAuODA0NSAyNy4xMyAxOS4yMTM4IDI2Ljk1ODNDMTcuNjIzIDI2Ljc4NjcgMTYuMTIzNyAyNi4wOTc5IDE0LjkyNjcgMjQuOTg5QzEzLjcyOTYgMjMuODggMTIuODk1IDIyLjQwNjYgMTIuNTQwMiAyMC43NzU5WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIxLjAzNzIgMTMuMDAzQzIxLjAzNzIgMTIuNTUxNCAyMC42ODcxIDEyLjE4NTIgMjAuMjU1MiAxMi4xODUyQzE5LjgyMzQgMTIuMTg1MiAxOS40NzMzIDEyLjU1MTQgMTkuNDczMyAxMy4wMDNWMTQuMzY1OUgxOC45NTJDMTguMjYwNyAxNC4zNjU5IDE3LjU5NzggMTQuNjUzIDE3LjEwOSAxNS4xNjQyQzE2LjYyMDEgMTUuNjc1NCAxNi4zNDU1IDE2LjM2ODcgMTYuMzQ1NSAxNy4wOTE2QzE2LjM0NTUgMTcuODE0NiAxNi42MjAxIDE4LjUwNzkgMTcuMTA5IDE5LjAxOTFDMTcuNTk3OCAxOS41MzAyIDE4LjI2MDcgMTkuODE3NCAxOC45NTIgMTkuODE3NEgxOS40NzMzVjIxLjk5OEgxNy4xMjc1QzE2LjY5NTYgMjEuOTk4IDE2LjM0NTUgMjIuMzY0MSAxNi4zNDU1IDIyLjgxNThDMTYuMzQ1NSAyMy4yNjc0IDE2LjY5NTYgMjMuNjMzNSAxNy4xMjc1IDIzLjYzMzVIMTkuNDczM1YyNC45OTY0QzE5LjQ3MzMgMjUuNDQ4IDE5LjgyMzQgMjUuODE0MSAyMC4yNTUyIDI1LjgxNDFDMjAuNjg3MSAyNS44MTQxIDIxLjAzNzIgMjUuNDQ4IDIxLjAzNzIgMjQuOTk2NFYyMy42MzM1SDIxLjU1ODVDMjIuMjQ5OCAyMy42MzM1IDIyLjkxMjcgMjMuMzQ2MyAyMy40MDE1IDIyLjgzNTFDMjMuODkwMyAyMi4zMjQgMjQuMTY0OSAyMS42MzA2IDI0LjE2NDkgMjAuOTA3N0MyNC4xNjQ5IDIwLjE4NDggMjMuODkwMyAxOS40OTE1IDIzLjQwMTUgMTguOTgwM0MyMi45MTI3IDE4LjQ2OTEgMjIuMjQ5OCAxOC4xODIgMjEuNTU4NSAxOC4xODJIMjEuMDM3MlYxNi4wMDEzSDIyLjg2MTdDMjMuMjkzNiAxNi4wMDEzIDIzLjY0MzcgMTUuNjM1MiAyMy42NDM3IDE1LjE4MzZDMjMuNjQzNyAxNC43MzIgMjMuMjkzNiAxNC4zNjU5IDIyLjg2MTcgMTQuMzY1OUgyMS4wMzcyVjEzLjAwM1pNMTguOTUyIDE2LjAwMTNIMTkuNDczM1YxOC4xODJIMTguOTUyQzE4LjY3NTUgMTguMTgyIDE4LjQxMDMgMTguMDY3MSAxOC4yMTQ4IDE3Ljg2MjZDMTguMDE5MyAxNy42NTgxIDE3LjkwOTQgMTcuMzgwOCAxNy45MDk0IDE3LjA5MTZDMTcuOTA5NCAxNi44MDI1IDE4LjAxOTMgMTYuNTI1MiAxOC4yMTQ4IDE2LjMyMDdDMTguNDEwMyAxNi4xMTYyIDE4LjY3NTUgMTYuMDAxMyAxOC45NTIgMTYuMDAxM1pNMjEuMDM3MiAyMS45OThWMTkuODE3NEgyMS41NTg1QzIxLjgzNSAxOS44MTc0IDIyLjEwMDIgMTkuOTMyMyAyMi4yOTU3IDIwLjEzNjhDMjIuNDkxMiAyMC4zNDEyIDIyLjYwMTEgMjAuNjE4NiAyMi42MDExIDIwLjkwNzdDMjIuNjAxMSAyMS4xOTY5IDIyLjQ5MTIgMjEuNDc0MiAyMi4yOTU3IDIxLjY3ODdDMjIuMTAwMiAyMS44ODMyIDIxLjgzNSAyMS45OTggMjEuNTU4NSAyMS45OThIMjEuMDM3MlpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8zODg1XzI1MzFcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzg4NV8yNTMxXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18zODg1XzI1MzFcIiByZXN1bHQ9XCJzaGFwZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzg4NV8yNTMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgOSlcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBwcmV2aW91cyB3ZWVrPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBtYi01IHB5LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDFcIiB2aWV3Qm94PVwiMCAwIDQwIDQxXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42MzgyIDEyLjg5MjJDMTcuNjM4MiAxMi42ODM1IDE3LjcyMTIgMTIuNDgzMyAxNy44Njg4IDEyLjMzNTdDMTguMDE2NCAxMi4xODgxIDE4LjIxNjUgMTIuMTA1MiAxOC40MjUzIDEyLjEwNTJIMjEuNTczNEMyMS43ODIyIDEyLjEwNTIgMjEuOTgyMyAxMi4xODgxIDIyLjEyOTkgMTIuMzM1N0MyMi4yNzc1IDEyLjQ4MzMgMjIuMzYwNSAxMi42ODM1IDIyLjM2MDUgMTIuODkyMkMyMi4zNjA1IDEzLjEwMDkgMjIuMjc3NSAxMy4zMDExIDIyLjEyOTkgMTMuNDQ4N0MyMS45ODIzIDEzLjU5NjMgMjEuNzgyMiAxMy42NzkyIDIxLjU3MzQgMTMuNjc5MkgyMC43ODY0VjE0LjcyODZMMjAuNzg1MyAxNC43NzE2QzIyLjExNTYgMTQuOTE3NCAyMy4zNzY3IDE1LjQzOTggMjQuNDIwNCAxNi4yNzc1TDI0LjQyNzcgMTYuMjcxMkwyNS4yMTQ4IDE1LjQ4NDJDMjUuMzExIDE1LjM4MDYgMjUuNDMzMyAxNS4zMDQ4IDI1LjU2OSAxNS4yNjQ5QzI1LjcwNDYgMTUuMjI1MSAyNS44NDg1IDE1LjIyMjUgMjUuOTg1NSAxNS4yNTc1QzI2LjEyMjQgMTUuMjkyNSAyNi4yNDc0IDE1LjM2MzggMjYuMzQ3MiAxNS40NjM5QzI2LjQ0NzEgMTUuNTY0IDI2LjUxODEgMTUuNjg5MiAyNi41NTI3IDE1LjgyNjNDMjYuNTg3NyAxNS45NjMxIDI2LjU4NTIgMTYuMTA2OCAyNi41NDU1IDE2LjI0MjNDMjYuNTA1OCAxNi4zNzc4IDI2LjQzMDQgMTYuNTAwMiAyNi4zMjcxIDE2LjU5NjVMMjUuNTQwMSAxNy4zODM2TDI1LjUzMzggMTcuMzkwOUMyNi4zNjYyIDE4LjQzMzEgMjYuODg3NSAxOS42ODkxIDI3LjAzNzcgMjEuMDE0NEMyNy4xODc4IDIyLjMzOTcgMjYuOTYwNyAyMy42ODA1IDI2LjM4MjQgMjQuODgyNUMyNS44MDQyIDI2LjA4NDUgMjQuODk4MyAyNy4wOTg3IDIzLjc2OTEgMjcuODA4NkMyMi42Mzk5IDI4LjUxODQgMjEuMzMzMiAyOC44OTUgMTkuOTk5MyAyOC44OTVDMTguNjY1NSAyOC44OTUgMTcuMzU4OCAyOC41MTg0IDE2LjIyOTYgMjcuODA4NkMxNS4xMDA0IDI3LjA5ODcgMTQuMTk0NSAyNi4wODQ1IDEzLjYxNjMgMjQuODgyNUMxMy4wMzggMjMuNjgwNSAxMi44MTA5IDIyLjMzOTcgMTIuOTYxIDIxLjAxNDRDMTMuMTExMiAxOS42ODkxIDEzLjYzMjUgMTguNDMzMSAxNC40NjQ5IDE3LjM5MDlMMTQuNDU4NiAxNy4zODM2TDEzLjY3MTYgMTYuNTk2NUMxMy41MzI0IDE2LjQ0NzQgMTMuNDU2NiAxNi4yNSAxMy40NjAxIDE2LjA0NkMxMy40NjM2IDE1Ljg0MiAxMy41NDYyIDE1LjY0NzMgMTMuNjkwNSAxNS41MDMxQzEzLjgzNDcgMTUuMzU4OCAxNC4wMjk0IDE1LjI3NjIgMTQuMjMzNCAxNS4yNzI3QzE0LjQzNzQgMTUuMjY5MiAxNC42MzQ4IDE1LjM0NSAxNC43ODM5IDE1LjQ4NDJMMTUuNTcxIDE2LjI3MTJMMTUuNTc4MyAxNi4yNzc1QzE2LjYyMTcgMTUuNDQgMTcuODgyNCAxNC45MTc2IDE5LjIxMjMgMTQuNzcxNlYxMy42NzkySDE4LjQyNTNDMTguMjE2NSAxMy42NzkyIDE4LjAxNjQgMTMuNTk2MyAxNy44Njg4IDEzLjQ0ODdDMTcuNzIxMiAxMy4zMDExIDE3LjYzODIgMTMuMTAwOSAxNy42MzgyIDEyLjg5MjJaTTE5Ljk5OTMgMjcuMzIxMkMyMS40NjA2IDI3LjMyMTEgMjIuODYyIDI2Ljc0MDQgMjMuODk1MiAyNS43MDcxQzI0LjkyODQgMjQuNjczNyAyNS41MDg3IDIzLjI3MjIgMjUuNTA4NiAyMS44MTA5QzI1LjUwODUgMjAuMzQ5NiAyNC45Mjc4IDE4Ljk0ODIgMjMuODk0NSAxNy45MTVDMjIuODYxMSAxNi44ODE5IDIxLjQ1OTYgMTYuMzAxNSAxOS45OTgzIDE2LjMwMTZDMTguNTM3IDE2LjMwMTggMTcuMTM1NiAxNi44ODI0IDE2LjEwMjUgMTcuOTE1OEMxNS4wNjkzIDE4Ljk0OTIgMTQuNDg4OSAyMC4zNTA3IDE0LjQ4OSAyMS44MTE5QzE0LjQ4OTIgMjMuMjczMiAxNS4wNjk4IDI0LjY3NDYgMTYuMTAzMiAyNS43MDc4QzE3LjEzNjYgMjYuNzQxIDE4LjUzODEgMjcuMzIxMyAxOS45OTkzIDI3LjMyMTJaTTIwLjQwNzYgMjAuMjkwM0wyMS44MDMyIDE4Ljg5NDdDMjEuODc1OCAxOC44MTk1IDIxLjk2MjYgMTguNzU5NSAyMi4wNTg2IDE4LjcxODJDMjIuMTU0NiAxOC42NzY5IDIyLjI1NzkgMTguNjU1MSAyMi4zNjI0IDE4LjY1NDJDMjIuNDY2OSAxOC42NTMyIDIyLjU3MDUgMTguNjczMSAyMi42NjczIDE4LjcxMjZDMjIuNzY0IDE4Ljc1MjEgMjIuODUxOSAxOC44MTA1IDIyLjkyNTkgMTguODg0NEMyMi45OTk4IDE4Ljk1ODIgMjMuMDU4MyAxOS4wNDYxIDIzLjA5NzkgMTkuMTQyOEMyMy4xMzc1IDE5LjIzOTUgMjMuMTU3NSAxOS4zNDMxIDIzLjE1NjYgMTkuNDQ3NkMyMy4xNTU3IDE5LjU1MjEgMjMuMTM0MSAxOS42NTU0IDIzLjA5MjkgMTkuNzUxNUMyMy4wNTE3IDE5Ljg0NzUgMjIuOTkxOCAxOS45MzQ0IDIyLjkxNjYgMjAuMDA3TDIxLjUyMSAyMS40MDM3QzIxLjU4MyAyMS42MzcxIDIxLjU5MDYgMjEuODgxNSAyMS41NDMyIDIyLjExODJDMjEuNDk1OCAyMi4zNTUgMjEuMzk0OCAyMi41Nzc3IDIxLjI0NzggMjIuNzY5MkMyMS4xMDA4IDIyLjk2MDcgMjAuOTExOCAyMy4xMTU5IDIwLjY5NTMgMjMuMjIyOEMyMC40Nzg5IDIzLjMyOTggMjAuMjQwOCAyMy4zODU2IDE5Ljk5OTMgMjMuMzg2QzE5Ljc3NjYgMjMuMzg0MSAxOS41NTY3IDIzLjMzNDkgMTkuMzU0NCAyMy4yNDE2QzE5LjE1MjEgMjMuMTQ4MyAxOC45NzE4IDIzLjAxMzEgMTguODI1NyAyMi44NDVDMTguNjc5NSAyMi42NzY4IDE4LjU3MDcgMjIuNDc5NiAxOC41MDY2IDIyLjI2NjJDMTguNDQyNCAyMi4wNTI4IDE4LjQyNDMgMjEuODI4MyAxOC40NTM0IDIxLjYwNzRDMTguNDgyNSAyMS4zODY1IDE4LjU1ODIgMjEuMTc0MyAxOC42NzU1IDIwLjk4NDlDMTguNzkyOCAyMC43OTU1IDE4Ljk0OSAyMC42MzMyIDE5LjEzMzggMjAuNTA4NkMxOS4zMTg1IDIwLjM4NDEgMTkuNTI3NiAyMC4zMDAzIDE5Ljc0NzIgMjAuMjYyNkMxOS45NjY4IDIwLjIyNSAyMC4xOTE5IDIwLjIzNDQgMjAuNDA3NiAyMC4yOTAzWlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0zIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/LmF2Z0R3ZWxsVGltZSA/IGdldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgOictLSd9fSBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcgRHdlbGwgVGltZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtOTBweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuOTAwNCAxMi4xNjc1QzIyLjk5NTggMTIuMTY3NSAyNC4wNDIzIDEyLjM5MTggMjQuOTk3NyAxMi43OTg3QzI1Ljk4ODkgMTMuMjIwNyAyNi44ODA5IDEzLjg0MDIgMjcuNjI3OSAxNC42MDg3QzI4LjM3MzQgMTUuMzc1NiAyOC45NzU2IDE2LjI5MzEgMjkuMzg1NyAxNy4zMTYyQzI5Ljc4MTMgMTguMjk5IDI5Ljk5OTMgMTkuMzc1NiAyOS45OTkzIDIwLjUwMDhDMjkuOTk5MyAyMS42Mjc3IDI5Ljc4MTMgMjIuNzA0MyAyOS4zODU3IDIzLjY4NzFDMjguOTc1NiAyNC43MDY4IDI4LjM3MzQgMjUuNjI0NCAyNy42MjYzIDI2LjM5MjlDMjYuODgwOSAyNy4xNTk4IDI1Ljk4ODkgMjcuNzc5MyAyNC45OTQ1IDI4LjIwMTJDMjQuMDM5MSAyOC42MDgxIDIyLjk5MjUgMjguODMyNSAyMS44OTg4IDI4LjgzMjVDMjAuODAzNCAyOC44MzI1IDE5Ljc1NjggMjguNjA4MSAxOC44MDE0IDI4LjIwMTJDMTcuODEwMiAyNy43NzkzIDE2LjkxODMgMjcuMTU5OCAxNi4xNzI5IDI2LjM5MjlMMTYuMTcxMiAyNi4zOTEyQzE1LjQyNDIgMjUuNjIyNyAxNC44MjM2IDI0LjcwNTIgMTQuNDEzNCAyMy42ODcxQzE0LjI4NjUgMjMuMzcwNyAxNC4xNzc0IDIzLjA0NTkgMTQuMDg3OSAyMi43MTI3QzE0LjI1NzIgMjIuNzI5NCAxNC40Mjk3IDIyLjczNzggMTQuNjAzOCAyMi43Mzc4QzE0LjkzNDIgMjIuNzM3OCAxNS4yNTY1IDIyLjcwNzYgMTUuNTcwNiAyMi42NDlDMTUuNjIyNyAyMi44MDk4IDE1LjY3OTcgMjIuOTY4OCAxNS43NDE1IDIzLjEyNDZDMTYuMDc4NSAyMy45NjE3IDE2LjU3MzIgMjQuNzE1MiAxNy4xODg1IDI1LjM0ODFDMTcuODAzNyAyNS45ODEgMTguNTM3OCAyNi40OSAxOS4zNDk5IDI2LjgzNjZDMjAuMTMyOCAyNy4xNjk4IDIwLjk5MzggMjcuMzU1NyAyMS44OTg4IDI3LjM1NTdDMjIuODAzNyAyNy4zNTU3IDIzLjY2MzEgMjcuMTcxNSAyNC40NDc2IDI2LjgzNjZDMjUuMjYxNCAyNi40OSAyNS45OTM4IDI1Ljk4MSAyNi42MDkxIDI1LjM0ODFDMjcuMjI0MyAyNC43MTUyIDI3LjcxOTEgMjMuOTYwMSAyOC4wNTYgMjMuMTI0NkMyOC4zNzk5IDIyLjMxOTIgMjguNTYwNSAyMS40MzM0IDI4LjU2MDUgMjAuNTAyNUMyOC41NjA1IDE5LjU3MTUgMjguMzgxNSAxOC42ODc1IDI4LjA1NiAxNy44ODA0QzI3LjcxOTEgMTcuMDQzMiAyNy4yMjQzIDE2LjI4OTggMjYuNjA5MSAxNS42NTY5QzI1Ljk5MzggMTUuMDI0IDI1LjI1OTggMTQuNTE0OSAyNC40NDc2IDE0LjE2ODRDMjMuNjY0NyAxMy44MzUyIDIyLjgwMzcgMTMuNjQ5MyAyMS44OTg4IDEzLjY0OTNDMjAuOTkzOCAxMy42NDkzIDIwLjEzNDQgMTMuODMzNSAxOS4zNDk5IDE0LjE2ODRDMTkuMjc5OSAxNC4xOTg1IDE5LjIxIDE0LjIzMDMgMTkuMTQxNiAxNC4yNjIxQzE4Ljg3NDcgMTMuODMwMSAxOC41NTI0IDEzLjQzODMgMTguMTgyOSAxMy4wOTg0QzE4LjM4NDggMTIuOTkxMyAxOC41OTE1IDEyLjg5MjUgMTguODAxNCAxMi44MDIxQzE5Ljc2MDEgMTIuMzkxOCAyMC44MDUgMTIuMTY3NSAyMS45MDA0IDEyLjE2NzVaTTIwLjk3MSAxNi41MzkzQzIwLjk3MSAxNi4zMzUgMjEuMDUyNCAxNi4xNTA4IDIxLjE4MSAxNi4wMTY5QzIxLjMxMTIgMTUuODgyOSAyMS40OTAyIDE1LjgwMDkgMjEuNjg4OCAxNS44MDA5QzIxLjg4NzQgMTUuODAwOSAyMi4wNjY0IDE1Ljg4MjkgMjIuMTk2NiAxNi4wMTY5QzIyLjMyNjggMTYuMTUwOCAyMi40MDY2IDE2LjMzNSAyMi40MDY2IDE2LjUzOTNWMjAuNDI3MUwyNS4yMzA1IDIyLjE1MDFDMjUuMzk5NyAyMi4yNTM5IDI1LjUxMzcgMjIuNDE5NiAyNS41NTkyIDIyLjYwMjFDMjUuNjA0OCAyMi43ODQ3IDI1LjU4MzcgMjIuOTg1NiAyNS40ODI3IDIzLjE1OTdWMjMuMTYxNEMyNS4zODE4IDIzLjMzNTUgMjUuMjIwNyAyMy40NTI3IDI1LjA0MzMgMjMuNDk5NkMyNC44NjU5IDIzLjU0NjUgMjQuNjcwNiAyMy41MjQ3IDI0LjUwMTMgMjMuNDIwOUgyNC40OTk3TDIxLjM0MDUgMjEuNDkzN0MyMS4yMzE0IDIxLjQzMTggMjEuMTQxOSAyMS4zNDEzIDIxLjA3NjggMjEuMjM0MkMyMS4wMTAxIDIxLjEyMiAyMC45NzEgMjAuOTg5NyAyMC45NzEgMjAuODQ5MVYxNi41MzkzWlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE0LjM5MTMgMTIuNjA5NUMxNi44MTY0IDEyLjYwOTUgMTguNzgyNiAxNC42MzIxIDE4Ljc4MjYgMTcuMTI2OUMxOC43ODI2IDE5LjYyMTggMTYuODE2NCAyMS42NDQ0IDE0LjM5MTMgMjEuNjQ0NEMxMS45NjYxIDIxLjY0NDQgMTAgMTkuNjIxOCAxMCAxNy4xMjY5QzEwIDE0LjYzMjEgMTEuOTY2MSAxMi42MDk1IDE0LjM5MTMgMTIuNjA5NVpNMTQuMzkxMyAxOS43MTcyTDE2Ljc0OCAxNi43MjAxSDE1LjI4NDhWMTUuMTI2MUgxMy40OTc3VjE2LjcyMDFIMTIuMDM0NUwxNC4zOTEzIDE5LjcxNzJaXCIgZmlsbD1cIiNGMDQ0MzhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xIGNhcmQtbGFiZWwgaGVhZGVyXCI+IHt7Z2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lID8gZ2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lIDonLS0nfX0gbWluczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPkF2ZyBEb3duIFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTVcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj5Db252ZXJzaW9uIEZ1bm5lbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDMyXzgwMDM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWF0bG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0yNzVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhdG5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY29udmVyc2lvbiBmdW5uZWw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGVhdGxvYWRpbmcgJiYgIWhlYXRub0RhdGFcIiBjbGFzcz1cInRleHQtY2VudGVyIG1iLTNcIiBpZD1cImNoYXJ0ZGl2XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1wYWxvYWRpbmcgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxIHx8IG1hcG5vRGF0YSAmJiBzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDEgfHwgIXN0b3JlSWRhcnJheT8ubGVuZ3RoXCIgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtMyBwcy03IHBlLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dFwiID5FeHBsb3JlPC9zcGFuPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXBhbG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0yMjVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtYXBub0RhdGFcIiAgY2xhc3M9XCJyb3cgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgU3RvcmUgbWFwPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW1wYWxvYWRpbmcgJiYgIW1hcG5vRGF0YSAmJiBzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtMyBwcy03IHBlLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dFwiID5FeHBsb3JlPC9zcGFuPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIG10LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtcGFsb2FkaW5nICYmICFtYXBub0RhdGFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9yZVZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG1lLTggYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cGxvcmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW1hcG5vRGF0YVwiIGNsYXNzPVwiY2FyZC1ib2R5IGNvbC1tZC0xMiBwdC0wIHBiLTUgcHMtN1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWFwXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAyNThweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDFcIiBjbGFzcz1cImNhcmQgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNSBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj5SZWNhcCBWaWRlbyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj5EYXRlZDoge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonIGRkIE1NTSx5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsIHRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNOS41MTk1MyAwLjMzMzk4NEMxMC4zOTU4IDAuMzMzOTg0IDExLjIzMzEgMC41MTM0NzcgMTEuOTk3NCAwLjgzODk3NEMxMi43OTA0IDEuMTc2NTMgMTMuNTAzOSAxLjY3MjE0IDE0LjEwMTYgMi4yODY5N0MxNC42OTc5IDIuOTAwNDYgMTUuMTc5NyAzLjYzNDUgMTUuNTA3OCA0LjQ1MjkzQzE1LjgyNDIgNS4yMzkyMiAxNS45OTg3IDYuMTAwNTEgMTUuOTk4NyA3LjAwMDY1QzE1Ljk5ODcgNy45MDIxMyAxNS44MjQyIDguNzYzNDMgMTUuNTA3OCA5LjU0OTcxQzE1LjE3OTcgMTAuMzY1NSAxNC42OTc5IDExLjA5OTUgMTQuMTAwMyAxMS43MTQzQzEzLjUwMzkgMTIuMzI3OCAxMi43OTA0IDEyLjgyMzQgMTEuOTk0OCAxMy4xNjFDMTEuMjMwNSAxMy40ODY1IDEwLjM5MzIgMTMuNjY2IDkuNTE4MjMgMTMuNjY2QzguNjQxOTMgMTMuNjY2IDcuODA0NjkgMTMuNDg2NSA3LjA0MDM2IDEzLjE2MUM2LjI0NzQgMTIuODIzNCA1LjUzMzg1IDEyLjMyNzggNC45Mzc1IDExLjcxNDNMNC45MzYyIDExLjcxM0M0LjMzODU0IDExLjA5ODIgMy44NTgwNyAxMC4zNjQxIDMuNTI5OTUgOS41NDk3MUMzLjQyODM5IDkuMjk2NTUgMy4zNDExNSA5LjAzNjY4IDMuMjY5NTMgOC43NzAxM0MzLjQwNDk1IDguNzgzNTIgMy41NDI5NyA4Ljc5MDIyIDMuNjgyMjkgOC43OTAyMkMzLjk0NjYxIDguNzkwMjIgNC4yMDQ0MyA4Ljc2NjExIDQuNDU1NzMgOC43MTkyMkM0LjQ5NzQgOC44NDc4MiA0LjU0Mjk3IDguOTc1MDcgNC41OTI0NSA5LjA5OTY0QzQuODYxOTggOS43NjkzOSA1LjI1NzgxIDEwLjM3MjIgNS43NSAxMC44Nzg1QzYuMjQyMTkgMTEuMzg0OCA2LjgyOTQzIDExLjc5MiA3LjQ3OTE3IDEyLjA2OTNDOC4xMDU0NyAxMi4zMzU5IDguNzk0MjcgMTIuNDg0NSA5LjUxODIzIDEyLjQ4NDVDMTAuMjQyMiAxMi40ODQ1IDEwLjkyOTcgMTIuMzM3MiAxMS41NTczIDEyLjA2OTNDMTIuMjA4MyAxMS43OTIgMTIuNzk0MyAxMS4zODQ4IDEzLjI4NjUgMTAuODc4NUMxMy43Nzg2IDEwLjM3MjIgMTQuMTc0NSA5Ljc2ODA1IDE0LjQ0NCA5LjA5OTY0QzE0LjcwMzEgOC40NTUzNCAxNC44NDc3IDcuNzQ2NzUgMTQuODQ3NyA3LjAwMTk5QzE0Ljg0NzcgNi4yNTcyMyAxNC43MDQ0IDUuNTQ5OTggMTQuNDQ0IDQuOTA0MzRDMTQuMTc0NSA0LjIzNDU5IDEzLjc3ODYgMy42MzE4MiAxMy4yODY1IDMuMTI1NDlDMTIuNzk0MyAyLjYxOTE2IDEyLjIwNyAyLjIxMTk2IDExLjU1NzMgMS45MzQ2OEMxMC45MzEgMS42NjgxMiAxMC4yNDIyIDEuNTE5NDQgOS41MTgyMyAxLjUxOTQ0QzguNzk0MjcgMS41MTk0NCA4LjEwNjc3IDEuNjY2NzggNy40NzkxNyAxLjkzNDY4QzcuNDIzMTggMS45NTg3OSA3LjM2NzE5IDEuOTg0MjQgNy4zMTI1IDIuMDA5NjlDNy4wOTg5NiAxLjY2NDEgNi44NDExNSAxLjM1MDY2IDYuNTQ1NTcgMS4wNzg3NEM2LjcwNzAzIDAuOTkzMDE2IDYuODcyNCAwLjkxMzk4NiA3LjA0MDM2IDAuODQxNjUzQzcuODA3MjkgMC41MTM0NzcgOC42NDMyMyAwLjMzMzk4NCA5LjUxOTUzIDAuMzMzOTg0Wk04Ljc3NjA0IDMuODMxNDFDOC43NzYwNCAzLjY2Nzk5IDguODQxMTUgMy41MjA2NCA4Ljk0NDAxIDMuNDEzNDhDOS4wNDgxOCAzLjMwNjMyIDkuMTkxNDEgMy4yNDA2OSA5LjM1MDI2IDMuMjQwNjlDOS41MDkxMSAzLjI0MDY5IDkuNjUyMzQgMy4zMDYzMiA5Ljc1NjUxIDMuNDEzNDhDOS44NjA2OCAzLjUyMDY0IDkuOTI0NDggMy42Njc5OSA5LjkyNDQ4IDMuODMxNDFWNi45NDE3MUwxMi4xODM2IDguMzIwMDVDMTIuMzE5IDguNDAzMSAxMi40MTAyIDguNTM1NzEgMTIuNDQ2NiA4LjY4MTcyQzEyLjQ4MzEgOC44Mjc3MiAxMi40NjYxIDguOTg4NDYgMTIuMzg1NCA5LjEyNzc3VjkuMTI5MTFDMTIuMzA0NyA5LjI2ODQyIDEyLjE3NTggOS4zNjIxOCAxMi4wMzM5IDkuMzk5NjlDMTEuODkxOSA5LjQzNzE5IDExLjczNTcgOS40MTk3OCAxMS42MDAzIDkuMzM2NzNIMTEuNTk5TDkuMDcxNjEgNy43OTQ5N0M4Ljk4NDM4IDcuNzQ1NDEgOC45MTI3NiA3LjY3MzA4IDguODYwNjggNy41ODczNUM4LjgwNzI5IDcuNDk3NiA4Ljc3NjA0IDcuMzkxNzggOC43NzYwNCA3LjI3OTI3VjMuODMxNDFaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTMuNTEzMDIgMC42ODc2MjJDNS40NTMxMiAwLjY4NzYyMiA3LjAyNjA0IDIuMzA1NzMgNy4wMjYwNCA0LjMwMTU4QzcuMDI2MDQgNi4yOTc0MyA1LjQ1MzEyIDcuOTE1NTQgMy41MTMwMiA3LjkxNTU0QzEuNTcyOTIgNy45MTU1NCAwIDYuMjk3NDMgMCA0LjMwMTU4QzAgMi4zMDU3MyAxLjU3MjkyIDAuNjg3NjIyIDMuNTEzMDIgMC42ODc2MjJaTTMuNTEzMDIgNi4zNzM3OEw1LjM5ODQ0IDMuOTc2MDhINC4yMjc4NlYyLjcwMDg4SDIuNzk4MThWMy45NzYwOEgxLjYyNzZMMy41MTMwMiA2LjM3Mzc4WlwiIGZpbGw9XCIjRjA0NDM4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7Z2V0UmVjYXBWaWRlb0RhdGE/LmRvd25UaW1lID8/ICctLSd9fSBNaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBtcy0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkZyYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNMTMuNDM0OSAyLjVDMTQuODIzOCAyLjUgMTUuOTg3MSAzLjAxMzg5IDE2LjkyNDkgNC4wNDE2N0MxNy44NjI3IDUuMDY5NDQgMTguMzMxMyA2LjI5MTY3IDE4LjMzMDcgNy43MDgzM0MxOC4zMzA3IDcuOTU4MzMgMTguMzE2OCA4LjIwNSAxOC4yODkxIDguNDQ4MzNDMTguMjYxMyA4LjY5MTY3IDE4LjIxMjcgOC45MzExMSAxOC4xNDMyIDkuMTY2NjdIMTIuOTM0OUwxMS41MTgyIDcuMDQxNjdDMTEuNDQ4OCA2LjkzMDU2IDExLjM1MTYgNi44NDAyOCAxMS4yMjY2IDYuNzcwODNDMTEuMTAxNiA2LjcwMTM5IDEwLjk2OTYgNi42NjY2NyAxMC44MzA3IDYuNjY2NjdDMTAuNjUwMiA2LjY2NjY3IDEwLjQ4NjggNi43MjIyMiAxMC4zNDA3IDYuODMzMzNDMTAuMTk0NiA2Ljk0NDQ0IDEwLjA5NDEgNy4wODMzMyAxMC4wMzkxIDcuMjVMOC45MTQwNiAxMC42MjVMOC4xODQ5IDkuNTQxNjdDOC4xMTU0NSA5LjQzMDU2IDguMDE4MjMgOS4zNDAyOCA3Ljg5MzIzIDkuMjcwODNDNy43NjgyMyA5LjIwMTM5IDcuNjM2MjggOS4xNjY2NyA3LjQ5NzQgOS4xNjY2N0gxLjg1MTU2QzEuNzgyMTIgOC45MzA1NiAxLjczMzUxIDguNjkwODMgMS43MDU3MyA4LjQ0NzVDMS42Nzc5NSA4LjIwNDE3IDEuNjY0MDYgNy45NjQ3MiAxLjY2NDA2IDcuNzI5MTdDMS42NjQwNiA2LjI5ODYxIDIuMTI5MzQgNS4wNjk0NCAzLjA1OTkgNC4wNDE2N0MzLjk5MDQ1IDMuMDEzODkgNS4xNTAxNyAyLjUgNi41MzkwNiAyLjVDNy4yMDU3MyAyLjUgNy44MzQzNCAyLjYzMTk0IDguNDI0OSAyLjg5NTgzQzkuMDE1NDUgMy4xNTk3MiA5LjUzOTYyIDMuNTI3NzggOS45OTc0IDRDMTAuNDQxOCAzLjUyNzc4IDEwLjk1OTMgMy4xNTk3MiAxMS41NDk5IDIuODk1ODNDMTIuMTQwNSAyLjYzMTk0IDEyLjc2ODggMi41IDEzLjQzNDkgMi41Wk05Ljk5NzQgMTcuNUM5Ljc0NzQgMTcuNSA5LjUwNzY3IDE3LjQ1NDcgOS4yNzgyMyAxNy4zNjQyQzkuMDQ4NzggMTcuMjczNiA4Ljg0NDA2IDE3LjEzODMgOC42NjQwNiAxNi45NTgzTDMuMDgwNzMgMTEuMzU0MkMyLjk5NzQgMTEuMjcwOCAyLjkyMTAxIDExLjE4NzUgMi44NTE1NiAxMS4xMDQyQzIuNzgyMTIgMTEuMDIwOCAyLjcxMjY3IDEwLjkzMDYgMi42NDMyMyAxMC44MzMzSDcuMDM5MDZMOC40NTU3MyAxMi45NTgzQzguNTI1MTcgMTMuMDY5NCA4LjYyMjQgMTMuMTU5NyA4Ljc0NzQgMTMuMjI5MkM4Ljg3MjQgMTMuMjk4NiA5LjAwNDM0IDEzLjMzMzMgOS4xNDMyMyAxMy4zMzMzQzkuMzIzNzggMTMuMzMzMyA5LjQ5MDQ1IDEzLjI3NzggOS42NDMyMyAxMy4xNjY3QzkuNzk2MDEgMTMuMDU1NiA5LjkwMDE3IDEyLjkxNjcgOS45NTU3MyAxMi43NUwxMS4wODA3IDkuMzc1TDExLjc4OTEgMTAuNDU4M0MxMS44NzI0IDEwLjU2OTQgMTEuOTc2NiAxMC42NTk3IDEyLjEwMTYgMTAuNzI5MkMxMi4yMjY2IDEwLjc5ODYgMTIuMzU4NSAxMC44MzMzIDEyLjQ5NzQgMTAuODMzM0gxNy4zMzA3TDE3LjEyMjQgMTEuMDgzM0wxNi45MTQxIDExLjMzMzNMMTEuMzA5OSAxNi45NTgzQzExLjEyOTMgMTcuMTM4OSAxMC45MjggMTcuMjc0NCAxMC43MDU3IDE3LjM2NUMxMC40ODM1IDE3LjQ1NTYgMTAuMjQ3NCAxNy41MDA2IDkuOTk3NCAxNy41WlwiIGZpbGw9XCIjMTJCNzZBXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7Z2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA/PyAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjYW1lcmFWaWV3KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBteC0yIGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5MaXZlIFZpZXc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjYXBsYW9kaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTIyNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNhcG5vRGF0YVwiICBjbGFzcz1cInJvdyBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1tYXBcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFJlY2FwIHZpZGVvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlY2FwbGFvZGluZyAmJiAhcmVjYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTNcIj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgcmVjYXBzR3JvdXBlZDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBjdXJyZW50SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiBncm91cFwiIFtuZ0NsYXNzXT1cImNvbFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwYWlyLnRodW1iSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWRlb0NsaWNrKHBhaXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlLXRodW1iIG1iLTggZC1ibG9jayB3LTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiSW1hZ2Uge3sgaSArIDEgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbmRpdGlvbmFsbHkgZGlzcGxheSBQcmV2aW91cyBidXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCIgKGNsaWNrKT1cInByZXZTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29uZGl0aW9uYWxseSBkaXNwbGF5IE5leHQgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiICpuZ0lmPVwiY3VycmVudEluZGV4IDwgcmVjYXBzR3JvdXBlZC5sZW5ndGggLSAxXCIgKGNsaWNrKT1cIm5leHRTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmF2aWdhdGlvbiBEb3RzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2Fwc0dyb3VwZWQubGVuZ3RoID4gMVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlY2Fwc0dyb3VwZWQ7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGN1cnJlbnRJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU2xpZGUoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx2aWRlbyBjb250cm9scyBhdXRvcGxheSBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiBbc3JjXT1cImdldFJlY2FwRGF0YT8udmlkZW9VUkxcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgIHR5cGU9XCJ2aWRlby9tcDRcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgW3NyY109XCJnZXRSZWNhcERhdGE/LnZpZGVvVVJMXCIgdHlwZT1cInZpZGVvL29nZ1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvdmlkZW8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgI21hcENvbnRhaW5lciBzdHlsZT1cImhlaWdodDoyMzBweDtcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTNcIj5cclxuICAgICAgICA8bGliLXRyYWZmaWMtY2hhcnRzIGNsYXNzPVwibXktMlwiPjwvbGliLXRyYWZmaWMtY2hhcnRzPlxyXG4gICAgXHJcbiAgICAgICAgPGxpYi10cmFmZmljLWNhcmQtY2hhcnRzIGNsYXNzPVwibXktMlwiPjwvbGliLXRyYWZmaWMtY2FyZC1jaGFydHM+XHJcbiAgICAgICAgPGxpYi1pbWFnZS1kb2MgKm5nSWY9XCJzdG9yZUlkYXJyYXk/Lmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwibXktMlwiPjwvbGliLWltYWdlLWRvYz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5QZXJmb3JtYW5jZSBNYXRyaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDMyXzgwMDM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MzJfODAwMzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTMgYWxpZ24taXRlbXMtY2VudGVyIHctNzVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0LXNtIGZvcm0tc2VsZWN0IG1lLTIgZHJvcHNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9vdGZhbGxWYWx1ZVwiIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdldEZpbHRlcmVkRm9vdGZhbGxEYXRhc2V0cygpXCIgW2lkXT1cIm9iai5sYWJlbFwiIFt2YWx1ZV09XCJvYmoudmFsdWVcIj57e29iai5sYWJlbH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj5Wczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0LXNtIGZvcm0tc2VsZWN0IG1zLTIgZHJvcHNlbGVjdFwiIFsobmdNb2RlbCldPVwiYm91bmNlVmFsdWVcIiAoY2hhbmdlKT1cIm9uQm91bmNlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvYmogb2YgZ2V0RmlsdGVyZWRCb3VuY2VEYXRhc2V0cygpXCIgW2lkXT1cIm9iai5sYWJlbFwiIFt2YWx1ZV09XCJvYmoudmFsdWVcIj57e29iai5sYWJlbH19PC9vcHRpb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwZXJmb3JtYW5jZUxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGVyZm9ybWFuY2Vub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC0yMCBtYi02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC0yMCBjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhLXRhYmxlXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMge3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX0gdnMge3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcGVyZm9ybWFuY2VMb2FkaW5nICYmICFwZXJmb3JtYW5jZW5vRGF0YVwiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnQtY2hhcnQgei0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhpcy1sYWJlbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFggQXhpcyBMYWJlbCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1heGlzLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2JvdW5jZUxhYmVsIHwgdGl0bGVjYXNlfX0gLT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBZIEF4aXMgTGFiZWwgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInktYXhpcy1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX0gLT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUb3AgTGVmdCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SGlnaCA8c3BhbiAqbmdJZj1cImZvb3RmYWxsTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9vdGZhbGxMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj4sIExvdyA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2JvdW5jZUxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwhLS0gVG9wIFJpZ2h0IFF1YWRyYW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50XCIgaWQ9XCJxMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5IaWdoIDxzcGFuICpuZ0lmPVwiZm9vdGZhbGxMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb290ZmFsbExhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPiwgSGlnaCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2JvdW5jZUxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIExlZnQgUXVhZHJhbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnRcIiBpZD1cInEzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkxvdyA8c3BhbiAqbmdJZj1cImZvb3RmYWxsTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9vdGZhbGxMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj4sIExvdyA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2JvdW5jZUxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIFJpZ2h0IFF1YWRyYW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50XCIgaWQ9XCJxNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Mb3cgPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBIaWdoIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Ym91bmNlTGFiZWx8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcG9pbnQgb2YgcG9pbnRzXCIgY2xhc3M9XCJwb2ludFwiIFtuZ1N0eWxlXT1cInsnYm90dG9tJzogcG9pbnQudG9wLCAnbGVmdCc6IHBvaW50LmxlZnR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgKGNsaWNrKT1cInRvZ2dsZVRvb2x0aXAocG9pbnQubmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90XCIgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ2xpY2thYmxlIGxhYmVsIHRoYXQgdG9nZ2xlcyB0aGUgdG9vbHRpcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgei0xIG10LTRcIiAgc3R5bGU9XCJmb250LXNpemU6IDEwcHggIWltcG9ydGFudDtcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBwb2ludC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEN1c3RvbSBUb29sdGlwIFBvcHVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLXBvcHVwIHotNVwiICpuZ0lmPVwiYWN0aXZlVG9vbHRpcCA9PT0gcG9pbnQubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+e3sgcG9pbnQubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkF2ZyB7e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fToge3sgcG9pbnQuYXZnRm9vdGZhbGwgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXktMlwiPk9wZW4gVGltZTogPHN0cm9uZz57eyBwb2ludC5vcGVuVGltZSB9fTwvc3Ryb25nPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q2xvc2UgVGltZTogPHN0cm9uZz57eyBwb2ludC5jbG9zZVRpbWUgfX08L3N0cm9uZz48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBBZGQgbW9yZSBwb2ludHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC01IGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlpvbmUgRHdlbGwgVGltZSBTcGxpdCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDY1IDEwLjY2NjZWNy45OTk5Mk04LjAwMDY1IDUuMzMzMjVIOC4wMDczMk0xNC42NjczIDcuOTk5OTJDMTQuNjY3MyAxMS42ODE4IDExLjY4MjYgMTQuNjY2NiA4LjAwMDY1IDE0LjY2NjZDNC4zMTg3NSAxNC42NjY2IDEuMzMzOTggMTEuNjgxOCAxLjMzMzk4IDcuOTk5OTJDMS4zMzM5OCA0LjMxODAyIDQuMzE4NzUgMS4zMzMyNSA4LjAwMDY1IDEuMzMzMjVDMTEuNjgyNiAxLjMzMzI1IDE0LjY2NzMgNC4zMTgwMiAxNC42NjczIDcuOTk5OTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnb1RvWm9uZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeTEgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5HbyB0byBab25lczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2Fsc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgIT09J092ZXJhbGwgU3RvcmUnXCIgc3JjPVwiYXNzZXRzL3RhbmdvL0ltYWdlcy96b25lLWltZy5zdmdcIiBhbHQ9XCJTdG9yZSBMYXlvdXRcIiBjbGFzcz1cInB4LTUgaW1nLXNyYyBtYi0zIGJhY2tncm91bmQtaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA9PT0nT3ZlcmFsbCBTdG9yZSdcIiBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3pvbmUtaW1nMS5zdmdcIiBhbHQ9XCJTdG9yZSBMYXlvdXRcIiBjbGFzcz1cInB4LTUgaW1nLXNyYyBtYi0zIGJhY2tncm91bmQtaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNlbnRlcmVkXCI+Q2VudGVyZWQ8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb250ZW50XCIgKm5nRm9yPVwibGV0IHBvaW50IG9mIHpvbmVEd2VsbFRpbWVTcGxpdERhdGFcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgIT09J092ZXJhbGwgU3RvcmUnXCIgY2xhc3M9XCJ0b3Atem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXpvbmVcIj57e3pvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgOidGcm9udCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj5Ed2VsbCB0aW1lOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWUgOictLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA9PT0nT3ZlcmFsbCBTdG9yZSdcIiBjbGFzcz1cImNlbnRlcmVkLXpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtem9uZVwiPnt7em9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA6J0Zyb250J319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lOictLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lICE9PSdPdmVyYWxsIFN0b3JlJ1wiIGNsYXNzPVwiYm90dG9tLXpvbmUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXpvbmVcIj57e3pvbmVEd2VsbFRpbWVTcGxpdERhdGFbMV0/LnpvbmVOYW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsyXT8uem9uZU5hbWUgIDogJ0JhY2snfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+IENvbmM6IHt7IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMV0/LmNvbmNlbnRyYXRpb25SYXRlID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsyXT8uY29uY2VudHJhdGlvblJhdGU6Jy0tJyB9fSUgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj5Ed2VsbCB0aW1lOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzFdPy5kd2VsbFRpbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzJdPy5kd2VsbFRpbWU6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwicHgtNSBpbWctc3JjIG1iLTNcIiBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3pvbmUtaW1nLnN2Z1wiIGFsdD1cIlwiPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB4LTUgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5TdG9yZSBPcGVyYXRpb25zIFxyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQzMl84MDAzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b24gIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeTEgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+R28gdG8gVHJheDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyB0ZXh0LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LXRpdGxlXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z09wZW5UaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP3N0b3JlT3BlcmF0aW9uRGF0YT8ub3ZlcmFsbD8uYXZnT3BlblRpbWU6Jy0tJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gT3BlbiBUaW1lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC01IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMDZcIiBoZWlnaHQ9XCIyXCIgdmlld0JveD1cIjAgMCAzMjYgMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaW5lIHkxPVwiMC43NVwiIHgyPVwiMzU2XCIgeTI9XCIwLjc1XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyB0ZXh0LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LXRpdGxlXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z0Nsb3NlVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z0Nsb3NlVGltZTonLS0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+PHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBDbG9zZSBUaW1lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIxIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmVcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LnN0b3JlTmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVPcGVyYXRpb25EYXRhPy50b3BMYXRlT3Blbj8uc3RvcmVOYW1lIDonLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXIgbXQtMlwiPlRvcCBMYXRlIE9wZW48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgaC03NXB4IG10LTMgbXgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMVwiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyMVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy50b3BMYXRlT3Blbj8uYXZnU3RvcmVPcGVuVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LmF2Z1N0b3JlT3BlblRpbWU6Jy0tJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcuIFN0b3JlIE9wZW5pbmcgVGltZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIxIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmVcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wRWFybHlDbG9zZT8uc3RvcmVOYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LnN0b3JlTmFtZSA6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIG10LTJcIj5Ub3AgRWFybHkgQ2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgaC03NXB4IG10LTMgbXgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMVwiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyMVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5hdmdTdG9yZUNsb3NlVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wRWFybHlDbG9zZT8uYXZnU3RvcmVDbG9zZVRpbWU6Jy0tJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcuIFN0b3JlIENsb3NpbmcgVGltZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlN1bW1hcnkgVGFibGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZmlsdGVyIFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBmaWx0ZXIgRW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uVmFsdWVUeXBlKCdzdW0nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45OTkzNSA0LjE2Njc1VjE1LjgzMzRNNC4xNjYwMiAxMC4wMDAxSDE1LjgzMjdcIiBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPlN1bTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25WYWx1ZVR5cGUoJ2F2ZXJhZ2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTcuNUg4LjMzMzMzQzUuNTgzMzMgMTcuNSA0LjIwODMzIDE3LjUgMy4zNTQxNyAxNi42NDU4QzIuNSAxNS43OTE3IDIuNSAxNC40MTY3IDIuNSAxMS42NjY3VjIuNU01IDEwSDUuMDA3NU03LjQ5OTE3IDEwSDcuNTA1ODNNOS45OTc1IDEwSDEwLjAwNDJNMTIuNDk1OCAxMEgxMi41MDMzTTE0Ljk5NDIgMTBIMTUuMDAxN00xNy40OTI1IDEwSDE3LjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01IDUuODMzNDFDNS41NjA4MyA0Ljg5ODQxIDYuMzIyNSA0LjE2Njc1IDcuNDk0MTcgNC4xNjY3NUMxMi40NDY3IDQuMTY2NzUgOS42NjI1IDE0LjE2NjcgMTQuOTg1IDE0LjE2NjdDMTYuMTY1IDE0LjE2NjcgMTYuOTIxNyAxMy40MzAxIDE3LjUgMTIuNTAwMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+QXZlcmFnZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0WExTWCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBzdW1tYXJ5IHRhYmxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2Fsc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCI+U3RvcmUgTmFtZSA8c3ZnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVJZCcpXCI+U3RvcmUgSUQgPHN2ZyAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZGF0ZScpXCI+RGF0ZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZm9vdGZhbGxDb3VudCcpXCI+Rm9vdGZhbGwgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdmb290ZmFsbENvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdmb290ZmFsbENvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2JvdW5jZWRDb3VudCcpXCI+Qm91bmNlZCBGb290ZmFsbDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYm91bmNlZENvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdib3VuY2VkQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZW5nYWdlcnNDb3VudCcpXCI+RW5nYWdlcnMgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdlbmdhZ2Vyc0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdlbmdhZ2Vyc0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ21pc3NlZE9wcG9ydHVuaXR5Q291bnQnKVwiPk1pc3NlZCBPcHBvcnR1bml0eTxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnbWlzc2VkT3Bwb3J0dW5pdHlDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnbWlzc2VkT3Bwb3J0dW5pdHlDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdwb3RlbnRpYWxCdXllcnNDb3VudCcpXCI+UG90ZW50aWFsIEJ1eWVycyA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3BvdGVudGlhbEJ1eWVyc0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdwb3RlbnRpYWxCdXllcnNDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjb252ZXJzaW9uUmF0ZScpXCI+Q29udmVyc2lvbiBSYXRlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnY29udmVyc2lvblJhdGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NvbnZlcnNpb25SYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2F2Z0R3ZWxsVGltZScpXCI+QXZnLkR3ZWxsIFRpbWUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdEd2VsbFRpbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F2Z0R3ZWxsVGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdhdmdJbmZyYURvd250aW1lJylcIj5BdmcuRHdlbGwgRG93blRpbWUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdJbmZyYURvd250aW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdJbmZyYURvd250aW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2JlbGxvdzEyJylcIj5CZWxsb3cxMiA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2JlbGxvdzEyJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdiZWxsb3cxMicgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCcxMy0xOScpXCI+MTMtMTkgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICcxMy0xOScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnMTMtMTknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnMjAtMzAnKVwiPjIwLTMwIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnMjAtMzAnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzIwLTMwJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzMxLTQ1JylcIj4zMS00NSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzMxLTQ1JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICczMS00NScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCc0Ni01OScpXCI+NDYtNTkgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICc0Ni01OScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnNDYtNTknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnNjAgYWJvdmUnKVwiPjYwIGFib3ZlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnNjAgYWJvdmUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzYwIGFib3ZlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ21hbGUnKVwiPk1hbGUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdtYWxlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdtYWxlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2ZlbWFsZScpXCI+RmVtYWxlIDxzdmcgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdmZW1hbGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2ZlbWFsZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvYmogb2YgZ2V0U3VtbWFyeVRhYmxlRGF0YTtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIChjbGljayk9XCJzdG9yZVZpZXcob2JqKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LWNhcGl0YWxpemUgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzdG9yZVZpZXcob2JqLnN0b3JlSWQpXCI+e3tvYmouc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5zdG9yZUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm9iaj8uZGF0ZVwiPnt7b2JqPy5kYXRlIHwgZGF0ZTonTU1NIGRkLCB5eXl5J319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouZm9vdGZhbGxDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYm91bmNlZENvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5lbmdhZ2Vyc0NvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5taXNzZWRPcHBvcnR1bml0eUNvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5wb3RlbnRpYWxCdXllcnNDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouY29udmVyc2lvblJhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmF2Z0R3ZWxsVGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYXZnSW5mcmFEb3dudGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYmVsb3cxMn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbJzEzLTE5J119fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqWycyMC0zMCddfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialsnMzEtNDUnXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbXCI0Ni01OVwiXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbXCI2MCBhYm92ZVwiXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmoubWFsZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouZmVtYWxlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJwYWdlU2l6ZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
1249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQU1ULFNBQVMsRUFFVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sd0JBQXdCO0lBNkZ6QjtJQUNBO0lBQ0E7SUFBNEI7SUFBc0I7SUFDbEQ7SUFBK0I7SUFDL0I7SUFBOEI7SUFBNEI7SUFoRzVELFFBQVEsQ0FBVztJQUNuQixlQUFlLENBQVc7SUFDMUIsdUJBQXVCLENB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bkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE5nWm9uZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSG9zdExpc3RlbmVyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW01IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1XCI7XHJcbmltcG9ydCAqIGFzIGFtNXh5IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3h5XCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvdGhlbWVzL0FuaW1hdGVkXCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfUmVzcG9uc2l2ZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvUmVzcG9uc2l2ZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTVwZXJjZW50IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3BlcmNlbnRcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtYXBib3hnbCBmcm9tICdtYXBib3gtZ2wnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBWaWRlb1VybENvbXBvbmVudCB9IGZyb20gXCIuLi92aWRlby11cmwvdmlkZW8tdXJsLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRyYWZmaWMtYW5hbHlzaXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWZmaWNBbmFseXNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGxpbmVyb290OiBhbTUuUm9vdDtcclxuICBwcml2YXRlIGJvdW5jZWRsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBwb3RlbnRpYWxCdXllcnNsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBlbmdhZ2Vyc2xpbmVyb290OiBhbTUuUm9vdDtcclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0RGlyZWN0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xyXG4gIHByaXZhdGUgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGdldENhcmREYXRhOiBhbnkgPSBbXTtcclxuICBoZWF0TWFwRGF0YTogYW55ID0gW107XHJcbiAgZ2V0Q2FyZEdyYXBoRGF0YTogYW55O1xyXG4gIGdldFN1bW1hcnlUYWJsZURhdGE6IGFueTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgdG90YWxJdGVtcyA9IDE7XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gIHBhZ2VTaXplID0gMTA7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIGxpbWl0OiBudW1iZXIgPSAxMDtcclxuICBnZXRSZWNhcFZpZGVvRGF0YTogYW55O1xyXG4gIHRhYmxlb2JqOiBhbnk7XHJcbiAgaGVhdE1hcHJvb3Q6IGFtNS5Sb290O1xyXG4gIHZhbHVlVHlwZT1cImFjdHVhbFwiXHJcbiAgZGF0ZVR5cGU9XCJkYWlseVwiO1xyXG4gIHBvaW50czphbnkgPSBbXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgdHlwZVZhbHVlOiBhbnkgPSdzdW0nO1xyXG4gIHZhbHVlQ29udmVyc2lvblJhdGU6IGFueTtcclxuICBjb252ZXJzaW9uVmFsdWU6IGFueT0nJztcclxuICBzZWFyY2hWYWx1ZTogYW55O1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPXRydWU7XHJcbiAgbm9EYXRhOiBib29sZWFuID1mYWxzZTtcclxuICBjYXJkbG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICBjYXJkTm9kYXRhOiBib29sZWFuID1mYWxzZTtcclxuICBoZWF0bG9hZGluZyA9IHRydWVcclxuICBoZWF0bm9EYXRhID0gZmFsc2VcclxuICBzdG9yZUlkYXJyYXk6IGFueSA9W107XHJcbiAgZ2V0UmVjYXBEYXRhOiBhbnk9W107XHJcbiAgZm9ybTogYW55O1xyXG4gIGZvb3RmYWxsVmFsdWU6IGFueTtcclxuICBkYXRlTGVuZ3RoOiBudW1iZXI7XHJcbiAgcGVyZm9ybWFuY2Vub0RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIHBlcmZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICB6b25lRHdlbGxUaW1lU3BsaXREYXRhOiBhbnk9W107XHJcbiAgc3RvcmVPcGVyYXRpb25EYXRhOiBhbnk9W107XHJcbiAgZm9vdGZhbGxOYW1lOiBzdHJpbmc9J0Zvb3RmYWxsJztcclxuICBib3VuY2VMYWJlbDogYW55O1xyXG4gIGZvb3RmYWxsTGFiZWw6IGFueTtcclxuICBjb2xWYWx1ZTogYW55O1xyXG4gIHJlY2FwbGFvZGluZzogYm9vbGVhbjtcclxuICByZWNhcG5vRGF0YTogYm9vbGVhbjtcclxuICByZWNhcHNHcm91cGVkOiBhbnlbXT1bXTtcclxuICBpc0F2ZXJhZ2U6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVG9nZ2xlIHN0YXRlIGZvciB0aGUgc3dpdGNoXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudG9vbHRpcC1wb3B1cCwgLmxhYmVsJyk7XHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUb29sdGlwID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgYWN0aXZlVG9vbHRpcDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGF1TG9jYXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG1hcE9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMgPSB7XHJcbiAgICBtYXBJZDogXCJERU1PX01BUF9JRFwiLFxyXG4gICAgY2VudGVyOiB7IGxhdDogMCwgbG5nOiAwIH0sICAvLyBJbml0aWFsIGNlbnRlclxyXG4gICAgem9vbTogNCxcclxuICB9O1xyXG5cclxuICBwZXJmb3JtYW5jZURhdGE6YW55ID0gW107XHJcbiAgbXBhbG9hZGluZyA9dHJ1ZTtcclxuICBtYXBub0RhdGE9IGZhbHNlO1xyXG4gIGZvb3RmYWxsZGF0YXNldHMgPSBbXHJcbiAgICB7IHZhbHVlOiAnZm9vdGZhbGwnLCBsYWJlbDogJ0Zvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2JvdW5jZWQnLCBsYWJlbDogJ0JvdW5jZWQgRm9vdGZhbGwnIH0sXHJcbiAgICB7IHZhbHVlOiAnZW5nYWdlcicsIGxhYmVsOiAnRW5nYWdlcnMnIH0sXHJcbiAgICB7IHZhbHVlOiAnbWlzc2VkT3Bwb3J0dW5pdHknLCBsYWJlbDogJ01pc3NlZCBPcHBvcnR1bml0eScgfSxcclxuICAgIHsgdmFsdWU6ICdwb3RlbnRpYWxCdXllcicsIGxhYmVsOiAnUG90ZW50aWFsIEJ1eWVyJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2NvbnZlcnNpb24nLCBsYWJlbDogJ0NvbnZlcnNpb24nIH1cclxuICBdO1xyXG4gIGJvdW5jZWRhdGFzZXRzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2Zvb3RmYWxsJywgbGFiZWw6ICdGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdib3VuY2VkJywgbGFiZWw6ICdCb3VuY2VkIEZvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2VuZ2FnZXInLCBsYWJlbDogJ0VuZ2FnZXJzJyB9LFxyXG4gICAgeyB2YWx1ZTogJ21pc3NlZE9wcG9ydHVuaXR5JywgbGFiZWw6ICdNaXNzZWQgT3Bwb3J0dW5pdHknIH0sXHJcbiAgICB7IHZhbHVlOiAncG90ZW50aWFsQnV5ZXInLCBsYWJlbDogJ1BvdGVudGlhbCBCdXllcicgfSxcclxuICAgIHsgdmFsdWU6ICdjb252ZXJzaW9uJywgbGFiZWw6ICdDb252ZXJzaW9uJyB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICApIHtcclxuICAgXHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoXCJ0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwOiBOZ2JUb29sdGlwO1xyXG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xyXG4gIGJvdW5jZVZhbHVlOmFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIChtYXBib3hnbCBhcyBhbnkpLmFjY2Vzc1Rva2VuID0gJ3BrLmV5SjFJam9pWW1Gc1lXcHBkR0Z1WjI4aUxDSmhJam9pWTIwd1oyeGllbTU1TURGeFlUSjNiMjF6YjNGak5IZHdheUo5Lm5uSUl6dDdPZVlsWUh1ZkdFOGxGV1EnO1xyXG5cclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoZGF0YSAhPT1udWxsIHx8IGRhdGE/LmNsaWVudCAhPT0gbnVsbCB8fCAhZGF0YT8uc3RvcmVzLmxlbmd0aCl7XHJcbiAgICAgICAgLy8gT25seSBwcm9jZXNzIHRoZSBsYXRlc3QgZGF0YSBhZnRlciBkZWJvdW5jZSB0aW1lXHJcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmRhdGVMZW5ndGggPSBnZXREYXlzQmV0d2VlbkRhdGVzKGRhdGE/LmRhdGUuc3RhcnREYXRlLCBkYXRhPy5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGVMZW5ndGggPiAyOClcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSBcIm1vbnRobHlcIjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGVMZW5ndGggPiA1KVxyXG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IFwid2Vla2x5XCI7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGVMZW5ndGggPT09IDApXHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0gXCJkYWlseVwiO1xyXG4gICAgICAgIHRoaXMudmFsdWVUeXBlPVwiYWN0dWFsXCJcclxuICAgICAgICB0aGlzLmlzQXZlcmFnZSA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgICAgICB0aGlzLnRhYmxlb2JqID0ge1xyXG4gICAgICAgICAgZnJvbURhdGU6IGRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAgICAgdG9EYXRlOiBkYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgICAgICBzdG9yZUlkOiBkYXRhPy5zdG9yZXMuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGRhdGE/LmNsaWVudCA/IGRhdGE/LmNsaWVudCA6JycsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IHRoaXMudmFsdWVUeXBlLFxyXG4gICAgICAgICAgZGF0ZVR5cGU6IHRoaXMuZGF0ZVR5cGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDYWxsIG1ldGhvZHMgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICAgICAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZVZhbHVlKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRNYXAoKTtcclxuICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA9PT0gMSlcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjYXAoKTtcclxuICAgICAgICAvLyB0aGlzLmluaXRNYXAoKTtcclxuICAgICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IFwiRGVmYXVsdCBUb29sdGlwIFRleHRcIjtcclxufVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IHRoaXMuZm9vdGZhbGxkYXRhc2V0c1swXS52YWx1ZTtcclxuICAgIHRoaXMuYm91bmNlVmFsdWUgPSB0aGlzLmJvdW5jZWRhdGFzZXRzWzFdLnZhbHVlO1xyXG4gICAgdGhpcy5mb290ZmFsbExhYmVsID0gdGhpcy5mb290ZmFsbGRhdGFzZXRzWzBdLmxhYmVsO1xyXG4gICAgdGhpcy5ib3VuY2VMYWJlbCA9IHRoaXMuYm91bmNlZGF0YXNldHNbMV0ubGFiZWw7XHJcbiAgfVxyXG4gIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ib3VuY2VkYXRhc2V0cy5maWx0ZXIoZGF0YXNldCA9PiBkYXRhc2V0LnZhbHVlICE9PSB0aGlzLmZvb3RmYWxsVmFsdWUpO1xyXG4gIH1cclxuICBcclxuICAvLyBGaWx0ZXIgdGhlIGZvb3RmYWxsIG9wdGlvbnMgd2hlbiB0aGUgYm91bmNlVmFsdWUgY2hhbmdlc1xyXG4gIGdldEZpbHRlcmVkRm9vdGZhbGxEYXRhc2V0cygpIHtcclxuICAgIHJldHVybiB0aGlzLmZvb3RmYWxsZGF0YXNldHMuZmlsdGVyKGRhdGFzZXQgPT4gZGF0YXNldC52YWx1ZSAhPT0gdGhpcy5ib3VuY2VWYWx1ZSk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IGV2dC50YXJnZXQudmFsdWU7XHJcbmlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0JvdW5jZWQgRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0VuZ2FnZXJzJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnTWlzc2VkIE9wcG9ydHVuaXR5J1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnUG90ZW50aWFsIEJ1eWVyJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gIHRoaXMuZm9vdGZhbGxMYWJlbCA9ICdjb252ZXJzaW9uJ1xyXG4gICAgaWYodGhpcy5mb290ZmFsbFZhbHVlICE9PSB0aGlzLmJvdW5jZVZhbHVlKVxyXG4gICAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgICBlbHNlIFxyXG4gICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTYW1lIHZhbHVlIG5vdCBmaWx0ZXJlZCcpXHJcbiAgfVxyXG4gIG9uQm91bmNlQ2hhbmdlKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmJvdW5jZVZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcclxuICAgIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnQm91bmNlZCBGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnRW5nYWdlcnMnXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdNaXNzZWQgT3Bwb3J0dW5pdHknXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdQb3RlbnRpYWwgQnV5ZXInXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gICAgICB0aGlzLmJvdW5jZUxhYmVsID0gJ2NvbnZlcnNpb24nXHJcbiAgICBpZih0aGlzLmZvb3RmYWxsVmFsdWUgIT09IHRoaXMuYm91bmNlVmFsdWUpXHJcbiAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgZWxzZSBcclxuICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NhbWUgdmFsdWUgbm90IGZpbHRlcmVkJylcclxuICB9XHJcbiAgY29udmVydFBlcmNlbnRUb1BpeGVscyhwZXJjZW50OiBzdHJpbmcsIG1heFBlcmNlbnQ6IG51bWJlciwgYmFzZURpbWVuc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIC8vIFJlbW92ZSB0aGUgJyUnIHNpZ24gYW5kIHBhcnNlIHRoZSB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KHBlcmNlbnQucmVwbGFjZSgnJScsICcnKSk7XHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gMDtcclxuICBcclxuICAgIC8vIENhbGN1bGF0ZSBwaXhlbCB2YWx1ZSBiYXNlZCBvbiB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGFuZCBiYXNlIGRpbWVuc2lvblxyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFBlcmNlbnQpICogYmFzZURpbWVuc2lvbjtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldE1heFBlcmNlbnRhZ2UoZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgLy8gRXh0cmFjdCBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2UgdmFsdWUgZnJvbSB0aGUgZmllbGRcclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbVtmaWVsZF0pIHx8IDApKTtcclxuICB9XHJcbiAgXHJcblxyXG5cclxuICBub3JtYWxpemVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgbWF4VG9wUGVyY2VudCA9IE1hdGgubWF4KC4uLmRhdGEubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtLnRvcC5yZXBsYWNlKCclJywgJycpKSkpO1xyXG4gICAgY29uc3QgbWF4TGVmdFBlcmNlbnQgPSBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbS5sZWZ0LnJlcGxhY2UoJyUnLCAnJykpKSk7XHJcbiAgXHJcbiAgICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAuLi5pdGVtLFxyXG4gICAgICB0b3A6IHRoaXMuc2NhbGVQZXJjZW50KGl0ZW0udG9wLCBtYXhUb3BQZXJjZW50KSArICclJyxcclxuICAgICAgbGVmdDogdGhpcy5zY2FsZVBlcmNlbnQoaXRlbS5sZWZ0LCBtYXhMZWZ0UGVyY2VudCkgKyAnJSdcclxuICAgIH0pKTtcclxuICB9XHJcbiAgXHJcbiAgc2NhbGVQZXJjZW50KHBlcmNlbnQ6IHN0cmluZywgbWF4UGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBlcmNlbnRWYWx1ZSA9IHBhcnNlRmxvYXQocGVyY2VudC5yZXBsYWNlKCclJywgJycpKTtcclxuICAgIHJldHVybiAoKHBlcmNlbnRWYWx1ZSAvIG1heFBlcmNlbnQpICogMTAwKS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuLy8gVG9nZ2xlIHRoZSB0b29sdGlwIGRpc3BsYXlcclxudG9nZ2xlVG9vbHRpcChwb2ludE5hbWU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlVG9vbHRpcCA9IHRoaXMuYWN0aXZlVG9vbHRpcCA9PT0gcG9pbnROYW1lID8gbnVsbCA6IHBvaW50TmFtZTtcclxufVxyXG5cclxucGVyZm9ybWFuY2UoKXtcclxuICB0aGlzLnBlcmZvcm1hbmNlTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5wZXJmb3JtYW5jZW5vRGF0YSA9IGZhbHNlO1xyXG4gIGxldCBvYmogPSB7XHJcbiAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgIHByb2Nlc3N0eXBlMTogdGhpcy5mb290ZmFsbFZhbHVlLFxyXG4gICBwcm9jZXNzdHlwZTIgOiB0aGlzLmJvdW5jZVZhbHVlXHJcbiAgfTtcclxuICB0aGlzLnNlcnZpY2UucGVyZm9ybWFuY2VNYXRyaXgob2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICA/LnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSByZXM/LmRhdGE/LnBlcmZvcm1hbmNlRGF0YVxyXG4gICAgICAgIHRoaXMucGVyZm9ybWFuY2VEYXRhID0gdGhpcy5ub3JtYWxpemVEYXRhKHRoaXMucGVyZm9ybWFuY2VEYXRhKTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgbWF4aW11bSBwZXJjZW50YWdlc1xyXG4gICAgICAgIGNvbnN0IG1heFRvcCA9IE1hdGgubWF4KC4uLnRoaXMucGVyZm9ybWFuY2VEYXRhLm1hcCgoaXRlbTphbnkpID0+IHBhcnNlRmxvYXQoaXRlbS50b3AucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBjb25zdCBtYXhMZWZ0ID0gTWF0aC5tYXgoLi4udGhpcy5wZXJmb3JtYW5jZURhdGEubWFwKChpdGVtOmFueSkgPT4gcGFyc2VGbG9hdChpdGVtLmxlZnQucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDb252ZXJ0IHBlcmZvcm1hbmNlIGRhdGEgdG8gcGl4ZWwgdmFsdWVzXHJcbiAgICAgICAgdGhpcy5wb2ludHMgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gKHtcclxuICAgICAgICAgIG5hbWU6IGRhdGEuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgYXZnRm9vdGZhbGw6IGRhdGEuYXZnLFxyXG4gICAgICAgICAgb3BlblRpbWU6IGRhdGEuYXZnT3BlblRpbWUsXHJcbiAgICAgICAgICBjbG9zZVRpbWU6IGRhdGEuYXZnQ2xvc2VUaW1lLFxyXG4gICAgICAgICAgdG9wOiB0aGlzLmNvbnZlcnRQZXJjZW50VG9QaXhlbHMoZGF0YS50b3AsIG1heFRvcCwgNTAwKSArICdweCcsIC8vIEFzc3VtaW5nIDUwMHB4IGFzIHRoZSBiYXNlIGhlaWdodFxyXG4gICAgICAgICAgbGVmdDogdGhpcy5jb252ZXJ0UGVyY2VudFRvUGl4ZWxzKGRhdGEubGVmdCwgbWF4TGVmdCwgNTAwKSArICdweCcgIC8vIEFzc3VtaW5nIDEwMDBweCBhcyB0aGUgYmFzZSB3aWR0aFxyXG4gICAgICAgIH0pKTsgXHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nIHtcclxuICAgIC8vIExvZ2ljIHRvIGRldGVybWluZSB0aGUgdG9vbHRpcCB0ZXh0XHJcbiAgICByZXR1cm4gXCJEeW5hbWljIFRvb2x0aXAgVGV4dCBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldENhcmQoKSB7XHJcbiAgICB0aGlzLmhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGVcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9IHJlcz8uZGF0YT8uY2FyZDtcclxuICAgICAgICAgICAgdGhpcy5oZWF0TWFwRGF0YSA9IHJlcz8uZGF0YT8uZnVubmVsQ2hhcnQ7XHJcbiAgICAgICAgICAvLyAgIGlmKHRoaXMudmFsdWVUeXBlID09PSAnYXZlcmFnZScpe1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMuZm9vdGZhbGxOYW1lID0gJ0F2Zy4gRm9vdGZhbGwnXHJcbiAgICAgICAgICAvLyAgIHRoaXMudGFibGVvYmoudmFsdWVUeXBlID10aGlzLnZhbHVlVHlwZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgICAgICAgIC8vICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8uY291bnQ7XHJcbiAgICAgICAgICAvLyAgfSAgZWxzZSB7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnRm9vdGZhbGwnXHJcbiAgICAgICAgICAvLyAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICAgICAgICAvLyAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgLy8gICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8ucmF0ZTtcclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlXHJcbiAgICAgICAgICAgIHRoaXMuaGVhdE1hcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEgPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5oZWF0bm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0UmVjYXAoKSB7XHJcbiAgICB0aGlzLnJlY2FwbGFvZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlOyBkZWxldGUgdGhpcy50YWJsZW9iai5mcm9tRGF0ZTtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai50b0RhdGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZTsgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmouc2VhcmNoOyBkZWxldGUgdGhpcy50YWJsZW9iai5vZmZzZXQ7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnNvcnRCeTsgZGVsZXRlIHRoaXMudGFibGVvYmouc29ydDtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai5leHBvcnQ7XHJcbiAgICAgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZSA9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldFJlY2FwVmlkZW8odGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcERhdGEgPSByZXM/LmRhdGE/LnJlY2FwVmlkZW9EYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwUmVjYXBzKCk7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIHRoaXMucmVjYXBsYW9kaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWNhcG5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAgICBcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5yZWNhcGxhb2RpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ3JvdXBSZWNhcHMoKSB7XHJcbiAgICB0aGlzLnJlY2Fwc0dyb3VwZWQgPSBbXTtcclxuICAgIGxldCBncm91cFNpemUgPSB0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGggPT09IDEgPyAxIDogMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoOyBpICs9IGdyb3VwU2l6ZSkge1xyXG4gICAgICB0aGlzLnJlY2Fwc0dyb3VwZWQucHVzaCh0aGlzLmdldFJlY2FwRGF0YS5zbGljZShpLCBpICsgZ3JvdXBTaXplKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbFZhbHVlID0gdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoID09PSAxID8gJ2NvbC1tZC0xMicgOiAnY29sLW1kLTYnO1xyXG4gIH1cclxuICB2aWRlb0NsaWNrKG9iajphbnkpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZGVvVXJsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvVXJsID0gb2JqO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0ZT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgcHJldmlvdXNWYWx1ZTogYW55ID0gbnVsbDtcclxuICBjaGFuZ2VWYWx1ZShtZXRob2Q6IGFueSkge1xyXG4gICAgLy8gaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gbWV0aG9kKSB7XHJcbiAgICAvLyAgIC8vIElmIHRoZSBzYW1lIHZhbHVlIGlzIGNsaWNrZWQgYWdhaW4sIHJlc2V0IHRoZSB2YWx1ZXNcclxuICAgIC8vICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgIC8vICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gbnVsbDsgLy8gUmVzZXQgcHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIG5ldyB2YWx1ZSBhbmQgdXBkYXRlIGNvbnZlcnNpb24gcmF0ZVxyXG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnUG90ZW50aWFsIEJ1eWVycyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gVXBkYXRlIGNvbnZlcnNpb24gcmF0ZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIG1ldGhvZFxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1ZhbHVlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5yYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gJ2VuZ2FnZXJzJykge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdub2InKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5ub2Iubm9iO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgICAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcbiAgZ2V0Q2FyZEdyYXBoKCkge1xyXG4gICAgdGhpcy5jYXJkbG9hZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMuY2FyZE5vZGF0YSA9ZmFsc2U7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5ub3JtYWxpemVkRGF0YTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnByb2Nlc3NUeXBlO1xyXG4gICAgdGhpcy50YWJsZW9iai5kYXRlVHlwZSA9IHRoaXMuZGF0ZVR5cGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldENhcmRHcmFwaExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGhEYXRhID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmRsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTm9kYXRhID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5mb290ZmFsbGxpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5ib3VuY2VkbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLnBvdGVudGlhbGxpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVDaGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYoIXJlcyB8fCByZXMuY29kZSA9PT0gMjA0KXtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGhEYXRhPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmRsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTm9kYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnByb2Nlc3NUeXBlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoubm9ybWFsaXplZERhdGE7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5kYXRlVHlwZTtcclxuICAgICh0aGlzLnRhYmxlb2JqLmxpbWl0ID0gdGhpcy5saW1pdCksICh0aGlzLnRhYmxlb2JqLm9mZnNldCA9IHRoaXMub2Zmc2V0KTtcclxuICAgICh0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWUpLCBcclxuICAgICAodGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPSB0aGlzLnR5cGVWYWx1ZSk7XHJcbiAgICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0U3VtbWFyeVRhYmxlTGlzdCh0aGlzLnRhYmxlb2JqKVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdW1tYXJ5VGFibGVEYXRhID0gcmVzPy5kYXRhLnN1bW1hcnlEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YT8udG90YWxDb3VudDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7YGBcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAwO1xyXG4gICAgdGhpcy5saW1pdD0xMDtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IE51bWJlcihwYWdlT2Zmc2V0KTtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gdGhpcy5vZmZzZXQgPSB0aGlzLmN1cnJlbnRQYWdlIC0xO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMDtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZVR5cGUodHlwZTphbnkpe1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICAgdGhpcy50eXBlVmFsdWUgPXR5cGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9dHlwZTtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5saW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMubGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmJvdW5jZWRsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMuYm91bmNlZGxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2FnZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmhlYXRNYXByb290KSB7XHJcbiAgICAgICAgdGhpcy5oZWF0TWFwcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIGNhcmQgbGluZSBDaGFydHMgU3RhcnRcclxuXHJcbiAgZm9vdGZhbGxsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJGb290ZmFsbFwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5saW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMubGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIkZvb3RmYWxsXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpdGVtLmRhdGUpLmdldFRpbWUoKSwgLy8gQ29udmVydCBkYXRlIHN0cmluZyB0byB0aW1lc3RhbXBcclxuICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgIH0pKTtcclxuICAgICAvLyBFbnN1cmUgdGhhdCBkYXRhIGhhcyBhdCBsZWFzdCAyIHBvaW50cyBmb3IgbGluZSBjaGFydFxyXG4gICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBkdXBsaWNhdGVQb2ludCA9IHsgLi4uZGF0YVswXSB9OyAvLyBDbG9uZSB0aGUgZXhpc3RpbmcgcG9pbnRcclxuICAgICAgZHVwbGljYXRlUG9pbnQuZGF0ZSArPSAxOyAvLyBBZGQgYSBzbWFsbCBvZmZzZXQgdG8gdGhlIGRhdGVcclxuICAgICAgZGF0YS5wdXNoKGR1cGxpY2F0ZVBvaW50KTsgLy8gQWRkIHRoZSBkdXBsaWNhdGUgcG9pbnQgdG8gZGF0YVxyXG4gICAgfVxyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjUsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHsgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmxpbmVyb290ID0gcm9vdDtcclxuICB9LDApXHJcbiAgfVxyXG4gIGJvdW5jZWRsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJCb3VuY2VkUmF0ZVwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ib3VuY2VkbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIGxldCByb290OiBhbnk7XHJcbiAgICByb290ID0gYW01LlJvb3QubmV3KFwiQm91bmNlZFJhdGVcIik7XHJcbiAgICByb290LnNldFRoZW1lcyhbXHJcbiAgICAgIGFtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCksXHJcbiAgICAgIGFtNXRoZW1lc19SZXNwb25zaXZlLm5ldyhyb290KSxcclxuICAgIF0pO1xyXG4gICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgYW01eHkuWFlDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgIHBhblg6IHRydWUsXHJcbiAgICAgICAgcGFuWTogdHJ1ZSxcclxuICAgICAgICB3aGVlbFg6IFwicGFuWFwiLFxyXG4gICAgICAgIHdoZWVsWTogXCJ6b29tWFwiLFxyXG4gICAgICAgIHBpbmNoWm9vbVg6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIC8vIEFkZCBkYXRhXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuXHJcbiAgcG90ZW50aWFsbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiUG90ZW50aWFsQnV5ZXJzXCIpO1xyXG4gICAgICBpZiAoIWNoYXJ0RGl2KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIGxldCByb290OiBhbnk7XHJcbiAgICByb290ID0gYW01LlJvb3QubmV3KFwiUG90ZW50aWFsQnV5ZXJzXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uZGF0YS5tYXAoXHJcbiAgICAgIChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290ID0gcm9vdDtcclxuICB9LDApXHJcbiAgfVxyXG5cclxuICBlbmdhZ2Vyc2xpbmVDaGFydHMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVuZ2FnZXJzXCIpO1xyXG4gICAgICBpZiAoIWNoYXJ0RGl2KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2FnZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcImVuZ2FnZXJzXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpdGVtLmRhdGUpLmdldFRpbWUoKSwgLy8gQ29udmVydCBkYXRlIHN0cmluZyB0byB0aW1lc3RhbXBcclxuICAgICAgdmFsdWU6IE51bWJlcihpdGVtLnZhbHVlKSxcclxuICAgIH0pKTtcclxuICAgIGxldCBjdXJzb3IgPSBjaGFydC5zZXQoXHJcbiAgICAgIFwiY3Vyc29yXCIsXHJcbiAgICAgIGFtNXh5LlhZQ3Vyc29yLm5ldyhyb290LCB7XHJcbiAgICAgICAgYmVoYXZpb3I6IFwibm9uZVwiLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGN1cnNvci5saW5lWS5zZXQoXCJ2aXNpYmxlXCIsIGZhbHNlKTtcclxuICAgIC8vIENyZWF0ZSBheGVzXHJcbiAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5EYXRlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG1heERldmlhdGlvbjogMC4yLFxyXG4gICAgICAgIGJhc2VJbnRlcnZhbDogeyB0aW1lVW5pdDogXCJkYXlcIiwgY291bnQ6IDEgfSxcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwgeyBtaW5vckdyaWRFbmFibGVkOiB0cnVlIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHsgcGFuOiBcInpvb21cIiB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBzZXJpZXNcclxuICAgIGxldCBzZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgYW01eHkuTGluZVNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG5hbWU6IFwiU2VyaWVzXCIsXHJcbiAgICAgICAgeEF4aXM6IHhBeGlzLFxyXG4gICAgICAgIHlBeGlzOiB5QXhpcyxcclxuICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIHZhbHVlWEZpZWxkOiBcImRhdGVcIixcclxuICAgICAgICBzdHJva2U6IGFtNS5jb2xvcigweDAwYTNmZiksIC8vIFNldCB0aGUgbGluZSBjb2xvciBoZXJlIChyZWQgaW4gdGhpcyBjYXNlKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNlcmllcy5idWxsZXRzLnB1c2goZnVuY3Rpb24gKCkge1xyXG4gICAgICBsZXQgYnVsbGV0Q2lyY2xlID0gYW01LkNpcmNsZS5uZXcocm9vdCwge1xyXG4gICAgICAgIHJhZGl1czogMCxcclxuICAgICAgICBmaWxsOiBzZXJpZXMuZ2V0KFwiZmlsbFwiKVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGFtNS5CdWxsZXQubmV3KHJvb3QsIHtcclxuICAgICAgICBzcHJpdGU6IGJ1bGxldENpcmNsZVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHNlcmllcy5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgIHNlcmllcy5zZXQoXHJcbiAgICAgIFwidG9vbHRpcFwiLFxyXG4gICAgICBhbTUuVG9vbHRpcC5uZXcocm9vdCwge1xyXG4gICAgICAgIGxhYmVsVGV4dDogXCJ7dmFsdWVZfVwiLFxyXG4gICAgICAgIGdldEZpbGxGcm9tU3ByaXRlOiBmYWxzZSwgLy8gUHJldmVudHMgdGhlIHRvb2x0aXAgZnJvbSBpbmhlcml0aW5nIGNvbG9yIGZyb20gdGhlIHNwcml0ZVxyXG4gICAgICAgIGJhY2tncm91bmQ6IGFtNS5SZWN0YW5nbGUubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGZpbGw6IGFtNS5jb2xvcigweGRhZjFmZiksIC8vIFNldCB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kIGNvbG9yIGhlcmUgKGJsdWUgaW4gdGhpcyBjYXNlKVxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuZW5nYWdlcnNsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuICAvLyBjYXJkIGxpbmUgQ2hhcnRzIEVuZFxyXG5cclxuICBoZWF0TWFwKCkge1xyXG4gICAgdGhpcy5oZWF0bG9hZGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLmhlYXRub0RhdGEgPSBmYWxzZVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjaGFydGRpdlwiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5oZWF0TWFwcm9vdCkge1xyXG4gICAgICAgIHRoaXMuaGVhdE1hcHJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdCA9IGFtNS5Sb290Lm5ldyhcImNoYXJ0ZGl2XCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW2FtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCldKTtcclxuXHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTVwZXJjZW50LlNsaWNlZENoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuaGVhdE1hcERhdGE7XHJcblxyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTVwZXJjZW50LkZ1bm5lbFNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgIGFsaWduTGFiZWxzOiBmYWxzZSxcclxuICAgICAgICBvcmllbnRhdGlvbjogXCJob3Jpem9udGFsXCIsXHJcbiAgICAgICAgdmFsdWVGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGNhdGVnb3J5RmllbGQ6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBib3R0b21SYXRpbzogMSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLmFwcGVhcigpO1xyXG4gICAgLy8gVXBkYXRlIHRoZSBsYWJlbCB0ZW1wbGF0ZSB0byBpbmNsdWRlIHRoZSBwZXJjZW50YWdlXHJcbiAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgIHBvcHVsYXRlVGV4dDogdHJ1ZSxcclxuICAgICAgdGV4dDogXCJ7Y2F0ZWdvcnl9ICh7dmFsdWV9JSkgOiB7Y291bnR9XCIsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaGVhdE1hcHJvb3QgPSByb290O1xyXG4gICAgY2hhcnQuYXBwZWFyKDEwMDAsIDEwMCk7XHJcbiAgfSwwKTtcclxuXHJcbiAgfVxyXG5cclxuICB0eXBlOiBhbnkgPSBcImRhaWx5XCI7XHJcbiAgc2VsZWN0UGxhbih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICAvLyBUb2dnbGUgZnVuY3Rpb24gZm9yIHRoZSBzd2l0Y2hcclxuICB0b2dnbGVBdmVyYWdlKGV2dDphbnkpIHtcclxuICAgIHRoaXMuaXNBdmVyYWdlID0gZXZ0LnRhcmdldC5jaGVja2VkO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmxpbWl0OyBkZWxldGUgdGhpcy50YWJsZW9iai5leHBvcnQ7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5vZmZzZXQ7XHJcbiAgICBpZih0aGlzLmlzQXZlcmFnZSA9PT0gdHJ1ZSl7XHJcbiAgICB0aGlzLnZhbHVlVHlwZSA9ICdhdmVyYWdlJztcclxuICAgICB0aGlzLmZvb3RmYWxsTmFtZSA9ICdBdmcuIEZvb3RmYWxsJ1xyXG4gICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9dGhpcy52YWx1ZVR5cGU7XHJcbiAgIHRoaXMuY29udmVyc2lvblZhbHVlID0gJyc7XHJcbiAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgfSAgZWxzZSB7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnRm9vdGZhbGwnXHJcbiAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8ucmF0ZTtcclxuICB9XHJcbiAgdGhpcy5wcmV2aW91c1ZhbHVlID0gJ2Zvb3RmYWxsJzsgXHJcbiBcclxuICAgIHRoaXMuZ2V0Q2FyZCgpO1xyXG4gICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICB9XHJcblxyXG5cclxuICBjYW1lcmFWaWV3KCl7XHJcbiAgICB0aGlzLnN0b3JlSWRhcnJheSA9IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgIGxldCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJcIik7XHJcbiAgICBkYXRhLnN0b3JlID0gdGhpcy5zdG9yZUlkYXJyYXlbMF07XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dChkYXRhKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXNcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlbMF19LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRYTFNYKCkge1xyXG4gICAgdGhpcy50YWJsZW9iai5vZmZzZXQgPSAwO1xyXG4gICAgdGhpcy50YWJsZW9iai5saW1pdCA9IDEwMDAwO1xyXG4gICAgKHRoaXMudGFibGVvYmoudmFsdWVUeXBlID0gdGhpcy50eXBlVmFsdWUpO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IHRydWU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgLmdldFN1bW1hcnlUYWJsZUxpc3RFeHBvcnQodGhpcy50YWJsZW9iailcclxuICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuZXhjZWxTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIFwic3RvcmVzTGlzdFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHt9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmxpbWl0ID0gdGhpcy5saW1pdDtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydGVkQ29sdW1uID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouc29ydEJ5ID0gdGhpcy5zb3J0RGlyZWN0aW9uLCAvL1sxLT5hc2MsIC0xLT5ERXNjXVxyXG4gICAgdGhpcy50YWJsZW9iai5zb3J0ID0gdGhpcy5zb3J0ZWRDb2x1bW4sIC8vIENvbHVtbiBOYW1lXHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRNYXAoKSB7XHJcbiAgICB0aGlzLm1wYWxvYWRpbmcgPXRydWU7XHJcbiAgICB0aGlzLm1hcG5vRGF0YT0gZmFsc2U7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgc3RvcmVEYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5nZU1hcHMob2JqKT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09PSAyMDApe1xyXG4gICAgICAgICAgLy8gaWYgKHJlcyAmJiByZXMuZGF0YSAmJiByZXMuZGF0YS5zdG9yZURhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5hdUxvY2F0aW9ucyA9IHJlcy5kYXRhLnN0b3JlRGF0YTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgbWFwT3B0aW9ucyBjZW50ZXIgaWYgbmVlZGVkXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1TG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaXJzdExvY2F0aW9uID0gdGhpcy5hdUxvY2F0aW9uc1swXTtcclxuICAgICAgICAgICAgICBpZiAoZmlyc3RMb2NhdGlvbiAmJiB0eXBlb2YgZmlyc3RMb2NhdGlvbi5sYXQgPT09ICdudW1iZXInICYmIHR5cGVvZiBmaXJzdExvY2F0aW9uLmxuZyA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5tYXBPcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICBjZW50ZXI6IHsgbGF0OiBmaXJzdExvY2F0aW9uLmxhdCwgbG5nOiBmaXJzdExvY2F0aW9uLmxuZyB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7ICB0aGlzLmdldERhdGEoKTsgfSwxMDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge31cclxuICAgICAgICAgICAgfSBlbHNlIHt9XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB0aGlzLm1wYWxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5tYXBub0RhdGE9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIGlmKHJlcyA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubWFwbm9EYXRhPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm1wYWxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hdUxvY2F0aW9ucyA9W107XHJcbiAgICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubWFwbm9EYXRhPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXVMb2NhdGlvbnMgPVtdO1xyXG4gICAgICAgICAgdGhpcy5tcGFsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tYXBub0RhdGE9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgbWFwOiBtYXBib3hnbC5NYXA7XHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBtYXBDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFwJyk7XHJcbiAgICAgIGlmICghbWFwQ29udGFpbmVyKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAvLyBDaGVjayB0aGF0IGxvY2F0aW9ucyBleGlzdCBiZWZvcmUgcHJvY2VlZGluZ1xyXG4gICAgaWYgKHRoaXMuYXVMb2NhdGlvbnM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBnZW9qc29uID0ge1xyXG4gICAgICAndHlwZSc6ICdGZWF0dXJlQ29sbGVjdGlvbicsXHJcbiAgICAgICdmZWF0dXJlcyc6IHRoaXMuYXVMb2NhdGlvbnMubWFwKChzdG9yZSwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgJ3R5cGUnOiAnRmVhdHVyZScsXHJcbiAgICAgICAgJ3Byb3BlcnRpZXMnOiB7XHJcbiAgICAgICAgICAnc3RvcmVOYW1lJzogc3RvcmUuc3RvcmVOYW1lLCAgICAgICAgIC8vIFN0b3JlIG5hbWVcclxuICAgICAgICAgICdpbWFnZUlkJzogMTAxMSArIGluZGV4LCAgICAgICAgICAgICAgLy8gRHluYW1pYyBpbWFnZSBJRFxyXG4gICAgICAgICAgJ2ljb25TaXplJzogWzYwLCA2MF0sICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgaWNvbiBzaXplIGFzIG5lZWRlZFxyXG4gICAgICAgICAgJ2Zvb3RmYWxsJzogc3RvcmUuYXZnRm9vdGZhbGwsICAgICAgICAvLyBGb290ZmFsbCBkYXRhXHJcbiAgICAgICAgICAnb3BlblRpbWUnOiBzdG9yZS5vcGVuVGltZSwgICAgICAgICAgIC8vIE9wZW4gdGltZVxyXG4gICAgICAgICAgJ2Nsb3NlVGltZSc6IHN0b3JlLmNsb3NlVGltZSwgICAgICAgICAvLyBDbG9zZSB0aW1lXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnZ2VvbWV0cnknOiB7XHJcbiAgICAgICAgICAndHlwZSc6ICdQb2ludCcsXHJcbiAgICAgICAgICAnY29vcmRpbmF0ZXMnOiBbc3RvcmUubG5nLCBzdG9yZS5sYXRdICAvLyBDb29yZGluYXRlcyBmcm9tIHN0b3JlIGRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuICBcclxuICAgIC8vIER5bmFtaWNhbGx5IHNldCBtYXAgY2VudGVyIGJhc2VkIG9uIHRoZSBmaXJzdCBsb2NhdGlvblxyXG4gICAgY29uc3QgZmlyc3RMb2NhdGlvbiA9IHRoaXMuYXVMb2NhdGlvbnNbMF07XHJcbiBcclxuICAgIHRoaXMubWFwID0gbmV3IG1hcGJveGdsLk1hcCh7XHJcbiAgICAgIGNvbnRhaW5lcjogJ21hcCcsXHJcbiAgICAgIHN0eWxlOiAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zdHJlZXRzLXYxMicsXHJcbiAgICAgIGNlbnRlcjogW2ZpcnN0TG9jYXRpb24ubG5nLCBmaXJzdExvY2F0aW9uLmxhdF0sIC8vIENlbnRlciBtYXAgb24gdGhlIGZpcnN0IGxvY2F0aW9uXHJcbiAgICAgIHpvb206IDUgLy8gQWRqdXN0IHpvb20gYXMgbmVjZXNzYXJ5XHJcbiAgICB9KTtcclxuICBcclxuICAgIC8vIEFkZCBtYXJrZXJzIHRvIHRoZSBtYXBcclxuICAgIGdlb2pzb24uZmVhdHVyZXMuZm9yRWFjaChmZWF0dXJlID0+IHtcclxuICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBnZW9tZXRyeSB9ID0gZmVhdHVyZTtcclxuICBcclxuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3Qgd2lkdGggPSBwcm9wZXJ0aWVzLmljb25TaXplWzBdO1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSBwcm9wZXJ0aWVzLmljb25TaXplWzFdO1xyXG4gICAgICBlbC5jbGFzc05hbWUgPSAnbWFya2VyJztcclxuICAgICAgZWwuaW5uZXJIVE1MID0gYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFya2VyLWljb25cIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB3aWR0aDogJHt3aWR0aH1weDsgaGVpZ2h0OiAke2hlaWdodH1weDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1HcmF5LTcwMCwgIzM0NDA1NCk7XHJcbnRleHQtYWxpZ246IGNlbnRlcjtcclxuZm9udC1mYW1pbHk6IEludGVyO1xyXG5mb250LXNpemU6IDkuMDA3cHg7XHJcbmZvbnQtc3R5bGU6IG5vcm1hbDtcclxuZm9udC13ZWlnaHQ6IDYwMDtcclxubGluZS1oZWlnaHQ6IDEzcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1jb250ZW50XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm1iLTFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMS4zMzY1NCAzLjM2MzdMMS4yOTY1OCAzLjQyNjExQzAuODc3Njk4IDQuMTY3MDEgMS4zMjQ5MyA1LjEwMzM1IDIuMTI5MzEgNS4yMTA3NkMyLjIwMjE4IDUuMjE5NjcgMi4yNjk5OSA1LjIyNDM4IDIuMzM2MjUgNS4yMjQzOEMyLjc3MDIxIDUuMjI0MzggMy4xNTM5IDUuMDM4MjEgMy40MjEzMiA0Ljc0NzkzTDMuODM2NjYgNC4yOTcxTDQuMjUwNTkgNC43NDkyM0M0LjUxNDc2IDUuMDM3NzggNC44OTc1OCA1LjIyNDM4IDUuMzM0NDggNS4yMjQzOEM1Ljc2OTQxIDUuMjI0MzggNi4xNTQ0MyA1LjAzNzUyIDYuNDE4MzcgNC43NDkyM0w2LjgzMzU5IDQuMjk1NjhMNy4yNDg4MiA0Ljc0OTIzQzcuNTEyNzUgNS4wMzc1MiA3Ljg5Nzc3IDUuMjI0MzggOC4zMzI3MSA1LjIyNDM4QzguNzY3NjQgNS4yMjQzOCA5LjE1MjY2IDUuMDM3NTIgOS40MTY2IDQuNzQ5MjNMOS44MzE4MiA0LjI5NTY4TDEwLjI0NyA0Ljc0OTIzQzEwLjUxMSA1LjAzNzUyIDEwLjg5NiA1LjIyNDM4IDExLjMzMDkgNS4yMjQzOEMxMS4zOTUgNS4yMjQzOCAxMS40NjQ5IDUuMjE5NjYgMTEuNTM3MiA1LjIxMDgzQzEyLjM1OTMgNS4wOTg3NSAxMi44MDggNC4xMTIyNSAxMi4zMjg2IDMuMzY0MDhDMTIuMzI4NiAzLjM2NDAzIDEyLjMyODUgMy4zNjM5OSAxMi4zMjg1IDMuMzYzOTVMMTEuMDA4OCAxLjMwNjIxTDExLjAwODEgMS4zMDUxMUMxMC45OTY3IDEuMjg3MjIgMTAuOTY4NiAxLjI2ODA0IDEwLjkzMzIgMS4yNjgwNEgyLjcyOTQyQzIuNjk0MDMgMS4yNjgwNCAyLjY2NTg5IDEuMjg3MjIgMi42NTQ0OCAxLjMwNTExTDIuNjU0MDEgMS4zMDU4NEwxLjMzNjU0IDMuMzYzN1pNMTEuMDczMSA3LjA2NjY3VjkuNDE3NTNWOS45ODA0OUgxMC41MTAxSDMuMTUyNDhIMi41ODk1MlY5LjQxNzUzVjcuMDY3MDJDMi41MDY3OCA3LjA3MzE4IDIuNDIzMDggNy4wNzYzNCAyLjMzODU1IDcuMDc2MzRDMi4zMDY3OSA3LjA3NjM0IDIuMjc1MjUgNy4wNzU4NyAyLjI0MzkyIDcuMDc0OTVWOS40MTc1M1YxMC44Njk2QzIuMjQzOTIgMTEuMzUyNiAyLjY0NDY3IDExLjc1ODcgMy4xNTI0OCAxMS43NTg3SDEwLjUxMDFDMTEuMDE3OSAxMS43NTg3IDExLjQxODcgMTEuMzUyNiAxMS40MTg3IDEwLjg2OTZWOS40MTc1M1Y3LjA3NTA5QzExLjM4ODggNy4wNzU5MSAxMS4zNTg3IDcuMDc2MzQgMTEuMzI4NiA3LjA3NjM0QzExLjI0MjggNy4wNzYzNCAxMS4xNTc1IDcuMDczMDggMTEuMDczMSA3LjA2NjY3WlwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjEyNTkyXCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFya2VyLWxhYmVsXCIgc3R5bGU9XCJmb250LXNpemU6IDEwcHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgJHtwcm9wZXJ0aWVzLnN0b3JlTmFtZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGA7XHJcbiAgICAgIC8vIGVsLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoaHR0cHM6Ly9waWNzdW0ucGhvdG9zL2lkLyR7cHJvcGVydGllcy5pbWFnZUlkfS8ke3dpZHRofS8ke2hlaWdodH0pYDtcclxuICAgICAgZWwuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XHJcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XHJcbiAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRTaXplID0gJzEwMCUnO1xyXG4gIFxyXG4gICAgICAvLyBDcmVhdGUgYSBwb3B1cCBpbnN0YW5jZSB3aXRoIHRoZSBmZWF0dXJlIHByb3BlcnRpZXNcclxuICAgICAgY29uc3QgcG9wdXAgPSBuZXcgbWFwYm94Z2wuUG9wdXAoeyBvZmZzZXQ6IDI1IH0pICBcclxuICAgICAgLy8gVXNlIHRoZSBjb29yZGluYXRlcyBmcm9tIHRoZSBmZWF0dXJlXHJcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdID0gZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICBcclxuICAgICAgLy8gQWRkIG1hcmtlcnMgdG8gdGhlIG1hcFxyXG4gICAgICBuZXcgbWFwYm94Z2wuTWFya2VyKGVsKVxyXG4gICAgICAgIC5zZXRMbmdMYXQoY29vcmRpbmF0ZXMpXHJcbiAgICAgICAgLnNldFBvcHVwKHBvcHVwKSAgLy8gQXR0YWNoIHRoZSBwb3B1cCB0byB0aGUgbWFya2VyXHJcbiAgICAgICAgLmFkZFRvKHRoaXMubWFwKTtcclxuICAgIH0pO1xyXG4gIH0sMClcclxuICB9XHJcbiAgXHJcbiAgZXhwb3JlVmlldygpe1xyXG50aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvdHJhZmZpYy9leHBsb3JlJ10pXHJcbiAgfVxyXG4gIGRhdGVWYWx1ZSh0eXBlOmFueSl7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5saW1pdDsgZGVsZXRlIHRoaXMudGFibGVvYmouZXhwb3J0O1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoub2Zmc2V0O1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMuZGF0ZVR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy50YWJsZW9iai5kYXRlVHlwZT0gdGhpcy5kYXRlVHlwZTtcclxuICAgIHRoaXMuZ2V0Q2FyZEdyYXBoKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Wm9uZSgpe1xyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2Uuem9uZUR3ZWxsVGltZShvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCl7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUR3ZWxsVGltZVNwbGl0RGF0YSA9IHJlcy5kYXRhLnpvbmVEd2VsbFRpbWVTcGxpdERhdGE7XHJcbiAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUR3ZWxsVGltZVNwbGl0RGF0YSA9W107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy56b25lRHdlbGxUaW1lU3BsaXREYXRhPVtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICBcclxuICB9XHJcbiAgZ2V0Wm9uZVZhbHVlKCl7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5zdG9yZU9wZXJhdGlvbihvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVyYXRpb25EYXRhID0gcmVzLmRhdGEuc3RvcmVPcGVyYXRpb25EYXRhWzBdO1xyXG4gICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlT3BlcmF0aW9uRGF0YSA9W107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZU9wZXJhdGlvbkRhdGE9W107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgc3RvcmVWaWV3KGRhdGE6YW55KXtcclxuICAgIC8vIGNvbnN0IG1hdGNoZWRTdG9yZXMgPSB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZCAmJiBzdG9yZS5zdG9yZUlkID09PSBvYmouc3RvcmVJZCk7XHJcbiAgICAvLyAvLyBjb25zb2xlLmxvZygnTWF0Y2hlZCBTdG9yZXM6JywgbWF0Y2hlZFN0b3Jlcyk7XHJcbiAgICAvLyAvLyBVcGRhdGUgdGhlIGJhbGFuY2Ugc3RvcmVzICh0aG9zZSBub3QgaW4gdGhlIG1hdGNoZWQgc3RvcmVzKSB0byBzZXQgdGhlaXIgY2hlY2tlZCBwcm9wZXJ0eSB0byBmYWxzZVxyXG4gICAgLy8gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmICghbWF0Y2hlZFN0b3Jlcy5zb21lKChtYXRjaGVkU3RvcmU6YW55KSA9PiBtYXRjaGVkU3RvcmUuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCkpIHtcclxuICAgIC8vICAgICBzdG9yZS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gICAgLy8gLy8gY29uc29sZS5sb2coJ1VwZGF0ZWQgU3RvcmVzOicsIHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMpO1xyXG4gICAgY29uc3QgZGF0YXZhbHVlOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIGRhdGF2YWx1ZS5zdG9yZSA9IGRhdGE7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KGRhdGF2YWx1ZSkpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dChkYXRhdmFsdWUpXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzXCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IGRhdGF9LFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICBnb1RvWm9uZSgpe1xyXG4gICAgY29uc3QgZGF0YXZhbHVlOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIGRhdGF2YWx1ZS5zdG9yZSA9IGRhdGF2YWx1ZS5zdG9yZXNbMF0uc3RvcmVJZDtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YXZhbHVlKSk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KGRhdGF2YWx1ZSlcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXNcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogZGF0YXZhbHVlLnN0b3Jlc1swXS5zdG9yZUlkfSxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyID0gMDtcclxuICBpbnRlcnZhbElkOiBhbnk7XHJcblxyXG5cclxuICBwcmV2U2xpZGUoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEluZGV4LS07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0U2xpZGUoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPCB0aGlzLnJlY2Fwc0dyb3VwZWQubGVuZ3RoIC0gMSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbmRleCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub1NsaWRlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5yZWNhcHNHcm91cGVkLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG5pbnRlcmZhY2UgRGF0YUNvbnRleHQge1xyXG4gIGNhdGVnb3J5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxuICBjb3VudDogbnVtYmVyO1xyXG59XHJcbmZ1bmN0aW9uIGdldERheXNCZXR3ZWVuRGF0ZXMoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gIC8vIFBhcnNlIHRoZSBkYXRlIHN0cmluZ3MgaW50byBEYXRlIG9iamVjdHNcclxuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTtcclxuICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpO1xyXG5cclxuICAvLyBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzXHJcbiAgY29uc3QgZGlmZmVyZW5jZUluTXMgPSBlbmQuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpO1xyXG5cclxuICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBkYXlzICgxIGRheSA9IDg2NDAwMDAwIG1pbGxpc2Vjb25kcylcclxuICBjb25zdCBtaWxsaXNlY29uZHNQZXJEYXkgPSA4NjQwMDAwMDtcclxuICBjb25zdCBkaWZmZXJlbmNlSW5EYXlzID0gTWF0aC5mbG9vcihkaWZmZXJlbmNlSW5NcyAvIG1pbGxpc2Vjb25kc1BlckRheSk7XHJcblxyXG4gIHJldHVybiBkaWZmZXJlbmNlSW5EYXlzO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEaXNwbGF5IGZvb3RmYWxsIGNvdW50IG9yICctLScgaWYgbm90IGF2YWlsYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3sgZ2V0Q2FyZERhdGE/LmZvb3RmYWxsPy5jb3VudCA/IGdldENhcmREYXRhLmZvb3RmYWxsLmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pIDogJy0tJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj57e2Zvb3RmYWxsTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggdG9nZ2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtMVwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiIFsobmdNb2RlbCldPVwiaXNBdmVyYWdlXCIgKGNoYW5nZSk9XCJ0b2dnbGVBdmVyYWdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtdC01XCI+QXZlcmFnZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmRsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImxvYWRlci1pbWdcIiBzcmM9XCJhc3NldHMvdGFuZ28vbGF5b3V0L0xvYWRlci5naWZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhY2FyZE5vZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cIkZvb3RmYWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGVMZW5ndGggPiAwXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgKGNsaWNrKT1cImRhdGVWYWx1ZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0ZUxlbmd0aCA+IDVcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0ZUxlbmd0aCA+IDI4XCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndlZWstZm9udFwiPiB2cyBwcmV2aW91cyA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+IDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGxlZnQtNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3t2YWx1ZUNvbnZlcnNpb25SYXRlICA/IHZhbHVlQ29udmVyc2lvblJhdGUgOiAnLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+Q29udmVyc2lvbiA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZm9vdGZhbGwnIHx8IGNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnIHx8IGNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgfHwgY29udmVyc2lvblZhbHVlID09PSdub2InIFwiPiAtIHt7Y29udmVyc2lvblZhbHVlIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBweCBwdC0xMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggbXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nZm9vdGZhbGwnXCIgKGNsaWNrKT1cImNoYW5nZVZhbHVlKCdmb290ZmFsbCcpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC03NXB4IG14LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2VuZ2FnZXJzJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnZW5nYWdlcnMnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMjFWMTlDMTcgMTcuOTM5MSAxNi41Nzg2IDE2LjkyMTcgMTUuODI4NCAxNi4xNzE2QzE1LjA3ODMgMTUuNDIxNCAxNC4wNjA5IDE1IDEzIDE1SDVDMy45MzkxMyAxNSAyLjkyMTcyIDE1LjQyMTQgMi4xNzE1NyAxNi4xNzE2QzEuNDIxNDMgMTYuOTIxNyAxIDE3LjkzOTEgMSAxOVYyMU0yMyAyMVYxOUMyMi45OTkzIDE4LjExMzcgMjIuNzA0NCAxNy4yNTI4IDIyLjE2MTQgMTYuNTUyM0MyMS42MTg0IDE1Ljg1MTkgMjAuODU4MSAxNS4zNTE2IDIwIDE1LjEzTTE2IDMuMTNDMTYuODYwNCAzLjM1MDMgMTcuNjIzIDMuODUwNyAxOC4xNjc2IDQuNTUyMzFDMTguNzEyMiA1LjI1MzkyIDE5LjAwNzggNi4xMTY4MyAxOS4wMDc4IDcuMDA1QzE5LjAwNzggNy44OTMxNyAxOC43MTIyIDguNzU2MDggMTguMTY3NiA5LjQ1NzY5QzE3LjYyMyAxMC4xNTkzIDE2Ljg2MDQgMTAuNjU5NyAxNiAxMC44OE0xMyA3QzEzIDkuMjA5MTQgMTEuMjA5MSAxMSA5IDExQzYuNzkwODYgMTEgNSA5LjIwOTE0IDUgN0M1IDQuNzkwODYgNi43OTA4NiAzIDkgM0MxMS4yMDkxIDMgMTMgNC43OTA4NiAxMyA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAyMVYxOUMxNyAxNy45MzkxIDE2LjU3ODYgMTYuOTIxNyAxNS44Mjg0IDE2LjE3MTZDMTUuMDc4MyAxNS40MjE0IDE0LjA2MDkgMTUgMTMgMTVINUMzLjkzOTEzIDE1IDIuOTIxNzIgMTUuNDIxNCAyLjE3MTU3IDE2LjE3MTZDMS40MjE0MyAxNi45MjE3IDEgMTcuOTM5MSAxIDE5VjIxTTIzIDIxVjE5QzIyLjk5OTMgMTguMTEzNyAyMi43MDQ0IDE3LjI1MjggMjIuMTYxNCAxNi41NTIzQzIxLjYxODQgMTUuODUxOSAyMC44NTgxIDE1LjM1MTYgMjAgMTUuMTNNMTYgMy4xM0MxNi44NjA0IDMuMzUwMyAxNy42MjMgMy44NTA3IDE4LjE2NzYgNC41NTIzMUMxOC43MTIyIDUuMjUzOTIgMTkuMDA3OCA2LjExNjgzIDE5LjAwNzggNy4wMDVDMTkuMDA3OCA3Ljg5MzE3IDE4LjcxMjIgOC43NTYwOCAxOC4xNjc2IDkuNDU3NjlDMTcuNjIzIDEwLjE1OTMgMTYuODYwNCAxMC42NTk3IDE2IDEwLjg4TTEzIDdDMTMgOS4yMDkxNCAxMS4yMDkxIDExIDkgMTFDNi43OTA4NiAxMSA1IDkuMjA5MTQgNSA3QzUgNC43OTA4NiA2Ljc5MDg2IDMgOSAzQzExLjIwOTEgMyAxMyA0Ljc5MDg2IDEzIDdaXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggbXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nUG90ZW50aWFsIEJ1eWVycydcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ3BvdGVudGlhbEJ1eWVycycpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjAwMzkgNi4wMDE5NUgyMC4wMDM5QzIwLjYwMzkgNi4wMDE5NSAyMS4wMDM5IDYuNDAxOTUgMjEuMDAzOSA3LjAwMTk1VjkuMDAxOTVDMTkuMzAzOSA5LjAwMTk1IDE4LjAwMzkgNy43MDE5NSAxOC4wMDM5IDYuMDAxOTVaTTYuMDAzOTEgNi4wMDE5NUg0LjAwMzkxQzMuNDAzOTEgNi4wMDE5NSAzLjAwMzkxIDYuNDAxOTUgMy4wMDM5MSA3LjAwMTk1VjkuMDAxOTVDNC43MDM5MSA5LjAwMTk1IDYuMDAzOTEgNy43MDE5NSA2LjAwMzkxIDYuMDAxOTVaTTIxLjAwMzkgMTcuMDAyVjE1LjAwMkMxOS4zMDM5IDE1LjAwMiAxOC4wMDM5IDE2LjMwMiAxOC4wMDM5IDE4LjAwMkgyMC4wMDM5QzIwLjYwMzkgMTguMDAyIDIxLjAwMzkgMTcuNjAyIDIxLjAwMzkgMTcuMDAyWk0zLjAwMzkxIDE1LjAwMlYxNy4wMDJDMy4wMDM5MSAxNy42MDIgMy40MDM5MSAxOC4wMDIgNC4wMDM5MSAxOC4wMDJINi4wMDM5MUM2LjAwMzkxIDE2LjMwMiA0LjcwMzkxIDE1LjAwMiAzLjAwMzkxIDE1LjAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J1BvdGVudGlhbCBCdXllcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiIGQ9XCJNMjAuMDAzOSAxOC4wMDJINC4wMDM5MUMzLjQwMzkxIDE4LjAwMiAzLjAwMzkxIDE3LjYwMiAzLjAwMzkxIDE3LjAwMlY3LjAwMTk1QzMuMDAzOTEgNi40MDE5NSAzLjQwMzkxIDYuMDAxOTUgNC4wMDM5MSA2LjAwMTk1SDIwLjAwMzlDMjAuNjAzOSA2LjAwMTk1IDIxLjAwMzkgNi40MDE5NSAyMS4wMDM5IDcuMDAxOTVWMTcuMDAyQzIxLjAwMzkgMTcuNjAyIDIwLjYwMzkgMTguMDAyIDIwLjAwMzkgMTguMDAyWk0xMi4wMDM5IDguMDAxOTVDMTAuMzAzOSA4LjAwMTk1IDkuMDAzOTEgOS44MDE5NSA5LjAwMzkxIDEyLjAwMkM5LjAwMzkxIDE0LjIwMiAxMC4zMDM5IDE2LjAwMiAxMi4wMDM5IDE2LjAwMkMxMy43MDM5IDE2LjAwMiAxNS4wMDM5IDE0LjIwMiAxNS4wMDM5IDEyLjAwMkMxNS4wMDM5IDkuODAxOTUgMTMuNzAzOSA4LjAwMTk1IDEyLjAwMzkgOC4wMDE5NVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTguMDAzOSA2LjAwMTk1SDIwLjAwMzlDMjAuNjAzOSA2LjAwMTk1IDIxLjAwMzkgNi40MDE5NSAyMS4wMDM5IDcuMDAxOTVWOS4wMDE5NUMxOS4zMDM5IDkuMDAxOTUgMTguMDAzOSA3LjcwMTk1IDE4LjAwMzkgNi4wMDE5NVpNNi4wMDM5MSA2LjAwMTk1SDQuMDAzOTFDMy40MDM5MSA2LjAwMTk1IDMuMDAzOTEgNi40MDE5NSAzLjAwMzkxIDcuMDAxOTVWOS4wMDE5NUM0LjcwMzkxIDkuMDAxOTUgNi4wMDM5MSA3LjcwMTk1IDYuMDAzOTEgNi4wMDE5NVpNMjEuMDAzOSAxNy4wMDJWMTUuMDAyQzE5LjMwMzkgMTUuMDAyIDE4LjAwMzkgMTYuMzAyIDE4LjAwMzkgMTguMDAySDIwLjAwMzlDMjAuNjAzOSAxOC4wMDIgMjEuMDAzOSAxNy42MDIgMjEuMDAzOSAxNy4wMDJaTTMuMDAzOTEgMTUuMDAyVjE3LjAwMkMzLjAwMzkxIDE3LjYwMiAzLjQwMzkxIDE4LjAwMiA0LjAwMzkxIDE4LjAwMkg2LjAwMzkxQzYuMDAzOTEgMTYuMzAyIDQuNzAzOTEgMTUuMDAyIDMuMDAzOTEgMTUuMDAyWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC03NXB4IG14LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J25vYidcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ25vYicpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdub2InXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMyBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2VuZ2FnZXJzJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LnBvdGVudGlhbEJ1eWVycy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nbm9iJyB8fCBjb252ZXJzaW9uVmFsdWUgPT09JydcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4tLSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgcHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/LmJvdW5jZWQ/LnJhdGUgPyBnZXRDYXJkRGF0YT8uYm91bmNlZD8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkJvdW5jZWQgUmF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZE5vZGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGExXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZTFcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgY29udmVyc2lvbiBmdW5uZWw8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2FyZE5vZGF0YVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cIkJvdW5jZWRSYXRlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgcHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0zIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5yYXRlID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlciBcIj5Qb3RlbnRpYWwgQnV5ZXJzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTm9kYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwiUG90ZW50aWFsQnV5ZXJzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBwcmV2aW91cyAgPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nZGFpbHknXCI+ZGF5PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J3dlZWtseSdcIj53ZWVrPC9zcGFuPiA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdtb250aGx5J1wiPm1vbnRoPC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZW5kLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPlBvdGVudGlhbCBCdXllciBEaXN0cmlidXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5DYXRlZ29yeS13aXNlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC03IG1iLTNcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMC4yNSAyMVYxOUMyMC4yNSAxNy45MzkxIDE5LjgyODYgMTYuOTIxNyAxOS4wNzg0IDE2LjE3MTZDMTguMzI4MyAxNS40MjE0IDE3LjMxMDkgMTUgMTYuMjUgMTVIOC4yNUM3LjE4OTEzIDE1IDYuMTcxNzIgMTUuNDIxNCA1LjQyMTU3IDE2LjE3MTZDNC42NzE0MyAxNi45MjE3IDQuMjUgMTcuOTM5MSA0LjI1IDE5VjIxTTE2LjI1IDdDMTYuMjUgOS4yMDkxNCAxNC40NTkxIDExIDEyLjI1IDExQzEwLjA0MDkgMTEgOC4yNSA5LjIwOTE0IDguMjUgN0M4LjI1IDQuNzkwODYgMTAuMDQwOSAzIDEyLjI1IDNDMTQuNDU5MSAzIDE2LjI1IDQuNzkwODYgMTYuMjUgN1pcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudCBtdC0yIG1zLTFcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pOictLSd9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyIG1zLTFcIj5TaW5nbGU8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB3ZWVrLWZvbnRcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uYWdlR3JvdXAgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIHByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtNyBtYi0zXCI+PHNwYW4+IDxzdmcgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNiAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRENEQ0RDXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCItNDYwLjVcIiB5PVwiLTM0MC41XCIgd2lkdGg9XCI3ODNcIiBoZWlnaHQ9XCIxOTQ3XCIgcng9XCI0LjVcIiBzdHJva2U9XCIjOTc0N0ZGXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjEwIDVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTItaW5zaWRlLTFfNzA3XzEzMTA2XCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTg5IC04OUMtMTg5IC05NS42Mjc0IC0xODMuNjI3IC0xMDEgLTE3NyAtMTAxSDI5NUMzMDEuNjI3IC0xMDEgMzA3IC05NS42Mjc0IDMwNyAtODlWODVDMzA3IDkxLjYyNzQgMzAxLjYyNyA5NyAyOTUgOTdILTE3N0MtMTgzLjYyNyA5NyAtMTg5IDkxLjYyNzQgLTE4OSA4NVYtODlaXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTS0xODkgLTg5Qy0xODkgLTk1LjYyNzQgLTE4My42MjcgLTEwMSAtMTc3IC0xMDFIMjk1QzMwMS42MjcgLTEwMSAzMDcgLTk1LjYyNzQgMzA3IC04OVY4NUMzMDcgOTEuNjI3NCAzMDEuNjI3IDk3IDI5NSA5N0gtMTc3Qy0xODMuNjI3IDk3IC0xODkgOTEuNjI3NCAtMTg5IDg1Vi04OVpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTkwIC04OUMtMTkwIC05Ni4xNzk3IC0xODQuMTggLTEwMiAtMTc3IC0xMDJIMjk0QzMwMS4xOCAtMTAyIDMwNyAtOTYuMTc5NyAzMDcgLTg5QzMwNyAtOTUuMDc1MSAzMDEuNjI3IC0xMDAgMjk1IC0xMDBILTE3N0MtMTgzLjA3NSAtMTAwIC0xODggLTk1LjA3NTEgLTE4OCAtODlILTE5MFpNMzA3IDg1QzMwNyA5Mi4xNzk3IDMwMS4xOCA5OCAyOTQgOThILTE3N0MtMTg0LjE4IDk4IC0xOTAgOTIuMTc5NyAtMTkwIDg1SC0xODhDLTE4OCA5MS4wNzUxIC0xODMuMDc1IDk2IC0xNzcgOTZIMjk1QzMwMS42MjcgOTYgMzA3IDkxLjA3NTEgMzA3IDg1Wk0tMTc3IDk4Qy0xODQuMTggOTggLTE5MCA5Mi4xNzk3IC0xOTAgODVWLTg5Qy0xOTAgLTk2LjE3OTcgLTE4NC4xOCAtMTAyIC0xNzcgLTEwMlYtMTAwQy0xODMuMDc1IC0xMDAgLTE4OCAtOTUuMDc1MSAtMTg4IC04OVY4NUMtMTg4IDkxLjA3NTEgLTE4My4wNzUgOTYgLTE3NyA5NlY5OFpNMzA3IC0xMDFWOTdWLTEwMVpcIiBmaWxsPVwiI0QwRDVERFwiIG1hc2s9XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV83MDdfMTMxMDYpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwicGF0aC02LWluc2lkZS0yXzcwN18xMzEwNlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy43MTA2NCA3LjM4NDYyQzguMTk1NTIgNy4zODQ2MiA4LjY3NTY1IDcuMjg5MTEgOS4xMjM2MiA3LjEwMzU2QzkuNTcxNTkgNi45MTggOS45Nzg2MyA2LjY0NjAzIDEwLjMyMTUgNi4zMDMxNkMxMC42NjQ0IDUuOTYwMyAxMC45MzYzIDUuNTUzMjYgMTEuMTIxOSA1LjEwNTI5QzExLjMwNzQgNC42NTczMiAxMS40MDI5IDQuMTc3MTkgMTEuNDAyOSAzLjY5MjMxQzExLjQwMjkgMy4yMDc0MyAxMS4zMDc0IDIuNzI3MjkgMTEuMTIxOSAyLjI3OTMyQzEwLjkzNjMgMS44MzEzNSAxMC42NjQ0IDEuNDI0MzEgMTAuMzIxNSAxLjA4MTQ1QzkuOTc4NjMgMC43Mzg1OSA5LjU3MTU5IDAuNDY2NjE2IDkuMTIzNjIgMC4yODEwNkM4LjY3NTY1IDAuMDk1NTA0MyA4LjE5NTUyIC03LjIyNTI5ZS0wOSA3LjcxMDY0IDBDNi43MzEzOCAxLjQ1OTIxZS0wOCA1Ljc5MjIyIDAuMzg5MDEgNS4wOTk3OCAxLjA4MTQ1QzQuNDA3MzQgMS43NzM4OSA0LjAxODMzIDIuNzEzMDUgNC4wMTgzMyAzLjY5MjMxQzQuMDE4MzMgNC42NzE1NyA0LjQwNzM0IDUuNjEwNzIgNS4wOTk3OCA2LjMwMzE2QzUuNzkyMjIgNi45OTU2MSA2LjczMTM4IDcuMzg0NjIgNy43MTA2NCA3LjM4NDYyWk0xOC43ODc2IDcuMzg0NjJDMTkuMjcyNCA3LjM4NDYyIDE5Ljc1MjYgNy4yODkxMSAyMC4yMDA1IDcuMTAzNTZDMjAuNjQ4NSA2LjkxOCAyMS4wNTU2IDYuNjQ2MDMgMjEuMzk4NCA2LjMwMzE2QzIxLjc0MTMgNS45NjAzIDIyLjAxMzMgNS41NTMyNiAyMi4xOTg4IDUuMTA1MjlDMjIuMzg0NCA0LjY1NzMyIDIyLjQ3OTkgNC4xNzcxOSAyMi40Nzk5IDMuNjkyMzFDMjIuNDc5OSAzLjIwNzQzIDIyLjM4NDQgMi43MjcyOSAyMi4xOTg4IDIuMjc5MzJDMjIuMDEzMyAxLjgzMTM1IDIxLjc0MTMgMS40MjQzMSAyMS4zOTg0IDEuMDgxNDVDMjEuMDU1NiAwLjczODU5IDIwLjY0ODUgMC40NjY2MTYgMjAuMjAwNSAwLjI4MTA2QzE5Ljc1MjYgMC4wOTU1MDQzIDE5LjI3MjQgLTcuMjI1MjllLTA5IDE4Ljc4NzYgMEMxNy44MDgzIDEuNDU5MjFlLTA4IDE2Ljg2OTEgMC4zODkwMSAxNi4xNzY3IDEuMDgxNDVDMTUuNDg0MyAxLjc3Mzg5IDE1LjA5NTMgMi43MTMwNSAxNS4wOTUzIDMuNjkyMzFDMTUuMDk1MyA0LjY3MTU3IDE1LjQ4NDMgNS42MTA3MiAxNi4xNzY3IDYuMzAzMTZDMTYuODY5MSA2Ljk5NTYxIDE3LjgwODMgNy4zODQ2MiAxOC43ODc2IDcuMzg0NjJaTTAuOTQxNDA2IDEwLjczNkMwLjk0MTQwNiAxMC40NTc1IDAuOTk2MjU4IDEwLjE4MTggMS4xMDI4MyA5LjkyNDQ4QzEuMjA5NCA5LjY2NzE5IDEuMzY1NiA5LjQzMzQyIDEuNTYyNTIgOS4yMzY1QzEuNzU5NDQgOS4wMzk1OCAxLjk5MzIxIDguODgzMzggMi4yNTA1IDguNzc2ODFDMi41MDc3OCA4LjY3MDI0IDIuNzgzNTQgOC42MTUzOSAzLjA2MjAyIDguNjE1MzlIOC45ODQ0OEM4LjU1MTY5IDkuMzYzNDUgOC4zMjQ1MiAxMC4yMTI3IDguMzI2MDIgMTEuMDc2OUM4LjMyNTE5IDExLjc3NTUgOC40NzM0MSAxMi40NjYyIDguNzYwNzkgMTMuMTAyOUM5LjA0ODE2IDEzLjczOTYgOS40NjgwNyAxNC4zMDc3IDkuOTkyNDggMTQuNzY5Mkg4LjYwMDQ4QzguMDE0MTggMTQuNzY4NyA3LjQzODAzIDE0LjkyMjIgNi45Mjk2OSAxNS4yMTQ0QzYuNDIxMzQgMTUuNTA2NSA1Ljk5ODY0IDE1LjkyNyA1LjcwMzg3IDE2LjQzMzhDMy43MjExIDE2LjA0NDkgMi41MTYxOCAxNS4wNzgyIDEuODE0NjQgMTMuOTkyQzAuOTQxNDA2IDEyLjY0IDAuOTQxNDA2IDExLjI0MzEgMC45NDE0MDYgMTEuMDAxMlYxMC43MzZaTTE3Ljg5NzcgMTQuNzY5MkMxOC40ODQgMTQuNzY4NyAxOS4wNjAyIDE0LjkyMjIgMTkuNTY4NSAxNS4yMTQ0QzIwLjA3NjkgMTUuNTA2NSAyMC40OTk2IDE1LjkyNyAyMC43OTQzIDE2LjQzMzhDMjIuNzc3MSAxNi4wNDQ5IDIzLjk4MiAxNS4wNzgyIDI0LjY4MzYgMTMuOTkyQzI1LjU1NjggMTIuNjQgMjUuNTU2OCAxMS4yNDMxIDI1LjU1NjggMTEuMDAxMlYxMC43MzY2QzI1LjU1NjkgMTAuNDU4MSAyNS41MDIxIDEwLjE4MjMgMjUuMzk1NSA5LjkyNDlDMjUuMjg5IDkuNjY3NTUgMjUuMTMyOCA5LjQzMzcgMjQuOTM1OSA5LjIzNjcyQzI0LjczOSA5LjAzOTczIDI0LjUwNTIgOC44ODM0OCAyNC4yNDc4IDguNzc2ODdDMjMuOTkwNSA4LjY3MDI2IDIzLjcxNDcgOC42MTUzOSAyMy40MzYyIDguNjE1MzlIMTcuNTEzN0MxNy45NDY1IDkuMzYzNDUgMTguMTczNyAxMC4yMTI3IDE4LjE3MjIgMTEuMDc2OUMxOC4xNzMgMTEuNzc1NSAxOC4wMjQ4IDEyLjQ2NjIgMTcuNzM3NCAxMy4xMDI5QzE3LjQ1IDEzLjczOTYgMTcuMDMwMSAxNC4zMDc3IDE2LjUwNTcgMTQuNzY5MkgxNy44OTc3Wk0xNi45NDE0IDExLjA3NjlDMTYuOTQxNCAxMi4wNTYyIDE2LjU1MjQgMTIuOTk1MyAxNS44NiAxMy42ODc4QzE1LjE2NzUgMTQuMzgwMiAxNC4yMjg0IDE0Ljc2OTIgMTMuMjQ5MSAxNC43NjkyQzEyLjI2OTggMTQuNzY5MiAxMS4zMzA3IDE0LjM4MDIgMTAuNjM4MiAxMy42ODc4QzkuOTQ1OCAxMi45OTUzIDkuNTU2NzkgMTIuMDU2MiA5LjU1Njc5IDExLjA3NjlDOS41NTY3OSAxMC4wOTc3IDkuOTQ1OCA5LjE1ODUxIDEwLjYzODIgOC40NjYwN0MxMS4zMzA3IDcuNzczNjMgMTIuMjY5OCA3LjM4NDYyIDEzLjI0OTEgNy4zODQ2MkMxNC4yMjg0IDcuMzg0NjIgMTUuMTY3NSA3Ljc3MzYzIDE1Ljg2IDguNDY2MDdDMTYuNTUyNCA5LjE1ODUxIDE2Ljk0MTQgMTAuMDk3NyAxNi45NDE0IDExLjA3NjlaTTYuNDc5ODcgMTguMTIwNkM2LjQ3OTg3IDE3LjU1ODIgNi43MDMyOSAxNy4wMTg4IDcuMTAwOTggMTYuNjIxMUM3LjQ5ODY3IDE2LjIyMzQgOC4wMzgwNiAxNiA4LjYwMDQ4IDE2SDE3Ljg5NzdDMTguNDYwMSAxNiAxOC45OTk1IDE2LjIyMzQgMTkuMzk3MiAxNi42MjExQzE5Ljc5NDkgMTcuMDE4OCAyMC4wMTgzIDE3LjU1ODIgMjAuMDE4MyAxOC4xMjA2VjE4LjM4NThDMjAuMDE4MyAxOC42MjgzIDIwLjAxODMgMjAuMDI0NiAxOS4xNDUxIDIxLjM3NjZDMTguMjMyNSAyMi43ODk1IDE2LjQ2OTQgMjQgMTMuMjQ5MSAyNEMxMC4wMjg4IDI0IDguMjY1NzEgMjIuNzg5NSA3LjM1MzEgMjEuMzc2NkM2LjQ3OTg3IDIwLjAyNDYgNi40Nzk4NyAxOC42Mjc3IDYuNDc5ODcgMTguMzg1OFYxOC4xMjA2WlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjcxMDY0IDcuMzg0NjJDOC4xOTU1MiA3LjM4NDYyIDguNjc1NjUgNy4yODkxMSA5LjEyMzYyIDcuMTAzNTZDOS41NzE1OSA2LjkxOCA5Ljk3ODYzIDYuNjQ2MDMgMTAuMzIxNSA2LjMwMzE2QzEwLjY2NDQgNS45NjAzIDEwLjkzNjMgNS41NTMyNiAxMS4xMjE5IDUuMTA1MjlDMTEuMzA3NCA0LjY1NzMyIDExLjQwMjkgNC4xNzcxOSAxMS40MDI5IDMuNjkyMzFDMTEuNDAyOSAzLjIwNzQzIDExLjMwNzQgMi43MjcyOSAxMS4xMjE5IDIuMjc5MzJDMTAuOTM2MyAxLjgzMTM1IDEwLjY2NDQgMS40MjQzMSAxMC4zMjE1IDEuMDgxNDVDOS45Nzg2MyAwLjczODU5IDkuNTcxNTkgMC40NjY2MTYgOS4xMjM2MiAwLjI4MTA2QzguNjc1NjUgMC4wOTU1MDQzIDguMTk1NTIgLTcuMjI1MjllLTA5IDcuNzEwNjQgMEM2LjczMTM4IDEuNDU5MjFlLTA4IDUuNzkyMjIgMC4zODkwMSA1LjA5OTc4IDEuMDgxNDVDNC40MDczNCAxLjc3Mzg5IDQuMDE4MzMgMi43MTMwNSA0LjAxODMzIDMuNjkyMzFDNC4wMTgzMyA0LjY3MTU3IDQuNDA3MzQgNS42MTA3MiA1LjA5OTc4IDYuMzAzMTZDNS43OTIyMiA2Ljk5NTYxIDYuNzMxMzggNy4zODQ2MiA3LjcxMDY0IDcuMzg0NjJaTTE4Ljc4NzYgNy4zODQ2MkMxOS4yNzI0IDcuMzg0NjIgMTkuNzUyNiA3LjI4OTExIDIwLjIwMDUgNy4xMDM1NkMyMC42NDg1IDYuOTE4IDIxLjA1NTYgNi42NDYwMyAyMS4zOTg0IDYuMzAzMTZDMjEuNzQxMyA1Ljk2MDMgMjIuMDEzMyA1LjU1MzI2IDIyLjE5ODggNS4xMDUyOUMyMi4zODQ0IDQuNjU3MzIgMjIuNDc5OSA0LjE3NzE5IDIyLjQ3OTkgMy42OTIzMUMyMi40Nzk5IDMuMjA3NDMgMjIuMzg0NCAyLjcyNzI5IDIyLjE5ODggMi4yNzkzMkMyMi4wMTMzIDEuODMxMzUgMjEuNzQxMyAxLjQyNDMxIDIxLjM5ODQgMS4wODE0NUMyMS4wNTU2IDAuNzM4NTkgMjAuNjQ4NSAwLjQ2NjYxNiAyMC4yMDA1IDAuMjgxMDZDMTkuNzUyNiAwLjA5NTUwNDMgMTkuMjcyNCAtNy4yMjUyOWUtMDkgMTguNzg3NiAwQzE3LjgwODMgMS40NTkyMWUtMDggMTYuODY5MSAwLjM4OTAxIDE2LjE3NjcgMS4wODE0NUMxNS40ODQzIDEuNzczODkgMTUuMDk1MyAyLjcxMzA1IDE1LjA5NTMgMy42OTIzMUMxNS4wOTUzIDQuNjcxNTcgMTUuNDg0MyA1LjYxMDcyIDE2LjE3NjcgNi4zMDMxNkMxNi44NjkxIDYuOTk1NjEgMTcuODA4MyA3LjM4NDYyIDE4Ljc4NzYgNy4zODQ2MlpNMC45NDE0MDYgMTAuNzM2QzAuOTQxNDA2IDEwLjQ1NzUgMC45OTYyNTggMTAuMTgxOCAxLjEwMjgzIDkuOTI0NDhDMS4yMDk0IDkuNjY3MTkgMS4zNjU2IDkuNDMzNDIgMS41NjI1MiA5LjIzNjVDMS43NTk0NCA5LjAzOTU4IDEuOTkzMjEgOC44ODMzOCAyLjI1MDUgOC43NzY4MUMyLjUwNzc4IDguNjcwMjQgMi43ODM1NCA4LjYxNTM5IDMuMDYyMDIgOC42MTUzOUg4Ljk4NDQ4QzguNTUxNjkgOS4zNjM0NSA4LjMyNDUyIDEwLjIxMjcgOC4zMjYwMiAxMS4wNzY5QzguMzI1MTkgMTEuNzc1NSA4LjQ3MzQxIDEyLjQ2NjIgOC43NjA3OSAxMy4xMDI5QzkuMDQ4MTYgMTMuNzM5NiA5LjQ2ODA3IDE0LjMwNzcgOS45OTI0OCAxNC43NjkySDguNjAwNDhDOC4wMTQxOCAxNC43Njg3IDcuNDM4MDMgMTQuOTIyMiA2LjkyOTY5IDE1LjIxNDRDNi40MjEzNCAxNS41MDY1IDUuOTk4NjQgMTUuOTI3IDUuNzAzODcgMTYuNDMzOEMzLjcyMTEgMTYuMDQ0OSAyLjUxNjE4IDE1LjA3ODIgMS44MTQ2NCAxMy45OTJDMC45NDE0MDYgMTIuNjQgMC45NDE0MDYgMTEuMjQzMSAwLjk0MTQwNiAxMS4wMDEyVjEwLjczNlpNMTcuODk3NyAxNC43NjkyQzE4LjQ4NCAxNC43Njg3IDE5LjA2MDIgMTQuOTIyMiAxOS41Njg1IDE1LjIxNDRDMjAuMDc2OSAxNS41MDY1IDIwLjQ5OTYgMTUuOTI3IDIwLjc5NDMgMTYuNDMzOEMyMi43NzcxIDE2LjA0NDkgMjMuOTgyIDE1LjA3ODIgMjQuNjgzNiAxMy45OTJDMjUuNTU2OCAxMi42NCAyNS41NTY4IDExLjI0MzEgMjUuNTU2OCAxMS4wMDEyVjEwLjczNjZDMjUuNTU2OSAxMC40NTgxIDI1LjUwMjEgMTAuMTgyMyAyNS4zOTU1IDkuOTI0OUMyNS4yODkgOS42Njc1NSAyNS4xMzI4IDkuNDMzNyAyNC45MzU5IDkuMjM2NzJDMjQuNzM5IDkuMDM5NzMgMjQuNTA1MiA4Ljg4MzQ4IDI0LjI0NzggOC43NzY4N0MyMy45OTA1IDguNjcwMjYgMjMuNzE0NyA4LjYxNTM5IDIzLjQzNjIgOC42MTUzOUgxNy41MTM3QzE3Ljk0NjUgOS4zNjM0NSAxOC4xNzM3IDEwLjIxMjcgMTguMTcyMiAxMS4wNzY5QzE4LjE3MyAxMS43NzU1IDE4LjAyNDggMTIuNDY2MiAxNy43Mzc0IDEzLjEwMjlDMTcuNDUgMTMuNzM5NiAxNy4wMzAxIDE0LjMwNzcgMTYuNTA1NyAxNC43NjkySDE3Ljg5NzdaTTE2Ljk0MTQgMTEuMDc2OUMxNi45NDE0IDEyLjA1NjIgMTYuNTUyNCAxMi45OTUzIDE1Ljg2IDEzLjY4NzhDMTUuMTY3NSAxNC4zODAyIDE0LjIyODQgMTQuNzY5MiAxMy4yNDkxIDE0Ljc2OTJDMTIuMjY5OCAxNC43NjkyIDExLjMzMDcgMTQuMzgwMiAxMC42MzgyIDEzLjY4NzhDOS45NDU4IDEyLjk5NTMgOS41NTY3OSAxMi4wNTYyIDkuNTU2NzkgMTEuMDc2OUM5LjU1Njc5IDEwLjA5NzcgOS45NDU4IDkuMTU4NTEgMTAuNjM4MiA4LjQ2NjA3QzExLjMzMDcgNy43NzM2MyAxMi4yNjk4IDcuMzg0NjIgMTMuMjQ5MSA3LjM4NDYyQzE0LjIyODQgNy4zODQ2MiAxNS4xNjc1IDcuNzczNjMgMTUuODYgOC40NjYwN0MxNi41NTI0IDkuMTU4NTEgMTYuOTQxNCAxMC4wOTc3IDE2Ljk0MTQgMTEuMDc2OVpNNi40Nzk4NyAxOC4xMjA2QzYuNDc5ODcgMTcuNTU4MiA2LjcwMzI5IDE3LjAxODggNy4xMDA5OCAxNi42MjExQzcuNDk4NjcgMTYuMjIzNCA4LjAzODA2IDE2IDguNjAwNDggMTZIMTcuODk3N0MxOC40NjAxIDE2IDE4Ljk5OTUgMTYuMjIzNCAxOS4zOTcyIDE2LjYyMTFDMTkuNzk0OSAxNy4wMTg4IDIwLjAxODMgMTcuNTU4MiAyMC4wMTgzIDE4LjEyMDZWMTguMzg1OEMyMC4wMTgzIDE4LjYyODMgMjAuMDE4MyAyMC4wMjQ2IDE5LjE0NTEgMjEuMzc2NkMxOC4yMzI1IDIyLjc4OTUgMTYuNDY5NCAyNCAxMy4yNDkxIDI0QzEwLjAyODggMjQgOC4yNjU3MSAyMi43ODk1IDcuMzUzMSAyMS4zNzY2QzYuNDc5ODcgMjAuMDI0NiA2LjQ3OTg3IDE4LjYyNzcgNi40Nzk4NyAxOC4zODU4VjE4LjEyMDZaXCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjNcIiBtYXNrPVwidXJsKCNwYXRoLTYtaW5zaWRlLTJfNzA3XzEzMTA2KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQgbXMtMSBtdC0yXCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPkdyb3VwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB3ZWVrLWZvbnRcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5hZ2VHcm91cCA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5hZ2VHcm91cDonLS0nfX0gYWdlPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgcHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTcgbWItM1wiPjxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50IG10LTJcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1BlcnNvbnM/LmNvdW50ID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzUGVyc29ucz8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPlBlcnNvbnM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB3ZWVrLWZvbnRcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uYWdlR3JvdXAgPyBnZXRDYXJkRGF0YS5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uYWdlR3JvdXA6Jy0tJ319IGFnZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciB0ZXh0LWNlbnRlciBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0yIHdlZWstZm9udFwiPiBBdmcuIEdyb3VwIHNpemU8L3NwYW4+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMTJMMTAgOEw2IDRcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3tnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgPyBnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5FbmdhZ2VycyBSYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTm9kYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwiZW5nYWdlcnNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBwcmV2aW91cyAgPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nZGFpbHknXCI+ZGF5PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J3dlZWtseSdcIj53ZWVrPC9zcGFuPiA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdtb250aGx5J1wiPm1vbnRoPC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtOTBweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImdldENhcmREYXRhPy5yZXZlbnVlPy5jdXJyZW5jeSAhPT0naW5yJ1wiPiA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJtZS0xXCI+JDwvc3Bhbj4ge3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgPz8gJy0tJ319PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LnJldmVudWU/LmN1cnJlbmN5ID09PSdpbnInXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj48c3BhbiBjbGFzcz1cIm1lLTFcIj7igrk8L3NwYW4+IHt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pID8/ICctLSd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gUmV2ZW51ZSBMb3NzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG10LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzM4ODVfMjUzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwiI0VBRjhGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRUFGOEZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zODg1XzI1MzEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI3LjQ1ODUgMTcuMjI1MUMyNy44MTMzIDE4Ljg1NTYgMjcuNjcwNyAyMC41NjE0IDI3LjA1MDUgMjIuMTAyN0wyNS44NTkzIDIxLjM4MzhMMjYuMDE3IDI2LjA5N0wzMCAyMy44ODM0TDI4LjcxNyAyMy4xMDg2QzMwLjcxNzEgMTguNDgyMyAyOS4wNzI2IDEyLjkzMzMgMjQuNzc5OSAxMC4zNDA3QzIzLjMzMjggOS40NjYzMyAyMS42OTE4IDkuMDA0MDYgMjAuMDIwNiA5LjAwMDAzQzE4LjM0OTQgOC45OTU5OSAxNi43MDY0IDkuNDUwMzMgMTUuMjU1NSAxMC4zMTc3TDE2LjIwNDkgMTIuMDU0NEMxNy41OTMzIDExLjIyNDkgMTkuMTk1MyAxMC44NzEyIDIwLjc4NTggMTEuMDQzQzIyLjM3NjQgMTEuMjE0OSAyMy44NzU0IDExLjkwMzYgMjUuMDcyMyAxMy4wMTI1QzI2LjI2OTIgMTQuMTIxNCAyNy4xMDM3IDE1LjU5NDYgMjcuNDU4NSAxNy4yMjUxWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NDAyIDIwLjc3NTlDMTIuMTg1NCAxOS4xNDUyIDEyLjMyODIgMTcuNDM5MiAxMi45NDg1IDE1Ljg5NzhMMTQuMTM5OCAxNi42MTY3TDEzLjk4MiAxMS45MDM1TDEwIDE0LjExODFMMTEuMjgzIDE0Ljg5MDlDOS4yODE5OSAxOS41MTgyIDEwLjkyNjQgMjUuMDY2MiAxNS4yMTkyIDI3LjY1ODhDMTYuNjY2MSAyOC41MzMzIDE4LjMwNzEgMjguOTk1OCAxOS45NzgzIDI5QzIxLjY0OTUgMjkuMDA0MiAyMy4yOTI2IDI4LjU1IDI0Ljc0MzUgMjcuNjgyOEwyMy43OTUxIDI1Ljk0NjFDMjIuNDA2NyAyNi43NzYgMjAuODA0NSAyNy4xMyAxOS4yMTM4IDI2Ljk1ODNDMTcuNjIzIDI2Ljc4NjcgMTYuMTIzNyAyNi4wOTc5IDE0LjkyNjcgMjQuOTg5QzEzLjcyOTYgMjMuODggMTIuODk1IDIyLjQwNjYgMTIuNTQwMiAyMC43NzU5WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIxLjAzNzIgMTMuMDAzQzIxLjAzNzIgMTIuNTUxNCAyMC42ODcxIDEyLjE4NTIgMjAuMjU1MiAxMi4xODUyQzE5LjgyMzQgMTIuMTg1MiAxOS40NzMzIDEyLjU1MTQgMTkuNDczMyAxMy4wMDNWMTQuMzY1OUgxOC45NTJDMTguMjYwNyAxNC4zNjU5IDE3LjU5NzggMTQuNjUzIDE3LjEwOSAxNS4xNjQyQzE2LjYyMDEgMTUuNjc1NCAxNi4zNDU1IDE2LjM2ODcgMTYuMzQ1NSAxNy4wOTE2QzE2LjM0NTUgMTcuODE0NiAxNi42MjAxIDE4LjUwNzkgMTcuMTA5IDE5LjAxOTFDMTcuNTk3OCAxOS41MzAyIDE4LjI2MDcgMTkuODE3NCAxOC45NTIgMTkuODE3NEgxOS40NzMzVjIxLjk5OEgxNy4xMjc1QzE2LjY5NTYgMjEuOTk4IDE2LjM0NTUgMjIuMzY0MSAxNi4zNDU1IDIyLjgxNThDMTYuMzQ1NSAyMy4yNjc0IDE2LjY5NTYgMjMuNjMzNSAxNy4xMjc1IDIzLjYzMzVIMTkuNDczM1YyNC45OTY0QzE5LjQ3MzMgMjUuNDQ4IDE5LjgyMzQgMjUuODE0MSAyMC4yNTUyIDI1LjgxNDFDMjAuNjg3MSAyNS44MTQxIDIxLjAzNzIgMjUuNDQ4IDIxLjAzNzIgMjQuOTk2NFYyMy42MzM1SDIxLjU1ODVDMjIuMjQ5OCAyMy42MzM1IDIyLjkxMjcgMjMuMzQ2MyAyMy40MDE1IDIyLjgzNTFDMjMuODkwMyAyMi4zMjQgMjQuMTY0OSAyMS42MzA2IDI0LjE2NDkgMjAuOTA3N0MyNC4xNjQ5IDIwLjE4NDggMjMuODkwMyAxOS40OTE1IDIzLjQwMTUgMTguOTgwM0MyMi45MTI3IDE4LjQ2OTEgMjIuMjQ5OCAxOC4xODIgMjEuNTU4NSAxOC4xODJIMjEuMDM3MlYxNi4wMDEzSDIyLjg2MTdDMjMuMjkzNiAxNi4wMDEzIDIzLjY0MzcgMTUuNjM1MiAyMy42NDM3IDE1LjE4MzZDMjMuNjQzNyAxNC43MzIgMjMuMjkzNiAxNC4zNjU5IDIyLjg2MTcgMTQuMzY1OUgyMS4wMzcyVjEzLjAwM1pNMTguOTUyIDE2LjAwMTNIMTkuNDczM1YxOC4xODJIMTguOTUyQzE4LjY3NTUgMTguMTgyIDE4LjQxMDMgMTguMDY3MSAxOC4yMTQ4IDE3Ljg2MjZDMTguMDE5MyAxNy42NTgxIDE3LjkwOTQgMTcuMzgwOCAxNy45MDk0IDE3LjA5MTZDMTcuOTA5NCAxNi44MDI1IDE4LjAxOTMgMTYuNTI1MiAxOC4yMTQ4IDE2LjMyMDdDMTguNDEwMyAxNi4xMTYyIDE4LjY3NTUgMTYuMDAxMyAxOC45NTIgMTYuMDAxM1pNMjEuMDM3MiAyMS45OThWMTkuODE3NEgyMS41NTg1QzIxLjgzNSAxOS44MTc0IDIyLjEwMDIgMTkuOTMyMyAyMi4yOTU3IDIwLjEzNjhDMjIuNDkxMiAyMC4zNDEyIDIyLjYwMTEgMjAuNjE4NiAyMi42MDExIDIwLjkwNzdDMjIuNjAxMSAyMS4xOTY5IDIyLjQ5MTIgMjEuNDc0MiAyMi4yOTU3IDIxLjY3ODdDMjIuMTAwMiAyMS44ODMyIDIxLjgzNSAyMS45OTggMjEuNTU4NSAyMS45OThIMjEuMDM3MlpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8zODg1XzI1MzFcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzg4NV8yNTMxXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18zODg1XzI1MzFcIiByZXN1bHQ9XCJzaGFwZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzg4NV8yNTMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgOSlcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBwcmV2aW91cyAgPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nZGFpbHknXCI+ZGF5PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J3dlZWtseSdcIj53ZWVrPC9zcGFuPiA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdtb250aGx5J1wiPm1vbnRoPC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgbWItNSBweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgaC05MHB4IG10LTMgbXgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjM4MiAxMi44OTIyQzE3LjYzODIgMTIuNjgzNSAxNy43MjEyIDEyLjQ4MzMgMTcuODY4OCAxMi4zMzU3QzE4LjAxNjQgMTIuMTg4MSAxOC4yMTY1IDEyLjEwNTIgMTguNDI1MyAxMi4xMDUySDIxLjU3MzRDMjEuNzgyMiAxMi4xMDUyIDIxLjk4MjMgMTIuMTg4MSAyMi4xMjk5IDEyLjMzNTdDMjIuMjc3NSAxMi40ODMzIDIyLjM2MDUgMTIuNjgzNSAyMi4zNjA1IDEyLjg5MjJDMjIuMzYwNSAxMy4xMDA5IDIyLjI3NzUgMTMuMzAxMSAyMi4xMjk5IDEzLjQ0ODdDMjEuOTgyMyAxMy41OTYzIDIxLjc4MjIgMTMuNjc5MiAyMS41NzM0IDEzLjY3OTJIMjAuNzg2NFYxNC43Mjg2TDIwLjc4NTMgMTQuNzcxNkMyMi4xMTU2IDE0LjkxNzQgMjMuMzc2NyAxNS40Mzk4IDI0LjQyMDQgMTYuMjc3NUwyNC40Mjc3IDE2LjI3MTJMMjUuMjE0OCAxNS40ODQyQzI1LjMxMSAxNS4zODA2IDI1LjQzMzMgMTUuMzA0OCAyNS41NjkgMTUuMjY0OUMyNS43MDQ2IDE1LjIyNTEgMjUuODQ4NSAxNS4yMjI1IDI1Ljk4NTUgMTUuMjU3NUMyNi4xMjI0IDE1LjI5MjUgMjYuMjQ3NCAxNS4zNjM4IDI2LjM0NzIgMTUuNDYzOUMyNi40NDcxIDE1LjU2NCAyNi41MTgxIDE1LjY4OTIgMjYuNTUyNyAxNS44MjYzQzI2LjU4NzcgMTUuOTYzMSAyNi41ODUyIDE2LjEwNjggMjYuNTQ1NSAxNi4yNDIzQzI2LjUwNTggMTYuMzc3OCAyNi40MzA0IDE2LjUwMDIgMjYuMzI3MSAxNi41OTY1TDI1LjU0MDEgMTcuMzgzNkwyNS41MzM4IDE3LjM5MDlDMjYuMzY2MiAxOC40MzMxIDI2Ljg4NzUgMTkuNjg5MSAyNy4wMzc3IDIxLjAxNDRDMjcuMTg3OCAyMi4zMzk3IDI2Ljk2MDcgMjMuNjgwNSAyNi4zODI0IDI0Ljg4MjVDMjUuODA0MiAyNi4wODQ1IDI0Ljg5ODMgMjcuMDk4NyAyMy43NjkxIDI3LjgwODZDMjIuNjM5OSAyOC41MTg0IDIxLjMzMzIgMjguODk1IDE5Ljk5OTMgMjguODk1QzE4LjY2NTUgMjguODk1IDE3LjM1ODggMjguNTE4NCAxNi4yMjk2IDI3LjgwODZDMTUuMTAwNCAyNy4wOTg3IDE0LjE5NDUgMjYuMDg0NSAxMy42MTYzIDI0Ljg4MjVDMTMuMDM4IDIzLjY4MDUgMTIuODEwOSAyMi4zMzk3IDEyLjk2MSAyMS4wMTQ0QzEzLjExMTIgMTkuNjg5MSAxMy42MzI1IDE4LjQzMzEgMTQuNDY0OSAxNy4zOTA5TDE0LjQ1ODYgMTcuMzgzNkwxMy42NzE2IDE2LjU5NjVDMTMuNTMyNCAxNi40NDc0IDEzLjQ1NjYgMTYuMjUgMTMuNDYwMSAxNi4wNDZDMTMuNDYzNiAxNS44NDIgMTMuNTQ2MiAxNS42NDczIDEzLjY5MDUgMTUuNTAzMUMxMy44MzQ3IDE1LjM1ODggMTQuMDI5NCAxNS4yNzYyIDE0LjIzMzQgMTUuMjcyN0MxNC40Mzc0IDE1LjI2OTIgMTQuNjM0OCAxNS4zNDUgMTQuNzgzOSAxNS40ODQyTDE1LjU3MSAxNi4yNzEyTDE1LjU3ODMgMTYuMjc3NUMxNi42MjE3IDE1LjQ0IDE3Ljg4MjQgMTQuOTE3NiAxOS4yMTIzIDE0Ljc3MTZWMTMuNjc5MkgxOC40MjUzQzE4LjIxNjUgMTMuNjc5MiAxOC4wMTY0IDEzLjU5NjMgMTcuODY4OCAxMy40NDg3QzE3LjcyMTIgMTMuMzAxMSAxNy42MzgyIDEzLjEwMDkgMTcuNjM4MiAxMi44OTIyWk0xOS45OTkzIDI3LjMyMTJDMjEuNDYwNiAyNy4zMjExIDIyLjg2MiAyNi43NDA0IDIzLjg5NTIgMjUuNzA3MUMyNC45Mjg0IDI0LjY3MzcgMjUuNTA4NyAyMy4yNzIyIDI1LjUwODYgMjEuODEwOUMyNS41MDg1IDIwLjM0OTYgMjQuOTI3OCAxOC45NDgyIDIzLjg5NDUgMTcuOTE1QzIyLjg2MTEgMTYuODgxOSAyMS40NTk2IDE2LjMwMTUgMTkuOTk4MyAxNi4zMDE2QzE4LjUzNyAxNi4zMDE4IDE3LjEzNTYgMTYuODgyNCAxNi4xMDI1IDE3LjkxNThDMTUuMDY5MyAxOC45NDkyIDE0LjQ4ODkgMjAuMzUwNyAxNC40ODkgMjEuODExOUMxNC40ODkyIDIzLjI3MzIgMTUuMDY5OCAyNC42NzQ2IDE2LjEwMzIgMjUuNzA3OEMxNy4xMzY2IDI2Ljc0MSAxOC41MzgxIDI3LjMyMTMgMTkuOTk5MyAyNy4zMjEyWk0yMC40MDc2IDIwLjI5MDNMMjEuODAzMiAxOC44OTQ3QzIxLjg3NTggMTguODE5NSAyMS45NjI2IDE4Ljc1OTUgMjIuMDU4NiAxOC43MTgyQzIyLjE1NDYgMTguNjc2OSAyMi4yNTc5IDE4LjY1NTEgMjIuMzYyNCAxOC42NTQyQzIyLjQ2NjkgMTguNjUzMiAyMi41NzA1IDE4LjY3MzEgMjIuNjY3MyAxOC43MTI2QzIyLjc2NCAxOC43NTIxIDIyLjg1MTkgMTguODEwNSAyMi45MjU5IDE4Ljg4NDRDMjIuOTk5OCAxOC45NTgyIDIzLjA1ODMgMTkuMDQ2MSAyMy4wOTc5IDE5LjE0MjhDMjMuMTM3NSAxOS4yMzk1IDIzLjE1NzUgMTkuMzQzMSAyMy4xNTY2IDE5LjQ0NzZDMjMuMTU1NyAxOS41NTIxIDIzLjEzNDEgMTkuNjU1NCAyMy4wOTI5IDE5Ljc1MTVDMjMuMDUxNyAxOS44NDc1IDIyLjk5MTggMTkuOTM0NCAyMi45MTY2IDIwLjAwN0wyMS41MjEgMjEuNDAzN0MyMS41ODMgMjEuNjM3MSAyMS41OTA2IDIxLjg4MTUgMjEuNTQzMiAyMi4xMTgyQzIxLjQ5NTggMjIuMzU1IDIxLjM5NDggMjIuNTc3NyAyMS4yNDc4IDIyLjc2OTJDMjEuMTAwOCAyMi45NjA3IDIwLjkxMTggMjMuMTE1OSAyMC42OTUzIDIzLjIyMjhDMjAuNDc4OSAyMy4zMjk4IDIwLjI0MDggMjMuMzg1NiAxOS45OTkzIDIzLjM4NkMxOS43NzY2IDIzLjM4NDEgMTkuNTU2NyAyMy4zMzQ5IDE5LjM1NDQgMjMuMjQxNkMxOS4xNTIxIDIzLjE0ODMgMTguOTcxOCAyMy4wMTMxIDE4LjgyNTcgMjIuODQ1QzE4LjY3OTUgMjIuNjc2OCAxOC41NzA3IDIyLjQ3OTYgMTguNTA2NiAyMi4yNjYyQzE4LjQ0MjQgMjIuMDUyOCAxOC40MjQzIDIxLjgyODMgMTguNDUzNCAyMS42MDc0QzE4LjQ4MjUgMjEuMzg2NSAxOC41NTgyIDIxLjE3NDMgMTguNjc1NSAyMC45ODQ5QzE4Ljc5MjggMjAuNzk1NSAxOC45NDkgMjAuNjMzMiAxOS4xMzM4IDIwLjUwODZDMTkuMzE4NSAyMC4zODQxIDE5LjUyNzYgMjAuMzAwMyAxOS43NDcyIDIwLjI2MjZDMTkuOTY2OCAyMC4yMjUgMjAuMTkxOSAyMC4yMzQ0IDIwLjQwNzYgMjAuMjkwM1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTEgY2FyZC1sYWJlbCBoZWFkZXJcIj57e2dldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgPyBnZXRDYXJkRGF0YT8uYXZnRHdlbGxUaW1lIDonLS0nfX0gbWluczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnIER3ZWxsIFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgcHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MVwiIHZpZXdCb3g9XCIwIDAgNDAgNDFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxLjkwMDQgMTIuMTY3NUMyMi45OTU4IDEyLjE2NzUgMjQuMDQyMyAxMi4zOTE4IDI0Ljk5NzcgMTIuNzk4N0MyNS45ODg5IDEzLjIyMDcgMjYuODgwOSAxMy44NDAyIDI3LjYyNzkgMTQuNjA4N0MyOC4zNzM0IDE1LjM3NTYgMjguOTc1NiAxNi4yOTMxIDI5LjM4NTcgMTcuMzE2MkMyOS43ODEzIDE4LjI5OSAyOS45OTkzIDE5LjM3NTYgMjkuOTk5MyAyMC41MDA4QzI5Ljk5OTMgMjEuNjI3NyAyOS43ODEzIDIyLjcwNDMgMjkuMzg1NyAyMy42ODcxQzI4Ljk3NTYgMjQuNzA2OCAyOC4zNzM0IDI1LjYyNDQgMjcuNjI2MyAyNi4zOTI5QzI2Ljg4MDkgMjcuMTU5OCAyNS45ODg5IDI3Ljc3OTMgMjQuOTk0NSAyOC4yMDEyQzI0LjAzOTEgMjguNjA4MSAyMi45OTI1IDI4LjgzMjUgMjEuODk4OCAyOC44MzI1QzIwLjgwMzQgMjguODMyNSAxOS43NTY4IDI4LjYwODEgMTguODAxNCAyOC4yMDEyQzE3LjgxMDIgMjcuNzc5MyAxNi45MTgzIDI3LjE1OTggMTYuMTcyOSAyNi4zOTI5TDE2LjE3MTIgMjYuMzkxMkMxNS40MjQyIDI1LjYyMjcgMTQuODIzNiAyNC43MDUyIDE0LjQxMzQgMjMuNjg3MUMxNC4yODY1IDIzLjM3MDcgMTQuMTc3NCAyMy4wNDU5IDE0LjA4NzkgMjIuNzEyN0MxNC4yNTcyIDIyLjcyOTQgMTQuNDI5NyAyMi43Mzc4IDE0LjYwMzggMjIuNzM3OEMxNC45MzQyIDIyLjczNzggMTUuMjU2NSAyMi43MDc2IDE1LjU3MDYgMjIuNjQ5QzE1LjYyMjcgMjIuODA5OCAxNS42Nzk3IDIyLjk2ODggMTUuNzQxNSAyMy4xMjQ2QzE2LjA3ODUgMjMuOTYxNyAxNi41NzMyIDI0LjcxNTIgMTcuMTg4NSAyNS4zNDgxQzE3LjgwMzcgMjUuOTgxIDE4LjUzNzggMjYuNDkgMTkuMzQ5OSAyNi44MzY2QzIwLjEzMjggMjcuMTY5OCAyMC45OTM4IDI3LjM1NTcgMjEuODk4OCAyNy4zNTU3QzIyLjgwMzcgMjcuMzU1NyAyMy42NjMxIDI3LjE3MTUgMjQuNDQ3NiAyNi44MzY2QzI1LjI2MTQgMjYuNDkgMjUuOTkzOCAyNS45ODEgMjYuNjA5MSAyNS4zNDgxQzI3LjIyNDMgMjQuNzE1MiAyNy43MTkxIDIzLjk2MDEgMjguMDU2IDIzLjEyNDZDMjguMzc5OSAyMi4zMTkyIDI4LjU2MDUgMjEuNDMzNCAyOC41NjA1IDIwLjUwMjVDMjguNTYwNSAxOS41NzE1IDI4LjM4MTUgMTguNjg3NSAyOC4wNTYgMTcuODgwNEMyNy43MTkxIDE3LjA0MzIgMjcuMjI0MyAxNi4yODk4IDI2LjYwOTEgMTUuNjU2OUMyNS45OTM4IDE1LjAyNCAyNS4yNTk4IDE0LjUxNDkgMjQuNDQ3NiAxNC4xNjg0QzIzLjY2NDcgMTMuODM1MiAyMi44MDM3IDEzLjY0OTMgMjEuODk4OCAxMy42NDkzQzIwLjk5MzggMTMuNjQ5MyAyMC4xMzQ0IDEzLjgzMzUgMTkuMzQ5OSAxNC4xNjg0QzE5LjI3OTkgMTQuMTk4NSAxOS4yMSAxNC4yMzAzIDE5LjE0MTYgMTQuMjYyMUMxOC44NzQ3IDEzLjgzMDEgMTguNTUyNCAxMy40MzgzIDE4LjE4MjkgMTMuMDk4NEMxOC4zODQ4IDEyLjk5MTMgMTguNTkxNSAxMi44OTI1IDE4LjgwMTQgMTIuODAyMUMxOS43NjAxIDEyLjM5MTggMjAuODA1IDEyLjE2NzUgMjEuOTAwNCAxMi4xNjc1Wk0yMC45NzEgMTYuNTM5M0MyMC45NzEgMTYuMzM1IDIxLjA1MjQgMTYuMTUwOCAyMS4xODEgMTYuMDE2OUMyMS4zMTEyIDE1Ljg4MjkgMjEuNDkwMiAxNS44MDA5IDIxLjY4ODggMTUuODAwOUMyMS44ODc0IDE1LjgwMDkgMjIuMDY2NCAxNS44ODI5IDIyLjE5NjYgMTYuMDE2OUMyMi4zMjY4IDE2LjE1MDggMjIuNDA2NiAxNi4zMzUgMjIuNDA2NiAxNi41MzkzVjIwLjQyNzFMMjUuMjMwNSAyMi4xNTAxQzI1LjM5OTcgMjIuMjUzOSAyNS41MTM3IDIyLjQxOTYgMjUuNTU5MiAyMi42MDIxQzI1LjYwNDggMjIuNzg0NyAyNS41ODM3IDIyLjk4NTYgMjUuNDgyNyAyMy4xNTk3VjIzLjE2MTRDMjUuMzgxOCAyMy4zMzU1IDI1LjIyMDcgMjMuNDUyNyAyNS4wNDMzIDIzLjQ5OTZDMjQuODY1OSAyMy41NDY1IDI0LjY3MDYgMjMuNTI0NyAyNC41MDEzIDIzLjQyMDlIMjQuNDk5N0wyMS4zNDA1IDIxLjQ5MzdDMjEuMjMxNCAyMS40MzE4IDIxLjE0MTkgMjEuMzQxMyAyMS4wNzY4IDIxLjIzNDJDMjEuMDEwMSAyMS4xMjIgMjAuOTcxIDIwLjk4OTcgMjAuOTcxIDIwLjg0OTFWMTYuNTM5M1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNC4zOTEzIDEyLjYwOTVDMTYuODE2NCAxMi42MDk1IDE4Ljc4MjYgMTQuNjMyMSAxOC43ODI2IDE3LjEyNjlDMTguNzgyNiAxOS42MjE4IDE2LjgxNjQgMjEuNjQ0NCAxNC4zOTEzIDIxLjY0NDRDMTEuOTY2MSAyMS42NDQ0IDEwIDE5LjYyMTggMTAgMTcuMTI2OUMxMCAxNC42MzIxIDExLjk2NjEgMTIuNjA5NSAxNC4zOTEzIDEyLjYwOTVaTTE0LjM5MTMgMTkuNzE3MkwxNi43NDggMTYuNzIwMUgxNS4yODQ4VjE1LjEyNjFIMTMuNDk3N1YxNi43MjAxSDEyLjAzNDVMMTQuMzkxMyAxOS43MTcyWlwiIGZpbGw9XCIjRjA0NDM4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiPiB7e2dldENhcmREYXRhPy5hdmdEb3duVGltZSA/IGdldENhcmREYXRhPy5hdmdEb3duVGltZSA6Jy0tJ319IG1pbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcgRG93biBUaW1lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtMyBwcy01XCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0XCI+Q29udmVyc2lvbiBGdW5uZWwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQzMl84MDAzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDY1IDEwLjY2NjZWNy45OTk5Mk04LjAwMDY1IDUuMzMzMjVIOC4wMDczMk0xNC42NjczIDcuOTk5OTJDMTQuNjY3MyAxMS42ODE4IDExLjY4MjYgMTQuNjY2NiA4LjAwMDY1IDE0LjY2NjZDNC4zMTg3NSAxNC42NjY2IDEuMzMzOTggMTEuNjgxOCAxLjMzMzk4IDcuOTk5OTJDMS4zMzM5OCA0LjMxODAyIDQuMzE4NzUgMS4zMzMyNSA4LjAwMDY1IDEuMzMzMjVDMTEuNjgyNiAxLjMzMzI1IDE0LjY2NzMgNC4zMTgwMiAxNC42NjczIDcuOTk5OTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MzJfODAwMzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhdGxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjc1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciBwdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYXRub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhlYXRsb2FkaW5nICYmICFoZWF0bm9EYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCIgaWQ9XCJjaGFydGRpdlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtcGFsb2FkaW5nICYmIHN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMSB8fCBtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxIHx8ICFzdG9yZUlkYXJyYXk/Lmxlbmd0aFwiIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1wYWxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjI1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWFwbm9EYXRhXCIgIGNsYXNzPVwicm93IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW1hcFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFN0b3JlIG1hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtcGFsb2FkaW5nICYmICFtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbXBhbG9hZGluZyAmJiAhbWFwbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcmVWaWV3KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtZS04IGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBsb3JlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBjb2wtbWQtMTIgcHQtMCBwYi01IHBzLTdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm1hcFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMjU4cHg7XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJjYXJkIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTUgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0XCI+UmVjYXAgVmlkZW8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDMyXzgwMDM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDY1IDEwLjY2NjZWNy45OTk5Mk04LjAwMDY1IDUuMzMzMjVIOC4wMDczMk0xNC42NjczIDcuOTk5OTJDMTQuNjY3MyAxMS42ODE4IDExLjY4MjYgMTQuNjY2NiA4LjAwMDY1IDE0LjY2NjZDNC4zMTg3NSAxNC42NjY2IDEuMzMzOTggMTEuNjgxOCAxLjMzMzk4IDcuOTk5OTJDMS4zMzM5OCA0LjMxODAyIDQuMzE4NzUgMS4zMzMyNSA4LjAwMDY1IDEuMzMzMjVDMTEuNjgyNiAxLjMzMzI1IDE0LjY2NzMgNC4zMTgwMiAxNC42NjczIDcuOTk5OTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MzJfODAwMzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+RGF0ZWQ6IHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6JyBkZCBNTU0seXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgbXQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbCB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTkuNTE5NTMgMC4zMzM5ODRDMTAuMzk1OCAwLjMzMzk4NCAxMS4yMzMxIDAuNTEzNDc3IDExLjk5NzQgMC44Mzg5NzRDMTIuNzkwNCAxLjE3NjUzIDEzLjUwMzkgMS42NzIxNCAxNC4xMDE2IDIuMjg2OTdDMTQuNjk3OSAyLjkwMDQ2IDE1LjE3OTcgMy42MzQ1IDE1LjUwNzggNC40NTI5M0MxNS44MjQyIDUuMjM5MjIgMTUuOTk4NyA2LjEwMDUxIDE1Ljk5ODcgNy4wMDA2NUMxNS45OTg3IDcuOTAyMTMgMTUuODI0MiA4Ljc2MzQzIDE1LjUwNzggOS41NDk3MUMxNS4xNzk3IDEwLjM2NTUgMTQuNjk3OSAxMS4wOTk1IDE0LjEwMDMgMTEuNzE0M0MxMy41MDM5IDEyLjMyNzggMTIuNzkwNCAxMi44MjM0IDExLjk5NDggMTMuMTYxQzExLjIzMDUgMTMuNDg2NSAxMC4zOTMyIDEzLjY2NiA5LjUxODIzIDEzLjY2NkM4LjY0MTkzIDEzLjY2NiA3LjgwNDY5IDEzLjQ4NjUgNy4wNDAzNiAxMy4xNjFDNi4yNDc0IDEyLjgyMzQgNS41MzM4NSAxMi4zMjc4IDQuOTM3NSAxMS43MTQzTDQuOTM2MiAxMS43MTNDNC4zMzg1NCAxMS4wOTgyIDMuODU4MDcgMTAuMzY0MSAzLjUyOTk1IDkuNTQ5NzFDMy40MjgzOSA5LjI5NjU1IDMuMzQxMTUgOS4wMzY2OCAzLjI2OTUzIDguNzcwMTNDMy40MDQ5NSA4Ljc4MzUyIDMuNTQyOTcgOC43OTAyMiAzLjY4MjI5IDguNzkwMjJDMy45NDY2MSA4Ljc5MDIyIDQuMjA0NDMgOC43NjYxMSA0LjQ1NTczIDguNzE5MjJDNC40OTc0IDguODQ3ODIgNC41NDI5NyA4Ljk3NTA3IDQuNTkyNDUgOS4wOTk2NEM0Ljg2MTk4IDkuNzY5MzkgNS4yNTc4MSAxMC4zNzIyIDUuNzUgMTAuODc4NUM2LjI0MjE5IDExLjM4NDggNi44Mjk0MyAxMS43OTIgNy40NzkxNyAxMi4wNjkzQzguMTA1NDcgMTIuMzM1OSA4Ljc5NDI3IDEyLjQ4NDUgOS41MTgyMyAxMi40ODQ1QzEwLjI0MjIgMTIuNDg0NSAxMC45Mjk3IDEyLjMzNzIgMTEuNTU3MyAxMi4wNjkzQzEyLjIwODMgMTEuNzkyIDEyLjc5NDMgMTEuMzg0OCAxMy4yODY1IDEwLjg3ODVDMTMuNzc4NiAxMC4zNzIyIDE0LjE3NDUgOS43NjgwNSAxNC40NDQgOS4wOTk2NEMxNC43MDMxIDguNDU1MzQgMTQuODQ3NyA3Ljc0Njc1IDE0Ljg0NzcgNy4wMDE5OUMxNC44NDc3IDYuMjU3MjMgMTQuNzA0NCA1LjU0OTk4IDE0LjQ0NCA0LjkwNDM0QzE0LjE3NDUgNC4yMzQ1OSAxMy43Nzg2IDMuNjMxODIgMTMuMjg2NSAzLjEyNTQ5QzEyLjc5NDMgMi42MTkxNiAxMi4yMDcgMi4yMTE5NiAxMS41NTczIDEuOTM0NjhDMTAuOTMxIDEuNjY4MTIgMTAuMjQyMiAxLjUxOTQ0IDkuNTE4MjMgMS41MTk0NEM4Ljc5NDI3IDEuNTE5NDQgOC4xMDY3NyAxLjY2Njc4IDcuNDc5MTcgMS45MzQ2OEM3LjQyMzE4IDEuOTU4NzkgNy4zNjcxOSAxLjk4NDI0IDcuMzEyNSAyLjAwOTY5QzcuMDk4OTYgMS42NjQxIDYuODQxMTUgMS4zNTA2NiA2LjU0NTU3IDEuMDc4NzRDNi43MDcwMyAwLjk5MzAxNiA2Ljg3MjQgMC45MTM5ODYgNy4wNDAzNiAwLjg0MTY1M0M3LjgwNzI5IDAuNTEzNDc3IDguNjQzMjMgMC4zMzM5ODQgOS41MTk1MyAwLjMzMzk4NFpNOC43NzYwNCAzLjgzMTQxQzguNzc2MDQgMy42Njc5OSA4Ljg0MTE1IDMuNTIwNjQgOC45NDQwMSAzLjQxMzQ4QzkuMDQ4MTggMy4zMDYzMiA5LjE5MTQxIDMuMjQwNjkgOS4zNTAyNiAzLjI0MDY5QzkuNTA5MTEgMy4yNDA2OSA5LjY1MjM0IDMuMzA2MzIgOS43NTY1MSAzLjQxMzQ4QzkuODYwNjggMy41MjA2NCA5LjkyNDQ4IDMuNjY3OTkgOS45MjQ0OCAzLjgzMTQxVjYuOTQxNzFMMTIuMTgzNiA4LjMyMDA1QzEyLjMxOSA4LjQwMzEgMTIuNDEwMiA4LjUzNTcxIDEyLjQ0NjYgOC42ODE3MkMxMi40ODMxIDguODI3NzIgMTIuNDY2MSA4Ljk4ODQ2IDEyLjM4NTQgOS4xMjc3N1Y5LjEyOTExQzEyLjMwNDcgOS4yNjg0MiAxMi4xNzU4IDkuMzYyMTggMTIuMDMzOSA5LjM5OTY5QzExLjg5MTkgOS40MzcxOSAxMS43MzU3IDkuNDE5NzggMTEuNjAwMyA5LjMzNjczSDExLjU5OUw5LjA3MTYxIDcuNzk0OTdDOC45ODQzOCA3Ljc0NTQxIDguOTEyNzYgNy42NzMwOCA4Ljg2MDY4IDcuNTg3MzVDOC44MDcyOSA3LjQ5NzYgOC43NzYwNCA3LjM5MTc4IDguNzc2MDQgNy4yNzkyN1YzLjgzMTQxWlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0zLjUxMzAyIDAuNjg3NjIyQzUuNDUzMTIgMC42ODc2MjIgNy4wMjYwNCAyLjMwNTczIDcuMDI2MDQgNC4zMDE1OEM3LjAyNjA0IDYuMjk3NDMgNS40NTMxMiA3LjkxNTU0IDMuNTEzMDIgNy45MTU1NEMxLjU3MjkyIDcuOTE1NTQgMCA2LjI5NzQzIDAgNC4zMDE1OEMwIDIuMzA1NzMgMS41NzI5MiAwLjY4NzYyMiAzLjUxMzAyIDAuNjg3NjIyWk0zLjUxMzAyIDYuMzczNzhMNS4zOTg0NCAzLjk3NjA4SDQuMjI3ODZWMi43MDA4OEgyLjc5ODE4VjMuOTc2MDhIMS42Mjc2TDMuNTEzMDIgNi4zNzM3OFpcIiBmaWxsPVwiI0YwNDQzOFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldFJlY2FwVmlkZW9EYXRhPy5kb3duVGltZSA/PyAnLS0nfX0gTWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXMtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJGcmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTEzLjQzNDkgMi41QzE0LjgyMzggMi41IDE1Ljk4NzEgMy4wMTM4OSAxNi45MjQ5IDQuMDQxNjdDMTcuODYyNyA1LjA2OTQ0IDE4LjMzMTMgNi4yOTE2NyAxOC4zMzA3IDcuNzA4MzNDMTguMzMwNyA3Ljk1ODMzIDE4LjMxNjggOC4yMDUgMTguMjg5MSA4LjQ0ODMzQzE4LjI2MTMgOC42OTE2NyAxOC4yMTI3IDguOTMxMTEgMTguMTQzMiA5LjE2NjY3SDEyLjkzNDlMMTEuNTE4MiA3LjA0MTY3QzExLjQ0ODggNi45MzA1NiAxMS4zNTE2IDYuODQwMjggMTEuMjI2NiA2Ljc3MDgzQzExLjEwMTYgNi43MDEzOSAxMC45Njk2IDYuNjY2NjcgMTAuODMwNyA2LjY2NjY3QzEwLjY1MDIgNi42NjY2NyAxMC40ODY4IDYuNzIyMjIgMTAuMzQwNyA2LjgzMzMzQzEwLjE5NDYgNi45NDQ0NCAxMC4wOTQxIDcuMDgzMzMgMTAuMDM5MSA3LjI1TDguOTE0MDYgMTAuNjI1TDguMTg0OSA5LjU0MTY3QzguMTE1NDUgOS40MzA1NiA4LjAxODIzIDkuMzQwMjggNy44OTMyMyA5LjI3MDgzQzcuNzY4MjMgOS4yMDEzOSA3LjYzNjI4IDkuMTY2NjcgNy40OTc0IDkuMTY2NjdIMS44NTE1NkMxLjc4MjEyIDguOTMwNTYgMS43MzM1MSA4LjY5MDgzIDEuNzA1NzMgOC40NDc1QzEuNjc3OTUgOC4yMDQxNyAxLjY2NDA2IDcuOTY0NzIgMS42NjQwNiA3LjcyOTE3QzEuNjY0MDYgNi4yOTg2MSAyLjEyOTM0IDUuMDY5NDQgMy4wNTk5IDQuMDQxNjdDMy45OTA0NSAzLjAxMzg5IDUuMTUwMTcgMi41IDYuNTM5MDYgMi41QzcuMjA1NzMgMi41IDcuODM0MzQgMi42MzE5NCA4LjQyNDkgMi44OTU4M0M5LjAxNTQ1IDMuMTU5NzIgOS41Mzk2MiAzLjUyNzc4IDkuOTk3NCA0QzEwLjQ0MTggMy41Mjc3OCAxMC45NTkzIDMuMTU5NzIgMTEuNTQ5OSAyLjg5NTgzQzEyLjE0MDUgMi42MzE5NCAxMi43Njg4IDIuNSAxMy40MzQ5IDIuNVpNOS45OTc0IDE3LjVDOS43NDc0IDE3LjUgOS41MDc2NyAxNy40NTQ3IDkuMjc4MjMgMTcuMzY0MkM5LjA0ODc4IDE3LjI3MzYgOC44NDQwNiAxNy4xMzgzIDguNjY0MDYgMTYuOTU4M0wzLjA4MDczIDExLjM1NDJDMi45OTc0IDExLjI3MDggMi45MjEwMSAxMS4xODc1IDIuODUxNTYgMTEuMTA0MkMyLjc4MjEyIDExLjAyMDggMi43MTI2NyAxMC45MzA2IDIuNjQzMjMgMTAuODMzM0g3LjAzOTA2TDguNDU1NzMgMTIuOTU4M0M4LjUyNTE3IDEzLjA2OTQgOC42MjI0IDEzLjE1OTcgOC43NDc0IDEzLjIyOTJDOC44NzI0IDEzLjI5ODYgOS4wMDQzNCAxMy4zMzMzIDkuMTQzMjMgMTMuMzMzM0M5LjMyMzc4IDEzLjMzMzMgOS40OTA0NSAxMy4yNzc4IDkuNjQzMjMgMTMuMTY2N0M5Ljc5NjAxIDEzLjA1NTYgOS45MDAxNyAxMi45MTY3IDkuOTU1NzMgMTIuNzVMMTEuMDgwNyA5LjM3NUwxMS43ODkxIDEwLjQ1ODNDMTEuODcyNCAxMC41Njk0IDExLjk3NjYgMTAuNjU5NyAxMi4xMDE2IDEwLjcyOTJDMTIuMjI2NiAxMC43OTg2IDEyLjM1ODUgMTAuODMzMyAxMi40OTc0IDEwLjgzMzNIMTcuMzMwN0wxNy4xMjI0IDExLjA4MzNMMTYuOTE0MSAxMS4zMzMzTDExLjMwOTkgMTYuOTU4M0MxMS4xMjkzIDE3LjEzODkgMTAuOTI4IDE3LjI3NDQgMTAuNzA1NyAxNy4zNjVDMTAuNDgzNSAxNy40NTU2IDEwLjI0NzQgMTcuNTAwNiA5Ljk5NzQgMTcuNVpcIiBmaWxsPVwiIzEyQjc2QVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldFJlY2FwVmlkZW9EYXRhPy5oZWFsdGggPz8gJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FtZXJhVmlldygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbXgtMiBidG4tbGlnaHQtcHJpbWFyeTEgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+TGl2ZSBWaWV3PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2FwbGFvZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0yMjVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjYXBub0RhdGFcIiAgY2xhc3M9XCJyb3cgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBSZWNhcCB2aWRlbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZWNhcGxhb2RpbmcgJiYgIXJlY2Fwbm9EYXRhXCIgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2Fyb3VzZWwtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlY2Fwc0dyb3VwZWQ7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gY3VycmVudEluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBhaXIgb2YgZ3JvdXBcIiBbbmdDbGFzc109XCJjb2xWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicGFpci50aHVtYkltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlkZW9DbGljayhwYWlyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS10aHVtYiBtYi04IGQtYmxvY2sgdy0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkltYWdlIHt7IGkgKyAxIH19XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb25kaXRpb25hbGx5IGRpc3BsYXkgUHJldmlvdXMgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldlwiICpuZ0lmPVwiY3VycmVudEluZGV4ID4gMFwiIChjbGljayk9XCJwcmV2U2xpZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbmRpdGlvbmFsbHkgZGlzcGxheSBOZXh0IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHRcIiAqbmdJZj1cImN1cnJlbnRJbmRleCA8IHJlY2Fwc0dyb3VwZWQubGVuZ3RoIC0gMVwiIChjbGljayk9XCJuZXh0U2xpZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5hdmlnYXRpb24gRG90cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNhcHNHcm91cGVkLmxlbmd0aCA+IDFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjYXJvdXNlbC1pbmRpY2F0b3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiByZWNhcHNHcm91cGVkOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBjdXJyZW50SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1NsaWRlKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dmlkZW8gY29udHJvbHMgYXV0b3BsYXkgY2xhc3M9XCJyZWNhcC1pbWcgcC0zXCIgW3NyY109XCJnZXRSZWNhcERhdGE/LnZpZGVvVVJMXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c291cmNlICB0eXBlPVwidmlkZW8vbXA0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c291cmNlIFtzcmNdPVwiZ2V0UmVjYXBEYXRhPy52aWRlb1VSTFwiIHR5cGU9XCJ2aWRlby9vZ2dcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L3ZpZGVvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICNtYXBDb250YWluZXIgc3R5bGU9XCJoZWlnaHQ6MjMwcHg7XCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+PGltZyBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3JlY2FwLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwicmVjYXAtaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+PGltZyBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3JlY2FwLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwicmVjYXAtaW1nXCI+PC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC0zXCI+XHJcbiAgICAgICAgPGxpYi10cmFmZmljLWNoYXJ0cyBjbGFzcz1cIm15LTJcIj48L2xpYi10cmFmZmljLWNoYXJ0cz5cclxuICAgIFxyXG4gICAgICAgIDxsaWItdHJhZmZpYy1jYXJkLWNoYXJ0cyBjbGFzcz1cIm15LTJcIj48L2xpYi10cmFmZmljLWNhcmQtY2hhcnRzPlxyXG4gICAgICAgIDxsaWItaW1hZ2UtZG9jICpuZ0lmPVwic3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDFcIiBjbGFzcz1cIm15LTJcIj48L2xpYi1pbWFnZS1kb2M+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvbC1tZC02IG10LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+UGVyZm9ybWFuY2UgTWF0cml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQzMl84MDAzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0zIGFsaWduLWl0ZW1zLWNlbnRlciB3LTc1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdC1zbSBmb3JtLXNlbGVjdCBtZS0yIGRyb3BzZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZvb3RmYWxsVmFsdWVcIiAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9iaiBvZiBnZXRGaWx0ZXJlZEZvb3RmYWxsRGF0YXNldHMoKVwiIFtpZF09XCJvYmoubGFiZWxcIiBbdmFsdWVdPVwib2JqLnZhbHVlXCI+e3tvYmoubGFiZWx9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+VnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdC1zbSBmb3JtLXNlbGVjdCBtcy0yIGRyb3BzZWxlY3RcIiBbKG5nTW9kZWwpXT1cImJvdW5jZVZhbHVlXCIgKGNoYW5nZSk9XCJvbkJvdW5jZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKVwiIFtpZF09XCJvYmoubGFiZWxcIiBbdmFsdWVdPVwib2JqLnZhbHVlXCI+e3tvYmoubGFiZWx9fTwvb3B0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGVyZm9ybWFuY2VMb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBlcmZvcm1hbmNlbm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIHt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19IHZzIHt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXBlcmZvcm1hbmNlTG9hZGluZyAmJiAhcGVyZm9ybWFuY2Vub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50LWNoYXJ0IHotMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4aXMtbGFiZWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBYIEF4aXMgTGFiZWwgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIngtYXhpcy1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19IC0+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gWSBBeGlzIExhYmVsIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ5LWF4aXMtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19IC0+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVG9wIExlZnQgUXVhZHJhbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnRcIiBpZD1cInExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkhpZ2ggPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBMb3cgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRvcCBSaWdodCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SGlnaCA8c3BhbiAqbmdJZj1cImZvb3RmYWxsTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9vdGZhbGxMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj4sIEhpZ2ggPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBMZWZ0IFF1YWRyYW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50XCIgaWQ9XCJxM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Mb3cgPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBMb3cgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBSaWdodCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TG93IDxzcGFuICpuZ0lmPVwiZm9vdGZhbGxMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb290ZmFsbExhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPiwgSGlnaCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2JvdW5jZUxhYmVsfCB0aXRsZWNhc2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBvaW50IG9mIHBvaW50c1wiIGNsYXNzPVwicG9pbnRcIiBbbmdTdHlsZV09XCJ7J2JvdHRvbSc6IHBvaW50LnRvcCwgJ2xlZnQnOiBwb2ludC5sZWZ0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIChjbGljayk9XCJ0b2dnbGVUb29sdGlwKHBvaW50Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvdFwiID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENsaWNrYWJsZSBsYWJlbCB0aGF0IHRvZ2dsZXMgdGhlIHRvb2x0aXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHotMSBtdC00XCIgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcG9pbnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gVG9vbHRpcCBQb3B1cCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1wb3B1cCB6LTVcIiAqbmdJZj1cImFjdGl2ZVRvb2x0aXAgPT09IHBvaW50Lm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC13aGl0ZVwiPnt7IHBvaW50Lm5hbWUgfX08L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5Bdmcge3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX06IHt7IHBvaW50LmF2Z0Zvb3RmYWxsIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm15LTJcIj5PcGVuIFRpbWU6IDxzdHJvbmc+e3sgcG9pbnQub3BlblRpbWUgfX08L3N0cm9uZz48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNsb3NlIFRpbWU6IDxzdHJvbmc+e3sgcG9pbnQuY2xvc2VUaW1lIH19PC9zdHJvbmc+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWRkIG1vcmUgcG9pbnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvbC1tZC02IG10LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHgtNSBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5ab25lIER3ZWxsIFRpbWUgU3BsaXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDMyXzgwMDM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MzJfODAwMzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ29Ub1pvbmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+R28gdG8gWm9uZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNhbHNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lICE9PSdPdmVyYWxsIFN0b3JlJ1wiIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvem9uZS1pbWcuc3ZnXCIgYWx0PVwiU3RvcmUgTGF5b3V0XCIgY2xhc3M9XCJweC01IGltZy1zcmMgbWItMyBiYWNrZ3JvdW5kLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgPT09J092ZXJhbGwgU3RvcmUnXCIgc3JjPVwiYXNzZXRzL3RhbmdvL0ltYWdlcy96b25lLWltZzEuc3ZnXCIgYWx0PVwiU3RvcmUgTGF5b3V0XCIgY2xhc3M9XCJweC01IGltZy1zcmMgbWItMyBiYWNrZ3JvdW5kLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjZW50ZXJlZFwiPkNlbnRlcmVkPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm92ZXJsYXktY29udGVudFwiICpuZ0Zvcj1cImxldCBwb2ludCBvZiB6b25lRHdlbGxUaW1lU3BsaXREYXRhXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lICE9PSdPdmVyYWxsIFN0b3JlJ1wiIGNsYXNzPVwidG9wLXpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC16b25lXCI+e3t6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lIDonRnJvbnQnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj4gQ29uYzoge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uY29uY2VudHJhdGlvblJhdGUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZTonLS0nIH19JSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lIDonLS0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgPT09J092ZXJhbGwgU3RvcmUnXCIgY2xhc3M9XCJjZW50ZXJlZC16b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXpvbmVcIj57e3pvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgOidGcm9udCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj4gQ29uYzoge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uY29uY2VudHJhdGlvblJhdGUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZTonLS0nIH19JSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPkR3ZWxsIHRpbWU6IHt7IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmR3ZWxsVGltZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmR3ZWxsVGltZTonLS0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSAhPT0nT3ZlcmFsbCBTdG9yZSdcIiBjbGFzcz1cImJvdHRvbS16b25lIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC16b25lXCI+e3t6b25lRHdlbGxUaW1lU3BsaXREYXRhWzFdPy56b25lTmFtZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMl0/LnpvbmVOYW1lICA6ICdCYWNrJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzFdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMl0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsxXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsyXT8uZHdlbGxUaW1lOictLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cInB4LTUgaW1nLXNyYyBtYi0zXCIgc3JjPVwiYXNzZXRzL3RhbmdvL0ltYWdlcy96b25lLWltZy5zdmdcIiBhbHQ9XCJcIj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC01IGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+U3RvcmUgT3BlcmF0aW9ucyBcclxuICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkdvIHRvIFRyYXg8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgdGV4dC1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj48IS0te3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUgPz8gJy0tJ319IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC10aXRsZVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy5vdmVyYWxsPy5hdmdPcGVuVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z09wZW5UaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj48c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcuIE9wZW4gVGltZTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtNSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzA2XCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMzI2IDJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGluZSB5MT1cIjAuNzVcIiB4Mj1cIjM1NlwiIHkyPVwiMC43NVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgdGV4dC1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj48IS0te3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUgPz8gJy0tJ319IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC10aXRsZVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy5vdmVyYWxsPy5hdmdDbG9zZVRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/c3RvcmVPcGVyYXRpb25EYXRhPy5vdmVyYWxsPy5hdmdDbG9zZVRpbWU6Jy0tJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gQ2xvc2UgVGltZTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyMSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5zdG9yZU5hbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LnN0b3JlTmFtZSA6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIG10LTJcIj5Ub3AgTGF0ZSBPcGVuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtNzVweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTFcIj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjFcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LmF2Z1N0b3JlT3BlblRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5hdmdTdG9yZU9wZW5UaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBTdG9yZSBPcGVuaW5nIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyMSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LnN0b3JlTmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5zdG9yZU5hbWUgOictLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlciBtdC0yXCI+VG9wIEVhcmx5IENsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtNzVweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTFcIj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjFcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wRWFybHlDbG9zZT8uYXZnU3RvcmVDbG9zZVRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LmF2Z1N0b3JlQ2xvc2VUaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBTdG9yZSBDbG9zaW5nIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5TdW1tYXJ5IFRhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGZpbHRlciBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1maWx0ZXJzIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZmlsdGVyIEVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblZhbHVlVHlwZSgnc3VtJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTk5MzUgNC4xNjY3NVYxNS44MzM0TTQuMTY2MDIgMTAuMDAwMUgxNS44MzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5TdW08L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uVmFsdWVUeXBlKCdhdmVyYWdlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDE3LjVIOC4zMzMzM0M1LjU4MzMzIDE3LjUgNC4yMDgzMyAxNy41IDMuMzU0MTcgMTYuNjQ1OEMyLjUgMTUuNzkxNyAyLjUgMTQuNDE2NyAyLjUgMTEuNjY2N1YyLjVNNSAxMEg1LjAwNzVNNy40OTkxNyAxMEg3LjUwNTgzTTkuOTk3NSAxMEgxMC4wMDQyTTEyLjQ5NTggMTBIMTIuNTAzM00xNC45OTQyIDEwSDE1LjAwMTdNMTcuNDkyNSAxMEgxNy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNSA1LjgzMzQxQzUuNTYwODMgNC44OTg0MSA2LjMyMjUgNC4xNjY3NSA3LjQ5NDE3IDQuMTY2NzVDMTIuNDQ2NyA0LjE2Njc1IDkuNjYyNSAxNC4xNjY3IDE0Ljk4NSAxNC4xNjY3QzE2LjE2NSAxNC4xNjY3IDE2LjkyMTcgMTMuNDMwMSAxNy41IDEyLjUwMDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkF2ZXJhZ2U8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydFhMU1goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhLXRhYmxlXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgc3VtbWFyeSB0YWJsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiIGNhbHNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZU5hbWUnKVwiPlN0b3JlIE5hbWUgPHN2ZyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlSWQnKVwiPlN0b3JlIElEIDxzdmcgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlSWQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlSWQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJzdG9yZUlkYXJyYXk/Lmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2RhdGUnKVwiPkRhdGUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdkYXRlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdkYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2Zvb3RmYWxsQ291bnQnKVwiPkZvb3RmYWxsIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnZm9vdGZhbGxDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnZm9vdGZhbGxDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdib3VuY2VkQ291bnQnKVwiPkJvdW5jZWQgRm9vdGZhbGw8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2JvdW5jZWRDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnYm91bmNlZENvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2VuZ2FnZXJzQ291bnQnKVwiPkVuZ2FnZXJzIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnZW5nYWdlcnNDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnZW5nYWdlcnNDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdtaXNzZWRPcHBvcnR1bml0eUNvdW50JylcIj5NaXNzZWQgT3Bwb3J0dW5pdHk8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ21pc3NlZE9wcG9ydHVuaXR5Q291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ21pc3NlZE9wcG9ydHVuaXR5Q291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncG90ZW50aWFsQnV5ZXJzQ291bnQnKVwiPlBvdGVudGlhbCBCdXllcnMgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdwb3RlbnRpYWxCdXllcnNDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAncG90ZW50aWFsQnV5ZXJzQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY29udmVyc2lvblJhdGUnKVwiPkNvbnZlcnNpb24gUmF0ZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NvbnZlcnNpb25SYXRlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdjb252ZXJzaW9uUmF0ZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdhdmdEd2VsbFRpbWUnKVwiPkF2Zy5Ed2VsbCBUaW1lIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXZnRHdlbGxUaW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdEd2VsbFRpbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXZnSW5mcmFEb3dudGltZScpXCI+QXZnLkR3ZWxsIERvd25UaW1lIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXZnSW5mcmFEb3dudGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnYXZnSW5mcmFEb3dudGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdiZWxvdzEyJylcIj5CZWxvdzEyIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYmVsb3cxMicgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnYmVsb3cxMicgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCcxMy0xOScpXCI+MTMtMTkgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICcxMy0xOScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnMTMtMTknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnMjAtMzAnKVwiPjIwLTMwIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnMjAtMzAnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzIwLTMwJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzMxLTQ1JylcIj4zMS00NSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzMxLTQ1JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICczMS00NScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCc0Ni01OScpXCI+NDYtNTkgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICc0Ni01OScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnNDYtNTknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnNjAgYWJvdmUnKVwiPjYwIGFib3ZlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnNjAgYWJvdmUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzYwIGFib3ZlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ21hbGUnKVwiPk1hbGUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdtYWxlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdtYWxlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2ZlbWFsZScpXCI+RmVtYWxlIDxzdmcgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdmZW1hbGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2ZlbWFsZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvYmogb2YgZ2V0U3VtbWFyeVRhYmxlRGF0YTtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIChjbGljayk9XCJzdG9yZVZpZXcob2JqKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LWNhcGl0YWxpemUgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzdG9yZVZpZXcob2JqLnN0b3JlSWQpXCI+e3tvYmouc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5zdG9yZUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm9iaj8uZGF0ZVwiPnt7b2JqPy5kYXRlIHwgZGF0ZTonTU1NIGRkLCB5eXl5J319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouZm9vdGZhbGxDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYm91bmNlZENvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5lbmdhZ2Vyc0NvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5taXNzZWRPcHBvcnR1bml0eUNvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5wb3RlbnRpYWxCdXllcnNDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouY29udmVyc2lvblJhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmF2Z0R3ZWxsVGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYXZnSW5mcmFEb3dudGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYmVsb3cxMn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbJzEzLTE5J119fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqWycyMC0zMCddfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialsnMzEtNDUnXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbXCI0Ni01OVwiXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbXCI2MCBhYm92ZVwiXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmoubWFsZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouZmVtYWxlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJwYWdlU2l6ZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|