tango-app-ui-store-builder 1.0.98 → 1.2.0
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/manage-plano/verification-table/verification-table.component.mjs +49 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +13 -1
- package/esm2022/lib/interfaces/planogram.interface.mjs +1 -1
- package/fesm2022/tango-app-ui-store-builder.mjs +60 -2
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +6 -4
- package/lib/interfaces/planogram.interface.d.ts +7 -0
- package/package.json +1 -1
package/esm2022/lib/components/manage-plano/verification-table/verification-table.component.mjs
CHANGED
|
@@ -104,12 +104,26 @@ export class PlanoVerificationTableComponent {
|
|
|
104
104
|
{ name: "Published", value: "publish", checked: false },
|
|
105
105
|
],
|
|
106
106
|
},
|
|
107
|
+
// [ZONE-VERIFICATION] additive — independent zone filter
|
|
108
|
+
{
|
|
109
|
+
title: "Zone",
|
|
110
|
+
type: "multi",
|
|
111
|
+
isOpened: false,
|
|
112
|
+
options: [
|
|
113
|
+
{ name: "Task Assigned", value: "taskAssigned", checked: false },
|
|
114
|
+
{ name: "Review Pending", value: "reviewPending", checked: false },
|
|
115
|
+
{ name: "Yet To Assign", value: "yetToAssign", checked: false },
|
|
116
|
+
{ name: "Completed", value: "completed", checked: false },
|
|
117
|
+
{ name: "Flag", value: "flag", checked: false },
|
|
118
|
+
],
|
|
119
|
+
},
|
|
107
120
|
];
|
|
108
121
|
appliedFilters = {
|
|
109
122
|
country: [],
|
|
110
123
|
city: [],
|
|
111
124
|
layout: [],
|
|
112
125
|
fixture: [],
|
|
126
|
+
zone: [],
|
|
113
127
|
taskPending: "all",
|
|
114
128
|
status: [],
|
|
115
129
|
};
|
|
@@ -412,6 +426,38 @@ export class PlanoVerificationTableComponent {
|
|
|
412
426
|
if (status === "complete")
|
|
413
427
|
return "Completed";
|
|
414
428
|
}
|
|
429
|
+
// [ZONE-VERIFICATION] additive sibling helpers — do not touch getTaskStatus/getTaskTooltip
|
|
430
|
+
getZoneStatus(data) {
|
|
431
|
+
const zoneTaskList = data?.zoneTask?.[0]?.taskStatus ?? [];
|
|
432
|
+
const zoneTaskStatus = zoneTaskList.find((ele) => ele.type === "zoneVerification");
|
|
433
|
+
const zoneStatus = data?.zoneDetails?.zoneStatus;
|
|
434
|
+
if (!zoneTaskStatus)
|
|
435
|
+
return "yetToAssign";
|
|
436
|
+
if (zoneTaskStatus.status !== "submit") {
|
|
437
|
+
return zoneTaskStatus.breach ? "flag" : "taskAssigned";
|
|
438
|
+
}
|
|
439
|
+
// Trust the rollup: if every floor's zone task has approvalStatus === true
|
|
440
|
+
// (set by updateZoneVerificationStatus when all non-CL siblings are actioned),
|
|
441
|
+
// the plano is fully approved — even if orphan compliance docs exist.
|
|
442
|
+
const allApproved = zoneTaskList.length > 0 &&
|
|
443
|
+
zoneTaskList.every((t) => t.approvalStatus === true);
|
|
444
|
+
if (allApproved)
|
|
445
|
+
return "completed";
|
|
446
|
+
if (zoneStatus === "complete")
|
|
447
|
+
return "completed";
|
|
448
|
+
return "reviewPending";
|
|
449
|
+
}
|
|
450
|
+
getZoneTooltip(data) {
|
|
451
|
+
const status = this.getZoneStatus(data);
|
|
452
|
+
const map = {
|
|
453
|
+
yetToAssign: "Yet to Assign",
|
|
454
|
+
taskAssigned: "Task Assigned",
|
|
455
|
+
reviewPending: "Review Pending",
|
|
456
|
+
completed: "Completed",
|
|
457
|
+
flag: "Flagged",
|
|
458
|
+
};
|
|
459
|
+
return map[status] ?? "";
|
|
460
|
+
}
|
|
415
461
|
getProgressValue(data) {
|
|
416
462
|
const statusMap = {
|
|
417
463
|
layout: data.taskDetails?.layoutStatus,
|
|
@@ -572,10 +618,10 @@ export class PlanoVerificationTableComponent {
|
|
|
572
618
|
});
|
|
573
619
|
}
|
|
574
620
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlanoVerificationTableComponent, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.StoreBuilderService }, { token: i4.GlobalStateService }, { token: i4.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
575
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PlanoVerificationTableComponent, selector: "lib-plano-verification-table", ngImport: i0, template: "<div class=\"row mx-0 my-5 gap-2\">\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'all' }\" (click)=\"filterTable('all')\">\r\n <h3>{{ pendingDetails?.allStores || 0 }}</h3>\r\n <p>Total stores</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'layout' }\" (click)=\"filterTable('layout')\">\r\n <h3>{{ pendingDetails?.layoutComplete ?? 0 }}</h3>\r\n <p>Layout verification completed</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'fixture' }\" (click)=\"filterTable('fixture')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>Fixture verification pending</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'vm' }\" (click)=\"filterTable('vm')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>VM verification pending</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"content-wrapper\">\r\n <div [class.restrict-interaction]=\"isButtonLoading\">\r\n <!-- Manage Planogram view header -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-5\">\r\n <div>\r\n <h4>All Planograms</h4>\r\n <span>{{ totalItems }} - Total Records</span>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div style=\"position: relative\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchTerm\"\r\n (change)=\"onSearch()\"\r\n style=\"padding-left: 3rem; padding-right: 3rem\"\r\n class=\"form-control\"\r\n name=\"search\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n />\r\n\r\n <span class=\"search-icon\">\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-width=\"2\" />\r\n <line x1=\"13\" y1=\"13\" x2=\"16\" y2=\"16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n\r\n <button *ngIf=\"searchTerm\" type=\"button\" aria-label=\"Clear\" (click)=\"searchTerm = ''; onSearch()\" class=\"clear-search\">\r\n <svg width=\"64px\" height=\"64px\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n <g id=\"SVGRepo_iconCarrier\">\r\n <path d=\"M9 9L15 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <path d=\"M15 9L9 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n ></circle>\r\n </g>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- <button type=\"button\" (click)=\"openBulkUploadModal()\" class=\"btn btn-outline text-nowrap\">\r\n <svg class=\"me-2\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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=\"currentColor\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Bulk Upload\r\n </button> -->\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-outline d-line-flex align-items-center text-nowrap\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Filter\r\n </button> -->\r\n\r\n <plano-filter [clientId]=\"clientId\" [data]=\"filterObject\" (applyFilters)=\"applyFilters($event)\"\r\n (resetFilters)=\"applyFilters($event)\" [config]=\"{ 'Merchandise compliance': false }\"></plano-filter>\r\n\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader\"\r\n [disabled]=\"!planogramsList.length\">\r\n \r\n <svg *ngIf=\"!isButtonLoading\" 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\" stroke-linejoin=\"round\"></path>\r\n </svg>\r\n \r\n <svg *ngIf=\"isButtonLoading\" class=\"spinner\" viewBox=\"0 0 50 50\">\r\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\"></circle>\r\n </svg>\r\n <span class=\"ms-2\"> Export</span>\r\n </button>\r\n\r\n <!-- <button type=\"button\" (click)=\"onClickCreatePlanogram()\" class=\"btn btn-primary d-inline-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\"\r\n stroke=\"white\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create </span>\r\n </button> -->\r\n\r\n <!-- <lib-filters [dataObject]=\"filterObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isPageLoading\">\r\n <div 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 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>\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\"\r\n *ngIf=\"!isPageLoading && planogramsList.length === 0\"\r\n >\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\" />\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for manage planogram table</div>\r\n </div>\r\n\r\n <!-- Manage Planogram list view -->\r\n <section id=\"list-view\" *ngIf=\"!isPageLoading && planogramsList.length !== 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span (click)=\"onSortTable('storeName')\" class=\"cursor-pointer\">\r\n Store Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'storeName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'storeName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutName')\" class=\"cursor-pointer\">\r\n Layout Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n Country\r\n </th>\r\n <th>\r\n City\r\n </th>\r\n <th>\r\n <span class=\"cursor-pointer d-flex align-items-center\">\r\n Plano Completion %\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planoProgress' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planoProgress' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n ngbTooltip=\"% of overall planogram completion\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutCount')\" class=\"cursor-pointer\">\r\n Layout\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('fixtureCount')\" class=\"cursor-pointer\">\r\n No of Fixtures\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('vmCount')\" class=\"cursor-pointer\">\r\n No of VMs\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'vmCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'vmCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <ng-template #tooltip>\r\n <div class=\"w-100\">\r\n <h6>Total store capacity</h6>\r\n <span> Combining product capacity of all fixtures </span>\r\n </div>\r\n </ng-template>\r\n <span (click)=\"onSortTable('fixtureCapacity')\" class=\"cursor-pointer d-flex align-items-center\">\r\n Store Capacity\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCapacity' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCapacity' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n [ngbTooltip]=\"tooltip\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('lastUpdate')\" class=\"cursor-pointer\">\r\n Last update\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'lastUpdate' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'lastUpdate' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span class=\"cursor-pointer\">\r\n Planogram Status\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planogramStatus' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planogramStatus' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n </span>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let plano of planogramsList\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <a (click)=\"redirectStore(plano.storeId)\" class=\"cursor-pointer text-decoration-underline\">\r\n {{ plano.storeName }}</a\r\n >\r\n </div>\r\n </td>\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.[0]?.id }\"\r\n class=\"text-decoration-underline\"\r\n >\r\n {{\r\n plano.layoutName\r\n }}\r\n </a>\r\n </td>\r\n <td>\r\n {{plano?.country}}\r\n </td>\r\n <td>\r\n {{plano?.city}}\r\n </td>\r\n <td>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-9\">\r\n <div class=\"progress\" style=\"height: 4px\">\r\n <div\r\n class=\"progress-bar\"\r\n [ngClass]=\"\r\n [25, 50].includes(getProgressValue(plano))\r\n ? 'bg-warning'\r\n : 'bg-success'\r\n \"\r\n role=\"progressbar\"\r\n [style]=\"getProgressValue(plano) ? 'width: ' + getProgressValue(plano) + '%' : 'width:25%'\"\r\n [attr.aria-valuenow]=\"getProgressValue(plano)\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"col-3\">{{ getProgressValue(plano) }}%</div>\r\n </div>\r\n <!-- <div class=\"row align-items-center\">\r\n <div class=\"col-8 progress\" style=\"height: 4px; border-radius: 4px;\">\r\n <div\r\n class=\"progress-bar\"\r\n role=\"progressbar\"\r\n style=\"width: 25%\"\r\n aria-valuenow=\"25\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n <div class=\"col-4\">\r\n {{ plano.planoCompletion }}\r\n </div>\r\n </div> -->\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.layoutCount === 1 ? 1 : updateFloor(plano) }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'layout')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'layout') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'layout')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'layout') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.fixtureCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'fixture') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'fixture') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.vmCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'vm') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'vm') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.fixtureCapacity ?? 0 }}\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"text-center\">\r\n <span [ngbTooltip]=\"plano?.lastUpdate | date : 'medium'\">\r\n {{ plano?.lastUpdate | date }}\r\n </span>\r\n </td>\r\n <td class=\"text-center\">\r\n <div class=\"badge\" [ngClass]=\"getStatusBadge(plano)\">\r\n {{ getStatus(plano) }}\r\n </div>\r\n </td>\r\n <!-- <td>\r\n <div class=\"d-flex align-items-center gap-2 justify-content-center\">\r\n <svg width=\"21\" height=\"22\" viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17_71425)\">\r\n <path\r\n d=\"M12.1971 18.7144C12.0464 18.9742 11.8302 19.1898 11.5699 19.3397C11.3097 19.4896 11.0146 19.5685 10.7143 19.5685C10.414 19.5685 10.1189 19.4896 9.85866 19.3397C9.59842 19.1898 9.38212 18.9742 9.23143 18.7144M15.8571 7.57157C15.8571 6.2076 15.3153 4.89949 14.3508 3.93502C13.3864 2.97055 12.0783 2.42871 10.7143 2.42871C9.35032 2.42871 8.04221 2.97055 7.07774 3.93502C6.11326 4.89949 5.57143 6.2076 5.57143 7.57157C5.57143 13.5716 3 15.2859 3 15.2859H18.4286C18.4286 15.2859 15.8571 13.5716 15.8571 7.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.08574 8.04805C1.55611 8.04805 1.12146 7.61768 1.17082 7.09036C1.286 5.85989 1.627 4.71322 2.19383 3.65034C2.75229 2.60318 3.46062 1.69605 4.31882 0.928939C4.71052 0.578823 5.30965 0.673501 5.62062 1.09695C5.93175 1.52062 5.83525 2.1121 5.45225 2.47212C4.82875 3.05819 4.30987 3.74239 3.89559 4.52471C3.47303 5.32267 3.20776 6.17833 3.0998 7.09169C3.03766 7.61747 2.61518 8.04805 2.08574 8.04805ZM19.3431 8.04805C18.8134 8.04805 18.3908 7.6171 18.3287 7.09105C18.2209 6.17793 17.9556 5.32248 17.5326 4.52471C17.118 3.74258 16.5993 3.05852 15.9765 2.47254C15.5937 2.11226 15.4973 1.5207 15.8085 1.09696C16.1196 0.673433 16.7187 0.578551 17.1107 0.928571C17.9693 1.6954 18.6778 2.60266 19.2363 3.65034C19.8032 4.71381 20.1438 5.86068 20.2581 7.09095C20.3071 7.61809 19.8725 8.04805 19.3431 8.04805Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17_71425\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.428711 0.714355)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <svg width=\"23\" height=\"24\" viewBox=\"0 0 23 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_139_112685)\">\r\n <path\r\n d=\"M12.4843 21.4302C12.3336 21.69 12.1173 21.9057 11.857 22.0556C11.5968 22.2055 11.3017 22.2844 11.0014 22.2844C10.7011 22.2844 10.406 22.2055 10.1458 22.0556C9.88553 21.9057 9.66923 21.69 9.51854 21.4302M16.1443 10.2874C16.1443 8.92342 15.6024 7.61531 14.6379 6.65084C13.6735 5.68637 12.3654 5.14453 11.0014 5.14453C9.63742 5.14453 8.32932 5.68637 7.36485 6.65084C6.40037 7.61531 5.85854 8.92342 5.85854 10.2874C5.85854 16.2874 3.28711 18.0017 3.28711 18.0017H18.7157C18.7157 18.0017 16.1443 16.2874 16.1443 10.2874Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.37187 10.7634C1.84224 10.7634 1.40759 10.333 1.45695 9.80569C1.57213 8.57522 1.91313 7.42855 2.47997 6.36567C3.03842 5.31851 3.74675 4.41138 4.60496 3.64427C4.99665 3.29415 5.59578 3.38883 5.90675 3.81228C6.21788 4.23595 6.12138 4.82744 5.73838 5.18745C5.11489 5.77352 4.596 6.45772 4.18172 7.24004C3.75916 8.038 3.4939 8.89366 3.38594 9.80702C3.32379 10.3328 2.90131 10.7634 2.37187 10.7634ZM19.6292 10.7634C19.0995 10.7634 18.6769 10.3324 18.6148 9.80638C18.507 8.89326 18.2417 8.03781 17.8188 7.24004C17.4041 6.45791 16.8854 5.77385 16.2627 5.18787C15.8798 4.8276 15.7835 4.23603 16.0947 3.81229C16.4057 3.38876 17.0049 3.29388 17.3968 3.6439C18.2554 4.41073 18.964 5.31799 19.5224 6.36567C20.0893 7.42914 20.4299 8.57601 20.5442 9.80628C20.5932 10.3334 20.1586 10.7634 19.6292 10.7634Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <defs>\r\n <clipPath id=\"clip0_139_112685\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.714844 3.42969)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </td> -->\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.id }\"\r\n >\r\n <svg\r\n width=\"23\"\r\n height=\"24\"\r\n viewBox=\"0 0 23 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n *ngIf=\"getSubmit(plano)\"\r\n >\r\n <path\r\n d=\"M10.1395 6.85728H4.13946C3.6848 6.85728 3.24876 7.0379 2.92727 7.35939C2.60578 7.68088 2.42517 8.11691 2.42517 8.57157V20.5716C2.42517 21.0262 2.60578 21.4623 2.92727 21.7838C3.24876 22.1052 3.6848 22.2859 4.13946 22.2859H16.1395C16.5941 22.2859 17.0301 22.1052 17.3516 21.7838C17.6731 21.4623 17.8537 21.0262 17.8537 20.5716V14.5716M16.568 5.57157C16.909 5.23058 17.3715 5.03901 17.8537 5.03901C18.336 5.03901 18.7985 5.23058 19.1395 5.57157C19.4805 5.91256 19.672 6.37505 19.672 6.85728C19.672 7.33952 19.4805 7.80201 19.1395 8.143L10.9966 16.2859L7.56803 17.143L8.42517 13.7144L16.568 5.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n </svg>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\"\r\n height=\"22\"\r\n viewBox=\"0 0 21 22\"\r\n fill=\"none\"\r\n *ngIf=\"!getSubmit(plano)\"\r\n >\r\n <g clip-path=\"url(#clip0_844_18318)\">\r\n <path\r\n d=\"M9.85686 4.14249H3.85686C3.40221 4.14249 2.96617 4.32311 2.64468 4.6446C2.32319 4.96609 2.14258 5.40212 2.14258 5.85678V17.8568C2.14258 18.3114 2.32319 18.7475 2.64468 19.069C2.96617 19.3905 3.40221 19.5711 3.85686 19.5711H15.8569C16.3115 19.5711 16.7476 19.3905 17.069 19.069C17.3905 18.7475 17.5712 18.3114 17.5712 17.8568V11.8568M16.2854 2.85678C16.6264 2.51579 17.0889 2.32422 17.5712 2.32422C18.0534 2.32422 18.5159 2.51579 18.8569 2.85678C19.1979 3.19777 19.3894 3.66026 19.3894 4.14249C19.3894 4.62473 19.1979 5.08722 18.8569 5.42821L10.714 13.5711L7.28544 14.4282L8.14258 10.9996L16.2854 2.85678Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_18318\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.427734 0.713867)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </section>\r\n\r\n <!-- Manage Planogram grid view -->\r\n <!-- <ng-template #gridView>\r\n <section id=\"grid-view\">\r\n <div class=\"row gx-6 gy-4\">\r\n <div class=\"col-md-4\" *ngFor=\"let fixture of fixtureTemplatesList\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"card-action dropdown\">\r\n <button class=\"btn btn-light px-4 py-3\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <i class=\"bi bi-three-dots-vertical\"></i>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h3>{{ fixture.name }}</h3>\r\n <div class=\"badge\" [ngClass]=\"fixture.status\">{{ fixture.status | titlecase }}</div>\r\n </div>\r\n <div class=\"d-flex gap-2\">\r\n <div *ngFor=\"let subBrand of fixture.subBrand; let i = index\">\r\n <span *ngIf=\"i != 0\" class=\"me-2 card-tagline\">•</span>\r\n <div class=\"badge\">{{ subBrand }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </ng-template> -->\r\n\r\n <!-- Pagination -->\r\n <lib-pagination\r\n [itemsPerPage]=\"limit\"\r\n [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n *ngIf=\"!isPageLoading && planogramsList.length !== 0\"\r\n >\r\n </lib-pagination>\r\n </div>\r\n</div>\r\n", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;max-width:345px;min-width:234px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .shelfContainer .block{border:1px solid #98a2b3;border-top:none}.wall-viewport .body-block .shelfContainer:first-child .block{border-top:1px solid #98a2b3}.wall-viewport .body-block .block{padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .vmonly-placeholder{background-image:repeating-linear-gradient(45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px),repeating-linear-gradient(-45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px)}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.draft{background:#f2f4f7;color:#667085}.indicator.draft path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.allocationPending{background:#fef0c7;color:#f79009}.indicator.allocationPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.restrict-interaction{-webkit-user-select:none;user-select:none;pointer-events:none}.btn .spinner{height:22px;animation:spin .9s linear infinite}.btn .spinner .path{stroke-width:4px;stroke:#071437;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:60}@keyframes spin{to{transform:rotate(360deg)}}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#f2f4f7;background:#667085}.badge.yetToComplete{background:#f2f4f7;color:#667085}.badge.yetToAssign{background:#eaecf5;color:#363f72}.badge.taskAssigned{background:#e0eaff;color:#7a5af8}.badge.reviewPending{background:#fef0c7;color:#f79009}.badge.completed{background:#d1fadf;color:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 330px);height:100%;padding:16px 24px}.badgeStyle{color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#f2f4f7}.primaryBadgeStyle{color:var(--Gray-700, #009BF3);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#eaf8ff}\n"], dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i8.PlanoFilterComponent, selector: "plano-filter", inputs: ["clientId", "data", "config"], outputs: ["applyFilters", "resetFilters", "filterChanged"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
|
|
621
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PlanoVerificationTableComponent, selector: "lib-plano-verification-table", ngImport: i0, template: "<div class=\"row mx-0 my-5 gap-2\">\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'all' }\" (click)=\"filterTable('all')\">\r\n <h3>{{ pendingDetails?.allStores || 0 }}</h3>\r\n <p>Total stores</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'layout' }\" (click)=\"filterTable('layout')\">\r\n <h3>{{ pendingDetails?.layoutComplete ?? 0 }}</h3>\r\n <p>Layout verification completed</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'fixture' }\" (click)=\"filterTable('fixture')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>Fixture verification pending</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'vm' }\" (click)=\"filterTable('vm')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>VM verification pending</p>\r\n </div>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 5th stat card -->\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'zone' }\" (click)=\"filterTable('zone')\">\r\n <h3>{{ pendingDetails?.zonePending ?? 0 }}</h3>\r\n <p>Zone verification pending</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"content-wrapper\">\r\n <div [class.restrict-interaction]=\"isButtonLoading\">\r\n <!-- Manage Planogram view header -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-5\">\r\n <div>\r\n <h4>All Planograms</h4>\r\n <span>{{ totalItems }} - Total Records</span>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div style=\"position: relative\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchTerm\"\r\n (change)=\"onSearch()\"\r\n style=\"padding-left: 3rem; padding-right: 3rem\"\r\n class=\"form-control\"\r\n name=\"search\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n />\r\n\r\n <span class=\"search-icon\">\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-width=\"2\" />\r\n <line x1=\"13\" y1=\"13\" x2=\"16\" y2=\"16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n\r\n <button *ngIf=\"searchTerm\" type=\"button\" aria-label=\"Clear\" (click)=\"searchTerm = ''; onSearch()\" class=\"clear-search\">\r\n <svg width=\"64px\" height=\"64px\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n <g id=\"SVGRepo_iconCarrier\">\r\n <path d=\"M9 9L15 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <path d=\"M15 9L9 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n ></circle>\r\n </g>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- <button type=\"button\" (click)=\"openBulkUploadModal()\" class=\"btn btn-outline text-nowrap\">\r\n <svg class=\"me-2\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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=\"currentColor\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Bulk Upload\r\n </button> -->\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-outline d-line-flex align-items-center text-nowrap\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Filter\r\n </button> -->\r\n\r\n <plano-filter [clientId]=\"clientId\" [data]=\"filterObject\" (applyFilters)=\"applyFilters($event)\"\r\n (resetFilters)=\"applyFilters($event)\" [config]=\"{ 'Merchandise compliance': false }\"></plano-filter>\r\n\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader\"\r\n [disabled]=\"!planogramsList.length\">\r\n \r\n <svg *ngIf=\"!isButtonLoading\" 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\" stroke-linejoin=\"round\"></path>\r\n </svg>\r\n \r\n <svg *ngIf=\"isButtonLoading\" class=\"spinner\" viewBox=\"0 0 50 50\">\r\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\"></circle>\r\n </svg>\r\n <span class=\"ms-2\"> Export</span>\r\n </button>\r\n\r\n <!-- <button type=\"button\" (click)=\"onClickCreatePlanogram()\" class=\"btn btn-primary d-inline-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\"\r\n stroke=\"white\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create </span>\r\n </button> -->\r\n\r\n <!-- <lib-filters [dataObject]=\"filterObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isPageLoading\">\r\n <div 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 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>\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\"\r\n *ngIf=\"!isPageLoading && planogramsList.length === 0\"\r\n >\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\" />\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for manage planogram table</div>\r\n </div>\r\n\r\n <!-- Manage Planogram list view -->\r\n <section id=\"list-view\" *ngIf=\"!isPageLoading && planogramsList.length !== 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span (click)=\"onSortTable('storeName')\" class=\"cursor-pointer\">\r\n Store Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'storeName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'storeName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutName')\" class=\"cursor-pointer\">\r\n Layout Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n Country\r\n </th>\r\n <th>\r\n City\r\n </th>\r\n <th>\r\n <span class=\"cursor-pointer d-flex align-items-center\">\r\n Plano Completion %\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planoProgress' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planoProgress' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n ngbTooltip=\"% of overall planogram completion\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutCount')\" class=\"cursor-pointer\">\r\n Layout\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('fixtureCount')\" class=\"cursor-pointer\">\r\n No of Fixtures\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('vmCount')\" class=\"cursor-pointer\">\r\n No of VMs\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'vmCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'vmCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 Zone status header -->\r\n <th class=\"text-center\">\r\n <span>Zone</span>\r\n </th>\r\n <th class=\"text-center\">\r\n <ng-template #tooltip>\r\n <div class=\"w-100\">\r\n <h6>Total store capacity</h6>\r\n <span> Combining product capacity of all fixtures </span>\r\n </div>\r\n </ng-template>\r\n <span (click)=\"onSortTable('fixtureCapacity')\" class=\"cursor-pointer d-flex align-items-center\">\r\n Store Capacity\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCapacity' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCapacity' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n [ngbTooltip]=\"tooltip\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('lastUpdate')\" class=\"cursor-pointer\">\r\n Last update\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'lastUpdate' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'lastUpdate' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span class=\"cursor-pointer\">\r\n Planogram Status\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planogramStatus' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planogramStatus' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n </span>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let plano of planogramsList\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <a (click)=\"redirectStore(plano.storeId)\" class=\"cursor-pointer text-decoration-underline\">\r\n {{ plano.storeName }}</a\r\n >\r\n </div>\r\n </td>\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.[0]?.id }\"\r\n class=\"text-decoration-underline\"\r\n >\r\n {{\r\n plano.layoutName\r\n }}\r\n </a>\r\n </td>\r\n <td>\r\n {{plano?.country}}\r\n </td>\r\n <td>\r\n {{plano?.city}}\r\n </td>\r\n <td>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-9\">\r\n <div class=\"progress\" style=\"height: 4px\">\r\n <div\r\n class=\"progress-bar\"\r\n [ngClass]=\"\r\n [25, 50].includes(getProgressValue(plano))\r\n ? 'bg-warning'\r\n : 'bg-success'\r\n \"\r\n role=\"progressbar\"\r\n [style]=\"getProgressValue(plano) ? 'width: ' + getProgressValue(plano) + '%' : 'width:25%'\"\r\n [attr.aria-valuenow]=\"getProgressValue(plano)\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"col-3\">{{ getProgressValue(plano) }}%</div>\r\n </div>\r\n <!-- <div class=\"row align-items-center\">\r\n <div class=\"col-8 progress\" style=\"height: 4px; border-radius: 4px;\">\r\n <div\r\n class=\"progress-bar\"\r\n role=\"progressbar\"\r\n style=\"width: 25%\"\r\n aria-valuenow=\"25\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n <div class=\"col-4\">\r\n {{ plano.planoCompletion }}\r\n </div>\r\n </div> -->\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.layoutCount === 1 ? 1 : updateFloor(plano) }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'layout')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'layout') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'layout')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'layout') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.fixtureCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'fixture') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'fixture') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.vmCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'vm') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'vm') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 Zone status cell -->\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"getZoneStatus(plano) === 'flag'\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getZoneStatus(plano)\"\r\n *ngIf=\"getZoneStatus(plano) !== 'flag'\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getZoneTooltip(plano) }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.fixtureCapacity ?? 0 }}\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"text-center\">\r\n <span [ngbTooltip]=\"plano?.lastUpdate | date : 'medium'\">\r\n {{ plano?.lastUpdate | date }}\r\n </span>\r\n </td>\r\n <td class=\"text-center\">\r\n <div class=\"badge\" [ngClass]=\"getStatusBadge(plano)\">\r\n {{ getStatus(plano) }}\r\n </div>\r\n </td>\r\n <!-- <td>\r\n <div class=\"d-flex align-items-center gap-2 justify-content-center\">\r\n <svg width=\"21\" height=\"22\" viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17_71425)\">\r\n <path\r\n d=\"M12.1971 18.7144C12.0464 18.9742 11.8302 19.1898 11.5699 19.3397C11.3097 19.4896 11.0146 19.5685 10.7143 19.5685C10.414 19.5685 10.1189 19.4896 9.85866 19.3397C9.59842 19.1898 9.38212 18.9742 9.23143 18.7144M15.8571 7.57157C15.8571 6.2076 15.3153 4.89949 14.3508 3.93502C13.3864 2.97055 12.0783 2.42871 10.7143 2.42871C9.35032 2.42871 8.04221 2.97055 7.07774 3.93502C6.11326 4.89949 5.57143 6.2076 5.57143 7.57157C5.57143 13.5716 3 15.2859 3 15.2859H18.4286C18.4286 15.2859 15.8571 13.5716 15.8571 7.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.08574 8.04805C1.55611 8.04805 1.12146 7.61768 1.17082 7.09036C1.286 5.85989 1.627 4.71322 2.19383 3.65034C2.75229 2.60318 3.46062 1.69605 4.31882 0.928939C4.71052 0.578823 5.30965 0.673501 5.62062 1.09695C5.93175 1.52062 5.83525 2.1121 5.45225 2.47212C4.82875 3.05819 4.30987 3.74239 3.89559 4.52471C3.47303 5.32267 3.20776 6.17833 3.0998 7.09169C3.03766 7.61747 2.61518 8.04805 2.08574 8.04805ZM19.3431 8.04805C18.8134 8.04805 18.3908 7.6171 18.3287 7.09105C18.2209 6.17793 17.9556 5.32248 17.5326 4.52471C17.118 3.74258 16.5993 3.05852 15.9765 2.47254C15.5937 2.11226 15.4973 1.5207 15.8085 1.09696C16.1196 0.673433 16.7187 0.578551 17.1107 0.928571C17.9693 1.6954 18.6778 2.60266 19.2363 3.65034C19.8032 4.71381 20.1438 5.86068 20.2581 7.09095C20.3071 7.61809 19.8725 8.04805 19.3431 8.04805Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17_71425\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.428711 0.714355)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <svg width=\"23\" height=\"24\" viewBox=\"0 0 23 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_139_112685)\">\r\n <path\r\n d=\"M12.4843 21.4302C12.3336 21.69 12.1173 21.9057 11.857 22.0556C11.5968 22.2055 11.3017 22.2844 11.0014 22.2844C10.7011 22.2844 10.406 22.2055 10.1458 22.0556C9.88553 21.9057 9.66923 21.69 9.51854 21.4302M16.1443 10.2874C16.1443 8.92342 15.6024 7.61531 14.6379 6.65084C13.6735 5.68637 12.3654 5.14453 11.0014 5.14453C9.63742 5.14453 8.32932 5.68637 7.36485 6.65084C6.40037 7.61531 5.85854 8.92342 5.85854 10.2874C5.85854 16.2874 3.28711 18.0017 3.28711 18.0017H18.7157C18.7157 18.0017 16.1443 16.2874 16.1443 10.2874Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.37187 10.7634C1.84224 10.7634 1.40759 10.333 1.45695 9.80569C1.57213 8.57522 1.91313 7.42855 2.47997 6.36567C3.03842 5.31851 3.74675 4.41138 4.60496 3.64427C4.99665 3.29415 5.59578 3.38883 5.90675 3.81228C6.21788 4.23595 6.12138 4.82744 5.73838 5.18745C5.11489 5.77352 4.596 6.45772 4.18172 7.24004C3.75916 8.038 3.4939 8.89366 3.38594 9.80702C3.32379 10.3328 2.90131 10.7634 2.37187 10.7634ZM19.6292 10.7634C19.0995 10.7634 18.6769 10.3324 18.6148 9.80638C18.507 8.89326 18.2417 8.03781 17.8188 7.24004C17.4041 6.45791 16.8854 5.77385 16.2627 5.18787C15.8798 4.8276 15.7835 4.23603 16.0947 3.81229C16.4057 3.38876 17.0049 3.29388 17.3968 3.6439C18.2554 4.41073 18.964 5.31799 19.5224 6.36567C20.0893 7.42914 20.4299 8.57601 20.5442 9.80628C20.5932 10.3334 20.1586 10.7634 19.6292 10.7634Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <defs>\r\n <clipPath id=\"clip0_139_112685\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.714844 3.42969)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </td> -->\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.id }\"\r\n >\r\n <svg\r\n width=\"23\"\r\n height=\"24\"\r\n viewBox=\"0 0 23 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n *ngIf=\"getSubmit(plano)\"\r\n >\r\n <path\r\n d=\"M10.1395 6.85728H4.13946C3.6848 6.85728 3.24876 7.0379 2.92727 7.35939C2.60578 7.68088 2.42517 8.11691 2.42517 8.57157V20.5716C2.42517 21.0262 2.60578 21.4623 2.92727 21.7838C3.24876 22.1052 3.6848 22.2859 4.13946 22.2859H16.1395C16.5941 22.2859 17.0301 22.1052 17.3516 21.7838C17.6731 21.4623 17.8537 21.0262 17.8537 20.5716V14.5716M16.568 5.57157C16.909 5.23058 17.3715 5.03901 17.8537 5.03901C18.336 5.03901 18.7985 5.23058 19.1395 5.57157C19.4805 5.91256 19.672 6.37505 19.672 6.85728C19.672 7.33952 19.4805 7.80201 19.1395 8.143L10.9966 16.2859L7.56803 17.143L8.42517 13.7144L16.568 5.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n </svg>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\"\r\n height=\"22\"\r\n viewBox=\"0 0 21 22\"\r\n fill=\"none\"\r\n *ngIf=\"!getSubmit(plano)\"\r\n >\r\n <g clip-path=\"url(#clip0_844_18318)\">\r\n <path\r\n d=\"M9.85686 4.14249H3.85686C3.40221 4.14249 2.96617 4.32311 2.64468 4.6446C2.32319 4.96609 2.14258 5.40212 2.14258 5.85678V17.8568C2.14258 18.3114 2.32319 18.7475 2.64468 19.069C2.96617 19.3905 3.40221 19.5711 3.85686 19.5711H15.8569C16.3115 19.5711 16.7476 19.3905 17.069 19.069C17.3905 18.7475 17.5712 18.3114 17.5712 17.8568V11.8568M16.2854 2.85678C16.6264 2.51579 17.0889 2.32422 17.5712 2.32422C18.0534 2.32422 18.5159 2.51579 18.8569 2.85678C19.1979 3.19777 19.3894 3.66026 19.3894 4.14249C19.3894 4.62473 19.1979 5.08722 18.8569 5.42821L10.714 13.5711L7.28544 14.4282L8.14258 10.9996L16.2854 2.85678Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_18318\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.427734 0.713867)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </section>\r\n\r\n <!-- Manage Planogram grid view -->\r\n <!-- <ng-template #gridView>\r\n <section id=\"grid-view\">\r\n <div class=\"row gx-6 gy-4\">\r\n <div class=\"col-md-4\" *ngFor=\"let fixture of fixtureTemplatesList\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"card-action dropdown\">\r\n <button class=\"btn btn-light px-4 py-3\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <i class=\"bi bi-three-dots-vertical\"></i>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h3>{{ fixture.name }}</h3>\r\n <div class=\"badge\" [ngClass]=\"fixture.status\">{{ fixture.status | titlecase }}</div>\r\n </div>\r\n <div class=\"d-flex gap-2\">\r\n <div *ngFor=\"let subBrand of fixture.subBrand; let i = index\">\r\n <span *ngIf=\"i != 0\" class=\"me-2 card-tagline\">•</span>\r\n <div class=\"badge\">{{ subBrand }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </ng-template> -->\r\n\r\n <!-- Pagination -->\r\n <lib-pagination\r\n [itemsPerPage]=\"limit\"\r\n [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n *ngIf=\"!isPageLoading && planogramsList.length !== 0\"\r\n >\r\n </lib-pagination>\r\n </div>\r\n</div>\r\n", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;max-width:345px;min-width:234px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .shelfContainer .block{border:1px solid #98a2b3;border-top:none}.wall-viewport .body-block .shelfContainer:first-child .block{border-top:1px solid #98a2b3}.wall-viewport .body-block .block{padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .vmonly-placeholder{background-image:repeating-linear-gradient(45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px),repeating-linear-gradient(-45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px)}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.draft{background:#f2f4f7;color:#667085}.indicator.draft path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.allocationPending{background:#fef0c7;color:#f79009}.indicator.allocationPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.restrict-interaction{-webkit-user-select:none;user-select:none;pointer-events:none}.btn .spinner{height:22px;animation:spin .9s linear infinite}.btn .spinner .path{stroke-width:4px;stroke:#071437;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:60}@keyframes spin{to{transform:rotate(360deg)}}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#f2f4f7;background:#667085}.badge.yetToComplete{background:#f2f4f7;color:#667085}.badge.yetToAssign{background:#eaecf5;color:#363f72}.badge.taskAssigned{background:#e0eaff;color:#7a5af8}.badge.reviewPending{background:#fef0c7;color:#f79009}.badge.completed{background:#d1fadf;color:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 330px);height:100%;padding:16px 24px}.badgeStyle{color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#f2f4f7}.primaryBadgeStyle{color:var(--Gray-700, #009BF3);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#eaf8ff}\n"], dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i8.PlanoFilterComponent, selector: "plano-filter", inputs: ["clientId", "data", "config"], outputs: ["applyFilters", "resetFilters", "filterChanged"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
|
|
576
622
|
}
|
|
577
623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlanoVerificationTableComponent, decorators: [{
|
|
578
624
|
type: Component,
|
|
579
|
-
args: [{ selector: "lib-plano-verification-table", template: "<div class=\"row mx-0 my-5 gap-2\">\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'all' }\" (click)=\"filterTable('all')\">\r\n <h3>{{ pendingDetails?.allStores || 0 }}</h3>\r\n <p>Total stores</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'layout' }\" (click)=\"filterTable('layout')\">\r\n <h3>{{ pendingDetails?.layoutComplete ?? 0 }}</h3>\r\n <p>Layout verification completed</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'fixture' }\" (click)=\"filterTable('fixture')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>Fixture verification pending</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'vm' }\" (click)=\"filterTable('vm')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>VM verification pending</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"content-wrapper\">\r\n <div [class.restrict-interaction]=\"isButtonLoading\">\r\n <!-- Manage Planogram view header -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-5\">\r\n <div>\r\n <h4>All Planograms</h4>\r\n <span>{{ totalItems }} - Total Records</span>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div style=\"position: relative\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchTerm\"\r\n (change)=\"onSearch()\"\r\n style=\"padding-left: 3rem; padding-right: 3rem\"\r\n class=\"form-control\"\r\n name=\"search\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n />\r\n\r\n <span class=\"search-icon\">\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-width=\"2\" />\r\n <line x1=\"13\" y1=\"13\" x2=\"16\" y2=\"16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n\r\n <button *ngIf=\"searchTerm\" type=\"button\" aria-label=\"Clear\" (click)=\"searchTerm = ''; onSearch()\" class=\"clear-search\">\r\n <svg width=\"64px\" height=\"64px\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n <g id=\"SVGRepo_iconCarrier\">\r\n <path d=\"M9 9L15 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <path d=\"M15 9L9 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n ></circle>\r\n </g>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- <button type=\"button\" (click)=\"openBulkUploadModal()\" class=\"btn btn-outline text-nowrap\">\r\n <svg class=\"me-2\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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=\"currentColor\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Bulk Upload\r\n </button> -->\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-outline d-line-flex align-items-center text-nowrap\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Filter\r\n </button> -->\r\n\r\n <plano-filter [clientId]=\"clientId\" [data]=\"filterObject\" (applyFilters)=\"applyFilters($event)\"\r\n (resetFilters)=\"applyFilters($event)\" [config]=\"{ 'Merchandise compliance': false }\"></plano-filter>\r\n\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader\"\r\n [disabled]=\"!planogramsList.length\">\r\n \r\n <svg *ngIf=\"!isButtonLoading\" 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\" stroke-linejoin=\"round\"></path>\r\n </svg>\r\n \r\n <svg *ngIf=\"isButtonLoading\" class=\"spinner\" viewBox=\"0 0 50 50\">\r\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\"></circle>\r\n </svg>\r\n <span class=\"ms-2\"> Export</span>\r\n </button>\r\n\r\n <!-- <button type=\"button\" (click)=\"onClickCreatePlanogram()\" class=\"btn btn-primary d-inline-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\"\r\n stroke=\"white\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create </span>\r\n </button> -->\r\n\r\n <!-- <lib-filters [dataObject]=\"filterObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isPageLoading\">\r\n <div 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 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>\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\"\r\n *ngIf=\"!isPageLoading && planogramsList.length === 0\"\r\n >\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\" />\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for manage planogram table</div>\r\n </div>\r\n\r\n <!-- Manage Planogram list view -->\r\n <section id=\"list-view\" *ngIf=\"!isPageLoading && planogramsList.length !== 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span (click)=\"onSortTable('storeName')\" class=\"cursor-pointer\">\r\n Store Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'storeName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'storeName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutName')\" class=\"cursor-pointer\">\r\n Layout Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n Country\r\n </th>\r\n <th>\r\n City\r\n </th>\r\n <th>\r\n <span class=\"cursor-pointer d-flex align-items-center\">\r\n Plano Completion %\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planoProgress' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planoProgress' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n ngbTooltip=\"% of overall planogram completion\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutCount')\" class=\"cursor-pointer\">\r\n Layout\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('fixtureCount')\" class=\"cursor-pointer\">\r\n No of Fixtures\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('vmCount')\" class=\"cursor-pointer\">\r\n No of VMs\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'vmCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'vmCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <ng-template #tooltip>\r\n <div class=\"w-100\">\r\n <h6>Total store capacity</h6>\r\n <span> Combining product capacity of all fixtures </span>\r\n </div>\r\n </ng-template>\r\n <span (click)=\"onSortTable('fixtureCapacity')\" class=\"cursor-pointer d-flex align-items-center\">\r\n Store Capacity\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCapacity' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCapacity' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n [ngbTooltip]=\"tooltip\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('lastUpdate')\" class=\"cursor-pointer\">\r\n Last update\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'lastUpdate' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'lastUpdate' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span class=\"cursor-pointer\">\r\n Planogram Status\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planogramStatus' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planogramStatus' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n </span>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let plano of planogramsList\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <a (click)=\"redirectStore(plano.storeId)\" class=\"cursor-pointer text-decoration-underline\">\r\n {{ plano.storeName }}</a\r\n >\r\n </div>\r\n </td>\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.[0]?.id }\"\r\n class=\"text-decoration-underline\"\r\n >\r\n {{\r\n plano.layoutName\r\n }}\r\n </a>\r\n </td>\r\n <td>\r\n {{plano?.country}}\r\n </td>\r\n <td>\r\n {{plano?.city}}\r\n </td>\r\n <td>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-9\">\r\n <div class=\"progress\" style=\"height: 4px\">\r\n <div\r\n class=\"progress-bar\"\r\n [ngClass]=\"\r\n [25, 50].includes(getProgressValue(plano))\r\n ? 'bg-warning'\r\n : 'bg-success'\r\n \"\r\n role=\"progressbar\"\r\n [style]=\"getProgressValue(plano) ? 'width: ' + getProgressValue(plano) + '%' : 'width:25%'\"\r\n [attr.aria-valuenow]=\"getProgressValue(plano)\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"col-3\">{{ getProgressValue(plano) }}%</div>\r\n </div>\r\n <!-- <div class=\"row align-items-center\">\r\n <div class=\"col-8 progress\" style=\"height: 4px; border-radius: 4px;\">\r\n <div\r\n class=\"progress-bar\"\r\n role=\"progressbar\"\r\n style=\"width: 25%\"\r\n aria-valuenow=\"25\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n <div class=\"col-4\">\r\n {{ plano.planoCompletion }}\r\n </div>\r\n </div> -->\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.layoutCount === 1 ? 1 : updateFloor(plano) }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'layout')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'layout') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'layout')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'layout') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.fixtureCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'fixture') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'fixture') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.vmCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'vm') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'vm') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.fixtureCapacity ?? 0 }}\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"text-center\">\r\n <span [ngbTooltip]=\"plano?.lastUpdate | date : 'medium'\">\r\n {{ plano?.lastUpdate | date }}\r\n </span>\r\n </td>\r\n <td class=\"text-center\">\r\n <div class=\"badge\" [ngClass]=\"getStatusBadge(plano)\">\r\n {{ getStatus(plano) }}\r\n </div>\r\n </td>\r\n <!-- <td>\r\n <div class=\"d-flex align-items-center gap-2 justify-content-center\">\r\n <svg width=\"21\" height=\"22\" viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17_71425)\">\r\n <path\r\n d=\"M12.1971 18.7144C12.0464 18.9742 11.8302 19.1898 11.5699 19.3397C11.3097 19.4896 11.0146 19.5685 10.7143 19.5685C10.414 19.5685 10.1189 19.4896 9.85866 19.3397C9.59842 19.1898 9.38212 18.9742 9.23143 18.7144M15.8571 7.57157C15.8571 6.2076 15.3153 4.89949 14.3508 3.93502C13.3864 2.97055 12.0783 2.42871 10.7143 2.42871C9.35032 2.42871 8.04221 2.97055 7.07774 3.93502C6.11326 4.89949 5.57143 6.2076 5.57143 7.57157C5.57143 13.5716 3 15.2859 3 15.2859H18.4286C18.4286 15.2859 15.8571 13.5716 15.8571 7.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.08574 8.04805C1.55611 8.04805 1.12146 7.61768 1.17082 7.09036C1.286 5.85989 1.627 4.71322 2.19383 3.65034C2.75229 2.60318 3.46062 1.69605 4.31882 0.928939C4.71052 0.578823 5.30965 0.673501 5.62062 1.09695C5.93175 1.52062 5.83525 2.1121 5.45225 2.47212C4.82875 3.05819 4.30987 3.74239 3.89559 4.52471C3.47303 5.32267 3.20776 6.17833 3.0998 7.09169C3.03766 7.61747 2.61518 8.04805 2.08574 8.04805ZM19.3431 8.04805C18.8134 8.04805 18.3908 7.6171 18.3287 7.09105C18.2209 6.17793 17.9556 5.32248 17.5326 4.52471C17.118 3.74258 16.5993 3.05852 15.9765 2.47254C15.5937 2.11226 15.4973 1.5207 15.8085 1.09696C16.1196 0.673433 16.7187 0.578551 17.1107 0.928571C17.9693 1.6954 18.6778 2.60266 19.2363 3.65034C19.8032 4.71381 20.1438 5.86068 20.2581 7.09095C20.3071 7.61809 19.8725 8.04805 19.3431 8.04805Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17_71425\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.428711 0.714355)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <svg width=\"23\" height=\"24\" viewBox=\"0 0 23 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_139_112685)\">\r\n <path\r\n d=\"M12.4843 21.4302C12.3336 21.69 12.1173 21.9057 11.857 22.0556C11.5968 22.2055 11.3017 22.2844 11.0014 22.2844C10.7011 22.2844 10.406 22.2055 10.1458 22.0556C9.88553 21.9057 9.66923 21.69 9.51854 21.4302M16.1443 10.2874C16.1443 8.92342 15.6024 7.61531 14.6379 6.65084C13.6735 5.68637 12.3654 5.14453 11.0014 5.14453C9.63742 5.14453 8.32932 5.68637 7.36485 6.65084C6.40037 7.61531 5.85854 8.92342 5.85854 10.2874C5.85854 16.2874 3.28711 18.0017 3.28711 18.0017H18.7157C18.7157 18.0017 16.1443 16.2874 16.1443 10.2874Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.37187 10.7634C1.84224 10.7634 1.40759 10.333 1.45695 9.80569C1.57213 8.57522 1.91313 7.42855 2.47997 6.36567C3.03842 5.31851 3.74675 4.41138 4.60496 3.64427C4.99665 3.29415 5.59578 3.38883 5.90675 3.81228C6.21788 4.23595 6.12138 4.82744 5.73838 5.18745C5.11489 5.77352 4.596 6.45772 4.18172 7.24004C3.75916 8.038 3.4939 8.89366 3.38594 9.80702C3.32379 10.3328 2.90131 10.7634 2.37187 10.7634ZM19.6292 10.7634C19.0995 10.7634 18.6769 10.3324 18.6148 9.80638C18.507 8.89326 18.2417 8.03781 17.8188 7.24004C17.4041 6.45791 16.8854 5.77385 16.2627 5.18787C15.8798 4.8276 15.7835 4.23603 16.0947 3.81229C16.4057 3.38876 17.0049 3.29388 17.3968 3.6439C18.2554 4.41073 18.964 5.31799 19.5224 6.36567C20.0893 7.42914 20.4299 8.57601 20.5442 9.80628C20.5932 10.3334 20.1586 10.7634 19.6292 10.7634Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <defs>\r\n <clipPath id=\"clip0_139_112685\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.714844 3.42969)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </td> -->\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.id }\"\r\n >\r\n <svg\r\n width=\"23\"\r\n height=\"24\"\r\n viewBox=\"0 0 23 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n *ngIf=\"getSubmit(plano)\"\r\n >\r\n <path\r\n d=\"M10.1395 6.85728H4.13946C3.6848 6.85728 3.24876 7.0379 2.92727 7.35939C2.60578 7.68088 2.42517 8.11691 2.42517 8.57157V20.5716C2.42517 21.0262 2.60578 21.4623 2.92727 21.7838C3.24876 22.1052 3.6848 22.2859 4.13946 22.2859H16.1395C16.5941 22.2859 17.0301 22.1052 17.3516 21.7838C17.6731 21.4623 17.8537 21.0262 17.8537 20.5716V14.5716M16.568 5.57157C16.909 5.23058 17.3715 5.03901 17.8537 5.03901C18.336 5.03901 18.7985 5.23058 19.1395 5.57157C19.4805 5.91256 19.672 6.37505 19.672 6.85728C19.672 7.33952 19.4805 7.80201 19.1395 8.143L10.9966 16.2859L7.56803 17.143L8.42517 13.7144L16.568 5.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n </svg>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\"\r\n height=\"22\"\r\n viewBox=\"0 0 21 22\"\r\n fill=\"none\"\r\n *ngIf=\"!getSubmit(plano)\"\r\n >\r\n <g clip-path=\"url(#clip0_844_18318)\">\r\n <path\r\n d=\"M9.85686 4.14249H3.85686C3.40221 4.14249 2.96617 4.32311 2.64468 4.6446C2.32319 4.96609 2.14258 5.40212 2.14258 5.85678V17.8568C2.14258 18.3114 2.32319 18.7475 2.64468 19.069C2.96617 19.3905 3.40221 19.5711 3.85686 19.5711H15.8569C16.3115 19.5711 16.7476 19.3905 17.069 19.069C17.3905 18.7475 17.5712 18.3114 17.5712 17.8568V11.8568M16.2854 2.85678C16.6264 2.51579 17.0889 2.32422 17.5712 2.32422C18.0534 2.32422 18.5159 2.51579 18.8569 2.85678C19.1979 3.19777 19.3894 3.66026 19.3894 4.14249C19.3894 4.62473 19.1979 5.08722 18.8569 5.42821L10.714 13.5711L7.28544 14.4282L8.14258 10.9996L16.2854 2.85678Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_18318\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.427734 0.713867)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </section>\r\n\r\n <!-- Manage Planogram grid view -->\r\n <!-- <ng-template #gridView>\r\n <section id=\"grid-view\">\r\n <div class=\"row gx-6 gy-4\">\r\n <div class=\"col-md-4\" *ngFor=\"let fixture of fixtureTemplatesList\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"card-action dropdown\">\r\n <button class=\"btn btn-light px-4 py-3\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <i class=\"bi bi-three-dots-vertical\"></i>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h3>{{ fixture.name }}</h3>\r\n <div class=\"badge\" [ngClass]=\"fixture.status\">{{ fixture.status | titlecase }}</div>\r\n </div>\r\n <div class=\"d-flex gap-2\">\r\n <div *ngFor=\"let subBrand of fixture.subBrand; let i = index\">\r\n <span *ngIf=\"i != 0\" class=\"me-2 card-tagline\">•</span>\r\n <div class=\"badge\">{{ subBrand }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </ng-template> -->\r\n\r\n <!-- Pagination -->\r\n <lib-pagination\r\n [itemsPerPage]=\"limit\"\r\n [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n *ngIf=\"!isPageLoading && planogramsList.length !== 0\"\r\n >\r\n </lib-pagination>\r\n </div>\r\n</div>\r\n", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;max-width:345px;min-width:234px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .shelfContainer .block{border:1px solid #98a2b3;border-top:none}.wall-viewport .body-block .shelfContainer:first-child .block{border-top:1px solid #98a2b3}.wall-viewport .body-block .block{padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .vmonly-placeholder{background-image:repeating-linear-gradient(45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px),repeating-linear-gradient(-45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px)}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.draft{background:#f2f4f7;color:#667085}.indicator.draft path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.allocationPending{background:#fef0c7;color:#f79009}.indicator.allocationPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.restrict-interaction{-webkit-user-select:none;user-select:none;pointer-events:none}.btn .spinner{height:22px;animation:spin .9s linear infinite}.btn .spinner .path{stroke-width:4px;stroke:#071437;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:60}@keyframes spin{to{transform:rotate(360deg)}}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#f2f4f7;background:#667085}.badge.yetToComplete{background:#f2f4f7;color:#667085}.badge.yetToAssign{background:#eaecf5;color:#363f72}.badge.taskAssigned{background:#e0eaff;color:#7a5af8}.badge.reviewPending{background:#fef0c7;color:#f79009}.badge.completed{background:#d1fadf;color:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 330px);height:100%;padding:16px 24px}.badgeStyle{color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#f2f4f7}.primaryBadgeStyle{color:var(--Gray-700, #009BF3);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#eaf8ff}\n"] }]
|
|
625
|
+
args: [{ selector: "lib-plano-verification-table", template: "<div class=\"row mx-0 my-5 gap-2\">\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'all' }\" (click)=\"filterTable('all')\">\r\n <h3>{{ pendingDetails?.allStores || 0 }}</h3>\r\n <p>Total stores</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'layout' }\" (click)=\"filterTable('layout')\">\r\n <h3>{{ pendingDetails?.layoutComplete ?? 0 }}</h3>\r\n <p>Layout verification completed</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'fixture' }\" (click)=\"filterTable('fixture')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>Fixture verification pending</p>\r\n </div>\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'vm' }\" (click)=\"filterTable('vm')\">\r\n <h3>{{ pendingDetails?.fixturePending ?? 0 }}</h3>\r\n <p>VM verification pending</p>\r\n </div>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 5th stat card -->\r\n <div class=\"col filter-tab\" [ngClass]=\"{ selected: selectedFilterTab === 'zone' }\" (click)=\"filterTable('zone')\">\r\n <h3>{{ pendingDetails?.zonePending ?? 0 }}</h3>\r\n <p>Zone verification pending</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"content-wrapper\">\r\n <div [class.restrict-interaction]=\"isButtonLoading\">\r\n <!-- Manage Planogram view header -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-5\">\r\n <div>\r\n <h4>All Planograms</h4>\r\n <span>{{ totalItems }} - Total Records</span>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div style=\"position: relative\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchTerm\"\r\n (change)=\"onSearch()\"\r\n style=\"padding-left: 3rem; padding-right: 3rem\"\r\n class=\"form-control\"\r\n name=\"search\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n />\r\n\r\n <span class=\"search-icon\">\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-width=\"2\" />\r\n <line x1=\"13\" y1=\"13\" x2=\"16\" y2=\"16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n\r\n <button *ngIf=\"searchTerm\" type=\"button\" aria-label=\"Clear\" (click)=\"searchTerm = ''; onSearch()\" class=\"clear-search\">\r\n <svg width=\"64px\" height=\"64px\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n <g id=\"SVGRepo_iconCarrier\">\r\n <path d=\"M9 9L15 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <path d=\"M15 9L9 15\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n ></circle>\r\n </g>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- <button type=\"button\" (click)=\"openBulkUploadModal()\" class=\"btn btn-outline text-nowrap\">\r\n <svg class=\"me-2\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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=\"currentColor\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Bulk Upload\r\n </button> -->\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-outline d-line-flex align-items-center text-nowrap\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Filter\r\n </button> -->\r\n\r\n <plano-filter [clientId]=\"clientId\" [data]=\"filterObject\" (applyFilters)=\"applyFilters($event)\"\r\n (resetFilters)=\"applyFilters($event)\" [config]=\"{ 'Merchandise compliance': false }\"></plano-filter>\r\n\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader\"\r\n [disabled]=\"!planogramsList.length\">\r\n \r\n <svg *ngIf=\"!isButtonLoading\" 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\" stroke-linejoin=\"round\"></path>\r\n </svg>\r\n \r\n <svg *ngIf=\"isButtonLoading\" class=\"spinner\" viewBox=\"0 0 50 50\">\r\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\"></circle>\r\n </svg>\r\n <span class=\"ms-2\"> Export</span>\r\n </button>\r\n\r\n <!-- <button type=\"button\" (click)=\"onClickCreatePlanogram()\" class=\"btn btn-primary d-inline-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\"\r\n stroke=\"white\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create </span>\r\n </button> -->\r\n\r\n <!-- <lib-filters [dataObject]=\"filterObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isPageLoading\">\r\n <div 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 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>\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\"\r\n *ngIf=\"!isPageLoading && planogramsList.length === 0\"\r\n >\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\" />\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for manage planogram table</div>\r\n </div>\r\n\r\n <!-- Manage Planogram list view -->\r\n <section id=\"list-view\" *ngIf=\"!isPageLoading && planogramsList.length !== 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span (click)=\"onSortTable('storeName')\" class=\"cursor-pointer\">\r\n Store Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'storeName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'storeName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutName')\" class=\"cursor-pointer\">\r\n Layout Name\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutName' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutName' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th>\r\n Country\r\n </th>\r\n <th>\r\n City\r\n </th>\r\n <th>\r\n <span class=\"cursor-pointer d-flex align-items-center\">\r\n Plano Completion %\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planoProgress' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planoProgress' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n ngbTooltip=\"% of overall planogram completion\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>\r\n <span (click)=\"onSortTable('layoutCount')\" class=\"cursor-pointer\">\r\n Layout\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'layoutCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'layoutCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('fixtureCount')\" class=\"cursor-pointer\">\r\n No of Fixtures\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('vmCount')\" class=\"cursor-pointer\">\r\n No of VMs\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'vmCount' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'vmCount' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 Zone status header -->\r\n <th class=\"text-center\">\r\n <span>Zone</span>\r\n </th>\r\n <th class=\"text-center\">\r\n <ng-template #tooltip>\r\n <div class=\"w-100\">\r\n <h6>Total store capacity</h6>\r\n <span> Combining product capacity of all fixtures </span>\r\n </div>\r\n </ng-template>\r\n <span (click)=\"onSortTable('fixtureCapacity')\" class=\"cursor-pointer d-flex align-items-center\">\r\n Store Capacity\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'fixtureCapacity' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'fixtureCapacity' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n [ngbTooltip]=\"tooltip\"\r\n class=\"ms-2\"\r\n >\r\n <g clip-path=\"url(#clip0_844_17538)\">\r\n <path\r\n d=\"M8.00065 10.6663V7.99967M8.00065 5.33301H8.00732M14.6673 7.99967C14.6673 11.6816 11.6826 14.6663 8.00065 14.6663C4.31875 14.6663 1.33398 11.6816 1.33398 7.99967C1.33398 4.31778 4.31875 1.33301 8.00065 1.33301C11.6826 1.33301 14.6673 4.31778 14.6673 7.99967Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_17538\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span (click)=\"onSortTable('lastUpdate')\" class=\"cursor-pointer\">\r\n Last update\r\n <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'lastUpdate' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'lastUpdate' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </span>\r\n </th>\r\n <th class=\"text-center\">\r\n <span class=\"cursor-pointer\">\r\n Planogram Status\r\n <!-- <i\r\n class=\"fa ms-1 mt-1\"\r\n [ngStyle]=\"{ color: sortedColumn === 'planogramStatus' ? '#009BF3' : '' }\"\r\n [ngClass]=\"sortOrder === 1 && sortedColumn === 'planogramStatus' ? 'fa-arrow-up' : 'fa-arrow-down'\"\r\n aria-hidden=\"true\"\r\n ></i> -->\r\n </span>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let plano of planogramsList\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <a (click)=\"redirectStore(plano.storeId)\" class=\"cursor-pointer text-decoration-underline\">\r\n {{ plano.storeName }}</a\r\n >\r\n </div>\r\n </td>\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.[0]?.id }\"\r\n class=\"text-decoration-underline\"\r\n >\r\n {{\r\n plano.layoutName\r\n }}\r\n </a>\r\n </td>\r\n <td>\r\n {{plano?.country}}\r\n </td>\r\n <td>\r\n {{plano?.city}}\r\n </td>\r\n <td>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-9\">\r\n <div class=\"progress\" style=\"height: 4px\">\r\n <div\r\n class=\"progress-bar\"\r\n [ngClass]=\"\r\n [25, 50].includes(getProgressValue(plano))\r\n ? 'bg-warning'\r\n : 'bg-success'\r\n \"\r\n role=\"progressbar\"\r\n [style]=\"getProgressValue(plano) ? 'width: ' + getProgressValue(plano) + '%' : 'width:25%'\"\r\n [attr.aria-valuenow]=\"getProgressValue(plano)\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"col-3\">{{ getProgressValue(plano) }}%</div>\r\n </div>\r\n <!-- <div class=\"row align-items-center\">\r\n <div class=\"col-8 progress\" style=\"height: 4px; border-radius: 4px;\">\r\n <div\r\n class=\"progress-bar\"\r\n role=\"progressbar\"\r\n style=\"width: 25%\"\r\n aria-valuenow=\"25\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n </div>\r\n <div class=\"col-4\">\r\n {{ plano.planoCompletion }}\r\n </div>\r\n </div> -->\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.layoutCount === 1 ? 1 : updateFloor(plano) }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'layout')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'layout') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'layout')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'layout') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.fixtureCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'fixture') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'fixture') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano.vmCount }}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"showBreach(plano, 'fixture')\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getTaskStatus(plano, 'vm') || 'taskAssigned'\"\r\n *ngIf=\"!showBreach(plano, 'fixture')\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getTaskTooltip(plano, 'vm') || 'Task Assigned' }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- [ZONE-VERIFICATION] additive \u2014 Zone status cell -->\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n ngbTooltip=\"Didn\u2019t respond within the due date\"\r\n *ngIf=\"getZoneStatus(plano) === 'flag'\"\r\n >\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33463 9.33398 9.33463C11.084 9.33463 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513Z\"\r\n fill=\"#FECDCA\"\r\n />\r\n <path\r\n d=\"M2.33398 8.7513C2.33398 8.7513 2.91732 8.16797 4.66732 8.16797C6.41732 8.16797 7.58398 9.33464 9.33398 9.33464C11.084 9.33464 11.6673 8.7513 11.6673 8.7513V1.7513C11.6673 1.7513 11.084 2.33464 9.33398 2.33464C7.58398 2.33464 6.41732 1.16797 4.66732 1.16797C2.91732 1.16797 2.33398 1.7513 2.33398 1.7513V8.7513ZM2.33398 8.7513V12.8346\"\r\n stroke=\"#D92D20\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <div\r\n class=\"indicator short\"\r\n [ngClass]=\"getZoneStatus(plano)\"\r\n *ngIf=\"getZoneStatus(plano) !== 'flag'\"\r\n >\r\n <svg\r\n width=\"8\"\r\n height=\"7\"\r\n viewBox=\"0 0 8 7\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n ngbTooltip=\"{{ getZoneTooltip(plano) }}\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M6.97284 0.310967L2.79617 4.3418L1.68784 3.15763C1.48367 2.96513 1.16284 2.95347 0.929505 3.1168C0.702005 3.28597 0.637838 3.58347 0.777838 3.82263L2.09034 5.95763C2.21867 6.15597 2.44034 6.27847 2.69117 6.27847C2.93034 6.27847 3.15784 6.15597 3.28617 5.95763C3.49617 5.68347 7.50367 0.905967 7.50367 0.905967C8.02867 0.3693 7.39284 -0.1032 6.97284 0.305134V0.310967Z\"\r\n fill=\"#667085\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center justify-content-center gap-2\">\r\n <span>\r\n {{ plano?.fixtureCapacity ?? 0 }}\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"text-center\">\r\n <span [ngbTooltip]=\"plano?.lastUpdate | date : 'medium'\">\r\n {{ plano?.lastUpdate | date }}\r\n </span>\r\n </td>\r\n <td class=\"text-center\">\r\n <div class=\"badge\" [ngClass]=\"getStatusBadge(plano)\">\r\n {{ getStatus(plano) }}\r\n </div>\r\n </td>\r\n <!-- <td>\r\n <div class=\"d-flex align-items-center gap-2 justify-content-center\">\r\n <svg width=\"21\" height=\"22\" viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17_71425)\">\r\n <path\r\n d=\"M12.1971 18.7144C12.0464 18.9742 11.8302 19.1898 11.5699 19.3397C11.3097 19.4896 11.0146 19.5685 10.7143 19.5685C10.414 19.5685 10.1189 19.4896 9.85866 19.3397C9.59842 19.1898 9.38212 18.9742 9.23143 18.7144M15.8571 7.57157C15.8571 6.2076 15.3153 4.89949 14.3508 3.93502C13.3864 2.97055 12.0783 2.42871 10.7143 2.42871C9.35032 2.42871 8.04221 2.97055 7.07774 3.93502C6.11326 4.89949 5.57143 6.2076 5.57143 7.57157C5.57143 13.5716 3 15.2859 3 15.2859H18.4286C18.4286 15.2859 15.8571 13.5716 15.8571 7.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.08574 8.04805C1.55611 8.04805 1.12146 7.61768 1.17082 7.09036C1.286 5.85989 1.627 4.71322 2.19383 3.65034C2.75229 2.60318 3.46062 1.69605 4.31882 0.928939C4.71052 0.578823 5.30965 0.673501 5.62062 1.09695C5.93175 1.52062 5.83525 2.1121 5.45225 2.47212C4.82875 3.05819 4.30987 3.74239 3.89559 4.52471C3.47303 5.32267 3.20776 6.17833 3.0998 7.09169C3.03766 7.61747 2.61518 8.04805 2.08574 8.04805ZM19.3431 8.04805C18.8134 8.04805 18.3908 7.6171 18.3287 7.09105C18.2209 6.17793 17.9556 5.32248 17.5326 4.52471C17.118 3.74258 16.5993 3.05852 15.9765 2.47254C15.5937 2.11226 15.4973 1.5207 15.8085 1.09696C16.1196 0.673433 16.7187 0.578551 17.1107 0.928571C17.9693 1.6954 18.6778 2.60266 19.2363 3.65034C19.8032 4.71381 20.1438 5.86068 20.2581 7.09095C20.3071 7.61809 19.8725 8.04805 19.3431 8.04805Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17_71425\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.428711 0.714355)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <svg width=\"23\" height=\"24\" viewBox=\"0 0 23 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_139_112685)\">\r\n <path\r\n d=\"M12.4843 21.4302C12.3336 21.69 12.1173 21.9057 11.857 22.0556C11.5968 22.2055 11.3017 22.2844 11.0014 22.2844C10.7011 22.2844 10.406 22.2055 10.1458 22.0556C9.88553 21.9057 9.66923 21.69 9.51854 21.4302M16.1443 10.2874C16.1443 8.92342 15.6024 7.61531 14.6379 6.65084C13.6735 5.68637 12.3654 5.14453 11.0014 5.14453C9.63742 5.14453 8.32932 5.68637 7.36485 6.65084C6.40037 7.61531 5.85854 8.92342 5.85854 10.2874C5.85854 16.2874 3.28711 18.0017 3.28711 18.0017H18.7157C18.7157 18.0017 16.1443 16.2874 16.1443 10.2874Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2.37187 10.7634C1.84224 10.7634 1.40759 10.333 1.45695 9.80569C1.57213 8.57522 1.91313 7.42855 2.47997 6.36567C3.03842 5.31851 3.74675 4.41138 4.60496 3.64427C4.99665 3.29415 5.59578 3.38883 5.90675 3.81228C6.21788 4.23595 6.12138 4.82744 5.73838 5.18745C5.11489 5.77352 4.596 6.45772 4.18172 7.24004C3.75916 8.038 3.4939 8.89366 3.38594 9.80702C3.32379 10.3328 2.90131 10.7634 2.37187 10.7634ZM19.6292 10.7634C19.0995 10.7634 18.6769 10.3324 18.6148 9.80638C18.507 8.89326 18.2417 8.03781 17.8188 7.24004C17.4041 6.45791 16.8854 5.77385 16.2627 5.18787C15.8798 4.8276 15.7835 4.23603 16.0947 3.81229C16.4057 3.38876 17.0049 3.29388 17.3968 3.6439C18.2554 4.41073 18.964 5.31799 19.5224 6.36567C20.0893 7.42914 20.4299 8.57601 20.5442 9.80628C20.5932 10.3334 20.1586 10.7634 19.6292 10.7634Z\"\r\n fill=\"#667085\"\r\n />\r\n </g>\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <defs>\r\n <clipPath id=\"clip0_139_112685\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.714844 3.42969)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </td> -->\r\n <td>\r\n <a\r\n [routerLink]=\"['/manage/planogram/manage-planogram']\"\r\n [queryParams]=\"{ planoId: plano._id, floorId: plano?.layoutDetails?.id }\"\r\n >\r\n <svg\r\n width=\"23\"\r\n height=\"24\"\r\n viewBox=\"0 0 23 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n *ngIf=\"getSubmit(plano)\"\r\n >\r\n <path\r\n d=\"M10.1395 6.85728H4.13946C3.6848 6.85728 3.24876 7.0379 2.92727 7.35939C2.60578 7.68088 2.42517 8.11691 2.42517 8.57157V20.5716C2.42517 21.0262 2.60578 21.4623 2.92727 21.7838C3.24876 22.1052 3.6848 22.2859 4.13946 22.2859H16.1395C16.5941 22.2859 17.0301 22.1052 17.3516 21.7838C17.6731 21.4623 17.8537 21.0262 17.8537 20.5716V14.5716M16.568 5.57157C16.909 5.23058 17.3715 5.03901 17.8537 5.03901C18.336 5.03901 18.7985 5.23058 19.1395 5.57157C19.4805 5.91256 19.672 6.37505 19.672 6.85728C19.672 7.33952 19.4805 7.80201 19.1395 8.143L10.9966 16.2859L7.56803 17.143L8.42517 13.7144L16.568 5.57157Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M17 1C19.7614 1 22 3.23858 22 6C22 8.76142 19.7614 11 17 11C14.2386 11 12 8.76142 12 6C12 3.23858 14.2386 1 17 1Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n </svg>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\"\r\n height=\"22\"\r\n viewBox=\"0 0 21 22\"\r\n fill=\"none\"\r\n *ngIf=\"!getSubmit(plano)\"\r\n >\r\n <g clip-path=\"url(#clip0_844_18318)\">\r\n <path\r\n d=\"M9.85686 4.14249H3.85686C3.40221 4.14249 2.96617 4.32311 2.64468 4.6446C2.32319 4.96609 2.14258 5.40212 2.14258 5.85678V17.8568C2.14258 18.3114 2.32319 18.7475 2.64468 19.069C2.96617 19.3905 3.40221 19.5711 3.85686 19.5711H15.8569C16.3115 19.5711 16.7476 19.3905 17.069 19.069C17.3905 18.7475 17.5712 18.3114 17.5712 17.8568V11.8568M16.2854 2.85678C16.6264 2.51579 17.0889 2.32422 17.5712 2.32422C18.0534 2.32422 18.5159 2.51579 18.8569 2.85678C19.1979 3.19777 19.3894 3.66026 19.3894 4.14249C19.3894 4.62473 19.1979 5.08722 18.8569 5.42821L10.714 13.5711L7.28544 14.4282L8.14258 10.9996L16.2854 2.85678Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_844_18318\">\r\n <rect width=\"20.5714\" height=\"20.5714\" fill=\"white\" transform=\"translate(0.427734 0.713867)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </section>\r\n\r\n <!-- Manage Planogram grid view -->\r\n <!-- <ng-template #gridView>\r\n <section id=\"grid-view\">\r\n <div class=\"row gx-6 gy-4\">\r\n <div class=\"col-md-4\" *ngFor=\"let fixture of fixtureTemplatesList\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"card-action dropdown\">\r\n <button class=\"btn btn-light px-4 py-3\" type=\"button\" data-bs-toggle=\"dropdown\">\r\n <i class=\"bi bi-three-dots-vertical\"></i>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item cursor-pointer\">Edit</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer\">Duplicate</a></li>\r\n <li><a class=\"dropdown-item cursor-pointer text-danger\">Delete</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h3>{{ fixture.name }}</h3>\r\n <div class=\"badge\" [ngClass]=\"fixture.status\">{{ fixture.status | titlecase }}</div>\r\n </div>\r\n <div class=\"d-flex gap-2\">\r\n <div *ngFor=\"let subBrand of fixture.subBrand; let i = index\">\r\n <span *ngIf=\"i != 0\" class=\"me-2 card-tagline\">•</span>\r\n <div class=\"badge\">{{ subBrand }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </ng-template> -->\r\n\r\n <!-- Pagination -->\r\n <lib-pagination\r\n [itemsPerPage]=\"limit\"\r\n [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n *ngIf=\"!isPageLoading && planogramsList.length !== 0\"\r\n >\r\n </lib-pagination>\r\n </div>\r\n</div>\r\n", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;max-width:345px;min-width:234px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .shelfContainer .block{border:1px solid #98a2b3;border-top:none}.wall-viewport .body-block .shelfContainer:first-child .block{border-top:1px solid #98a2b3}.wall-viewport .body-block .block{padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .vmonly-placeholder{background-image:repeating-linear-gradient(45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px),repeating-linear-gradient(-45deg,rgba(152,162,179,.2901960784) 0,rgba(152,162,179,.2901960784) .7px,transparent .7px,transparent 8px)}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.draft{background:#f2f4f7;color:#667085}.indicator.draft path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.allocationPending{background:#fef0c7;color:#f79009}.indicator.allocationPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.restrict-interaction{-webkit-user-select:none;user-select:none;pointer-events:none}.btn .spinner{height:22px;animation:spin .9s linear infinite}.btn .spinner .path{stroke-width:4px;stroke:#071437;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:60}@keyframes spin{to{transform:rotate(360deg)}}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#f2f4f7;background:#667085}.badge.yetToComplete{background:#f2f4f7;color:#667085}.badge.yetToAssign{background:#eaecf5;color:#363f72}.badge.taskAssigned{background:#e0eaff;color:#7a5af8}.badge.reviewPending{background:#fef0c7;color:#f79009}.badge.completed{background:#d1fadf;color:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 330px);height:100%;padding:16px 24px}.badgeStyle{color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#f2f4f7}.primaryBadgeStyle{color:var(--Gray-700, #009BF3);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;background:#eaf8ff}\n"] }]
|
|
580
626
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.StoreBuilderService }, { type: i4.GlobalStateService }, { type: i4.PageInfoService }] });
|
|
581
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1wbGFuby92ZXJpZmljYXRpb24tdGFibGUvdmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1wbGFuby92ZXJpZmljYXRpb24tdGFibGUvdmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBRVAsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBSWQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDL0csT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sK0JBQStCO0lBbUhoQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF2SFYsUUFBUSxDQUFTO0lBRWpCLGNBQWMsQ0FBTTtJQUNwQixjQUFjLEdBQWdCLEVBQUUsQ0FBQztJQUVqQyxpQkFBaUIsR0FBVyxLQUFLLENBQUM7SUFFbEMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBRXRCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFFeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLFVBQVUsR0FB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Q2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQWhvQlUsK0JBQStCOzRGQUEvQiwrQkFBK0Isb0VDekI1QyxvK3hDQTh1QkE7OzRGRHJ0QmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBmaWx0ZXIsXHJcbiAgU3ViamVjdCxcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgUGxhbm9MaXN0IH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvcGxhbm9ncmFtLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCdWxrVXBsb2FkUGxhbm9ncmFtQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BvcHVwcy9idWxrLXVwbG9hZC1wbGFub2dyYW0vYnVsay11cGxvYWQtcGxhbm9ncmFtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIGdldFF1ZXJ5UGFyYW1OdW1iZXIsXHJcbiAgZ2V0UXVlcnlQYXJhbVN0cmluZyxcclxufSBmcm9tIFwiLi4vLi4vLi4vZnVuY3Rpb25zL3BsYW5vLmZ1bmN0aW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItcGxhbm8tdmVyaWZpY2F0aW9uLXRhYmxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi92ZXJpZmljYXRpb24tdGFibGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3ZlcmlmaWNhdGlvbi10YWJsZS5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhbm9WZXJpZmljYXRpb25UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBwZW5kaW5nRGV0YWlsczogYW55O1xyXG4gIHBsYW5vZ3JhbXNMaXN0OiBQbGFub0xpc3RbXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZEZpbHRlclRhYjogc3RyaW5nID0gXCJhbGxcIjtcclxuXHJcbiAgc29ydGVkQ29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNvcnRPcmRlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgbGltaXQ6IG51bWJlciA9IDEwO1xyXG4gIG9mZnNldDogbnVtYmVyID0gMTtcclxuICB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuXHJcbiAgLy8gZmlsdGVyT2JqZWN0ID0gW1xyXG4gIC8vICAge1xyXG4gIC8vICAgICBEZXNjcmlwdGlvbjogXCJMYXlvdXRcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlRhc2sgQXNzaWduZWRcIiwgaWQ6IFwidGFza0Fzc2lnbmVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiUmV2aWV3IFBlbmRpbmdcIiwgaWQ6IFwicmV2aWV3UGVuZGluZ1wiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIllldCBUbyBDb21wbGV0ZVwiLCBpZDogXCJ5ZXRUb0NvbXBsZXRlXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiWWV0IFRvIEFzc2lnblwiLCBpZDogXCJ5ZXRUb0Fzc2lnblwiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIlJvbGwgb3V0XCIsIGlkOiBcInJvbGxvdXRcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJDb21wbGV0ZWRcIiwgaWQ6IFwiY29tcGxldGVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiRmxhZ1wiLCBpZDogXCJmbGFnXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIERlc2NyaXB0aW9uOiBcIkZpeHR1cmVcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlRhc2sgQXNzaWduZWRcIiwgaWQ6IFwidGFza0Fzc2lnbmVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiUmV2aWV3IFBlbmRpbmdcIiwgaWQ6IFwicmV2aWV3UGVuZGluZ1wiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIllldCBUbyBDb21wbGV0ZVwiLCBpZDogXCJ5ZXRUb0NvbXBsZXRlXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiWWV0IFRvIEFzc2lnblwiLCBpZDogXCJ5ZXRUb0Fzc2lnblwiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIlJvbGwgb3V0XCIsIGlkOiBcInJvbGxvdXRcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJDb21wbGV0ZWRcIiwgaWQ6IFwiY29tcGxldGVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiRmxhZ1wiLCBpZDogXCJmbGFnXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIERlc2NyaXB0aW9uOiBcIlBsYW5vZ3JhbSBTdGF0dXNcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIkluLVByb2dyZXNzXCIsIGlkOiBcImlucHJvZ3Jlc3NcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJSZWFkeSB0byBQdWJsaXNoXCIsIGlkOiBcIm5vdFB1Ymxpc2hlZFwiIH0sXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlB1Ymxpc2hlZFwiLCBpZDogXCJwdWJsaXNoXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gXTtcclxuXHJcbiAgZmlsdGVyT2JqZWN0ID0gW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJMYXlvdXRcIixcclxuICAgICAgdHlwZTogXCJtdWx0aVwiLFxyXG4gICAgICBpc09wZW5lZDogZmFsc2UsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IG5hbWU6IFwiVGFzayBBc3NpZ25lZFwiLCB2YWx1ZTogXCJ0YXNrQXNzaWduZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUmV2aWV3IFBlbmRpbmdcIiwgdmFsdWU6IFwicmV2aWV3UGVuZGluZ1wiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIC8vIHsgbmFtZTogXCJZZXQgVG8gQ29tcGxldGVcIiwgdmFsdWU6IFwieWV0VG9Db21wbGV0ZVwiIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIllldCBUbyBBc3NpZ25cIiwgdmFsdWU6IFwieWV0VG9Bc3NpZ25cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICAvLyB7IG5hbWU6IFwiUm9sbCBvdXRcIiwgdmFsdWU6IFwicm9sbG91dFwiIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkNvbXBsZXRlZFwiLCB2YWx1ZTogXCJjb21wbGV0ZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiRmxhZ1wiLCB2YWx1ZTogXCJmbGFnXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJGaXh0dXJlXCIsXHJcbiAgICAgIHR5cGU6IFwibXVsdGlcIixcclxuICAgICAgaXNPcGVuZWQ6IGZhbHNlLFxyXG4gICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgeyBuYW1lOiBcIlRhc2sgQXNzaWduZWRcIiwgdmFsdWU6IFwidGFza0Fzc2lnbmVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlJldmlldyBQZW5kaW5nXCIsIHZhbHVlOiBcInJldmlld1BlbmRpbmdcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICAvLyB7IG5hbWU6IFwiWWV0IFRvIENvbXBsZXRlXCIsIHZhbHVlOiBcInlldFRvQ29tcGxldGVcIiB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJZZXQgVG8gQXNzaWduXCIsIHZhbHVlOiBcInlldFRvQXNzaWduXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgLy8geyBuYW1lOiBcIlJvbGwgb3V0XCIsIHZhbHVlOiBcInJvbGxvdXRcIiB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJDb21wbGV0ZWRcIiwgdmFsdWU6IFwiY29tcGxldGVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkZsYWdcIiwgdmFsdWU6IFwiZmxhZ1wiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdGl0bGU6IFwiUGxhbm9ncmFtIFN0YXR1c1wiLFxyXG4gICAgICB0eXBlOiBcIm11bHRpXCIsXHJcbiAgICAgIGlzT3BlbmVkOiBmYWxzZSxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbmFtZTogXCJUYXNrIEFzc2lnbmVkXCIsIHZhbHVlOiBcInRhc2tBc3NpZ25lZFwiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJSZXZpZXcgUGVuZGluZ1wiLCB2YWx1ZTogXCJyZXZpZXdQZW5kaW5nXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIllldCBUbyBBc3NpZ25cIiwgdmFsdWU6IFwieWV0VG9Bc3NpZ25cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUmVhZHkgdG8gUHVibGlzaFwiLCB2YWx1ZTogXCJub3RQdWJsaXNoZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUHVibGlzaGVkXCIsIHZhbHVlOiBcInB1Ymxpc2hcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgYXBwbGllZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNvdW50cnk6IFtdLFxyXG4gICAgY2l0eTogW10sXHJcbiAgICBsYXlvdXQ6IFtdLFxyXG4gICAgZml4dHVyZTogW10sXHJcbiAgICB0YXNrUGVuZGluZzogXCJhbGxcIixcclxuICAgIHN0YXR1czogW10sXHJcbiAgfTtcclxuXHJcbiAgaXNGaWx0ZXJBcHBsaWVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzUGFnZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzQnV0dG9uTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBwbGFub1N1Yj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nYk1vZGFsOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgc3RvcmVCdWlsZGVyU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBpc0Z1dHVyZVRhc2tEYXRlKGRhdGVWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGVWYWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgdGFza0RhdGUgPSBuZXcgRGF0ZShkYXRlVmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKHRhc2tEYXRlLmdldFRpbWUoKSkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgIHRhc2tEYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG5cclxuICAgIHJldHVybiB0YXNrRGF0ZS5nZXRUaW1lKCkgPiB0b2RheS5nZXRUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgLy8gU3Vic2NyaXB0aW9uIHdpbGwgYmUgY2FuY2VsbGVkIG9uIGNvbXBvbmVudCBkZXN0cm95LlxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyBUbyBhdm9pZCBpbW1lZGlhdGUgZnJlcXVlbnQgY2FsbHMuXHJcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLCAvLyBGaWx0ZXJpbmcgbnVsbC91bmRlZmluZWQuXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBFbWl0dGluZyBvbmx5IGRpZmZlcmVudCB2YWx1ZXMuIChJZ25vcmVzIHNhbWUgY2xpZW50SWQpLlxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhLmNsaWVudDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YT8uY2xpZW50O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IGdldFF1ZXJ5UGFyYW1TdHJpbmcoe1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAga2V5OiBcInNlYXJjaFwiLFxyXG4gICAgICAgICAgICAgICAgZmFsbGJhY2s6IFwiXCIsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSB0aGlzLnNlYXJjaFRlcm0gPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWIgPSBnZXRRdWVyeVBhcmFtU3RyaW5nKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGtleTogXCJ0YWJcIixcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrOiBcImFsbFwiLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnMudGFza1BlbmRpbmcgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlclRhYiA9PSBcInZtXCJcclxuICAgICAgICAgICAgICAgICAgPyBcImZpeHR1cmVcIlxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWI7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubGltaXQgPSBnZXRRdWVyeVBhcmFtTnVtYmVyKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGtleTogXCJsaW1pdFwiLFxyXG4gICAgICAgICAgICAgICAgZmFsbGJhY2s6IDEwLFxyXG4gICAgICAgICAgICAgICAgbWluOiAxLFxyXG4gICAgICAgICAgICAgICAgbWF4OiAzMCxcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBnZXRRdWVyeVBhcmFtTnVtYmVyKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGtleTogXCJvZmZzZXRcIixcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrOiAxLFxyXG4gICAgICAgICAgICAgICAgbWluOiAxLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmdldFBsYW5vVGFibGVMaXN0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiTWFuYWdlIFBsYW5vZ3JhbVwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiUGxhbm9ncmFtXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJcIixcclxuICAgICAgICBwYXRoOiBcIlwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9UYWJsZUxpc3QoKSB7XHJcbiAgICB0aGlzLnBsYW5vU3ViPy51bnN1YnNjcmliZSgpOyAvLyBDYW5jZWwgcHJldmlvdXMgcmVxdWVzdFxyXG5cclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBsYW5vZ3JhbXNMaXN0ID0gW107XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0ZWRDb2x1bW4sXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0T3JkZXIsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5hcHBsaWVkRmlsdGVycyxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVGVybSxcclxuICAgICAgLy8gZXhwb3J0OiBmYWxzZSxcclxuICAgICAgLy8gZW1wdHlEb3dubG9hZDogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wbGFub1N1YiA9IHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZVxyXG4gICAgICAuZ2V0UGxhbm9MaXN0KHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5jb3VudDtcclxuICAgICAgICAgICAgdGhpcy5wbGFub2dyYW1zTGlzdCA9IHJlcz8uZGF0YT8uZGF0YSA/PyBbXTtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGV0YWlscyA9IHJlcz8uZGF0YT8ucGVuZGluZ0RldGFpbHM/LlswXSB8fCBbXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudG90YWxJdGVtcyA8IDEwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbdGhpcy50b3RhbEl0ZW1zXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5wbGFub2dyYW1zTGlzdC5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBvcGVuQnVsa1VwbG9hZE1vZGFsKCkge1xyXG4gICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oQnVsa1VwbG9hZFBsYW5vZ3JhbUNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbkNsaWNrQ3JlYXRlUGxhbm9ncmFtKCkge1xyXG4gIC8vICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oQ3JlYXRlUGxhbm9ncmFtQ29tcG9uZW50LCB7XHJcbiAgLy8gICAgIHNpemU6IFwibWRcIixcclxuICAvLyAgICAgd2luZG93Q2xhc3M6IFwiY3JlYXRlLXBsYW5vZ3JhbS1tb2RhbFwiLFxyXG4gIC8vICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAvLyAgIH0pO1xyXG5cclxuICAvLyAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAvLyAgIG1vZGVsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAvLyAgICAgaWYgKHJlc3VsdCkge1xyXG4gIC8vICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvcGxhbm9ncmFtL21hbmFnZS1wbGFub2dyYW1cIl0sIHtcclxuICAvLyAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHBsYW5vSWQ6IHJlc3VsdD8ucGxhbm9JZCwgZmxvb3JJZDogcmVzdWx0Py5mbG9vcklkIH0sXHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgb25TZWFyY2goKSB7XHJcbiAgICB0aGlzLnNvcnRlZENvbHVtbiA9IFwiXCI7XHJcbiAgICB0aGlzLnNvcnRPcmRlciA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmxpbWl0ID0gMTA7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSB0aGlzLnNlYXJjaFRlcm0gPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBvblNvcnRUYWJsZShjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSB0aGlzLnNvcnRPcmRlciA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydGVkQ29sdW1uID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnRPcmRlciA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICB0aGlzLmdldFBsYW5vVGFibGVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJUYWJsZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVyVGFiICE9PSBkYXRhKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWIgPSBkYXRhO1xyXG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzLnRhc2tQZW5kaW5nID0gdGhpcy5zZWxlY3RlZEZpbHRlclRhYjtcclxuICAgICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgICB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IFwiXCI7XHJcbiAgICAgIHRoaXMudXBkYXRlUXVlcnlQYXJhbXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVycyhldmVudDogYW55KSB7XHJcbiAgICBldmVudC5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAvLyBpZiAoZWxlLnRpdGxlID09IFwiUGxhbm9ncmFtIFN0YXR1c1wiKSB7XHJcbiAgICAgIC8vICAgZWxlLnRpdGxlID0gXCJzdGF0dXNcIjtcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQga2V5ID0gZWxlLnRpdGxlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmKGtleSA9PT0gJ3N0b3JlIGNhdGVnb3J5Jyl7XHJcbiAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyc1sncGxhbm9TdHJhdGVneSddID0gZWxlLnNlbGVjdGVkO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzW2VsZS50aXRsZS50b0xvd2VyQ2FzZSgpXSA9IGVsZS5zZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIGxldCB0YXNrID0gdGhpcy5zZWxlY3RlZEZpbHRlclRhYjtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVyVGFiID09IFwidm1cIikge1xyXG4gICAgICB0YXNrID0gXCJmaXh0dXJlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hcHBsaWVkRmlsdGVyc1tcInBsYW5vZ3JhbSBzdGF0dXNcIl0/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzW1wiZml4dHVyZVwiXS5wdXNoKC4uLnRoaXMuYXBwbGllZEZpbHRlcnNbXCJwbGFub2dyYW0gc3RhdHVzXCJdKVxyXG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzW1wiZml4dHVyZVwiXSA9IFsuLi5uZXcgU2V0KHRoaXMuYXBwbGllZEZpbHRlcnNbXCJmaXh0dXJlXCJdLm1hcCgoZWxlOmFueSkgPT4gZWxlKSldO1xyXG5cclxuICAgIH1cclxuICAgIC8vIHRoaXMuYXBwbGllZEZpbHRlcnNbXCJTdGF0dXNcIl0gPSB0aGlzLmFwcGxpZWRGaWx0ZXJzW1wiUGxhbm9ncmFtIFN0YXR1c1wiXTtcclxuICAgIGRlbGV0ZSB0aGlzLmFwcGxpZWRGaWx0ZXJzW1wicGxhbm9ncmFtIHN0YXR1c1wiXTtcclxuICAgIC8vIGNvbnN0IHR5cGUgPSBldmVudFsxXS5Jc3N1ZXMubWFwKChpOiBhbnkpID0+IGkuaWQpO1xyXG4gICAgLy8gY29uc3Qgc2l6ZSA9IGV2ZW50WzJdLklzc3Vlcy5tYXAoKGk6IGFueSkgPT4gaS5pZCk7XHJcblxyXG4gICAgLy8gdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzW1widGFza1BlbmRpbmdcIl0gPSB0YXNrO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5nZXRQbGFub1RhYmxlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdGlvblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRvdGFsSXRlbXMgPCAxMCA/IHRoaXMudG90YWxJdGVtcyA6IHRoaXMubGltaXQ7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IE51bWJlcihwYWdlT2Zmc2V0KTtcclxuICAgIHRoaXMudXBkYXRlUXVlcnlQYXJhbXMoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBwbGFub0Zsb29yRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIGlmIChkYXRhLmxheW91dERldGFpbHMubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgY29tcGxldGVDb3VudCA9IGRhdGE/LnRhc2tEZXRhaWxzPy5jb21wbGV0ZUxheW91dCB8fCAwO1xyXG4gICAgICByZXR1cm4gY29tcGxldGVDb3VudCArIFwiL1wiICsgZGF0YS5sYXlvdXREZXRhaWxzLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGFza1N0YXR1cyhkYXRhOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RhdHVzTWFwOiBhbnkgPSB7XHJcbiAgICAgIGxheW91dDogZGF0YS50YXNrRGV0YWlscz8ubGF5b3V0U3RhdHVzLFxyXG4gICAgICBmaXh0dXJlOiBkYXRhLnRhc2tEZXRhaWxzPy5maXh0dXJlU3RhdHVzLFxyXG4gICAgICB2bTogZGF0YS50YXNrRGV0YWlscz8uZml4dHVyZVN0YXR1cyxcclxuICAgIH07XHJcbiAgICBpZiAodHlwZSA9PSBcInZtXCIpIHtcclxuICAgICAgdHlwZSA9IFwiZml4dHVyZVwiO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzTWFwW3R5cGVdO1xyXG4gICBcclxuICAgIGNvbnN0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnR5cGUgPT0gdHlwZVxyXG4gICAgKTtcclxuIFxyXG4gICAgaWYgKHR5cGUgPT0gXCJmaXh0dXJlXCIpIHtcclxuICAgICAgbGV0IHRhc2tJbmZvID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbHRlcihcclxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5zdGF0dXMgJiYgZWxlLnR5cGUgPT0gXCJmaXh0dXJlXCJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgJiYgdGFza0luZm8/LnNvbWUoKHRhc2s6YW55KSA9PiB0YXNrLnN0YXR1cyA9PSAnc3VibWl0JykpIHJldHVybiBcInJldmlld1BlbmRpbmdcIjtcclxuICAgICAgaWYgKHRhc2tJbmZvPy5sZW5ndGggIT0gZGF0YS5sYXlvdXRDb3VudCkge1xyXG4gICAgICAgIHJldHVybiBcInlldFRvQXNzaWduXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRhc2tJbmZvPy5zb21lKCh0YXNrOiBhbnkpID0+IHRoaXMuaXNGdXR1cmVUYXNrRGF0ZSh0YXNrPy5kYXRlKSkpIHtcclxuICAgICAgICByZXR1cm4gXCJ0YXNrQXNzaWduZWRcIjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGFza0luZm8/LnNvbWUoKHRhc2s6IGFueSkgPT4gW1wib3BlblwiLCBcImlucHJvZ3Jlc3NcIl0uaW5jbHVkZXModGFzaz8uc3RhdHVzKSkpIHtcclxuICAgICAgICByZXR1cm4gXCJ0YXNrQXNzaWduZWRcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gXHJcbiAgICBpZiAoXHJcbiAgICAgICF0YXNrRGV0YWlscyB8fFxyXG4gICAgICAodGFza0RldGFpbHMuc3RhdHVzID09IFwic3VibWl0XCIgJiYgc3RhdHVzID09PSBcImRpc2FncmVlXCIpXHJcbiAgICApXHJcbiAgICAgIHJldHVybiBcInlldFRvQXNzaWduXCI7XHJcbiBcclxuICAgIGlmICh0YXNrRGV0YWlscy5zdGF0dXMgIT09IFwic3VibWl0XCIpIHJldHVybiBcInRhc2tBc3NpZ25lZFwiO1xyXG4gXHJcbiAgICBpZiAoc3RhdHVzID09PSBcImNvbXBsZXRlXCIpIHJldHVybiBcImNvbXBsZXRlZFwiO1xyXG4gIH1cclxuIFxyXG4gIGdldFRhc2tUb29sdGlwKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdGF0dXNNYXA6IGFueSA9IHtcclxuICAgICAgbGF5b3V0OiBkYXRhLnRhc2tEZXRhaWxzPy5sYXlvdXRTdGF0dXMsXHJcbiAgICAgIGZpeHR1cmU6IGRhdGEudGFza0RldGFpbHM/LmZpeHR1cmVTdGF0dXMsXHJcbiAgICAgIHZtOiBkYXRhLnRhc2tEZXRhaWxzPy5maXh0dXJlU3RhdHVzLFxyXG4gICAgfTtcclxuICAgIGlmICh0eXBlID09IFwidm1cIikge1xyXG4gICAgICB0eXBlID0gXCJmaXh0dXJlXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS50eXBlID09IHR5cGVcclxuICAgICk7XHJcbiBcclxuICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c01hcFt0eXBlXTtcclxuIFxyXG4gICAgaWYgKHR5cGUgPT0gXCJmaXh0dXJlXCIpIHtcclxuICAgICAgbGV0IHRhc2tJbmZvID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbHRlcihcclxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5zdGF0dXMgJiYgZWxlLnR5cGUgPT0gXCJmaXh0dXJlXCJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgJiYgdGFza0luZm8/LnNvbWUoKHRhc2s6YW55KSA9PiB0YXNrLnN0YXR1cyA9PSAnc3VibWl0JykpIHJldHVybiBcIlJldmlldyBQZW5kaW5nXCI7XHJcbiAgICAgIGlmICh0YXNrSW5mbz8ubGVuZ3RoICE9IGRhdGEubGF5b3V0Q291bnQpIHtcclxuICAgICAgICByZXR1cm4gXCJZZXQgdG8gQXNzaWduXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRhc2tJbmZvPy5zb21lKCh0YXNrOiBhbnkpID0+IHRoaXMuaXNGdXR1cmVUYXNrRGF0ZSh0YXNrPy5kYXRlKSkpIHtcclxuICAgICAgICByZXR1cm4gXCJUYXNrIFNjaGVkdWxlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0YXNrSW5mbz8uc29tZSgodGFzazogYW55KSA9PiBbXCJvcGVuXCIsIFwiaW5wcm9ncmVzc1wiXS5pbmNsdWRlcyh0YXNrPy5zdGF0dXMpKSkge1xyXG4gICAgICAgIHJldHVybiBcIlRhc2sgQXNzaWduZWRcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gXHJcbiAgICBpZiAoXHJcbiAgICAgICF0YXNrRGV0YWlscyB8fFxyXG4gICAgICAodGFza0RldGFpbHMuc3RhdHVzID09IFwic3VibWl0XCIgJiYgc3RhdHVzID09PSBcImRpc2FncmVlXCIpXHJcbiAgICApXHJcbiAgICAgIHJldHVybiBcIllldCB0byBBc3NpZ25cIjtcclxuIFxyXG4gICAgaWYgKHRhc2tEZXRhaWxzLnN0YXR1cyAhPT0gXCJzdWJtaXRcIikgcmV0dXJuIFwiVGFzayBBc3NpZ25lZFwiO1xyXG4gXHJcbiAgICBpZiAoc3RhdHVzID09PSBcImNvbXBsZXRlXCIpIHJldHVybiBcIkNvbXBsZXRlZFwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZ3Jlc3NWYWx1ZShkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHN0YXR1c01hcDogYW55ID0ge1xyXG4gICAgICBsYXlvdXQ6IGRhdGEudGFza0RldGFpbHM/LmxheW91dFN0YXR1cyxcclxuICAgICAgZml4dHVyZTogZGF0YS50YXNrRGV0YWlscz8uZml4dHVyZVN0YXR1cyxcclxuICAgICAgdm06IGRhdGEudGFza0RldGFpbHM/LmZpeHR1cmVTdGF0dXMsXHJcbiAgICB9O1xyXG4gICAgbGV0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnR5cGUgPT0gXCJmaXh0dXJlXCJcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRhc2tEZXRhaWxzKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0YXNrRGV0YWlscy5zdGF0dXMgPT0gXCJzdWJtaXRcIiAmJlxyXG4gICAgICAgIHN0YXR1c01hcFtcImZpeHR1cmVcIl0gPT0gXCJjb21wbGV0ZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vIHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgICAgLy8gICAoZWxlOiBhbnkpID0+IGVsZS50eXBlID09IFwiZml4dHVyZVwiXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgICAvLyBpZiAoXHJcbiAgICAgICAgLy8gICB0YXNrRGV0YWlscyAmJlxyXG4gICAgICAgIC8vICAgdGFza0RldGFpbHM/LnN0YXR1cyA9PSBcInN1Ym1pdFwiICYmXHJcbiAgICAgICAgLy8gICBzdGF0dXNNYXBbXCJmaXh0dXJlXCJdID09IFwiXCJcclxuICAgICAgICAvLyApIHtcclxuICAgICAgICAvLyAgIHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgICAgLy8gICAgIChlbGU6IGFueSkgPT4gZWxlLnR5cGUgPT0gXCJ2bVwiXHJcbiAgICAgICAgLy8gICApO1xyXG4gICAgICAgIC8vICAgaWYgKFxyXG4gICAgICAgIC8vICAgICB0YXNrRGV0YWlscyAmJlxyXG4gICAgICAgIC8vICAgICB0YXNrRGV0YWlscz8uc3RhdHVzID09IFwic3VibWl0XCIgJiZcclxuICAgICAgICAvLyAgICAgc3RhdHVzTWFwW1widm1cIl0gPT0gXCJcIlxyXG4gICAgICAgIC8vICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIDEwMDtcclxuICAgICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiA3NTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgcmV0dXJuIDUwO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEudGFza0RldGFpbHM/LmxheW91dFN0YXR1cyA9PSBcImNvbXBsZXRlXCIpIHJldHVybiA1MDtcclxuXHJcbiAgICByZXR1cm4gMjU7XHJcbiAgfVxyXG5cclxuICBzaG93QnJlYWNoKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGFza0RldGFpbHMgPSBkYXRhPy5wbGFub1Rhc2s/LlswXT8udGFza1N0YXR1cz8uZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PSB0eXBlXHJcbiAgICApO1xyXG4gICAgaWYgKHRhc2tEZXRhaWxzICYmIHRhc2tEZXRhaWxzPy5zdGF0dXMgIT0gXCJzdWJtaXRcIiAmJiB0YXNrRGV0YWlscz8uYnJlYWNoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zdGF0dXMgIT0gXCJzdWJtaXRcIlxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgIXRhc2tEZXRhaWxzICYmXHJcbiAgICAgIGRhdGEudGFza0RldGFpbHMuZml4dHVyZVN0YXR1cyA9PSBcImNvbXBsZXRlXCIgJiZcclxuICAgICAgZGF0YS50YXNrRGV0YWlscy5sYXlvdXRTdGF0dXMgPT0gXCJjb21wbGV0ZVwiICYmXHJcbiAgICAgIGRhdGEubGF5b3V0U3RhdHVzLmluY2x1ZGVzKGZhbHNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBcIlJlYWR5IHRvIFB1Ymxpc2hcIjtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0YXNrRGV0YWlscyAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmZpeHR1cmVTdGF0dXMgPT0gXCJjb21wbGV0ZVwiICYmXHJcbiAgICAgIGRhdGEudGFza0RldGFpbHMubGF5b3V0U3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICAhZGF0YS5sYXlvdXRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFwiUHVibGlzaGVkXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYnJlYWNoID0gdGhpcy5zaG93QnJlYWNoKGRhdGEsIFwiZml4dHVyZVwiKTtcclxuXHJcbiAgICAgIGlmKGJyZWFjaCkge1xyXG4gICAgICAgIHJldHVybiAnWWV0IHRvIEFzc2lnbic7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza1Rvb2x0aXAoZGF0YSwnZml4dHVyZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzQmFkZ2UoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgdGFza0RldGFpbHMgPSBkYXRhPy5wbGFub1Rhc2s/LlswXT8udGFza1N0YXR1cz8uZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnN0YXR1cyAhPSBcInN1Ym1pdFwiXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGFza0RldGFpbHMgJiZcclxuICAgICAgZGF0YS50YXNrRGV0YWlscy5maXh0dXJlU3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmxheW91dFN0YXR1cyA9PSBcImNvbXBsZXRlXCIgJiZcclxuICAgICAgZGF0YS5sYXlvdXRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFwicHJpbWFyeUJhZGdlU3R5bGVcIjtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0YXNrRGV0YWlscyAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmZpeHR1cmVTdGF0dXMgPT0gXCJjb21wbGV0ZVwiICYmXHJcbiAgICAgIGRhdGEudGFza0RldGFpbHMubGF5b3V0U3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICAhZGF0YS5sYXlvdXRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFwiYmctc3VjY2Vzc1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGJyZWFjaCA9IHRoaXMuc2hvd0JyZWFjaChkYXRhLCBcImZpeHR1cmVcIik7XHJcbiAgICAgIGlmIChicmVhY2gpIHtcclxuICAgICAgICByZXR1cm4gXCJ5ZXRUb0Fzc2lnblwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFRhc2tTdGF0dXMoZGF0YSwgXCJmaXh0dXJlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0KGRhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgc3RhdHVzTWFwOiBhbnkgPSB7XHJcbiAgICAgIGxheW91dDogZGF0YS50YXNrRGV0YWlscz8ubGF5b3V0U3RhdHVzLFxyXG4gICAgICBmaXh0dXJlOiBkYXRhLnRhc2tEZXRhaWxzPy5maXh0dXJlU3RhdHVzLFxyXG4gICAgICB2bTogZGF0YS50YXNrRGV0YWlscz8udm1TdGF0dXMsXHJcbiAgICB9O1xyXG4gICAgbGV0IHN1Ym1pdFRhc2sgPSBkYXRhPy5wbGFub1Rhc2s/LlswXT8udGFza1N0YXR1cy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS5zdGF0dXMgPT0gXCJzdWJtaXRcIiAmJiBzdGF0dXNNYXBbZWxlLnR5cGVdID09IFwicGVuZGluZ1wiXHJcbiAgICApO1xyXG4gICAgaWYgKHN1Ym1pdFRhc2spIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVRdWVyeVBhcmFtcygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgdGFiOiB0aGlzLnNlbGVjdGVkRmlsdGVyVGFiLFxyXG4gICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXJtLFxyXG4gICAgICAgIGxpbWl0OiB0aGlzLmxpbWl0LFxyXG4gICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXHJcbiAgICAgIH0sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIixcclxuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMucGxhbm9TdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFN0b3JlKHN0b3JlSWQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcIlwiKTtcclxuICAgIGRhdGEuc3RvcmUgPSBzdG9yZUlkO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGBtYW5hZ2Uvc3RvcmVzL3BsYW5vP3N0b3JlSWQ9JHtzdG9yZUlkfWApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRmxvb3IoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgdGFza0RldGFpbHMgPSBkYXRhPy5wbGFub1Rhc2s/LlswXT8udGFza1N0YXR1cz8uZmlsdGVyKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZT8uc3RhdHVzID09IFwic3VibWl0XCIgJiYgZWxlLnR5cGUgPT0gXCJsYXlvdXRcIlxyXG4gICAgKTtcclxuICAgIHJldHVybiBgJHt0YXNrRGV0YWlscz8ubGVuZ3RoID8/IDB9LyR7ZGF0YT8ubGF5b3V0Q291bnR9YDtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0KCkge1xyXG4gICAgdGhpcy5pc0J1dHRvbkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBsaW1pdDogdGhpcy50b3RhbEl0ZW1zLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRlZENvbHVtbixcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRPcmRlcixcclxuICAgICAgZmlsdGVyOiB0aGlzLmFwcGxpZWRGaWx0ZXJzLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hUZXJtLFxyXG4gICAgICBleHBvcnQ6IHRydWUsXHJcbiAgICAgIC8vIGVtcHR5RG93bmxvYWQ6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZVxyXG4gICAgICAuZ2V0UGxhbm9MaXN0RXhwb3J0KHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcIlZlcmlmaWNhdGlvbiBMaXN0XCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc0J1dHRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsIFwiZXJyXCIpO1xyXG4gICAgICAgICAgdGhpcy5pc0J1dHRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvdyBteC0wIG15LTUgZ2FwLTJcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sIGZpbHRlci10YWJcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBzZWxlY3RlZEZpbHRlclRhYiA9PT0gJ2FsbCcgfVwiIChjbGljayk9XCJmaWx0ZXJUYWJsZSgnYWxsJylcIj5cclxuICAgIDxoMz57eyBwZW5kaW5nRGV0YWlscz8uYWxsU3RvcmVzIHx8IDAgfX08L2gzPlxyXG4gICAgPHA+VG90YWwgc3RvcmVzPC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wgZmlsdGVyLXRhYlwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IHNlbGVjdGVkRmlsdGVyVGFiID09PSAnbGF5b3V0JyB9XCIgKGNsaWNrKT1cImZpbHRlclRhYmxlKCdsYXlvdXQnKVwiPlxyXG4gICAgPGgzPnt7IHBlbmRpbmdEZXRhaWxzPy5sYXlvdXRDb21wbGV0ZSA/PyAwIH19PC9oMz5cclxuICAgIDxwPkxheW91dCB2ZXJpZmljYXRpb24gY29tcGxldGVkPC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wgZmlsdGVyLXRhYlwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IHNlbGVjdGVkRmlsdGVyVGFiID09PSAnZml4dHVyZScgfVwiIChjbGljayk9XCJmaWx0ZXJUYWJsZSgnZml4dHVyZScpXCI+XHJcbiAgICA8aDM+e3sgcGVuZGluZ0RldGFpbHM/LmZpeHR1cmVQZW5kaW5nID8/IDAgfX08L2gzPlxyXG4gICAgPHA+Rml4dHVyZSB2ZXJpZmljYXRpb24gcGVuZGluZzwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sIGZpbHRlci10YWJcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBzZWxlY3RlZEZpbHRlclRhYiA9PT0gJ3ZtJyB9XCIgKGNsaWNrKT1cImZpbHRlclRhYmxlKCd2bScpXCI+XHJcbiAgICA8aDM+e3sgcGVuZGluZ0RldGFpbHM/LmZpeHR1cmVQZW5kaW5nID8/IDAgfX08L2gzPlxyXG4gICAgPHA+Vk0gdmVyaWZpY2F0aW9uIHBlbmRpbmc8L3A+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiPlxyXG4gIDxkaXYgW2NsYXNzLnJlc3RyaWN0LWludGVyYWN0aW9uXT1cImlzQnV0dG9uTG9hZGluZ1wiPlxyXG4gICAgPCEtLSBNYW5hZ2UgUGxhbm9ncmFtIHZpZXcgaGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxoND5BbGwgUGxhbm9ncmFtczwvaDQ+XHJcbiAgICAgICAgPHNwYW4+e3sgdG90YWxJdGVtcyB9fSAtIFRvdGFsIFJlY29yZHM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VhcmNoKClcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogM3JlbTsgcGFkZGluZy1yaWdodDogM3JlbVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvblwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjEzXCIgeTE9XCIxM1wiIHgyPVwiMTZcIiB5Mj1cIjE2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VhcmNoVGVybVwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAoY2xpY2spPVwic2VhcmNoVGVybSA9ICcnOyBvblNlYXJjaCgpXCIgY2xhc3M9XCJjbGVhci1zZWFyY2hcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjY0cHhcIiBoZWlnaHQ9XCI2NHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19iZ0NhcnJpZXJcIiBzdHJva2Utd2lkdGg9XCIwXCI+PC9nPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb190cmFjZXJDYXJyaWVyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9nPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19pY29uQ2FycmllclwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDlMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgOUw5IDE1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGN4PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICBjeT1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgcj1cIjlcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQnVsa1VwbG9hZE1vZGFsKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIEJ1bGsgVXBsb2FkXHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGQtbGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk01IDEwSDE1TTIuNSA1SDE3LjVNNy41IDE1SDEyLjVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICA8cGxhbm8tZmlsdGVyIFtjbGllbnRJZF09XCJjbGllbnRJZFwiIFtkYXRhXT1cImZpbHRlck9iamVjdFwiIChhcHBseUZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgKHJlc2V0RmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiIFtjb25maWddPVwieyAnTWVyY2hhbmRpc2UgY29tcGxpYW5jZSc6IGZhbHNlIH1cIj48L3BsYW5vLWZpbHRlcj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcGxhbm9ncmFtc0xpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQnV0dG9uTG9hZGluZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQnV0dG9uTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInBhdGhcIiBjeD1cIjI1XCIgY3k9XCIyNVwiIHI9XCIyMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4gRXhwb3J0PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNsaWNrQ3JlYXRlUGxhbm9ncmFtKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHRleHQtd2hpdGVcIj5DcmVhdGUgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImlzUGFnZUxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiXHJcbiAgICAgICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmcgJiYgcGxhbm9ncmFtc0xpc3QubGVuZ3RoID09PSAwXCJcclxuICAgID5cclxuICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgbWFuYWdlIHBsYW5vZ3JhbSB0YWJsZTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBNYW5hZ2UgUGxhbm9ncmFtIGxpc3QgdmlldyAtLT5cclxuICAgIDxzZWN0aW9uIGlkPVwibGlzdC12aWV3XCIgKm5nSWY9XCIhaXNQYWdlTG9hZGluZyAmJiBwbGFub2dyYW1zTGlzdC5sZW5ndGggIT09IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ3N0b3JlTmFtZScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBTdG9yZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ2xheW91dE5hbWUnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgTGF5b3V0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIG1zLTEgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogc29ydGVkQ29sdW1uID09PSAnbGF5b3V0TmFtZScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnbGF5b3V0TmFtZScgPyAnZmEtYXJyb3ctdXAnIDogJ2ZhLWFycm93LWRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgQ291bnRyeVxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgQ2l0eVxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vIENvbXBsZXRpb24gJVxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ3BsYW5vUHJvZ3Jlc3MnID8gJyMwMDlCRjMnIDogJycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydE9yZGVyID09PSAxICYmIHNvcnRlZENvbHVtbiA9PT0gJ3BsYW5vUHJvZ3Jlc3MnID8gJ2ZhLWFycm93LXVwJyA6ICdmYS1hcnJvdy1kb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCIlIG9mIG92ZXJhbGwgcGxhbm9ncmFtIGNvbXBsZXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg0NF8xNzUzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjYzVjcuOTk5NjdNOC4wMDA2NSA1LjMzMzAxSDguMDA3MzJNMTQuNjY3MyA3Ljk5OTY3QzE0LjY2NzMgMTEuNjgxNiAxMS42ODI2IDE0LjY2NjMgOC4wMDA2NSAxNC42NjYzQzQuMzE4NzUgMTQuNjY2MyAxLjMzMzk4IDExLjY4MTYgMS4zMzM5OCA3Ljk5OTY3QzEuMzMzOTggNC4zMTc3OCA0LjMxODc1IDEuMzMzMDEgOC4wMDA2NSAxLjMzMzAxQzExLjY4MjYgMS4zMzMwMSAxNC42NjczIDQuMzE3NzggMTQuNjY3MyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NDRfMTc1MzhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnbGF5b3V0Q291bnQnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgTGF5b3V0XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ2xheW91dENvdW50JyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICdsYXlvdXRDb3VudCcgPyAnZmEtYXJyb3ctdXAnIDogJ2ZhLWFycm93LWRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnZml4dHVyZUNvdW50JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vIG9mIEZpeHR1cmVzXHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ2ZpeHR1cmVDb3VudCcgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnZml4dHVyZUNvdW50JyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIm9uU29ydFRhYmxlKCd2bUNvdW50JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vIG9mIFZNc1xyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgbXMtMSBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBzb3J0ZWRDb2x1bW4gPT09ICd2bUNvdW50JyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICd2bUNvdW50JyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDY+VG90YWwgc3RvcmUgY2FwYWNpdHk8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiBDb21iaW5pbmcgcHJvZHVjdCBjYXBhY2l0eSBvZiBhbGwgZml4dHVyZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ2ZpeHR1cmVDYXBhY2l0eScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIFN0b3JlIENhcGFjaXR5XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ2ZpeHR1cmVDYXBhY2l0eScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnZml4dHVyZUNhcGFjaXR5JyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg0NF8xNzUzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjYzVjcuOTk5NjdNOC4wMDA2NSA1LjMzMzAxSDguMDA3MzJNMTQuNjY3MyA3Ljk5OTY3QzE0LjY2NzMgMTEuNjgxNiAxMS42ODI2IDE0LjY2NjMgOC4wMDA2NSAxNC42NjYzQzQuMzE4NzUgMTQuNjY2MyAxLjMzMzk4IDExLjY4MTYgMS4zMzM5OCA3Ljk5OTY3QzEuMzMzOTggNC4zMTc3OCA0LjMxODc1IDEuMzMzMDEgOC4wMDA2NSAxLjMzMzAxQzExLjY4MjYgMS4zMzMwMSAxNC42NjczIDQuMzE3NzggMTQuNjY3MyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NDRfMTc1MzhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ2xhc3RVcGRhdGUnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgTGFzdCB1cGRhdGVcclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIG1zLTEgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogc29ydGVkQ29sdW1uID09PSAnbGFzdFVwZGF0ZScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnbGFzdFVwZGF0ZScgPyAnZmEtYXJyb3ctdXAnIDogJ2ZhLWFycm93LWRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIFN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ3BsYW5vZ3JhbVN0YXR1cycgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAncGxhbm9ncmFtU3RhdHVzJyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBsYW5vIG9mIHBsYW5vZ3JhbXNMaXN0XCI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInJlZGlyZWN0U3RvcmUocGxhbm8uc3RvcmVJZClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBwbGFuby5zdG9yZU5hbWUgfX08L2FcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvcGxhbm9ncmFtL21hbmFnZS1wbGFub2dyYW0nXVwiXHJcbiAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IHBsYW5vSWQ6IHBsYW5vLl9pZCwgZmxvb3JJZDogcGxhbm8/LmxheW91dERldGFpbHM/LlswXT8uaWQgfVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgcGxhbm8ubGF5b3V0TmFtZVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3twbGFubz8uY291bnRyeX19XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICB7e3BsYW5vPy5jaXR5fX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIHN0eWxlPVwiaGVpZ2h0OiA0cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbMjUsIDUwXS5pbmNsdWRlcyhnZXRQcm9ncmVzc1ZhbHVlKHBsYW5vKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JnLXdhcm5pbmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdiZy1zdWNjZXNzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiZ2V0UHJvZ3Jlc3NWYWx1ZShwbGFubykgPyAnd2lkdGg6ICcgKyBnZXRQcm9ncmVzc1ZhbHVlKHBsYW5vKSArICclJyA6ICd3aWR0aDoyNSUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJnZXRQcm9ncmVzc1ZhbHVlKHBsYW5vKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57eyBnZXRQcm9ncmVzc1ZhbHVlKHBsYW5vKSB9fSU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggcHJvZ3Jlc3NcIiBzdHlsZT1cImhlaWdodDogNHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDI1JVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbm93PVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcGxhbm8ucGxhbm9Db21wbGV0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBwbGFubz8ubGF5b3V0Q291bnQgPT09IDEgPyAxIDogdXBkYXRlRmxvb3IocGxhbm8pIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkRpZG7igJl0IHJlc3BvbmQgd2l0aGluIHRoZSBkdWUgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QnJlYWNoKHBsYW5vLCAnbGF5b3V0JylcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zMzM5OCA4Ljc1MTNDMi4zMzM5OCA4Ljc1MTMgMi45MTczMiA4LjE2Nzk3IDQuNjY3MzIgOC4xNjc5N0M2LjQxNzMyIDguMTY3OTcgNy41ODM5OCA5LjMzNDYzIDkuMzMzOTggOS4zMzQ2M0MxMS4wODQgOS4zMzQ2MyAxMS42NjczIDguNzUxMyAxMS42NjczIDguNzUxM1YxLjc1MTNDMTEuNjY3MyAxLjc1MTMgMTEuMDg0IDIuMzM0NjQgOS4zMzM5OCAyLjMzNDY0QzcuNTgzOTggMi4zMzQ2NCA2LjQxNzMyIDEuMTY3OTcgNC42NjczMiAxLjE2Nzk3QzIuOTE3MzIgMS4xNjc5NyAyLjMzMzk4IDEuNzUxMyAyLjMzMzk4IDEuNzUxM1Y4Ljc1MTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVDRENBXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMzMzOTggOC43NTEzQzIuMzMzOTggOC43NTEzIDIuOTE3MzIgOC4xNjc5NyA0LjY2NzMyIDguMTY3OTdDNi40MTczMiA4LjE2Nzk3IDcuNTgzOTggOS4zMzQ2NCA5LjMzMzk4IDkuMzM0NjRDMTEuMDg0IDkuMzM0NjQgMTEuNjY3MyA4Ljc1MTMgMTEuNjY3MyA4Ljc1MTNWMS43NTEzQzExLjY2NzMgMS43NTEzIDExLjA4NCAyLjMzNDY0IDkuMzMzOTggMi4zMzQ2NEM3LjU4Mzk4IDIuMzM0NjQgNi40MTczMiAxLjE2Nzk3IDQuNjY3MzIgMS4xNjc5N0MyLjkxNzMyIDEuMTY3OTcgMi4zMzM5OCAxLjc1MTMgMi4zMzM5OCAxLjc1MTNWOC43NTEzWk0yLjMzMzk4IDguNzUxM1YxMi44MzQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5kaWNhdG9yIHNob3J0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRUYXNrU3RhdHVzKHBsYW5vLCAnbGF5b3V0JykgfHwgJ3Rhc2tBc3NpZ25lZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dCcmVhY2gocGxhbm8sICdsYXlvdXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDggN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBnZXRUYXNrVG9vbHRpcChwbGFubywgJ2xheW91dCcpIHx8ICdUYXNrIEFzc2lnbmVkJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTcyODQgMC4zMTA5NjdMMi43OTYxNyA0LjM0MThMMS42ODc4NCAzLjE1NzYzQzEuNDgzNjcgMi45NjUxMyAxLjE2Mjg0IDIuOTUzNDcgMC45Mjk1MDUgMy4xMTY4QzAuNzAyMDA1IDMuMjg1OTcgMC42Mzc4MzggMy41ODM0NyAwLjc3NzgzOCAzLjgyMjYzTDIuMDkwMzQgNS45NTc2M0MyLjIxODY3IDYuMTU1OTcgMi40NDAzNCA2LjI3ODQ3IDIuNjkxMTcgNi4yNzg0N0MyLjkzMDM0IDYuMjc4NDcgMy4xNTc4NCA2LjE1NTk3IDMuMjg2MTcgNS45NTc2M0MzLjQ5NjE3IDUuNjgzNDcgNy41MDM2NyAwLjkwNTk2NyA3LjUwMzY3IDAuOTA1OTY3QzguMDI4NjcgMC4zNjkzIDcuMzkyODQgLTAuMTAzMiA2Ljk3Mjg0IDAuMzA1MTM0VjAuMzEwOTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHBsYW5vLmZpeHR1cmVDb3VudCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNCAxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEaWRu4oCZdCByZXNwb25kIHdpdGhpbiB0aGUgZHVlIGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0JyZWFjaChwbGFubywgJ2ZpeHR1cmUnKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjMzMzk4IDguNzUxM0MyLjMzMzk4IDguNzUxMyAyLjkxNzMyIDguMTY3OTcgNC42NjczMiA4LjE2Nzk3QzYuNDE3MzIgOC4xNjc5NyA3LjU4Mzk4IDkuMzM0NjMgOS4zMzM5OCA5LjMzNDYzQzExLjA4NCA5LjMzNDYzIDExLjY2NzMgOC43NTEzIDExLjY2NzMgOC43NTEzVjEuNzUxM0MxMS42NjczIDEuNzUxMyAxMS4wODQgMi4zMzQ2NCA5LjMzMzk4IDIuMzM0NjRDNy41ODM5OCAyLjMzNDY0IDYuNDE3MzIgMS4xNjc5NyA0LjY2NzMyIDEuMTY3OTdDMi45MTczMiAxLjE2Nzk3IDIuMzMzOTggMS43NTEzIDIuMzMzOTggMS43NTEzVjguNzUxM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUNEQ0FcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zMzM5OCA4Ljc1MTNDMi4zMzM5OCA4Ljc1MTMgMi45MTczMiA4LjE2Nzk3IDQuNjY3MzIgOC4xNjc5N0M2LjQxNzMyIDguMTY3OTcgNy41ODM5OCA5LjMzNDY0IDkuMzMzOTggOS4zMzQ2NEMxMS4wODQgOS4zMzQ2NCAxMS42NjczIDguNzUxMyAxMS42NjczIDguNzUxM1YxLjc1MTNDMTEuNjY3MyAxLjc1MTMgMTEuMDg0IDIuMzM0NjQgOS4zMzM5OCAyLjMzNDY0QzcuNTgzOTggMi4zMzQ2NCA2LjQxNzMyIDEuMTY3OTcgNC42NjczMiAxLjE2Nzk3QzIuOTE3MzIgMS4xNjc5NyAyLjMzMzk4IDEuNzUxMyAyLjMzMzk4IDEuNzUxM1Y4Ljc1MTNaTTIuMzMzOTggOC43NTEzVjEyLjgzNDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3Igc2hvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFRhc2tTdGF0dXMocGxhbm8sICdmaXh0dXJlJykgfHwgJ3Rhc2tBc3NpZ25lZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dCcmVhY2gocGxhbm8sICdmaXh0dXJlJylcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA4IDdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgZ2V0VGFza1Rvb2x0aXAocGxhbm8sICdmaXh0dXJlJykgfHwgJ1Rhc2sgQXNzaWduZWQnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi45NzI4NCAwLjMxMDk2N0wyLjc5NjE3IDQuMzQxOEwxLjY4Nzg0IDMuMTU3NjNDMS40ODM2NyAyLjk2NTEzIDEuMTYyODQgMi45NTM0NyAwLjkyOTUwNSAzLjExNjhDMC43MDIwMDUgMy4yODU5NyAwLjYzNzgzOCAzLjU4MzQ3IDAuNzc3ODM4IDMuODIyNjNMMi4wOTAzNCA1Ljk1NzYzQzIuMjE4NjcgNi4xNTU5NyAyLjQ0MDM0IDYuMjc4NDcgMi42OTExNyA2LjI3ODQ3QzIuOTMwMzQgNi4yNzg0NyAzLjE1Nzg0IDYuMTU1OTcgMy4yODYxNyA1Ljk1NzYzQzMuNDk2MTcgNS42ODM0NyA3LjUwMzY3IDAuOTA1OTY3IDcuNTAzNjcgMC45MDU5NjdDOC4wMjg2NyAwLjM2OTMgNy4zOTI4NCAtMC4xMDMyIDYuOTcyODQgMC4zMDUxMzRWMC4zMTA5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcGxhbm8udm1Db3VudCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNCAxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEaWRu4oCZdCByZXNwb25kIHdpdGhpbiB0aGUgZHVlIGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0JyZWFjaChwbGFubywgJ2ZpeHR1cmUnKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjMzMzk4IDguNzUxM0MyLjMzMzk4IDguNzUxMyAyLjkxNzMyIDguMTY3OTcgNC42NjczMiA4LjE2Nzk3QzYuNDE3MzIgOC4xNjc5NyA3LjU4Mzk4IDkuMzM0NjMgOS4zMzM5OCA5LjMzNDYzQzExLjA4NCA5LjMzNDYzIDExLjY2NzMgOC43NTEzIDExLjY2NzMgOC43NTEzVjEuNzUxM0MxMS42NjczIDEuNzUxMyAxMS4wODQgMi4zMzQ2NCA5LjMzMzk4IDIuMzM0NjRDNy41ODM5OCAyLjMzNDY0IDYuNDE3MzIgMS4xNjc5NyA0LjY2NzMyIDEuMTY3OTdDMi45MTczMiAxLjE2Nzk3IDIuMzMzOTggMS43NTEzIDIuMzMzOTggMS43NTEzVjguNzUxM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUNEQ0FcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zMzM5OCA4Ljc1MTNDMi4zMzM5OCA4Ljc1MTMgMi45MTczMiA4LjE2Nzk3IDQuNjY3MzIgOC4xNjc5N0M2LjQxNzMyIDguMTY3OTcgNy41ODM5OCA5LjMzNDY0IDkuMzMzOTggOS4zMzQ2NEMxMS4wODQgOS4zMzQ2NCAxMS42NjczIDguNzUxMyAxMS42NjczIDguNzUxM1YxLjc1MTNDMTEuNjY3MyAxLjc1MTMgMTEuMDg0IDIuMzM0NjQgOS4zMzM5OCAyLjMzNDY0QzcuNTgzOTggMi4zMzQ2NCA2LjQxNzMyIDEuMTY3OTcgNC42NjczMiAxLjE2Nzk3QzIuOTE3MzIgMS4xNjc5NyAyLjMzMzk4IDEuNzUxMyAyLjMzMzk4IDEuNzUxM1Y4Ljc1MTNaTTIuMzMzOTggOC43NTEzVjEyLjgzNDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3Igc2hvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFRhc2tTdGF0dXMocGxhbm8sICd2bScpIHx8ICd0YXNrQXNzaWduZWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzaG93QnJlYWNoKHBsYW5vLCAnZml4dHVyZScpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGdldFRhc2tUb29sdGlwKHBsYW5vLCAndm0nKSB8fCAnVGFzayBBc3NpZ25lZCcgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02Ljk3Mjg0IDAuMzEwOTY3TDIuNzk2MTcgNC4zNDE4TDEuNjg3ODQgMy4xNTc2M0MxLjQ4MzY3IDIuOTY1MTMgMS4xNjI4NCAyLjk1MzQ3IDAuOTI5NTA1IDMuMTE2OEMwLjcwMjAwNSAzLjI4NTk3IDAuNjM3ODM4IDMuNTgzNDcgMC43Nzc4MzggMy44MjI2M0wyLjA5MDM0IDUuOTU3NjNDMi4yMTg2NyA2LjE1NTk3IDIuNDQwMzQgNi4yNzg0NyAyLjY5MTE3IDYuMjc4NDdDMi45MzAzNCA2LjI3ODQ3IDMuMTU3ODQgNi4xNTU5NyAzLjI4NjE3IDUuOTU3NjNDMy40OTYxNyA1LjY4MzQ3IDcuNTAzNjcgMC45MDU5NjcgNy41MDM2NyAwLjkwNTk2N0M4LjAyODY3IDAuMzY5MyA3LjM5Mjg0IC0wLjEwMzIgNi45NzI4NCAwLjMwNTEzNFYwLjMxMDk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBwbGFubz8uZml4dHVyZUNhcGFjaXR5ID8/IDAgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW25nYlRvb2x0aXBdPVwicGxhbm8/Lmxhc3RVcGRhdGUgfCBkYXRlIDogJ21lZGl1bSdcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcGxhbm8/Lmxhc3RVcGRhdGUgfCBkYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQmFkZ2UocGxhbm8pXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGdldFN0YXR1cyhwbGFubykgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPCEtLSA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyMSAyMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTdfNzE0MjUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjE5NzEgMTguNzE0NEMxMi4wNDY0IDE4Ljk3NDIgMTEuODMwMiAxOS4xODk4IDExLjU2OTkgMTkuMzM5N0MxMS4zMDk3IDE5LjQ4OTYgMTEuMDE0NiAxOS41Njg1IDEwLjcxNDMgMTkuNTY4NUMxMC40MTQgMTkuNTY4NSAxMC4xMTg5IDE5LjQ4OTYgOS44NTg2NiAxOS4zMzk3QzkuNTk4NDIgMTkuMTg5OCA5LjM4MjEyIDE4Ljk3NDIgOS4yMzE0MyAxOC43MTQ0TTE1Ljg1NzEgNy41NzE1N0MxNS44NTcxIDYuMjA3NiAxNS4zMTUzIDQuODk5NDkgMTQuMzUwOCAzLjkzNTAyQzEzLjM4NjQgMi45NzA1NSAxMi4wNzgzIDIuNDI4NzEgMTAuNzE0MyAyLjQyODcxQzkuMzUwMzIgMi40Mjg3MSA4LjA0MjIxIDIuOTcwNTUgNy4wNzc3NCAzLjkzNTAyQzYuMTEzMjYgNC44OTk0OSA1LjU3MTQzIDYuMjA3NiA1LjU3MTQzIDcuNTcxNTdDNS41NzE0MyAxMy41NzE2IDMgMTUuMjg1OSAzIDE1LjI4NTlIMTguNDI4NkMxOC40Mjg2IDE1LjI4NTkgMTUuODU3MSAxMy41NzE2IDE1Ljg1NzEgNy41NzE1N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4NTc0IDguMDQ4MDVDMS41NTYxMSA4LjA0ODA1IDEuMTIxNDYgNy42MTc2OCAxLjE3MDgyIDcuMDkwMzZDMS4yODYgNS44NTk4OSAxLjYyNyA0LjcxMzIyIDIuMTkzODMgMy42NTAzNEMyLjc1MjI5IDIuNjAzMTggMy40NjA2MiAxLjY5NjA1IDQuMzE4ODIgMC45Mjg5MzlDNC43MTA1MiAwLjU3ODgyMyA1LjMwOTY1IDAuNjczNTAxIDUuNjIwNjIgMS4wOTY5NUM1LjkzMTc1IDEuNTIwNjIgNS44MzUyNSAyLjExMjEgNS40NTIyNSAyLjQ3MjEyQzQuODI4NzUgMy4wNTgxOSA0LjMwOTg3IDMuNzQyMzkgMy44OTU1OSA0LjUyNDcxQzMuNDczMDMgNS4zMjI2NyAzLjIwNzc2IDYuMTc4MzMgMy4wOTk4IDcuMDkxNjlDMy4wMzc2NiA3LjYxNzQ3IDIuNjE1MTggOC4wNDgwNSAyLjA4NTc0IDguMDQ4MDVaTTE5LjM0MzEgOC4wNDgwNUMxOC44MTM0IDguMDQ4MDUgMTguMzkwOCA3LjYxNzEgMTguMzI4NyA3LjA5MTA1QzE4LjIyMDkgNi4xNzc5MyAxNy45NTU2IDUuMzIyNDggMTcuNTMyNiA0LjUyNDcxQzE3LjExOCAzLjc0MjU4IDE2LjU5OTMgMy4wNTg1MiAxNS45NzY1IDIuNDcyNTRDMTUuNTkzNyAyLjExMjI2IDE1LjQ5NzMgMS41MjA3IDE1LjgwODUgMS4wOTY5NkMxNi4xMTk2IDAuNjczNDMzIDE2LjcxODcgMC41Nzg1NTEgMTcuMTEwNyAwLjkyODU3MUMxNy45NjkzIDEuNjk1NCAxOC42Nzc4IDIuNjAyNjYgMTkuMjM2MyAzLjY1MDM0QzE5LjgwMzIgNC43MTM4MSAyMC4xNDM4IDUuODYwNjggMjAuMjU4MSA3LjA5MDk1QzIwLjMwNzEgNy42MTgwOSAxOS44NzI1IDguMDQ4MDUgMTkuMzQzMSA4LjA0ODA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTdfNzE0MjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMC41NzE0XCIgaGVpZ2h0PVwiMjAuNTcxNFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjQyODcxMSAwLjcxNDM1NSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDIzIDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMzlfMTEyNjg1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi40ODQzIDIxLjQzMDJDMTIuMzMzNiAyMS42OSAxMi4xMTczIDIxLjkwNTcgMTEuODU3IDIyLjA1NTZDMTEuNTk2OCAyMi4yMDU1IDExLjMwMTcgMjIuMjg0NCAxMS4wMDE0IDIyLjI4NDRDMTAuNzAxMSAyMi4yODQ0IDEwLjQwNiAyMi4yMDU1IDEwLjE0NTggMjIuMDU1NkM5Ljg4NTUzIDIxLjkwNTcgOS42NjkyMyAyMS42OSA5LjUxODU0IDIxLjQzMDJNMTYuMTQ0MyAxMC4yODc0QzE2LjE0NDMgOC45MjM0MiAxNS42MDI0IDcuNjE1MzEgMTQuNjM3OSA2LjY1MDg0QzEzLjY3MzUgNS42ODYzNyAxMi4zNjU0IDUuMTQ0NTMgMTEuMDAxNCA1LjE0NDUzQzkuNjM3NDIgNS4xNDQ1MyA4LjMyOTMyIDUuNjg2MzcgNy4zNjQ4NSA2LjY1MDg0QzYuNDAwMzcgNy42MTUzMSA1Ljg1ODU0IDguOTIzNDIgNS44NTg1NCAxMC4yODc0QzUuODU4NTQgMTYuMjg3NCAzLjI4NzExIDE4LjAwMTcgMy4yODcxMSAxOC4wMDE3SDE4LjcxNTdDMTguNzE1NyAxOC4wMDE3IDE2LjE0NDMgMTYuMjg3NCAxNi4xNDQzIDEwLjI4NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zNzE4NyAxMC43NjM0QzEuODQyMjQgMTAuNzYzNCAxLjQwNzU5IDEwLjMzMyAxLjQ1Njk1IDkuODA1NjlDMS41NzIxMyA4LjU3NTIyIDEuOTEzMTMgNy40Mjg1NSAyLjQ3OTk3IDYuMzY1NjdDMy4wMzg0MiA1LjMxODUxIDMuNzQ2NzUgNC40MTEzOCA0LjYwNDk2IDMuNjQ0MjdDNC45OTY2NSAzLjI5NDE1IDUuNTk1NzggMy4zODg4MyA1LjkwNjc1IDMuODEyMjhDNi4yMTc4OCA0LjIzNTk1IDYuMTIxMzggNC44Mjc0NCA1LjczODM4IDUuMTg3NDVDNS4xMTQ4OSA1Ljc3MzUyIDQuNTk2IDYuNDU3NzIgNC4xODE3MiA3LjI0MDA0QzMuNzU5MTYgOC4wMzggMy40OTM5IDguODkzNjYgMy4zODU5NCA5LjgwNzAyQzMuMzIzNzkgMTAuMzMyOCAyLjkwMTMxIDEwLjc2MzQgMi4zNzE4NyAxMC43NjM0Wk0xOS42MjkyIDEwLjc2MzRDMTkuMDk5NSAxMC43NjM0IDE4LjY3NjkgMTAuMzMyNCAxOC42MTQ4IDkuODA2MzhDMTguNTA3IDguODkzMjYgMTguMjQxNyA4LjAzNzgxIDE3LjgxODggNy4yNDAwNEMxNy40MDQxIDYuNDU3OTEgMTYuODg1NCA1Ljc3Mzg1IDE2LjI2MjcgNS4xODc4N0MxNS44Nzk4IDQuODI3NiAxNS43ODM1IDQuMjM2MDMgMTYuMDk0NyAzLjgxMjI5QzE2LjQwNTcgMy4zODg3NiAxNy4wMDQ5IDMuMjkzODggMTcuMzk2OCAzLjY0MzlDMTguMjU1NCA0LjQxMDczIDE4Ljk2NCA1LjMxNzk5IDE5LjUyMjQgNi4zNjU2N0MyMC4wODkzIDcuNDI5MTQgMjAuNDI5OSA4LjU3NjAxIDIwLjU0NDIgOS44MDYyOEMyMC41OTMyIDEwLjMzMzQgMjAuMTU4NiAxMC43NjM0IDE5LjYyOTIgMTAuNzYzNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNyAxQzE5Ljc2MTQgMSAyMiAzLjIzODU4IDIyIDZDMjIgOC43NjE0MiAxOS43NjE0IDExIDE3IDExQzE0LjIzODYgMTEgMTIgOC43NjE0MiAxMiA2QzEyIDMuMjM4NTggMTQuMjM4NiAxIDE3IDFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMzlfMTEyNjg1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjAuNTcxNFwiIGhlaWdodD1cIjIwLjU3MTRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC43MTQ4NDQgMy40Mjk2OSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMkMxMSAxMi41NTIzIDExLjQ0NzcgMTMgMTIgMTNDMTIuNTUyMyAxMyAxMyAxMi41NTIzIDEzIDEyQzEzIDExLjQ0NzcgMTIuNTUyMyAxMSAxMiAxMUMxMS40NDc3IDExIDExIDExLjQ0NzcgMTEgMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUMxMSAxOS41NTIzIDExLjQ0NzcgMjAgMTIgMjBDMTIuNTUyMyAyMCAxMyAxOS41NTIzIDEzIDE5QzEzIDE4LjQ0NzcgMTIuNTUyMyAxOCAxMiAxOEMxMS40NDc3IDE4IDExIDE4LjQ0NzcgMTEgMTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSA1QzExIDUuNTUyMjggMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDUuNTUyMjggMTMgNUMxMyA0LjQ0NzcyIDEyLjU1MjMgNCAxMiA0QzExLjQ0NzcgNCAxMSA0LjQ0NzcyIDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCI+RWRpdDwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiPkR1cGxpY2F0ZTwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiPkRlbGV0ZTwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD4gLS0+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtJ11cIlxyXG4gICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyBwbGFub0lkOiBwbGFuby5faWQsIGZsb29ySWQ6IHBsYW5vPy5sYXlvdXREZXRhaWxzPy5pZCB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIzIDI0XCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRTdWJtaXQocGxhbm8pXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjEzOTUgNi44NTcyOEg0LjEzOTQ2QzMuNjg0OCA2Ljg1NzI4IDMuMjQ4NzYgNy4wMzc5IDIuOTI3MjcgNy4zNTkzOUMyLjYwNTc4IDcuNjgwODggMi40MjUxNyA4LjExNjkxIDIuNDI1MTcgOC41NzE1N1YyMC41NzE2QzIuNDI1MTcgMjEuMDI2MiAyLjYwNTc4IDIxLjQ2MjMgMi45MjcyNyAyMS43ODM4QzMuMjQ4NzYgMjIuMTA1MiAzLjY4NDggMjIuMjg1OSA0LjEzOTQ2IDIyLjI4NTlIMTYuMTM5NUMxNi41OTQxIDIyLjI4NTkgMTcuMDMwMSAyMi4xMDUyIDE3LjM1MTYgMjEuNzgzOEMxNy42NzMxIDIxLjQ2MjMgMTcuODUzNyAyMS4wMjYyIDE3Ljg1MzcgMjAuNTcxNlYxNC41NzE2TTE2LjU2OCA1LjU3MTU3QzE2LjkwOSA1LjIzMDU4IDE3LjM3MTUgNS4wMzkwMSAxNy44NTM3IDUuMDM5MDFDMTguMzM2IDUuMDM5MDEgMTguNzk4NSA1LjIzMDU4IDE5LjEzOTUgNS41NzE1N0MxOS40ODA1IDUuOTEyNTYgMTkuNjcyIDYuMzc1MDUgMTkuNjcyIDYuODU3MjhDMTkuNjcyIDcuMzM5NTIgMTkuNDgwNSA3LjgwMjAxIDE5LjEzOTUgOC4xNDNMMTAuOTk2NiAxNi4yODU5TDcuNTY4MDMgMTcuMTQzTDguNDI1MTcgMTMuNzE0NEwxNi41NjggNS41NzE1N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMUMxOS43NjE0IDEgMjIgMy4yMzg1OCAyMiA2QzIyIDguNzYxNDIgMTkuNzYxNCAxMSAxNyAxMUMxNC4yMzg2IDExIDEyIDguNzYxNDIgMTIgNkMxMiAzLjIzODU4IDE0LjIzODYgMSAxNyAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIyXCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIyXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0U3VibWl0KHBsYW5vKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg0NF8xODMxOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS44NTY4NiA0LjE0MjQ5SDMuODU2ODZDMy40MDIyMSA0LjE0MjQ5IDIuOTY2MTcgNC4zMjMxMSAyLjY0NDY4IDQuNjQ0NkMyLjMyMzE5IDQuOTY2MDkgMi4xNDI1OCA1LjQwMjEyIDIuMTQyNTggNS44NTY3OFYxNy44NTY4QzIuMTQyNTggMTguMzExNCAyLjMyMzE5IDE4Ljc0NzUgMi42NDQ2OCAxOS4wNjlDMi45NjYxNyAxOS4zOTA1IDMuNDAyMjEgMTkuNTcxMSAzLjg1Njg2IDE5LjU3MTFIMTUuODU2OUMxNi4zMTE1IDE5LjU3MTEgMTYuNzQ3NiAxOS4zOTA1IDE3LjA2OSAxOS4wNjlDMTcuMzkwNSAxOC43NDc1IDE3LjU3MTIgMTguMzExNCAxNy41NzEyIDE3Ljg1NjhWMTEuODU2OE0xNi4yODU0IDIuODU2NzhDMTYuNjI2NCAyLjUxNTc5IDE3LjA4ODkgMi4zMjQyMiAxNy41NzEyIDIuMzI0MjJDMTguMDUzNCAyLjMyNDIyIDE4LjUxNTkgMi41MTU3OSAxOC44NTY5IDIuODU2NzhDMTkuMTk3OSAzLjE5Nzc3IDE5LjM4OTQgMy42NjAyNiAxOS4zODk0IDQuMTQyNDlDMTkuMzg5NCA0LjYyNDczIDE5LjE5NzkgNS4wODcyMiAxOC44NTY5IDUuNDI4MjFMMTAuNzE0IDEzLjU3MTFMNy4yODU0NCAxNC40MjgyTDguMTQyNTggMTAuOTk5NkwxNi4yODU0IDIuODU2NzhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NDRfMTgzMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMC41NzE0XCIgaGVpZ2h0PVwiMjAuNTcxNFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjQyNzczNCAwLjcxMzg2NylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDwhLS0gTWFuYWdlIFBsYW5vZ3JhbSBncmlkIHZpZXcgLS0+XHJcbiAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjZ3JpZFZpZXc+XHJcbiAgICAgIDxzZWN0aW9uIGlkPVwiZ3JpZC12aWV3XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC02IGd5LTRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiICpuZ0Zvcj1cImxldCBmaXh0dXJlIG9mIGZpeHR1cmVUZW1wbGF0ZXNMaXN0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1hY3Rpb24gZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgcHgtNCBweS0zXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXRocmVlLWRvdHMtdmVydGljYWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiPkVkaXQ8L2E+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCI+RHVwbGljYXRlPC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiPkRlbGV0ZTwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMz57eyBmaXh0dXJlLm5hbWUgfX08L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nQ2xhc3NdPVwiZml4dHVyZS5zdGF0dXNcIj57eyBmaXh0dXJlLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1YkJyYW5kIG9mIGZpeHR1cmUuc3ViQnJhbmQ7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpICE9IDBcIiBjbGFzcz1cIm1lLTIgY2FyZC10YWdsaW5lXCI+JiM4MjI2Ozwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCI+e3sgc3ViQnJhbmQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuXHJcbiAgICA8IS0tIFBhZ2luYXRpb24gLS0+XHJcbiAgICA8bGliLXBhZ2luYXRpb25cclxuICAgICAgW2l0ZW1zUGVyUGFnZV09XCJsaW1pdFwiXHJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIlxyXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvblNpemUoKVwiXHJcbiAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmcgJiYgcGxhbm9ncmFtc0xpc3QubGVuZ3RoICE9PSAwXCJcclxuICAgID5cclxuICAgIDwvbGliLXBhZ2luYXRpb24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
627
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1wbGFuby92ZXJpZmljYXRpb24tdGFibGUvdmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1wbGFuby92ZXJpZmljYXRpb24tdGFibGUvdmVyaWZpY2F0aW9uLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBRVAsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBSWQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDL0csT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sK0JBQStCO0lBaUloQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFySVYsUUFBUSxDQUFTO0lBRWpCLGNBQWMsQ0FBTTtJQUNwQixjQUFjLEdBQWdCLEVBQUUsQ0FBQztJQUVqQyxpQkFBaUIsR0FBVyxLQUFLLENBQUM7SUFFbEMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBRXRCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFFeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLFVBQVUsR0FB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RSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdEIsTUFBTSxFQUFFLENBQUM7WUFDVCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYztZQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDNUIsTUFBTSxFQUFFLElBQUk7WUFDWix1QkFBdUI7U0FDeEIsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUI7YUFDckIsa0JBQWtCLENBQUMsT0FBTyxDQUFDO2FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsRUFBRTtvQkFDUCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2lCQUNwRTtnQkFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQXByQlUsK0JBQStCOzRGQUEvQiwrQkFBK0Isb0VDekI1Qyx1MDRDQXN5QkE7OzRGRDd3QmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBmaWx0ZXIsXHJcbiAgU3ViamVjdCxcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgUGxhbm9MaXN0IH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvcGxhbm9ncmFtLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCdWxrVXBsb2FkUGxhbm9ncmFtQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BvcHVwcy9idWxrLXVwbG9hZC1wbGFub2dyYW0vYnVsay11cGxvYWQtcGxhbm9ncmFtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIGdldFF1ZXJ5UGFyYW1OdW1iZXIsXHJcbiAgZ2V0UXVlcnlQYXJhbVN0cmluZyxcclxufSBmcm9tIFwiLi4vLi4vLi4vZnVuY3Rpb25zL3BsYW5vLmZ1bmN0aW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItcGxhbm8tdmVyaWZpY2F0aW9uLXRhYmxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi92ZXJpZmljYXRpb24tdGFibGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3ZlcmlmaWNhdGlvbi10YWJsZS5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhbm9WZXJpZmljYXRpb25UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBwZW5kaW5nRGV0YWlsczogYW55O1xyXG4gIHBsYW5vZ3JhbXNMaXN0OiBQbGFub0xpc3RbXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZEZpbHRlclRhYjogc3RyaW5nID0gXCJhbGxcIjtcclxuXHJcbiAgc29ydGVkQ29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNvcnRPcmRlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgbGltaXQ6IG51bWJlciA9IDEwO1xyXG4gIG9mZnNldDogbnVtYmVyID0gMTtcclxuICB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuXHJcbiAgLy8gZmlsdGVyT2JqZWN0ID0gW1xyXG4gIC8vICAge1xyXG4gIC8vICAgICBEZXNjcmlwdGlvbjogXCJMYXlvdXRcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlRhc2sgQXNzaWduZWRcIiwgaWQ6IFwidGFza0Fzc2lnbmVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiUmV2aWV3IFBlbmRpbmdcIiwgaWQ6IFwicmV2aWV3UGVuZGluZ1wiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIllldCBUbyBDb21wbGV0ZVwiLCBpZDogXCJ5ZXRUb0NvbXBsZXRlXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiWWV0IFRvIEFzc2lnblwiLCBpZDogXCJ5ZXRUb0Fzc2lnblwiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIlJvbGwgb3V0XCIsIGlkOiBcInJvbGxvdXRcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJDb21wbGV0ZWRcIiwgaWQ6IFwiY29tcGxldGVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiRmxhZ1wiLCBpZDogXCJmbGFnXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIERlc2NyaXB0aW9uOiBcIkZpeHR1cmVcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlRhc2sgQXNzaWduZWRcIiwgaWQ6IFwidGFza0Fzc2lnbmVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiUmV2aWV3IFBlbmRpbmdcIiwgaWQ6IFwicmV2aWV3UGVuZGluZ1wiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIllldCBUbyBDb21wbGV0ZVwiLCBpZDogXCJ5ZXRUb0NvbXBsZXRlXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiWWV0IFRvIEFzc2lnblwiLCBpZDogXCJ5ZXRUb0Fzc2lnblwiIH0sXHJcbiAgLy8gICAgICAgLy8geyB0ZXh0OiBcIlJvbGwgb3V0XCIsIGlkOiBcInJvbGxvdXRcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJDb21wbGV0ZWRcIiwgaWQ6IFwiY29tcGxldGVkXCIgfSxcclxuICAvLyAgICAgICB7IHRleHQ6IFwiRmxhZ1wiLCBpZDogXCJmbGFnXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIERlc2NyaXB0aW9uOiBcIlBsYW5vZ3JhbSBTdGF0dXNcIixcclxuICAvLyAgICAgSXNzdWVzOiBbXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIkluLVByb2dyZXNzXCIsIGlkOiBcImlucHJvZ3Jlc3NcIiB9LFxyXG4gIC8vICAgICAgIHsgdGV4dDogXCJSZWFkeSB0byBQdWJsaXNoXCIsIGlkOiBcIm5vdFB1Ymxpc2hlZFwiIH0sXHJcbiAgLy8gICAgICAgeyB0ZXh0OiBcIlB1Ymxpc2hlZFwiLCBpZDogXCJwdWJsaXNoXCIgfSxcclxuICAvLyAgICAgXSxcclxuICAvLyAgIH0sXHJcbiAgLy8gXTtcclxuXHJcbiAgZmlsdGVyT2JqZWN0ID0gW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJMYXlvdXRcIixcclxuICAgICAgdHlwZTogXCJtdWx0aVwiLFxyXG4gICAgICBpc09wZW5lZDogZmFsc2UsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IG5hbWU6IFwiVGFzayBBc3NpZ25lZFwiLCB2YWx1ZTogXCJ0YXNrQXNzaWduZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUmV2aWV3IFBlbmRpbmdcIiwgdmFsdWU6IFwicmV2aWV3UGVuZGluZ1wiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIC8vIHsgbmFtZTogXCJZZXQgVG8gQ29tcGxldGVcIiwgdmFsdWU6IFwieWV0VG9Db21wbGV0ZVwiIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIllldCBUbyBBc3NpZ25cIiwgdmFsdWU6IFwieWV0VG9Bc3NpZ25cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICAvLyB7IG5hbWU6IFwiUm9sbCBvdXRcIiwgdmFsdWU6IFwicm9sbG91dFwiIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkNvbXBsZXRlZFwiLCB2YWx1ZTogXCJjb21wbGV0ZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiRmxhZ1wiLCB2YWx1ZTogXCJmbGFnXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJGaXh0dXJlXCIsXHJcbiAgICAgIHR5cGU6IFwibXVsdGlcIixcclxuICAgICAgaXNPcGVuZWQ6IGZhbHNlLFxyXG4gICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgeyBuYW1lOiBcIlRhc2sgQXNzaWduZWRcIiwgdmFsdWU6IFwidGFza0Fzc2lnbmVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlJldmlldyBQZW5kaW5nXCIsIHZhbHVlOiBcInJldmlld1BlbmRpbmdcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICAvLyB7IG5hbWU6IFwiWWV0IFRvIENvbXBsZXRlXCIsIHZhbHVlOiBcInlldFRvQ29tcGxldGVcIiB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJZZXQgVG8gQXNzaWduXCIsIHZhbHVlOiBcInlldFRvQXNzaWduXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgLy8geyBuYW1lOiBcIlJvbGwgb3V0XCIsIHZhbHVlOiBcInJvbGxvdXRcIiB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJDb21wbGV0ZWRcIiwgdmFsdWU6IFwiY29tcGxldGVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkZsYWdcIiwgdmFsdWU6IFwiZmxhZ1wiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdGl0bGU6IFwiUGxhbm9ncmFtIFN0YXR1c1wiLFxyXG4gICAgICB0eXBlOiBcIm11bHRpXCIsXHJcbiAgICAgIGlzT3BlbmVkOiBmYWxzZSxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbmFtZTogXCJUYXNrIEFzc2lnbmVkXCIsIHZhbHVlOiBcInRhc2tBc3NpZ25lZFwiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJSZXZpZXcgUGVuZGluZ1wiLCB2YWx1ZTogXCJyZXZpZXdQZW5kaW5nXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIllldCBUbyBBc3NpZ25cIiwgdmFsdWU6IFwieWV0VG9Bc3NpZ25cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUmVhZHkgdG8gUHVibGlzaFwiLCB2YWx1ZTogXCJub3RQdWJsaXNoZWRcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiUHVibGlzaGVkXCIsIHZhbHVlOiBcInB1Ymxpc2hcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICAvLyBbWk9ORS1WRVJJRklDQVRJT05dIGFkZGl0aXZlIOKAlCBpbmRlcGVuZGVudCB6b25lIGZpbHRlclxyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJab25lXCIsXHJcbiAgICAgIHR5cGU6IFwibXVsdGlcIixcclxuICAgICAgaXNPcGVuZWQ6IGZhbHNlLFxyXG4gICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgeyBuYW1lOiBcIlRhc2sgQXNzaWduZWRcIiwgdmFsdWU6IFwidGFza0Fzc2lnbmVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlJldmlldyBQZW5kaW5nXCIsIHZhbHVlOiBcInJldmlld1BlbmRpbmdcIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiWWV0IFRvIEFzc2lnblwiLCB2YWx1ZTogXCJ5ZXRUb0Fzc2lnblwiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJDb21wbGV0ZWRcIiwgdmFsdWU6IFwiY29tcGxldGVkXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkZsYWdcIiwgdmFsdWU6IFwiZmxhZ1wiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBhcHBsaWVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY291bnRyeTogW10sXHJcbiAgICBjaXR5OiBbXSxcclxuICAgIGxheW91dDogW10sXHJcbiAgICBmaXh0dXJlOiBbXSxcclxuICAgIHpvbmU6IFtdLFxyXG4gICAgdGFza1BlbmRpbmc6IFwiYWxsXCIsXHJcbiAgICBzdGF0dXM6IFtdLFxyXG4gIH07XHJcblxyXG4gIGlzRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc1BhZ2VMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0J1dHRvbkxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcGxhbm9TdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ2JNb2RhbDogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgaXNGdXR1cmVUYXNrRGF0ZShkYXRlVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRlVmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IHRhc2tEYXRlID0gbmV3IERhdGUoZGF0ZVZhbHVlKTtcclxuICAgIGlmIChpc05hTih0YXNrRGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICB0YXNrRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuXHJcbiAgICByZXR1cm4gdGFza0RhdGUuZ2V0VGltZSgpID4gdG9kYXkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcblxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIC8vIFN1YnNjcmlwdGlvbiB3aWxsIGJlIGNhbmNlbGxlZCBvbiBjb21wb25lbnQgZGVzdHJveS5cclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSwgLy8gVG8gYXZvaWQgaW1tZWRpYXRlIGZyZXF1ZW50IGNhbGxzLlxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSwgLy8gRmlsdGVyaW5nIG51bGwvdW5kZWZpbmVkLlxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkgLy8gRW1pdHRpbmcgb25seSBkaWZmZXJlbnQgdmFsdWVzLiAoSWdub3JlcyBzYW1lIGNsaWVudElkKS5cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YS5jbGllbnQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXBcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSBnZXRRdWVyeVBhcmFtU3RyaW5nKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGtleTogXCJzZWFyY2hcIixcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrOiBcIlwiLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gdGhpcy5zZWFyY2hUZXJtID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyVGFiID0gZ2V0UXVlcnlQYXJhbVN0cmluZyh7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBrZXk6IFwidGFiXCIsXHJcbiAgICAgICAgICAgICAgICBmYWxsYmFjazogXCJhbGxcIixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzLnRhc2tQZW5kaW5nID1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWIgPT0gXCJ2bVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJmaXh0dXJlXCJcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkRmlsdGVyVGFiO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmxpbWl0ID0gZ2V0UXVlcnlQYXJhbU51bWJlcih7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBrZXk6IFwibGltaXRcIixcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrOiAxMCxcclxuICAgICAgICAgICAgICAgIG1pbjogMSxcclxuICAgICAgICAgICAgICAgIG1heDogMzAsXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gZ2V0UXVlcnlQYXJhbU51bWJlcih7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBrZXk6IFwib2Zmc2V0XCIsXHJcbiAgICAgICAgICAgICAgICBmYWxsYmFjazogMSxcclxuICAgICAgICAgICAgICAgIG1pbjogMSxcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRQbGFub1RhYmxlTGlzdCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIk1hbmFnZSBQbGFub2dyYW1cIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlBsYW5vZ3JhbVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9wbGFub2dyYW0vbWFuYWdlLXBsYW5vZ3JhbXNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiXCIsXHJcbiAgICAgICAgcGF0aDogXCJcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vVGFibGVMaXN0KCkge1xyXG4gICAgdGhpcy5wbGFub1N1Yj8udW5zdWJzY3JpYmUoKTsgLy8gQ2FuY2VsIHByZXZpb3VzIHJlcXVlc3RcclxuXHJcbiAgICB0aGlzLmlzUGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wbGFub2dyYW1zTGlzdCA9IFtdO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydGVkQ29sdW1uLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydE9yZGVyLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuYXBwbGllZEZpbHRlcnMsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFRlcm0sXHJcbiAgICAgIC8vIGV4cG9ydDogZmFsc2UsXHJcbiAgICAgIC8vIGVtcHR5RG93bmxvYWQ6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGxhbm9TdWIgPSB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2VcclxuICAgICAgLmdldFBsYW5vTGlzdChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcz8uZGF0YT8uY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMucGxhbm9ncmFtc0xpc3QgPSByZXM/LmRhdGE/LmRhdGEgPz8gW107XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0RldGFpbHMgPSByZXM/LmRhdGE/LnBlbmRpbmdEZXRhaWxzPy5bMF0gfHwgW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPCAxMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMucGxhbm9ncmFtc0xpc3QubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgb3BlbkJ1bGtVcGxvYWRNb2RhbCgpIHtcclxuICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKEJ1bGtVcGxvYWRQbGFub2dyYW1Db21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgLy8gb25DbGlja0NyZWF0ZVBsYW5vZ3JhbSgpIHtcclxuICAvLyAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKENyZWF0ZVBsYW5vZ3JhbUNvbXBvbmVudCwge1xyXG4gIC8vICAgICBzaXplOiBcIm1kXCIsXHJcbiAgLy8gICAgIHdpbmRvd0NsYXNzOiBcImNyZWF0ZS1wbGFub2dyYW0tbW9kYWxcIixcclxuICAvLyAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgLy8gICB9KTtcclxuXHJcbiAgLy8gICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgLy8gICBtb2RlbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgIGlmIChyZXN1bHQpIHtcclxuICAvLyAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtXCJdLCB7XHJcbiAgLy8gICAgICAgICBxdWVyeVBhcmFtczogeyBwbGFub0lkOiByZXN1bHQ/LnBsYW5vSWQsIGZsb29ySWQ6IHJlc3VsdD8uZmxvb3JJZCB9LFxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBcIlwiO1xyXG4gICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwO1xyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gdGhpcy5zZWFyY2hUZXJtID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0VGFibGUoY29sdW1uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5zb3J0T3JkZXIgPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRlZENvbHVtbiA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwO1xyXG4gICAgdGhpcy5nZXRQbGFub1RhYmxlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyVGFibGUoZGF0YTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlclRhYiAhPT0gZGF0YSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyVGFiID0gZGF0YTtcclxuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVycy50YXNrUGVuZGluZyA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWI7XHJcbiAgICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgICAgdGhpcy5saW1pdCA9IDEwO1xyXG4gICAgICB0aGlzLnNlYXJjaFRlcm0gPSBcIlwiO1xyXG4gICAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgLy8gaWYgKGVsZS50aXRsZSA9PSBcIlBsYW5vZ3JhbSBTdGF0dXNcIikge1xyXG4gICAgICAvLyAgIGVsZS50aXRsZSA9IFwic3RhdHVzXCI7XHJcbiAgICAgIC8vIH1cclxuICAgICAgbGV0IGtleSA9IGVsZS50aXRsZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBpZihrZXkgPT09ICdzdG9yZSBjYXRlZ29yeScpe1xyXG4gICAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnNbJ3BsYW5vU3RyYXRlZ3knXSA9IGVsZS5zZWxlY3RlZDtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyc1tlbGUudGl0bGUudG9Mb3dlckNhc2UoKV0gPSBlbGUuc2VsZWN0ZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBsZXQgdGFzayA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWI7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlclRhYiA9PSBcInZtXCIpIHtcclxuICAgICAgdGFzayA9IFwiZml4dHVyZVwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYXBwbGllZEZpbHRlcnNbXCJwbGFub2dyYW0gc3RhdHVzXCJdPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyc1tcImZpeHR1cmVcIl0ucHVzaCguLi50aGlzLmFwcGxpZWRGaWx0ZXJzW1wicGxhbm9ncmFtIHN0YXR1c1wiXSlcclxuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyc1tcImZpeHR1cmVcIl0gPSBbLi4ubmV3IFNldCh0aGlzLmFwcGxpZWRGaWx0ZXJzW1wiZml4dHVyZVwiXS5tYXAoKGVsZTphbnkpID0+IGVsZSkpXTtcclxuXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmFwcGxpZWRGaWx0ZXJzW1wiU3RhdHVzXCJdID0gdGhpcy5hcHBsaWVkRmlsdGVyc1tcIlBsYW5vZ3JhbSBTdGF0dXNcIl07XHJcbiAgICBkZWxldGUgdGhpcy5hcHBsaWVkRmlsdGVyc1tcInBsYW5vZ3JhbSBzdGF0dXNcIl07XHJcbiAgICAvLyBjb25zdCB0eXBlID0gZXZlbnRbMV0uSXNzdWVzLm1hcCgoaTogYW55KSA9PiBpLmlkKTtcclxuICAgIC8vIGNvbnN0IHNpemUgPSBldmVudFsyXS5Jc3N1ZXMubWFwKChpOiBhbnkpID0+IGkuaWQpO1xyXG5cclxuICAgIC8vIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gc3RhdHVzO1xyXG4gICAgdGhpcy5hcHBsaWVkRmlsdGVyc1tcInRhc2tQZW5kaW5nXCJdID0gdGFzaztcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZ2V0UGxhbm9UYWJsZUxpc3QoKTtcclxuICB9XHJcblxyXG4gIHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy50b3RhbEl0ZW1zIDwgMTAgPyB0aGlzLnRvdGFsSXRlbXMgOiB0aGlzLmxpbWl0O1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5vZmZzZXQgPSBOdW1iZXIocGFnZU9mZnNldCk7XHJcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgcGxhbm9GbG9vckRldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YS5sYXlvdXREZXRhaWxzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IGNvbXBsZXRlQ291bnQgPSBkYXRhPy50YXNrRGV0YWlscz8uY29tcGxldGVMYXlvdXQgfHwgMDtcclxuICAgICAgcmV0dXJuIGNvbXBsZXRlQ291bnQgKyBcIi9cIiArIGRhdGEubGF5b3V0RGV0YWlscy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRhc2tTdGF0dXMoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHN0YXR1c01hcDogYW55ID0ge1xyXG4gICAgICBsYXlvdXQ6IGRhdGEudGFza0RldGFpbHM/LmxheW91dFN0YXR1cyxcclxuICAgICAgZml4dHVyZTogZGF0YS50YXNrRGV0YWlscz8uZml4dHVyZVN0YXR1cyxcclxuICAgICAgdm06IGRhdGEudGFza0RldGFpbHM/LmZpeHR1cmVTdGF0dXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKHR5cGUgPT0gXCJ2bVwiKSB7XHJcbiAgICAgIHR5cGUgPSBcImZpeHR1cmVcIjtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c01hcFt0eXBlXTtcclxuICAgXHJcbiAgICBjb25zdCB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS50eXBlID09IHR5cGVcclxuICAgICk7XHJcbiBcclxuICAgIGlmICh0eXBlID09IFwiZml4dHVyZVwiKSB7XHJcbiAgICAgIGxldCB0YXNrSW5mbyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maWx0ZXIoXHJcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuc3RhdHVzICYmIGVsZS50eXBlID09IFwiZml4dHVyZVwiXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09IFwicGVuZGluZ1wiICYmIHRhc2tJbmZvPy5zb21lKCh0YXNrOmFueSkgPT4gdGFzay5zdGF0dXMgPT0gJ3N1Ym1pdCcpKSByZXR1cm4gXCJyZXZpZXdQZW5kaW5nXCI7XHJcbiAgICAgIGlmICh0YXNrSW5mbz8ubGVuZ3RoICE9IGRhdGEubGF5b3V0Q291bnQpIHtcclxuICAgICAgICByZXR1cm4gXCJ5ZXRUb0Fzc2lnblwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0YXNrSW5mbz8uc29tZSgodGFzazogYW55KSA9PiB0aGlzLmlzRnV0dXJlVGFza0RhdGUodGFzaz8uZGF0ZSkpKSB7XHJcbiAgICAgICAgcmV0dXJuIFwidGFza0Fzc2lnbmVkXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRhc2tJbmZvPy5zb21lKCh0YXNrOiBhbnkpID0+IFtcIm9wZW5cIiwgXCJpbnByb2dyZXNzXCJdLmluY2x1ZGVzKHRhc2s/LnN0YXR1cykpKSB7XHJcbiAgICAgICAgcmV0dXJuIFwidGFza0Fzc2lnbmVkXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuIFxyXG4gICAgaWYgKFxyXG4gICAgICAhdGFza0RldGFpbHMgfHxcclxuICAgICAgKHRhc2tEZXRhaWxzLnN0YXR1cyA9PSBcInN1Ym1pdFwiICYmIHN0YXR1cyA9PT0gXCJkaXNhZ3JlZVwiKVxyXG4gICAgKVxyXG4gICAgICByZXR1cm4gXCJ5ZXRUb0Fzc2lnblwiO1xyXG4gXHJcbiAgICBpZiAodGFza0RldGFpbHMuc3RhdHVzICE9PSBcInN1Ym1pdFwiKSByZXR1cm4gXCJ0YXNrQXNzaWduZWRcIjtcclxuIFxyXG4gICAgaWYgKHN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiKSByZXR1cm4gXCJjb21wbGV0ZWRcIjtcclxuICB9XHJcbiBcclxuICBnZXRUYXNrVG9vbHRpcChkYXRhOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RhdHVzTWFwOiBhbnkgPSB7XHJcbiAgICAgIGxheW91dDogZGF0YS50YXNrRGV0YWlscz8ubGF5b3V0U3RhdHVzLFxyXG4gICAgICBmaXh0dXJlOiBkYXRhLnRhc2tEZXRhaWxzPy5maXh0dXJlU3RhdHVzLFxyXG4gICAgICB2bTogZGF0YS50YXNrRGV0YWlscz8uZml4dHVyZVN0YXR1cyxcclxuICAgIH07XHJcbiAgICBpZiAodHlwZSA9PSBcInZtXCIpIHtcclxuICAgICAgdHlwZSA9IFwiZml4dHVyZVwiO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFza0RldGFpbHMgPSBkYXRhPy5wbGFub1Rhc2s/LlswXT8udGFza1N0YXR1cz8uZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PSB0eXBlXHJcbiAgICApO1xyXG4gXHJcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNNYXBbdHlwZV07XHJcbiBcclxuICAgIGlmICh0eXBlID09IFwiZml4dHVyZVwiKSB7XHJcbiAgICAgIGxldCB0YXNrSW5mbyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maWx0ZXIoXHJcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuc3RhdHVzICYmIGVsZS50eXBlID09IFwiZml4dHVyZVwiXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09IFwicGVuZGluZ1wiICYmIHRhc2tJbmZvPy5zb21lKCh0YXNrOmFueSkgPT4gdGFzay5zdGF0dXMgPT0gJ3N1Ym1pdCcpKSByZXR1cm4gXCJSZXZpZXcgUGVuZGluZ1wiO1xyXG4gICAgICBpZiAodGFza0luZm8/Lmxlbmd0aCAhPSBkYXRhLmxheW91dENvdW50KSB7XHJcbiAgICAgICAgcmV0dXJuIFwiWWV0IHRvIEFzc2lnblwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0YXNrSW5mbz8uc29tZSgodGFzazogYW55KSA9PiB0aGlzLmlzRnV0dXJlVGFza0RhdGUodGFzaz8uZGF0ZSkpKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiVGFzayBTY2hlZHVsZWRcIjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGFza0luZm8/LnNvbWUoKHRhc2s6IGFueSkgPT4gW1wib3BlblwiLCBcImlucHJvZ3Jlc3NcIl0uaW5jbHVkZXModGFzaz8uc3RhdHVzKSkpIHtcclxuICAgICAgICByZXR1cm4gXCJUYXNrIEFzc2lnbmVkXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuIFxyXG4gICAgaWYgKFxyXG4gICAgICAhdGFza0RldGFpbHMgfHxcclxuICAgICAgKHRhc2tEZXRhaWxzLnN0YXR1cyA9PSBcInN1Ym1pdFwiICYmIHN0YXR1cyA9PT0gXCJkaXNhZ3JlZVwiKVxyXG4gICAgKVxyXG4gICAgICByZXR1cm4gXCJZZXQgdG8gQXNzaWduXCI7XHJcbiBcclxuICAgIGlmICh0YXNrRGV0YWlscy5zdGF0dXMgIT09IFwic3VibWl0XCIpIHJldHVybiBcIlRhc2sgQXNzaWduZWRcIjtcclxuXHJcbiAgICBpZiAoc3RhdHVzID09PSBcImNvbXBsZXRlXCIpIHJldHVybiBcIkNvbXBsZXRlZFwiO1xyXG4gIH1cclxuXHJcbiAgLy8gW1pPTkUtVkVSSUZJQ0FUSU9OXSBhZGRpdGl2ZSBzaWJsaW5nIGhlbHBlcnMg4oCUIGRvIG5vdCB0b3VjaCBnZXRUYXNrU3RhdHVzL2dldFRhc2tUb29sdGlwXHJcbiAgZ2V0Wm9uZVN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHpvbmVUYXNrTGlzdDogYW55W10gPSBkYXRhPy56b25lVGFzaz8uWzBdPy50YXNrU3RhdHVzID8/IFtdO1xyXG4gICAgY29uc3Qgem9uZVRhc2tTdGF0dXMgPSB6b25lVGFza0xpc3QuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PT0gXCJ6b25lVmVyaWZpY2F0aW9uXCIsXHJcbiAgICApO1xyXG4gICAgY29uc3Qgem9uZVN0YXR1cyA9IGRhdGE/LnpvbmVEZXRhaWxzPy56b25lU3RhdHVzO1xyXG5cclxuICAgIGlmICghem9uZVRhc2tTdGF0dXMpIHJldHVybiBcInlldFRvQXNzaWduXCI7XHJcblxyXG4gICAgaWYgKHpvbmVUYXNrU3RhdHVzLnN0YXR1cyAhPT0gXCJzdWJtaXRcIikge1xyXG4gICAgICByZXR1cm4gem9uZVRhc2tTdGF0dXMuYnJlYWNoID8gXCJmbGFnXCIgOiBcInRhc2tBc3NpZ25lZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRydXN0IHRoZSByb2xsdXA6IGlmIGV2ZXJ5IGZsb29yJ3Mgem9uZSB0YXNrIGhhcyBhcHByb3ZhbFN0YXR1cyA9PT0gdHJ1ZVxyXG4gICAgLy8gKHNldCBieSB1cGRhdGVab25lVmVyaWZpY2F0aW9uU3RhdHVzIHdoZW4gYWxsIG5vbi1DTCBzaWJsaW5ncyBhcmUgYWN0aW9uZWQpLFxyXG4gICAgLy8gdGhlIHBsYW5vIGlzIGZ1bGx5IGFwcHJvdmVkIOKAlCBldmVuIGlmIG9ycGhhbiBjb21wbGlhbmNlIGRvY3MgZXhpc3QuXHJcbiAgICBjb25zdCBhbGxBcHByb3ZlZCA9XHJcbiAgICAgIHpvbmVUYXNrTGlzdC5sZW5ndGggPiAwICYmXHJcbiAgICAgIHpvbmVUYXNrTGlzdC5ldmVyeSgodDogYW55KSA9PiB0LmFwcHJvdmFsU3RhdHVzID09PSB0cnVlKTtcclxuICAgIGlmIChhbGxBcHByb3ZlZCkgcmV0dXJuIFwiY29tcGxldGVkXCI7XHJcblxyXG4gICAgaWYgKHpvbmVTdGF0dXMgPT09IFwiY29tcGxldGVcIikgcmV0dXJuIFwiY29tcGxldGVkXCI7XHJcbiAgICByZXR1cm4gXCJyZXZpZXdQZW5kaW5nXCI7XHJcbiAgfVxyXG5cclxuICBnZXRab25lVG9vbHRpcChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuZ2V0Wm9uZVN0YXR1cyhkYXRhKTtcclxuICAgIGNvbnN0IG1hcDogYW55ID0ge1xyXG4gICAgICB5ZXRUb0Fzc2lnbjogXCJZZXQgdG8gQXNzaWduXCIsXHJcbiAgICAgIHRhc2tBc3NpZ25lZDogXCJUYXNrIEFzc2lnbmVkXCIsXHJcbiAgICAgIHJldmlld1BlbmRpbmc6IFwiUmV2aWV3IFBlbmRpbmdcIixcclxuICAgICAgY29tcGxldGVkOiBcIkNvbXBsZXRlZFwiLFxyXG4gICAgICBmbGFnOiBcIkZsYWdnZWRcIixcclxuICAgIH07XHJcbiAgICByZXR1cm4gbWFwW3N0YXR1c10gPz8gXCJcIjtcclxuICB9XHJcblxyXG4gIGdldFByb2dyZXNzVmFsdWUoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBzdGF0dXNNYXA6IGFueSA9IHtcclxuICAgICAgbGF5b3V0OiBkYXRhLnRhc2tEZXRhaWxzPy5sYXlvdXRTdGF0dXMsXHJcbiAgICAgIGZpeHR1cmU6IGRhdGEudGFza0RldGFpbHM/LmZpeHR1cmVTdGF0dXMsXHJcbiAgICAgIHZtOiBkYXRhLnRhc2tEZXRhaWxzPy5maXh0dXJlU3RhdHVzLFxyXG4gICAgfTtcclxuICAgIGxldCB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS50eXBlID09IFwiZml4dHVyZVwiXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0YXNrRGV0YWlscykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGFza0RldGFpbHMuc3RhdHVzID09IFwic3VibWl0XCIgJiZcclxuICAgICAgICBzdGF0dXNNYXBbXCJmaXh0dXJlXCJdID09IFwiY29tcGxldGVcIlxyXG4gICAgICApIHtcclxuICAgICAgICAvLyB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAgIC8vICAgKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PSBcImZpeHR1cmVcIlxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgICAgLy8gaWYgKFxyXG4gICAgICAgIC8vICAgdGFza0RldGFpbHMgJiZcclxuICAgICAgICAvLyAgIHRhc2tEZXRhaWxzPy5zdGF0dXMgPT0gXCJzdWJtaXRcIiAmJlxyXG4gICAgICAgIC8vICAgc3RhdHVzTWFwW1wiZml4dHVyZVwiXSA9PSBcIlwiXHJcbiAgICAgICAgLy8gKSB7XHJcbiAgICAgICAgLy8gICB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAgIC8vICAgICAoZWxlOiBhbnkpID0+IGVsZS50eXBlID09IFwidm1cIlxyXG4gICAgICAgIC8vICAgKTtcclxuICAgICAgICAvLyAgIGlmIChcclxuICAgICAgICAvLyAgICAgdGFza0RldGFpbHMgJiZcclxuICAgICAgICAvLyAgICAgdGFza0RldGFpbHM/LnN0YXR1cyA9PSBcInN1Ym1pdFwiICYmXHJcbiAgICAgICAgLy8gICAgIHN0YXR1c01hcFtcInZtXCJdID09IFwiXCJcclxuICAgICAgICAvLyAgICkge1xyXG4gICAgICAgIHJldHVybiAxMDA7XHJcbiAgICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gNzU7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgIHJldHVybiA1MDtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChkYXRhLnRhc2tEZXRhaWxzPy5sYXlvdXRTdGF0dXMgPT0gXCJjb21wbGV0ZVwiKSByZXR1cm4gNTA7XHJcblxyXG4gICAgcmV0dXJuIDI1O1xyXG4gIH1cclxuXHJcbiAgc2hvd0JyZWFjaChkYXRhOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnR5cGUgPT0gdHlwZVxyXG4gICAgKTtcclxuICAgIGlmICh0YXNrRGV0YWlscyAmJiB0YXNrRGV0YWlscz8uc3RhdHVzICE9IFwic3VibWl0XCIgJiYgdGFza0RldGFpbHM/LmJyZWFjaCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIGxldCB0YXNrRGV0YWlscyA9IGRhdGE/LnBsYW5vVGFzaz8uWzBdPy50YXNrU3RhdHVzPy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZT8uc3RhdHVzICE9IFwic3VibWl0XCJcclxuICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0YXNrRGV0YWlscyAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmZpeHR1cmVTdGF0dXMgPT0gXCJjb21wbGV0ZVwiICYmXHJcbiAgICAgIGRhdGEudGFza0RldGFpbHMubGF5b3V0U3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICBkYXRhLmxheW91dFN0YXR1cy5pbmNsdWRlcyhmYWxzZSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gXCJSZWFkeSB0byBQdWJsaXNoXCI7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGFza0RldGFpbHMgJiZcclxuICAgICAgZGF0YS50YXNrRGV0YWlscy5maXh0dXJlU3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmxheW91dFN0YXR1cyA9PSBcImNvbXBsZXRlXCIgJiZcclxuICAgICAgIWRhdGEubGF5b3V0U3RhdHVzLmluY2x1ZGVzKGZhbHNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBcIlB1Ymxpc2hlZFwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGJyZWFjaCA9IHRoaXMuc2hvd0JyZWFjaChkYXRhLCBcImZpeHR1cmVcIik7XHJcblxyXG4gICAgICBpZihicmVhY2gpIHtcclxuICAgICAgICByZXR1cm4gJ1lldCB0byBBc3NpZ24nO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFRhc2tUb29sdGlwKGRhdGEsJ2ZpeHR1cmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0JhZGdlKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zdGF0dXMgIT0gXCJzdWJtaXRcIlxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgIXRhc2tEZXRhaWxzICYmXHJcbiAgICAgIGRhdGEudGFza0RldGFpbHMuZml4dHVyZVN0YXR1cyA9PSBcImNvbXBsZXRlXCIgJiZcclxuICAgICAgZGF0YS50YXNrRGV0YWlscy5sYXlvdXRTdGF0dXMgPT0gXCJjb21wbGV0ZVwiICYmXHJcbiAgICAgIGRhdGEubGF5b3V0U3RhdHVzLmluY2x1ZGVzKGZhbHNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBcInByaW1hcnlCYWRnZVN0eWxlXCI7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGFza0RldGFpbHMgJiZcclxuICAgICAgZGF0YS50YXNrRGV0YWlscy5maXh0dXJlU3RhdHVzID09IFwiY29tcGxldGVcIiAmJlxyXG4gICAgICBkYXRhLnRhc2tEZXRhaWxzLmxheW91dFN0YXR1cyA9PSBcImNvbXBsZXRlXCIgJiZcclxuICAgICAgIWRhdGEubGF5b3V0U3RhdHVzLmluY2x1ZGVzKGZhbHNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBcImJnLXN1Y2Nlc3NcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBicmVhY2ggPSB0aGlzLnNob3dCcmVhY2goZGF0YSwgXCJmaXh0dXJlXCIpO1xyXG4gICAgICBpZiAoYnJlYWNoKSB7XHJcbiAgICAgICAgcmV0dXJuIFwieWV0VG9Bc3NpZ25cIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRUYXNrU3RhdHVzKGRhdGEsIFwiZml4dHVyZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN1Ym1pdChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHN0YXR1c01hcDogYW55ID0ge1xyXG4gICAgICBsYXlvdXQ6IGRhdGEudGFza0RldGFpbHM/LmxheW91dFN0YXR1cyxcclxuICAgICAgZml4dHVyZTogZGF0YS50YXNrRGV0YWlscz8uZml4dHVyZVN0YXR1cyxcclxuICAgICAgdm06IGRhdGEudGFza0RldGFpbHM/LnZtU3RhdHVzLFxyXG4gICAgfTtcclxuICAgIGxldCBzdWJtaXRUYXNrID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuc3RhdHVzID09IFwic3VibWl0XCIgJiYgc3RhdHVzTWFwW2VsZS50eXBlXSA9PSBcInBlbmRpbmdcIlxyXG4gICAgKTtcclxuICAgIGlmIChzdWJtaXRUYXNrKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUXVlcnlQYXJhbXMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIHRhYjogdGhpcy5zZWxlY3RlZEZpbHRlclRhYixcclxuICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGVybSxcclxuICAgICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgICB9LFxyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCIsXHJcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnBsYW5vU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RTdG9yZShzdG9yZUlkOiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJcIik7XHJcbiAgICBkYXRhLnN0b3JlID0gc3RvcmVJZDtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgbWFuYWdlL3N0b3Jlcy9wbGFubz9zdG9yZUlkPSR7c3RvcmVJZH1gKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZsb29yKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHRhc2tEZXRhaWxzID0gZGF0YT8ucGxhbm9UYXNrPy5bMF0/LnRhc2tTdGF0dXM/LmZpbHRlcihcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnN0YXR1cyA9PSBcInN1Ym1pdFwiICYmIGVsZS50eXBlID09IFwibGF5b3V0XCJcclxuICAgICk7XHJcbiAgICByZXR1cm4gYCR7dGFza0RldGFpbHM/Lmxlbmd0aCA/PyAwfS8ke2RhdGE/LmxheW91dENvdW50fWA7XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCgpIHtcclxuICAgIHRoaXMuaXNCdXR0b25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgbGltaXQ6IHRoaXMudG90YWxJdGVtcyxcclxuICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0ZWRDb2x1bW4sXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0T3JkZXIsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5hcHBsaWVkRmlsdGVycyxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVGVybSxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICAvLyBlbXB0eURvd25sb2FkOiBmYWxzZVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2VcclxuICAgICAgLmdldFBsYW5vTGlzdEV4cG9ydChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgXCJWZXJpZmljYXRpb24gTGlzdFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNCdXR0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyLCBcImVyclwiKTtcclxuICAgICAgICAgIHRoaXMuaXNCdXR0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgbXgtMCBteS01IGdhcC0yXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbCBmaWx0ZXItdGFiXCIgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogc2VsZWN0ZWRGaWx0ZXJUYWIgPT09ICdhbGwnIH1cIiAoY2xpY2spPVwiZmlsdGVyVGFibGUoJ2FsbCcpXCI+XHJcbiAgICA8aDM+e3sgcGVuZGluZ0RldGFpbHM/LmFsbFN0b3JlcyB8fCAwIH19PC9oMz5cclxuICAgIDxwPlRvdGFsIHN0b3JlczwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sIGZpbHRlci10YWJcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBzZWxlY3RlZEZpbHRlclRhYiA9PT0gJ2xheW91dCcgfVwiIChjbGljayk9XCJmaWx0ZXJUYWJsZSgnbGF5b3V0JylcIj5cclxuICAgIDxoMz57eyBwZW5kaW5nRGV0YWlscz8ubGF5b3V0Q29tcGxldGUgPz8gMCB9fTwvaDM+XHJcbiAgICA8cD5MYXlvdXQgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZDwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sIGZpbHRlci10YWJcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBzZWxlY3RlZEZpbHRlclRhYiA9PT0gJ2ZpeHR1cmUnIH1cIiAoY2xpY2spPVwiZmlsdGVyVGFibGUoJ2ZpeHR1cmUnKVwiPlxyXG4gICAgPGgzPnt7IHBlbmRpbmdEZXRhaWxzPy5maXh0dXJlUGVuZGluZyA/PyAwIH19PC9oMz5cclxuICAgIDxwPkZpeHR1cmUgdmVyaWZpY2F0aW9uIHBlbmRpbmc8L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbCBmaWx0ZXItdGFiXCIgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogc2VsZWN0ZWRGaWx0ZXJUYWIgPT09ICd2bScgfVwiIChjbGljayk9XCJmaWx0ZXJUYWJsZSgndm0nKVwiPlxyXG4gICAgPGgzPnt7IHBlbmRpbmdEZXRhaWxzPy5maXh0dXJlUGVuZGluZyA/PyAwIH19PC9oMz5cclxuICAgIDxwPlZNIHZlcmlmaWNhdGlvbiBwZW5kaW5nPC9wPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gW1pPTkUtVkVSSUZJQ0FUSU9OXSBhZGRpdGl2ZSDigJQgNXRoIHN0YXQgY2FyZCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY29sIGZpbHRlci10YWJcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBzZWxlY3RlZEZpbHRlclRhYiA9PT0gJ3pvbmUnIH1cIiAoY2xpY2spPVwiZmlsdGVyVGFibGUoJ3pvbmUnKVwiPlxyXG4gICAgPGgzPnt7IHBlbmRpbmdEZXRhaWxzPy56b25lUGVuZGluZyA/PyAwIH19PC9oMz5cclxuICAgIDxwPlpvbmUgdmVyaWZpY2F0aW9uIHBlbmRpbmc8L3A+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiPlxyXG4gIDxkaXYgW2NsYXNzLnJlc3RyaWN0LWludGVyYWN0aW9uXT1cImlzQnV0dG9uTG9hZGluZ1wiPlxyXG4gICAgPCEtLSBNYW5hZ2UgUGxhbm9ncmFtIHZpZXcgaGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxoND5BbGwgUGxhbm9ncmFtczwvaDQ+XHJcbiAgICAgICAgPHNwYW4+e3sgdG90YWxJdGVtcyB9fSAtIFRvdGFsIFJlY29yZHM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VhcmNoKClcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogM3JlbTsgcGFkZGluZy1yaWdodDogM3JlbVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvblwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjEzXCIgeTE9XCIxM1wiIHgyPVwiMTZcIiB5Mj1cIjE2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VhcmNoVGVybVwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAoY2xpY2spPVwic2VhcmNoVGVybSA9ICcnOyBvblNlYXJjaCgpXCIgY2xhc3M9XCJjbGVhci1zZWFyY2hcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjY0cHhcIiBoZWlnaHQ9XCI2NHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19iZ0NhcnJpZXJcIiBzdHJva2Utd2lkdGg9XCIwXCI+PC9nPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb190cmFjZXJDYXJyaWVyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9nPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19pY29uQ2FycmllclwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDlMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgOUw5IDE1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGN4PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICBjeT1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgcj1cIjlcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQnVsa1VwbG9hZE1vZGFsKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIEJ1bGsgVXBsb2FkXHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGQtbGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk01IDEwSDE1TTIuNSA1SDE3LjVNNy41IDE1SDEyLjVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICA8cGxhbm8tZmlsdGVyIFtjbGllbnRJZF09XCJjbGllbnRJZFwiIFtkYXRhXT1cImZpbHRlck9iamVjdFwiIChhcHBseUZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgKHJlc2V0RmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiIFtjb25maWddPVwieyAnTWVyY2hhbmRpc2UgY29tcGxpYW5jZSc6IGZhbHNlIH1cIj48L3BsYW5vLWZpbHRlcj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcGxhbm9ncmFtc0xpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQnV0dG9uTG9hZGluZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQnV0dG9uTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInBhdGhcIiBjeD1cIjI1XCIgY3k9XCIyNVwiIHI9XCIyMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4gRXhwb3J0PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNsaWNrQ3JlYXRlUGxhbm9ncmFtKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHRleHQtd2hpdGVcIj5DcmVhdGUgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImlzUGFnZUxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiXHJcbiAgICAgICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmcgJiYgcGxhbm9ncmFtc0xpc3QubGVuZ3RoID09PSAwXCJcclxuICAgID5cclxuICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgbWFuYWdlIHBsYW5vZ3JhbSB0YWJsZTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBNYW5hZ2UgUGxhbm9ncmFtIGxpc3QgdmlldyAtLT5cclxuICAgIDxzZWN0aW9uIGlkPVwibGlzdC12aWV3XCIgKm5nSWY9XCIhaXNQYWdlTG9hZGluZyAmJiBwbGFub2dyYW1zTGlzdC5sZW5ndGggIT09IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ3N0b3JlTmFtZScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBTdG9yZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25Tb3J0VGFibGUoJ2xheW91dE5hbWUnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgTGF5b3V0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIG1zLTEgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogc29ydGVkQ29sdW1uID09PSAnbGF5b3V0TmFtZScgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnbGF5b3V0TmFtZScgPyAnZmEtYXJyb3ctdXAnIDogJ2ZhLWFycm93LWRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgQ291bnRyeVxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgQ2l0eVxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vIENvbXBsZXRpb24gJVxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ3BsYW5vUHJvZ3Jlc3MnID8gJyMwMDlCRjMnIDogJycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydE9yZGVyID09PSAxICYmIHNvcnRlZENvbHVtbiA9PT0gJ3BsYW5vUHJvZ3Jlc3MnID8gJ2ZhLWFycm93LXVwJyA6ICdmYS1hcnJvdy1kb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCIlIG9mIG92ZXJhbGwgcGxhbm9ncmFtIGNvbXBsZXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg0NF8xNzUzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjYzVjcuOTk5NjdNOC4wMDA2NSA1LjMzMzAxSDguMDA3MzJNMTQuNjY3MyA3Ljk5OTY3QzE0LjY2NzMgMTEuNjgxNiAxMS42ODI2IDE0LjY2NjMgOC4wMDA2NSAxNC42NjYzQzQuMzE4NzUgMTQuNjY2MyAxLjMzMzk4IDExLjY4MTYgMS4zMzM5OCA3Ljk5OTY3QzEuMzMzOTggNC4zMTc3OCA0LjMxODc1IDEuMzMzMDEgOC4wMDA2NSAxLjMzMzAxQzExLjY4MjYgMS4zMzMwMSAxNC42NjczIDQuMzE3NzggMTQuNjY3MyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NDRfMTc1MzhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnbGF5b3V0Q291bnQnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgTGF5b3V0XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ2xheW91dENvdW50JyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICdsYXlvdXRDb3VudCcgPyAnZmEtYXJyb3ctdXAnIDogJ2ZhLWFycm93LWRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnZml4dHVyZUNvdW50JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vIG9mIEZpeHR1cmVzXHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBtcy0xIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHNvcnRlZENvbHVtbiA9PT0gJ2ZpeHR1cmVDb3VudCcgPyAnIzAwOUJGMycgOiAnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0T3JkZXIgPT09IDEgJiYgc29ydGVkQ29sdW1uID09PSAnZml4dHVyZUNvdW50JyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIm9uU29ydFRhYmxlKCd2bUNvdW50JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vIG9mIFZNc1xyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgbXMtMSBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBzb3J0ZWRDb2x1bW4gPT09ICd2bUNvdW50JyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICd2bUNvdW50JyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8IS0tIFtaT05FLVZFUklGSUNBVElPTl0gYWRkaXRpdmUg4oCUIFpvbmUgc3RhdHVzIGhlYWRlciAtLT5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+Wm9uZTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNj5Ub3RhbCBzdG9yZSBjYXBhY2l0eTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IENvbWJpbmluZyBwcm9kdWN0IGNhcGFjaXR5IG9mIGFsbCBmaXh0dXJlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnZml4dHVyZUNhcGFjaXR5JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgU3RvcmUgQ2FwYWNpdHlcclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIG1zLTEgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogc29ydGVkQ29sdW1uID09PSAnZml4dHVyZUNhcGFjaXR5JyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICdmaXh0dXJlQ2FwYWNpdHknID8gJ2ZhLWFycm93LXVwJyA6ICdmYS1hcnJvdy1kb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODQ0XzE3NTM4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDY1IDEwLjY2NjNWNy45OTk2N004LjAwMDY1IDUuMzMzMDFIOC4wMDczMk0xNC42NjczIDcuOTk5NjdDMTQuNjY3MyAxMS42ODE2IDExLjY4MjYgMTQuNjY2MyA4LjAwMDY1IDE0LjY2NjNDNC4zMTg3NSAxNC42NjYzIDEuMzMzOTggMTEuNjgxNiAxLjMzMzk4IDcuOTk5NjdDMS4zMzM5OCA0LjMxNzc4IDQuMzE4NzUgMS4zMzMwMSA4LjAwMDY1IDEuMzMzMDFDMTEuNjgyNiAxLjMzMzAxIDE0LjY2NzMgNC4zMTc3OCAxNC42NjczIDcuOTk5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg0NF8xNzUzOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNvcnRUYWJsZSgnbGFzdFVwZGF0ZScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBMYXN0IHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgbXMtMSBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBzb3J0ZWRDb2x1bW4gPT09ICdsYXN0VXBkYXRlJyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICdsYXN0VXBkYXRlJyA/ICdmYS1hcnJvdy11cCcgOiAnZmEtYXJyb3ctZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBQbGFub2dyYW0gU3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIG1zLTEgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogc29ydGVkQ29sdW1uID09PSAncGxhbm9ncmFtU3RhdHVzJyA/ICcjMDA5QkYzJyA6ICcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRPcmRlciA9PT0gMSAmJiBzb3J0ZWRDb2x1bW4gPT09ICdwbGFub2dyYW1TdGF0dXMnID8gJ2ZhLWFycm93LXVwJyA6ICdmYS1hcnJvdy1kb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcGxhbm8gb2YgcGxhbm9ncmFtc0xpc3RcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwicmVkaXJlY3RTdG9yZShwbGFuby5zdG9yZUlkKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHBsYW5vLnN0b3JlTmFtZSB9fTwvYVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS9wbGFub2dyYW0vbWFuYWdlLXBsYW5vZ3JhbSddXCJcclxuICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgcGxhbm9JZDogcGxhbm8uX2lkLCBmbG9vcklkOiBwbGFubz8ubGF5b3V0RGV0YWlscz8uWzBdPy5pZCB9XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICBwbGFuby5sYXlvdXROYW1lXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICB7e3BsYW5vPy5jb3VudHJ5fX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7cGxhbm8/LmNpdHl9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCIgc3R5bGU9XCJoZWlnaHQ6IDRweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsyNSwgNTBdLmluY2x1ZGVzKGdldFByb2dyZXNzVmFsdWUocGxhbm8pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmctd2FybmluZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JnLXN1Y2Nlc3MnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJnZXRQcm9ncmVzc1ZhbHVlKHBsYW5vKSA/ICd3aWR0aDogJyArIGdldFByb2dyZXNzVmFsdWUocGxhbm8pICsgJyUnIDogJ3dpZHRoOjI1JSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cImdldFByb2dyZXNzVmFsdWUocGxhbm8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7IGdldFByb2dyZXNzVmFsdWUocGxhbm8pIH19JTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBwcm9ncmVzc1wiIHN0eWxlPVwiaGVpZ2h0OiA0cHg7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjUlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBwbGFuby5wbGFub0NvbXBsZXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHBsYW5vPy5sYXlvdXRDb3VudCA9PT0gMSA/IDEgOiB1cGRhdGVGbG9vcihwbGFubykgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRGlkbuKAmXQgcmVzcG9uZCB3aXRoaW4gdGhlIGR1ZSBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dCcmVhY2gocGxhbm8sICdsYXlvdXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjMzMzk4IDguNzUxM0MyLjMzMzk4IDguNzUxMyAyLjkxNzMyIDguMTY3OTcgNC42NjczMiA4LjE2Nzk3QzYuNDE3MzIgOC4xNjc5NyA3LjU4Mzk4IDkuMzM0NjMgOS4zMzM5OCA5LjMzNDYzQzExLjA4NCA5LjMzNDYzIDExLjY2NzMgOC43NTEzIDExLjY2NzMgOC43NTEzVjEuNzUxM0MxMS42NjczIDEuNzUxMyAxMS4wODQgMi4zMzQ2NCA5LjMzMzk4IDIuMzM0NjRDNy41ODM5OCAyLjMzNDY0IDYuNDE3MzIgMS4xNjc5NyA0LjY2NzMyIDEuMTY3OTdDMi45MTczMiAxLjE2Nzk3IDIuMzMzOTggMS43NTEzIDIuMzMzOTggMS43NTEzVjguNzUxM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUNEQ0FcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zMzM5OCA4Ljc1MTNDMi4zMzM5OCA4Ljc1MTMgMi45MTczMiA4LjE2Nzk3IDQuNjY3MzIgOC4xNjc5N0M2LjQxNzMyIDguMTY3OTcgNy41ODM5OCA5LjMzNDY0IDkuMzMzOTggOS4zMzQ2NEMxMS4wODQgOS4zMzQ2NCAxMS42NjczIDguNzUxMyAxMS42NjczIDguNzUxM1YxLjc1MTNDMTEuNjY3MyAxLjc1MTMgMTEuMDg0IDIuMzM0NjQgOS4zMzM5OCAyLjMzNDY0QzcuNTgzOTggMi4zMzQ2NCA2LjQxNzMyIDEuMTY3OTcgNC42NjczMiAxLjE2Nzk3QzIuOTE3MzIgMS4xNjc5NyAyLjMzMzk4IDEuNzUxMyAyLjMzMzk4IDEuNzUxM1Y4Ljc1MTNaTTIuMzMzOTggOC43NTEzVjEyLjgzNDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3Igc2hvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFRhc2tTdGF0dXMocGxhbm8sICdsYXlvdXQnKSB8fCAndGFza0Fzc2lnbmVkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0JyZWFjaChwbGFubywgJ2xheW91dCcpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGdldFRhc2tUb29sdGlwKHBsYW5vLCAnbGF5b3V0JykgfHwgJ1Rhc2sgQXNzaWduZWQnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi45NzI4NCAwLjMxMDk2N0wyLjc5NjE3IDQuMzQxOEwxLjY4Nzg0IDMuMTU3NjNDMS40ODM2NyAyLjk2NTEzIDEuMTYyODQgMi45NTM0NyAwLjkyOTUwNSAzLjExNjhDMC43MDIwMDUgMy4yODU5NyAwLjYzNzgzOCAzLjU4MzQ3IDAuNzc3ODM4IDMuODIyNjNMMi4wOTAzNCA1Ljk1NzYzQzIuMjE4NjcgNi4xNTU5NyAyLjQ0MDM0IDYuMjc4NDcgMi42OTExNyA2LjI3ODQ3QzIuOTMwMzQgNi4yNzg0NyAzLjE1Nzg0IDYuMTU1OTcgMy4yODYxNyA1Ljk1NzYzQzMuNDk2MTcgNS42ODM0NyA3LjUwMzY3IDAuOTA1OTY3IDcuNTAzNjcgMC45MDU5NjdDOC4wMjg2NyAwLjM2OTMgNy4zOTI4NCAtMC4xMDMyIDYuOTcyODQgMC4zMDUxMzRWMC4zMTA5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcGxhbm8uZml4dHVyZUNvdW50IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkRpZG7igJl0IHJlc3BvbmQgd2l0aGluIHRoZSBkdWUgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QnJlYWNoKHBsYW5vLCAnZml4dHVyZScpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMzMzOTggOC43NTEzQzIuMzMzOTggOC43NTEzIDIuOTE3MzIgOC4xNjc5NyA0LjY2NzMyIDguMTY3OTdDNi40MTczMiA4LjE2Nzk3IDcuNTgzOTggOS4zMzQ2MyA5LjMzMzk4IDkuMzM0NjNDMTEuMDg0IDkuMzM0NjMgMTEuNjY3MyA4Ljc1MTMgMTEuNjY3MyA4Ljc1MTNWMS43NTEzQzExLjY2NzMgMS43NTEzIDExLjA4NCAyLjMzNDY0IDkuMzMzOTggMi4zMzQ2NEM3LjU4Mzk4IDIuMzM0NjQgNi40MTczMiAxLjE2Nzk3IDQuNjY3MzIgMS4xNjc5N0MyLjkxNzMyIDEuMTY3OTcgMi4zMzM5OCAxLjc1MTMgMi4zMzM5OCAxLjc1MTNWOC43NTEzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFQ0RDQVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjMzMzk4IDguNzUxM0MyLjMzMzk4IDguNzUxMyAyLjkxNzMyIDguMTY3OTcgNC42NjczMiA4LjE2Nzk3QzYuNDE3MzIgOC4xNjc5NyA3LjU4Mzk4IDkuMzM0NjQgOS4zMzM5OCA5LjMzNDY0QzExLjA4NCA5LjMzNDY0IDExLjY2NzMgOC43NTEzIDExLjY2NzMgOC43NTEzVjEuNzUxM0MxMS42NjczIDEuNzUxMyAxMS4wODQgMi4zMzQ2NCA5LjMzMzk4IDIuMzM0NjRDNy41ODM5OCAyLjMzNDY0IDYuNDE3MzIgMS4xNjc5NyA0LjY2NzMyIDEuMTY3OTdDMi45MTczMiAxLjE2Nzk3IDIuMzMzOTggMS43NTEzIDIuMzMzOTggMS43NTEzVjguNzUxM1pNMi4zMzM5OCA4Ljc1MTNWMTIuODM0NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluZGljYXRvciBzaG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0VGFza1N0YXR1cyhwbGFubywgJ2ZpeHR1cmUnKSB8fCAndGFza0Fzc2lnbmVkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0JyZWFjaChwbGFubywgJ2ZpeHR1cmUnKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDggN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBnZXRUYXNrVG9vbHRpcChwbGFubywgJ2ZpeHR1cmUnKSB8fCAnVGFzayBBc3NpZ25lZCcgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02Ljk3Mjg0IDAuMzEwOTY3TDIuNzk2MTcgNC4zNDE4TDEuNjg3ODQgMy4xNTc2M0MxLjQ4MzY3IDIuOTY1MTMgMS4xNjI4NCAyLjk1MzQ3IDAuOTI5NTA1IDMuMTE2OEMwLjcwMjAwNSAzLjI4NTk3IDAuNjM3ODM4IDMuNTgzNDcgMC43Nzc4MzggMy44MjI2M0wyLjA5MDM0IDUuOTU3NjNDMi4yMTg2NyA2LjE1NTk3IDIuNDQwMzQgNi4yNzg0NyAyLjY5MTE3IDYuMjc4NDdDMi45MzAzNCA2LjI3ODQ3IDMuMTU3ODQgNi4xNTU5NyAzLjI4NjE3IDUuOTU3NjNDMy40OTYxNyA1LjY4MzQ3IDcuNTAzNjcgMC45MDU5NjcgNy41MDM2NyAwLjkwNTk2N0M4LjAyODY3IDAuMzY5MyA3LjM5Mjg0IC0wLjEwMzIgNi45NzI4NCAwLjMwNTEzNFYwLjMxMDk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBwbGFuby52bUNvdW50IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkRpZG7igJl0IHJlc3BvbmQgd2l0aGluIHRoZSBkdWUgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QnJlYWNoKHBsYW5vLCAnZml4dHVyZScpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMzMzOTggOC43NTEzQzIuMzMzOTggOC43NTEzIDIuOTE3MzIgOC4xNjc5NyA0LjY2NzMyIDguMTY3OTdDNi40MTczMiA4LjE2Nzk3IDcuNTgzOTggOS4zMzQ2MyA5LjMzMzk4IDkuMzM0NjNDMTEuMDg0IDkuMzM0NjMgMTEuNjY3MyA4Ljc1MTMgMTEuNjY3MyA4Ljc1MTNWMS43NTEzQzExLjY2NzMgMS43NTEzIDExLjA4NCAyLjMzNDY0IDkuMzMzOTggMi4zMzQ2NEM3LjU4Mzk4IDIuMzM0NjQgNi40MTczMiAxLjE2Nzk3IDQuNjY3MzIgMS4xNjc5N0MyLjkxNzMyIDEuMTY3OTcgMi4zMzM5OCAxLjc1MTMgMi4zMzM5OCAxLjc1MTNWOC43NTEzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFQ0RDQVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjMzMzk4IDguNzUxM0MyLjMzMzk4IDguNzUxMyAyLjkxNzMyIDguMTY3OTcgNC42NjczMiA4LjE2Nzk3QzYuNDE3MzIgOC4xNjc5NyA3LjU4Mzk4IDkuMzM0NjQgOS4zMzM5OCA5LjMzNDY0QzExLjA4NCA5LjMzNDY0IDExLjY2NzMgOC43NTEzIDExLjY2NzMgOC43NTEzVjEuNzUxM0MxMS42NjczIDEuNzUxMyAxMS4wODQgMi4zMzQ2NCA5LjMzMzk4IDIuMzM0NjRDNy41ODM5OCAyLjMzNDY0IDYuNDE3MzIgMS4xNjc5NyA0LjY2NzMyIDEuMTY3OTdDMi45MTczMiAxLjE2Nzk3IDIuMzMzOTggMS43NTEzIDIuMzMzOTggMS43NTEzVjguNzUxM1pNMi4zMzM5OCA4Ljc1MTNWMTIuODM0NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluZGljYXRvciBzaG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0VGFza1N0YXR1cyhwbGFubywgJ3ZtJykgfHwgJ3Rhc2tBc3NpZ25lZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dCcmVhY2gocGxhbm8sICdmaXh0dXJlJylcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA4IDdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgZ2V0VGFza1Rvb2x0aXAocGxhbm8sICd2bScpIHx8ICdUYXNrIEFzc2lnbmVkJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTcyODQgMC4zMTA5NjdMMi43OTYxNyA0LjM0MThMMS42ODc4NCAzLjE1NzYzQzEuNDgzNjcgMi45NjUxMyAxLjE2Mjg0IDIuOTUzNDcgMC45Mjk1MDUgMy4xMTY4QzAuNzAyMDA1IDMuMjg1OTcgMC42Mzc4MzggMy41ODM0NyAwLjc3NzgzOCAzLjgyMjYzTDIuMDkwMzQgNS45NTc2M0MyLjIxODY3IDYuMTU1OTcgMi40NDAzNCA2LjI3ODQ3IDIuNjkxMTcgNi4yNzg0N0MyLjkzMDM0IDYuMjc4NDcgMy4xNTc4NCA2LjE1NTk3IDMuMjg2MTcgNS45NTc2M0MzLjQ5NjE3IDUuNjgzNDcgNy41MDM2NyAwLjkwNTk2NyA3LjUwMzY3IDAuOTA1OTY3QzguMDI4NjcgMC4zNjkzIDcuMzkyODQgLTAuMTAzMiA2Ljk3Mjg0IDAuMzA1MTM0VjAuMzEwOTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8IS0tIFtaT05FLVZFUklGSUNBVElPTl0gYWRkaXRpdmUg4oCUIFpvbmUgc3RhdHVzIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRGlkbuKAmXQgcmVzcG9uZCB3aXRoaW4gdGhlIGR1ZSBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldFpvbmVTdGF0dXMocGxhbm8pID09PSAnZmxhZydcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4zMzM5OCA4Ljc1MTNDMi4zMzM5OCA4Ljc1MTMgMi45MTczMiA4LjE2Nzk3IDQuNjY3MzIgOC4xNjc5N0M2LjQxNzMyIDguMTY3OTcgNy41ODM5OCA5LjMzNDYzIDkuMzMzOTggOS4zMzQ2M0MxMS4wODQgOS4zMzQ2MyAxMS42NjczIDguNzUxMyAxMS42NjczIDguNzUxM1YxLjc1MTNDMTEuNjY3MyAxLjc1MTMgMTEuMDg0IDIuMzM0NjQgOS4zMzM5OCAyLjMzNDY0QzcuNTgzOTggMi4zMzQ2NCA2LjQxNzMyIDEuMTY3OTcgNC42NjczMiAxLjE2Nzk3QzIuOTE3MzIgMS4xNjc5NyAyLjMzMzk4IDEuNzUxMyAyLjMzMzk4IDEuNzUxM1Y4Ljc1MTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVDRENBXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMzMzOTggOC43NTEzQzIuMzMzOTggOC43NTEzIDIuOTE3MzIgOC4xNjc5NyA0LjY2NzMyIDguMTY3OTdDNi40MTczMiA4LjE2Nzk3IDcuNTgzOTggOS4zMzQ2NCA5LjMzMzk4IDkuMzM0NjRDMTEuMDg0IDkuMzM0NjQgMTEuNjY3MyA4Ljc1MTMgMTEuNjY3MyA4Ljc1MTNWMS43NTEzQzExLjY2NzMgMS43NTEzIDExLjA4NCAyLjMzNDY0IDkuMzMzOTggMi4zMzQ2NEM3LjU4Mzk4IDIuMzM0NjQgNi40MTczMiAxLjE2Nzk3IDQuNjY3MzIgMS4xNjc5N0MyLjkxNzMyIDEuMTY3OTcgMi4zMzM5OCAxLjc1MTMgMi4zMzM5OCAxLjc1MTNWOC43NTEzWk0yLjMzMzk4IDguNzUxM1YxMi44MzQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5kaWNhdG9yIHNob3J0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRab25lU3RhdHVzKHBsYW5vKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRab25lU3RhdHVzKHBsYW5vKSAhPT0gJ2ZsYWcnXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA3XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGdldFpvbmVUb29sdGlwKHBsYW5vKSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTcyODQgMC4zMTA5NjdMMi43OTYxNyA0LjM0MThMMS42ODc4NCAzLjE1NzYzQzEuNDgzNjcgMi45NjUxMyAxLjE2Mjg0IDIuOTUzNDcgMC45Mjk1MDUgMy4xMTY4QzAuNzAyMDA1IDMuMjg1OTcgMC42Mzc4MzggMy41ODM0NyAwLjc3NzgzOCAzLjgyMjYzTDIuMDkwMzQgNS45NTc2M0MyLjIxODY3IDYuMTU1OTcgMi40NDAzNCA2LjI3ODQ3IDIuNjkxMTcgNi4yNzg0N0MyLjkzMDM0IDYuMjc4NDcgMy4xNTc4NCA2LjE1NTk3IDMuMjg2MTcgNS45NTc2M0MzLjQ5NjE3IDUuNjgzNDcgNy41MDM2NyAwLjkwNTk2NyA3LjUwMzY3IDAuOTA1OTY3QzguMDI4NjcgMC4zNjkzIDcuMzkyODQgLTAuMTAzMiA2Ljk3Mjg0IDAuMzA1MTM0VjAuMzEwOTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHBsYW5vPy5maXh0dXJlQ2FwYWNpdHkgPz8gMCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbbmdiVG9vbHRpcF09XCJwbGFubz8ubGFzdFVwZGF0ZSB8IGRhdGUgOiAnbWVkaXVtJ1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBwbGFubz8ubGFzdFVwZGF0ZSB8IGRhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdDbGFzc109XCJnZXRTdGF0dXNCYWRnZShwbGFubylcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZ2V0U3RhdHVzKHBsYW5vKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8IS0tIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDIxIDIyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xN183MTQyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMTk3MSAxOC43MTQ0QzEyLjA0NjQgMTguOTc0MiAxMS44MzAyIDE5LjE4OTggMTEuNTY5OSAxOS4zMzk3QzExLjMwOTcgMTkuNDg5NiAxMS4wMTQ2IDE5LjU2ODUgMTAuNzE0MyAxOS41Njg1QzEwLjQxNCAxOS41Njg1IDEwLjExODkgMTkuNDg5NiA5Ljg1ODY2IDE5LjMzOTdDOS41OTg0MiAxOS4xODk4IDkuMzgyMTIgMTguOTc0MiA5LjIzMTQzIDE4LjcxNDRNMTUuODU3MSA3LjU3MTU3QzE1Ljg1NzEgNi4yMDc2IDE1LjMxNTMgNC44OTk0OSAxNC4zNTA4IDMuOTM1MDJDMTMuMzg2NCAyLjk3MDU1IDEyLjA3ODMgMi40Mjg3MSAxMC43MTQzIDIuNDI4NzFDOS4zNTAzMiAyLjQyODcxIDguMDQyMjEgMi45NzA1NSA3LjA3Nzc0IDMuOTM1MDJDNi4xMTMyNiA0Ljg5OTQ5IDUuNTcxNDMgNi4yMDc2IDUuNTcxNDMgNy41NzE1N0M1LjU3MTQzIDEzLjU3MTYgMyAxNS4yODU5IDMgMTUuMjg1OUgxOC40Mjg2QzE4LjQyODYgMTUuMjg1OSAxNS44NTcxIDEzLjU3MTYgMTUuODU3MSA3LjU3MTU3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDg1NzQgOC4wNDgwNUMxLjU1NjExIDguMDQ4MDUgMS4xMjE0NiA3LjYxNzY4IDEuMTcwODIgNy4wOTAzNkMxLjI4NiA1Ljg1OTg5IDEuNjI3IDQuNzEzMjIgMi4xOTM4MyAzLjY1MDM0QzIuNzUyMjkgMi42MDMxOCAzLjQ2MDYyIDEuNjk2MDUgNC4zMTg4MiAwLjkyODkzOUM0LjcxMDUyIDAuNTc4ODIzIDUuMzA5NjUgMC42NzM1MDEgNS42MjA2MiAxLjA5Njk1QzUuOTMxNzUgMS41MjA2MiA1LjgzNTI1IDIuMTEyMSA1LjQ1MjI1IDIuNDcyMTJDNC44Mjg3NSAzLjA1ODE5IDQuMzA5ODcgMy43NDIzOSAzLjg5NTU5IDQuNTI0NzFDMy40NzMwMyA1LjMyMjY3IDMuMjA3NzYgNi4xNzgzMyAzLjA5OTggNy4wOTE2OUMzLjAzNzY2IDcuNjE3NDcgMi42MTUxOCA4LjA0ODA1IDIuMDg1NzQgOC4wNDgwNVpNMTkuMzQzMSA4LjA0ODA1QzE4LjgxMzQgOC4wNDgwNSAxOC4zOTA4IDcuNjE3MSAxOC4zMjg3IDcuMDkxMDVDMTguMjIwOSA2LjE3NzkzIDE3Ljk1NTYgNS4zMjI0OCAxNy41MzI2IDQuNTI0NzFDMTcuMTE4IDMuNzQyNTggMTYuNTk5MyAzLjA1ODUyIDE1Ljk3NjUgMi40NzI1NEMxNS41OTM3IDIuMTEyMjYgMTUuNDk3MyAxLjUyMDcgMTUuODA4NSAxLjA5Njk2QzE2LjExOTYgMC42NzM0MzMgMTYuNzE4NyAwLjU3ODU1MSAxNy4xMTA3IDAuOTI4NTcxQzE3Ljk2OTMgMS42OTU0IDE4LjY3NzggMi42MDI2NiAxOS4yMzYzIDMuNjUwMzRDMTkuODAzMiA0LjcxMzgxIDIwLjE0MzggNS44NjA2OCAyMC4yNTgxIDcuMDkwOTVDMjAuMzA3MSA3LjYxODA5IDE5Ljg3MjUgOC4wNDgwNSAxOS4zNDMxIDguMDQ4MDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xN183MTQyNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwLjU3MTRcIiBoZWlnaHQ9XCIyMC41NzE0XCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNDI4NzExIDAuNzE0MzU1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjMgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEzOV8xMTI2ODUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjQ4NDMgMjEuNDMwMkMxMi4zMzM2IDIxLjY5IDEyLjExNzMgMjEuOTA1NyAxMS44NTcgMjIuMDU1NkMxMS41OTY4IDIyLjIwNTUgMTEuMzAxNyAyMi4yODQ0IDExLjAwMTQgMjIuMjg0NEMxMC43MDExIDIyLjI4NDQgMTAuNDA2IDIyLjIwNTUgMTAuMTQ1OCAyMi4wNTU2QzkuODg1NTMgMjEuOTA1NyA5LjY2OTIzIDIxLjY5IDkuNTE4NTQgMjEuNDMwMk0xNi4xNDQzIDEwLjI4NzRDMTYuMTQ0MyA4LjkyMzQyIDE1LjYwMjQgNy42MTUzMSAxNC42Mzc5IDYuNjUwODRDMTMuNjczNSA1LjY4NjM3IDEyLjM2NTQgNS4xNDQ1MyAxMS4wMDE0IDUuMTQ0NTNDOS42Mzc0MiA1LjE0NDUzIDguMzI5MzIgNS42ODYzNyA3LjM2NDg1IDYuNjUwODRDNi40MDAzNyA3LjYxNTMxIDUuODU4NTQgOC45MjM0MiA1Ljg1ODU0IDEwLjI4NzRDNS44NTg1NCAxNi4yODc0IDMuMjg3MTEgMTguMDAxNyAzLjI4NzExIDE4LjAwMTdIMTguNzE1N0MxOC43MTU3IDE4LjAwMTcgMTYuMTQ0MyAxNi4yODc0IDE2LjE0NDMgMTAuMjg3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjM3MTg3IDEwLjc2MzRDMS44NDIyNCAxMC43NjM0IDEuNDA3NTkgMTAuMzMzIDEuNDU2OTUgOS44MDU2OUMxLjU3MjEzIDguNTc1MjIgMS45MTMxMyA3LjQyODU1IDIuNDc5OTcgNi4zNjU2N0MzLjAzODQyIDUuMzE4NTEgMy43NDY3NSA0LjQxMTM4IDQuNjA0OTYgMy42NDQyN0M0Ljk5NjY1IDMuMjk0MTUgNS41OTU3OCAzLjM4ODgzIDUuOTA2NzUgMy44MTIyOEM2LjIxNzg4IDQuMjM1OTUgNi4xMjEzOCA0LjgyNzQ0IDUuNzM4MzggNS4xODc0NUM1LjExNDg5IDUuNzczNTIgNC41OTYgNi40NTc3MiA0LjE4MTcyIDcuMjQwMDRDMy43NTkxNiA4LjAzOCAzLjQ5MzkgOC44OTM2NiAzLjM4NTk0IDkuODA3MDJDMy4zMjM3OSAxMC4zMzI4IDIuOTAxMzEgMTAuNzYzNCAyLjM3MTg3IDEwLjc2MzRaTTE5LjYyOTIgMTAuNzYzNEMxOS4wOTk1IDEwLjc2MzQgMTguNjc2OSAxMC4zMzI0IDE4LjYxNDggOS44MDYzOEMxOC41MDcgOC44OTMyNiAxOC4yNDE3IDguMDM3ODEgMTcuODE4OCA3LjI0MDA0QzE3LjQwNDEgNi40NTc5MSAxNi44ODU0IDUuNzczODUgMTYuMjYyNyA1LjE4Nzg3QzE1Ljg3OTggNC44Mjc2IDE1Ljc4MzUgNC4yMzYwMyAxNi4wOTQ3IDMuODEyMjlDMTYuNDA1NyAzLjM4ODc2IDE3LjAwNDkgMy4yOTM4OCAxNy4zOTY4IDMuNjQzOUMxOC4yNTU0IDQuNDEwNzMgMTguOTY0IDUuMzE3OTkgMTkuNTIyNCA2LjM2NTY3QzIwLjA4OTMgNy40MjkxNCAyMC40Mjk5IDguNTc2MDEgMjAuNTQ0MiA5LjgwNjI4QzIwLjU5MzIgMTAuMzMzNCAyMC4xNTg2IDEwLjc2MzQgMTkuNjI5MiAxMC43NjM0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3IDFDMTkuNzYxNCAxIDIyIDMuMjM4NTggMjIgNkMyMiA4Ljc2MTQyIDE5Ljc2MTQgMTEgMTcgMTFDMTQuMjM4NiAxMSAxMiA4Ljc2MTQyIDEyIDZDMTIgMy4yMzg1OCAxNC4yMzg2IDEgMTcgMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzEzOV8xMTI2ODVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMC41NzE0XCIgaGVpZ2h0PVwiMjAuNTcxNFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjcxNDg0NCAzLjQyOTY5KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDEyQzExIDEyLjU1MjMgMTEuNDQ3NyAxMyAxMiAxM0MxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJDMTMgMTEuNDQ3NyAxMi41NTIzIDExIDEyIDExQzExLjQ0NzcgMTEgMTEgMTEuNDQ3NyAxMSAxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzExIDE5LjU1MjMgMTEuNDQ3NyAyMCAxMiAyMEMxMi41NTIzIDIwIDEzIDE5LjU1MjMgMTMgMTlDMTMgMTguNDQ3NyAxMi41NTIzIDE4IDEyIDE4QzExLjQ0NzcgMTggMTEgMTguNDQ3NyAxMSAxOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDVDMTEgNS41NTIyOCAxMS40NDc3IDYgMTIgNkMxMi41NTIzIDYgMTMgNS41NTIyOCAxMyA1QzEzIDQuNDQ3NzIgMTIuNTUyMyA0IDEyIDRDMTEuNDQ3NyA0IDExIDQuNDQ3NzIgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIj5FZGl0PC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCI+RHVwbGljYXRlPC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCI+RGVsZXRlPC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPiAtLT5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvcGxhbm9ncmFtL21hbmFnZS1wbGFub2dyYW0nXVwiXHJcbiAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IHBsYW5vSWQ6IHBsYW5vLl9pZCwgZmxvb3JJZDogcGxhbm8/LmxheW91dERldGFpbHM/LmlkIH1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjMgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldFN1Ym1pdChwbGFubylcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMTM5NSA2Ljg1NzI4SDQuMTM5NDZDMy42ODQ4IDYuODU3MjggMy4yNDg3NiA3LjAzNzkgMi45MjcyNyA3LjM1OTM5QzIuNjA1NzggNy42ODA4OCAyLjQyNTE3IDguMTE2OTEgMi40MjUxNyA4LjU3MTU3VjIwLjU3MTZDMi40MjUxNyAyMS4wMjYyIDIuNjA1NzggMjEuNDYyMyAyLjkyNzI3IDIxLjc4MzhDMy4yNDg3NiAyMi4xMDUyIDMuNjg0OCAyMi4yODU5IDQuMTM5NDYgMjIuMjg1OUgxNi4xMzk1QzE2LjU5NDEgMjIuMjg1OSAxNy4wMzAxIDIyLjEwNTIgMTcuMzUxNiAyMS43ODM4QzE3LjY3MzEgMjEuNDYyMyAxNy44NTM3IDIxLjAyNjIgMTcuODUzNyAyMC41NzE2VjE0LjU3MTZNMTYuNTY4IDUuNTcxNTdDMTYuOTA5IDUuMjMwNTggMTcuMzcxNSA1LjAzOTAxIDE3Ljg1MzcgNS4wMzkwMUMxOC4zMzYgNS4wMzkwMSAxOC43OTg1IDUuMjMwNTggMTkuMTM5NSA1LjU3MTU3QzE5LjQ4MDUgNS45MTI1NiAxOS42NzIgNi4zNzUwNSAxOS42NzIgNi44NTcyOEMxOS42NzIgNy4zMzk1MiAxOS40ODA1IDcuODAyMDEgMTkuMTM5NSA4LjE0M0wxMC45OTY2IDE2LjI4NTlMNy41NjgwMyAxNy4xNDNMOC40MjUxNyAxMy43MTQ0TDE2LjU2OCA1LjU3MTU3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNyAxQzE5Ljc2MTQgMSAyMiAzLjIzODU4IDIyIDZDMjIgOC43NjE0MiAxOS43NjE0IDExIDE3IDExQzE0LjIzODYgMTEgMTIgOC43NjE0MiAxMiA2QzEyIDMuMjM4NTggMTQuMjM4NiAxIDE3IDFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRTdWJtaXQocGxhbm8pXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODQ0XzE4MzE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljg1Njg2IDQuMTQyNDlIMy44NTY4NkMzLjQwMjIxIDQuMTQyNDkgMi45NjYxNyA0LjMyMzExIDIuNjQ0NjggNC42NDQ2QzIuMzIzMTkgNC45NjYwOSAyLjE0MjU4IDUuNDAyMTIgMi4xNDI1OCA1Ljg1Njc4VjE3Ljg1NjhDMi4xNDI1OCAxOC4zMTE0IDIuMzIzMTkgMTguNzQ3NSAyLjY0NDY4IDE5LjA2OUMyLjk2NjE3IDE5LjM5MDUgMy40MDIyMSAxOS41NzExIDMuODU2ODYgMTkuNTcxMUgxNS44NTY5QzE2LjMxMTUgMTkuNTcxMSAxNi43NDc2IDE5LjM5MDUgMTcuMDY5IDE5LjA2OUMxNy4zOTA1IDE4Ljc0NzUgMTcuNTcxMiAxOC4zMTE0IDE3LjU3MTIgMTcuODU2OFYxMS44NTY4TTE2LjI4NTQgMi44NTY3OEMxNi42MjY0IDIuNTE1NzkgMTcuMDg4OSAyLjMyNDIyIDE3LjU3MTIgMi4zMjQyMkMxOC4wNTM0IDIuMzI0MjIgMTguNTE1OSAyLjUxNTc5IDE4Ljg1NjkgMi44NTY3OEMxOS4xOTc5IDMuMTk3NzcgMTkuMzg5NCAzLjY2MDI2IDE5LjM4OTQgNC4xNDI0OUMxOS4zODk0IDQuNjI0NzMgMTkuMTk3OSA1LjA4NzIyIDE4Ljg1NjkgNS40MjgyMUwxMC43MTQgMTMuNTcxMUw3LjI4NTQ0IDE0LjQyODJMOC4xNDI1OCAxMC45OTk2TDE2LjI4NTQgMi44NTY3OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg0NF8xODMxOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwLjU3MTRcIiBoZWlnaHQ9XCIyMC41NzE0XCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNDI3NzM0IDAuNzEzODY3KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgPCEtLSBNYW5hZ2UgUGxhbm9ncmFtIGdyaWQgdmlldyAtLT5cclxuICAgIDwhLS0gPG5nLXRlbXBsYXRlICNncmlkVmlldz5cclxuICAgICAgPHNlY3Rpb24gaWQ9XCJncmlkLXZpZXdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGd4LTYgZ3ktNFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCIgKm5nRm9yPVwibGV0IGZpeHR1cmUgb2YgZml4dHVyZVRlbXBsYXRlc0xpc3RcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbWdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbiBkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBweC00IHB5LTNcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktdGhyZWUtZG90cy12ZXJ0aWNhbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCI+RWRpdDwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIj5EdXBsaWNhdGU8L2E+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCI+RGVsZXRlPC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzPnt7IGZpeHR1cmUubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdDbGFzc109XCJmaXh0dXJlLnN0YXR1c1wiPnt7IGZpeHR1cmUuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViQnJhbmQgb2YgZml4dHVyZS5zdWJCcmFuZDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgIT0gMFwiIGNsYXNzPVwibWUtMiBjYXJkLXRhZ2xpbmVcIj4mIzgyMjY7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIj57eyBzdWJCcmFuZCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICAgIDxsaWItcGFnaW5hdGlvblxyXG4gICAgICBbaXRlbXNQZXJQYWdlXT1cImxpbWl0XCJcclxuICAgICAgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCJcclxuICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKm5nSWY9XCIhaXNQYWdlTG9hZGluZyAmJiBwbGFub2dyYW1zTGlzdC5sZW5ndGggIT09IDBcIlxyXG4gICAgPlxyXG4gICAgPC9saWItcGFnaW5hdGlvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|