tango-app-ui-store-ticket-infra 3.0.20-dev → 3.0.22-dev
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/analyze-report/analyze-report.component.mjs +16 -10
- package/esm2022/lib/components/create-ticket/create-ticket.component.mjs +16 -12
- package/esm2022/lib/components/raise-ticket/raise-ticket.component.mjs +13 -5
- package/esm2022/lib/components/tango-store-infra/tango-store-infra.component.mjs +5 -6
- package/esm2022/lib/components/ticket-infra/ticket-infra.component.mjs +134 -18
- package/esm2022/lib/services/excel.service.mjs +4 -4
- package/esm2022/lib/services/tickets.service.mjs +12 -4
- package/esm2022/lib/tango-store-infra-routing.module.mjs +5 -5
- package/esm2022/lib/tango-store-infra.module.mjs +6 -7
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs +941 -872
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs.map +1 -1
- package/lib/components/analyze-report/analyze-report.component.d.ts +3 -0
- package/lib/components/raise-ticket/raise-ticket.component.d.ts +1 -0
- package/lib/components/ticket-infra/ticket-infra.component.d.ts +13 -2
- package/lib/services/tickets.service.d.ts +3 -0
- package/lib/tango-store-infra.module.d.ts +10 -11
- package/package.json +1 -1
- package/esm2022/lib/components/data-mismatch/data-mismatch.component.mjs +0 -81
- package/lib/components/data-mismatch/data-mismatch.component.d.ts +0 -29
|
@@ -20,10 +20,12 @@ export class AnalyzeReportComponent {
|
|
|
20
20
|
ReconfirmationModal;
|
|
21
21
|
modalRef;
|
|
22
22
|
issuedData;
|
|
23
|
-
activeArray;
|
|
23
|
+
activeArray = [];
|
|
24
24
|
angleChange;
|
|
25
25
|
streamDetails;
|
|
26
26
|
activeStream;
|
|
27
|
+
successRate;
|
|
28
|
+
angleImage = '';
|
|
27
29
|
constructor(modalService, activeModal, service, cd) {
|
|
28
30
|
this.modalService = modalService;
|
|
29
31
|
this.activeModal = activeModal;
|
|
@@ -31,7 +33,7 @@ export class AnalyzeReportComponent {
|
|
|
31
33
|
this.cd = cd;
|
|
32
34
|
}
|
|
33
35
|
ngOnInit() {
|
|
34
|
-
this.selectedDate = this.analyzereport?.dateRange
|
|
36
|
+
this.selectedDate = this.analyzereport?.dateRange?.map((item) => { return { date: item }; });
|
|
35
37
|
this.activeDate = this.selectedDate[this.currentIdx].date;
|
|
36
38
|
this.getIssues();
|
|
37
39
|
}
|
|
@@ -47,9 +49,10 @@ export class AnalyzeReportComponent {
|
|
|
47
49
|
};
|
|
48
50
|
this.service.getInfraIssues(data).pipe(takeUntil(this.destroy$)).subscribe({
|
|
49
51
|
next: (res) => {
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
52
|
+
this.successRate = res?.data?.highCountTicketDetails;
|
|
53
|
+
this.streamDetails = res?.data?.streams;
|
|
54
|
+
this.activeStream = res?.data?.streams[0];
|
|
55
|
+
this.issuedData = res?.data?.result;
|
|
53
56
|
this.activeArray = this.issuedData.find((item) => item?.issueDate === this.activeDate);
|
|
54
57
|
this.selectedDate.forEach((item, index) => {
|
|
55
58
|
let issueDate = this.issuedData.find((issue) => issue.issueDate == item.date);
|
|
@@ -133,12 +136,15 @@ export class AnalyzeReportComponent {
|
|
|
133
136
|
confirmMore() {
|
|
134
137
|
this.activeModal.close();
|
|
135
138
|
}
|
|
136
|
-
|
|
137
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
139
|
+
handleImageError(event) {
|
|
140
|
+
this.angleImage = event?.type;
|
|
141
|
+
}
|
|
142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: AnalyzeReportComponent, deps: [{ token: i1.NgbModal }, { token: i1.NgbActiveModal }, { token: i2.TicketsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray && activeArray.length > 0\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <div class=\"rounded-2 overflow-hidden\">\r\n <span class=\"list-size \"> Camera Angle</span>\r\n <div *ngIf=\"angleImage !=='error'\" class=\"mt-3\">\r\n <img class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"handleImageError($event)\">\r\n </div>\r\n <div *ngIf=\"angleImage ==='error'\" class=\"w-100 h-250px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"(angleChange?.angleChangeImage || activeStream?.thumbnailImage) && angleImage !=='error'\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr> -->\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\" q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">{{successRate?.total}} Tickets</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Success Rate</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">{{successRate?.successRate}}%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:20px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
138
144
|
}
|
|
139
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: AnalyzeReportComponent, decorators: [{
|
|
140
146
|
type: Component,
|
|
141
|
-
args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"] }]
|
|
147
|
+
args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray && activeArray.length > 0\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <div class=\"rounded-2 overflow-hidden\">\r\n <span class=\"list-size \"> Camera Angle</span>\r\n <div *ngIf=\"angleImage !=='error'\" class=\"mt-3\">\r\n <img class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"handleImageError($event)\">\r\n </div>\r\n <div *ngIf=\"angleImage ==='error'\" class=\"w-100 h-250px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"(angleChange?.angleChangeImage || activeStream?.thumbnailImage) && angleImage !=='error'\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr> -->\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\" q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">{{successRate?.total}} Tickets</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Success Rate</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">{{successRate?.successRate}}%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:20px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"] }]
|
|
142
148
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i1.NgbActiveModal }, { type: i2.TicketsService }, { type: i0.ChangeDetectorRef }], propDecorators: { analyzereport: [{
|
|
143
149
|
type: Input
|
|
144
150
|
}], confirmationModal: [{
|
|
@@ -148,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
148
154
|
type: ViewChild,
|
|
149
155
|
args: ['ReconfirmationModal']
|
|
150
156
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sc0JBQXNCO0lBa0JoQjtJQUE4QjtJQUFtQztJQUErQjtJQWpCakgsWUFBWSxDQUFLO0lBQ2pCLFVBQVUsQ0FBSztJQUNmLFVBQVUsR0FBTyxDQUFDLENBQUM7SUFDVixhQUFhLENBQUs7SUFFVixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUVYLGlCQUFpQixDQUFNO0lBQ3JCLG1CQUFtQixDQUFNO0lBQzNELFFBQVEsQ0FBMEI7SUFDaEMsVUFBVSxDQUFNO0lBQ2hCLFdBQVcsQ0FBTTtJQUNqQixXQUFXLENBQU07SUFDakIsYUFBYSxDQUFNO0lBQ25CLFlBQVksQ0FBTTtJQUVwQixZQUFtQixZQUFzQixFQUFRLFdBQTBCLEVBQVMsT0FBc0IsRUFBUyxFQUFvQjtRQUFwSCxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFRLGdCQUFX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QUssRUFBRSxDQUFDO0lBQzNCLENBQUM7dUdBaklVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLDJVQ1puQyxtNVhBZ01FOzsyRkRwTFcsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt1S0FRckIsYUFBYTtzQkFBckIsS0FBSztnQkFLd0IsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCxWaWV3Q2hpbGQsSW5wdXQsQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwsIE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUmFpc2VUaWNrZXRDb21wb25lbnQgfSBmcm9tICcuLi9yYWlzZS10aWNrZXQvcmFpc2UtdGlja2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGlja2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hbmFseXplLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmFseXplUmVwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzZWxlY3RlZERhdGU6YW55O1xyXG4gIGFjdGl2ZURhdGU6YW55O1xyXG4gIGN1cnJlbnRJZHg6YW55ID0gMDtcclxuICBASW5wdXQoKSBhbmFseXplcmVwb3J0OmFueTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbkBWaWV3Q2hpbGQoJ2NvbmZpcm1hdGlvbk1vZGFsJykgY29uZmlybWF0aW9uTW9kYWw6IGFueTtcclxuQFZpZXdDaGlsZCgnUmVjb25maXJtYXRpb25Nb2RhbCcpIFJlY29uZmlybWF0aW9uTW9kYWw6IGFueTtcclxubW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgdW5kZWZpbmVkOyAgIFxyXG4gIGlzc3VlZERhdGE6IGFueTtcclxuICBhY3RpdmVBcnJheTogYW55O1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG5cclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlLm1hcCgoaXRlbTphbnkpID0+IHtyZXR1cm4ge2RhdGU6aXRlbX19KTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGU7XHJcbiAgdGhpcy5nZXRJc3N1ZXMoKTtcclxufVxyXG5cclxuaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG59XHJcblxyXG5nZXRJc3N1ZXMoKXtcclxuICBsZXQgZGF0YSA9IHtcclxuICAgIGZyb21EYXRlOnRoaXMuc2VsZWN0ZWREYXRlWzBdLmRhdGUsXHJcbiAgICB0b0RhdGU6dGhpcy5zZWxlY3RlZERhdGVbdGhpcy5zZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0uZGF0ZSxcclxuICAgIHN0b3JlSWQ6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICB9XHJcbiAgdGhpcy5zZXJ2aWNlLmdldEluZnJhSXNzdWVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RyZWFtRGV0YWlscyA9IHJlcy5kYXRhLnN0cmVhbXM7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3RyZWFtID0gcmVzLmRhdGEuc3RyZWFtc1swXTtcclxuICAgICAgdGhpcy5pc3N1ZWREYXRhID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICB0aGlzLmFjdGl2ZUFycmF5ID0gdGhpcy5pc3N1ZWREYXRhLmZpbmQoKGl0ZW06YW55KSA9PiBpdGVtPy5pc3N1ZURhdGUgPT09IHRoaXMuYWN0aXZlRGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmZvckVhY2goKGl0ZW06YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBpc3N1ZURhdGUgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXNzdWU6YW55KSA9PiBpc3N1ZS5pc3N1ZURhdGUgPT0gaXRlbS5kYXRlKTtcclxuICAgICAgICBpZihpc3N1ZURhdGUgJiYgaXNzdWVEYXRlPy5wcmltYXJ5SXNzdWUpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgZGF0ZTppdGVtLmRhdGUsXHJcbiAgICAgICAgICAgIHNob3dJY29uIDp0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICBcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZSgpIHtcclxuXHJcbiAgICB9LFxyXG4gIH0pXHJcbn1cclxuZ2V0Q2FtZXJhQW5nbGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgIFwiRGF0ZVwiOiB0aGlzLmFjdGl2ZURhdGUsXHJcbiAgICAgICAgXCJTdHJlYW1OYW1lXCI6IHRoaXMuYWN0aXZlU3RyZWFtPy5zdHJlYW1OYW1lLFxyXG4gICAgICAgIFwic3RvcmVJZFwiOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2UuY2FtZXJhQW5nbGVDaGFuZ2UoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9IHJlcy5kYXRhO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9JydcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICBcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7XHJcbiAgXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG59XHJcbmdldHN0cmVhbWJhc2VkQW5nbGUodmFsdWU6YW55KXtcclxuICB0aGlzLmFjdGl2ZVN0cmVhbSA9IHZhbHVlO1xyXG4gIHRoaXMuZ2V0Q2FtZXJhQW5nbGUoKVxyXG59XHJcbiAgcmFpc2VUaWNrZXQoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSYWlzZVRpY2tldENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZCxcclxuICAgICAgY291bnRUeXBlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlLFxyXG4gICAgICBzdG9yZU5hbWU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlLFxyXG4gICAgICBmZWF0dXJlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRGZWF0dXJlLFxyXG4gICAgICBlbWFpbDp0aGlzLmFuYWx5emVyZXBvcnQ/LmVtYWlsLFxyXG4gICAgICBkYXRlOnRoaXMuYWN0aXZlRGF0ZVxyXG4gICAgfSBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGNsb3NlVGlja2V0KCl7XHJcbiAgICB0aGlzLmdldElzc3VlcygpO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudElkeCA8IHRoaXMuc2VsZWN0ZWREYXRlPy5sZW5ndGggLSAxICYmIHRoaXMuY3VycmVudElkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudElkeCA9IHRoaXMuY3VycmVudElkeCArIDE7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZT10aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGVcclxuICAgIH1cclxuICB9XHJcbiAgY29uZmlybVNhdmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbiAgdmlld01vcmUoKXtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLlJlY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgfVxyXG4gIG9wZW5Qb3B1cCgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uZmlybU1vcmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBweS0wIHNjcm9sbC15XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvZWRnZWFwcCBpY29uLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BbmFseXplIFJlcG9ydDwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGUgcS1xdWVyeS10ZXh0XCI+WW91ciBRdWVyaWVzIHJlcG9ydGVkIGJlbG93IHN0b3JlcyBhcmUgZ290IHt7YW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlfX0ge3thbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmV9fSBvbiB7e3NlbGVjdGVkRGF0ZVswXT8uZGF0ZX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVbc2VsZWN0ZWREYXRlLmxlbmd0aCAtIDFdPy5kYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG15LTMgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGUgb2Ygc2VsZWN0ZWREYXRlO2xldCBpPWluZGV4XCIgY2xhc3M9XCJuYXYtaXRlbSBwZS1ub25lXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIiA+PGEgZGF0YS1icy10b2dnbGU9XCJ0YWJcIiBbbmdDbGFzc109XCJhY3RpdmVEYXRlID09PSBkYXRlLmRhdGUgPyAnYWN0aXZlJzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBidG4gYnRuLXNtIGJ0bi1jb2xvci1tdXRlZCBidG4tYWN0aXZlIGZ3LWJvbGRlciBweC0xMCBtZS0xIHNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgIHt7ZGF0ZS5kYXRlfX0gPHNwYW4gKm5nSWY9XCJhY3RpdmVEYXRlID09PSBkYXRlLmRhdGUgJiYgZGF0ZT8uc2hvd0ljb25cIiBjbGFzcz1cIm14LTJcIj48c3ZnIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHlsZT1cIm1peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMjVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODcxM18xMDM3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMjUgOFYxME0xMC4yNSAxMkgxMC4yNTVNMTUuMjUgMTBDMTUuMjUgMTIuNzYxNCAxMy4wMTE0IDE1IDEwLjI1IDE1QzcuNDg4NTggMTUgNS4yNSAxMi43NjE0IDUuMjUgMTBDNS4yNSA3LjIzODU4IDcuNDg4NTggNSAxMC4yNSA1QzEzLjAxMTQgNSAxNS4yNSA3LjIzODU4IDE1LjI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzNCNUZGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfODcxM18xMDM3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC4yNSA0KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjdGl2ZURhdGUgIT09IGRhdGUuZGF0ZSAmJiBkYXRlPy5zaG93SWNvblwiIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9XCJtaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjI1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg3MTNfMTAzNzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjI1IDhWMTBNMTAuMjUgMTJIMTAuMjU1TTE1LjI1IDEwQzE1LjI1IDEyLjc2MTQgMTMuMDExNCAxNSAxMC4yNSAxNUM3LjQ4ODU4IDE1IDUuMjUgMTIuNzYxNCA1LjI1IDEwQzUuMjUgNy4yMzg1OCA3LjQ4ODU4IDUgMTAuMjUgNUMxMy4wMTE0IDUgMTUuMjUgNy4yMzg1OCAxNS4yNSAxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg3MTNfMTAzNzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMjUgNClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cIm15LTMgbXQtNVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1pY29uLnN2Z1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJ3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9TdWNjZXNzdG9hc3QucG5nXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUFycmF5XCIgY2xhc3M9XCJ1bC1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+VGhlIHByaW1hcnkgaXNzdWUgd2FzIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWV9fTwvc3Bhbj4gd2hlcmVcclxuICAgICAgICAgICAgICAgICAgICB0aGUgPHNwYW4gKm5nRm9yPVwibGV0IGRhdGEgb2YgYWN0aXZlQXJyYXk/LnNlY29uZGFyeVJlYXNvbiBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+ZGF0YSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+IHdhcyB0aGUgc2Vjb25kYXJ5IGNvbmNlcm4uIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY3RpdmVBcnJheT8uZG93blRpbWUgPiAwXCIgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPlN0b3JlIEV4cGVyaWVuY2VkIGEgZG93bnRpbWUgb2YgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LmRvd25UaW1lfX0gbWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBkYXRlZCA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uaXNzdWVEYXRlfX08L3NwYW4+IHdoZXJlIFwiTiBGaWxlcyBMb3N0XCIgYW5kIHdhcyB1bmFibGUgdG8gc2VuZCB0byBvdXJcclxuICAgICAgICAgICAgICAgICAgICBjbG91ZCBkdWUgdG8gc3BlZWQgYmVpbmcgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnNwZWVkVGVzdH19IE1icHMuPC9zcGFuPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPldlIHdlcmUgYWJsZSB0byBjYXB0dXJlIG9ubHkgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPjEwMCBGb290ZmFsbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzcGl0ZSB0aGUgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPkludGVybmV0IHNsb3c8L3NwYW4+IGlzc3VlIDwvbGk+IC0tPlxyXG5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj4gIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWwgZnctYm9sZGVyIGZzLTMgbWItMVwiPlRhbmdvIFByZS1SZXF1aXNpdGUgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG1zLTJcIj5XYXJuaW5nPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LXNpemVcIj57e2FjdGl2ZVN0cmVhbT8uY2FtZXJhTnVtYmVyfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtM1wiPiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiYm90dG9tLWJvcmRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbmNlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkV4Y2VwdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+QWN0dWFsPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UmVzdWx0PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+Q2FtZXJhIEFuZ2xlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlID8gYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgOmFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2VcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbnN1Y2Nlc3Muc3ZnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+UmVzb2x1dGlvbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjEwODAgeCA5MDg8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57e2FuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uID8gYW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlY2hhbmdlXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25mYWlsZWQuc3ZnXCI+PC90ZD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uc3VjY2Vzcy5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5Eb3dudGltZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjQuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD45LjAwIEFNPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25kYW5nZXIuc3ZnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+IC0tPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0cmVhbURldGFpbHM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0cmVhbSBvZiBzdHJlYW1EZXRhaWxzXCIgW25nQ2xhc3NdPVwic3RyZWFtPy5zdHJlYW1OYW1lID09PSBhY3RpdmVTdHJlYW0/LnN0cmVhbU5hbWU/ICdiZy1kYXJrJyA6ICdiZy1vcGFjaXR5LTI1J1wiIGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctZGFyayBjdXJzb3ItcG9pbnRlciBteC0zXCIgKGNsaWNrKT1cImdldHN0cmVhbWJhc2VkQW5nbGUoc3RyZWFtKVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC00IGJvcmRlci0wIHB0LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbC10aXRsZSBtYi0xXCI+UXVlcmllcyBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3TW9yZSgpXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbWFyeS1saXN0XCI+VmlldyBtb3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC01IHEtcXVlcnktdGV4dFwiPkZyb20gdGhlIGRhdGUgb2YgaW5zdGFsbGF0aW9uIHRpbGwgdG9kYXkgdGhlIGJlbG93IHF1ZXJpZXMgc3VjY2VzcyByYXRlIGhhcyBiZWVuIG1haW50YWluZWQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweS0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWluLXctMTI1cHggcHktMyBweC00IG1lLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS1jb3VudFwiPjEwIFRpY2tldHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LXRpdGxlXCI+RWFybmluZ3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+NzglPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS01MDBcIj5FYXJuaW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMiBmdy1ib2xkZXJcIj40NTAwJDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJhaXNlVGlja2V0KClcIj5SYWlzZSBhIFRpY2tldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgIT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cImNsb3NlVGlja2V0KClcIj5BY2NlcHQgJiBDbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgPT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5VbnNhdmVkIENoYW5nZXM8L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPkRvIHlvdSB3YW50IHRvIGNsaXNlIHRoZSB0aWNrZXRzPzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJjb25maXJtU2F2ZSgpO21vZGFsLmNsb3NlKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI1JlY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5BcmUgeW91IHN1cmUsIHdhbnQgdG8gdmlldyBtb3JlIGRldGFpbHM/PC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj5JZiBzbyB5b3Ugd2lsbCByZWRpcmVjdCB0byBRdWVyaWVzIHN1bW1hcnkgJiBjYW7igJl0IGFibGUgdG8gY29tZSBiYWNrIHRvIHRoZSBzY3JlZW4uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1Nb3JlKCk7bW9kYWwuZGlzbWlzcygpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICAiXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sc0JBQXNCO0lBb0JoQjtJQUE4QjtJQUFtQztJQUErQjtJQW5CakgsWUFBWSxDQUFLO0lBQ2pCLFVBQVUsQ0FBSztJQUNmLFVBQVUsR0FBTyxDQUFDLENBQUM7SUFDVixhQUFhLENBQUs7SUFFVixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUVYLGlCQUFpQixDQUFNO0lBQ3JCLG1CQUFtQixDQUFNO0lBQzNELFFBQVEsQ0FBMEI7SUFDaEMsVUFBVSxDQUFNO0lBQ2hCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsV0FBVyxDQUFNO0lBQ2pCLGFBQWEsQ0FBTTtJQUNuQixZQUFZLENBQU07SUFDbEIsV0FBVyxDQUFNO0lBQ2pCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFFdkIsWUFBbUIsWUFBc0IsRUFBUSxXQUEwQixFQUFTLE9B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QUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFTO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztJQUNoQyxDQUFDO3dHQXhJVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwyVUNabkMseW9iQTBORTs7NEZEOU1XLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7dUtBUXJCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3dCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsVmlld0NoaWxkLElucHV0LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFJhaXNlVGlja2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYW5hbHl6ZS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl6ZVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWREYXRlOmFueTtcclxuICBhY3RpdmVEYXRlOmFueTtcclxuICBjdXJyZW50SWR4OmFueSA9IDA7XHJcbiAgQElucHV0KCkgYW5hbHl6ZXJlcG9ydDphbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5AVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbkBWaWV3Q2hpbGQoJ1JlY29uZmlybWF0aW9uTW9kYWwnKSBSZWNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbm1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDsgICBcclxuICBpc3N1ZWREYXRhOiBhbnk7XHJcbiAgYWN0aXZlQXJyYXk6IGFueSA9IFtdO1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG4gIHN1Y2Nlc3NSYXRlOiBhbnk7XHJcbiAgYW5nbGVJbWFnZTogYW55ID0gJyc7XHJcblxyXG5jb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwdWJsaWMgYWN0aXZlTW9kYWw6TmdiQWN0aXZlTW9kYWwscHJpdmF0ZSBzZXJ2aWNlOlRpY2tldHNTZXJ2aWNlLHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpe1xyXG5cclxufVxyXG5uZ09uSW5pdCgpe1xyXG4gIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5hbmFseXplcmVwb3J0Py5kYXRlUmFuZ2U/Lm1hcCgoaXRlbTphbnkpID0+IHtyZXR1cm4ge2RhdGU6aXRlbX19KTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGU7XHJcbiAgdGhpcy5nZXRJc3N1ZXMoKTtcclxufVxyXG5cclxuaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG59XHJcblxyXG5nZXRJc3N1ZXMoKXtcclxuICBsZXQgZGF0YSA9IHtcclxuICAgIGZyb21EYXRlOnRoaXMuc2VsZWN0ZWREYXRlWzBdLmRhdGUsXHJcbiAgICB0b0RhdGU6dGhpcy5zZWxlY3RlZERhdGVbdGhpcy5zZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0uZGF0ZSxcclxuICAgIHN0b3JlSWQ6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICB9XHJcbiAgdGhpcy5zZXJ2aWNlLmdldEluZnJhSXNzdWVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3VjY2Vzc1JhdGUgPSByZXM/LmRhdGE/LmhpZ2hDb3VudFRpY2tldERldGFpbHM7XHJcbiAgICAgIHRoaXMuc3RyZWFtRGV0YWlscyA9IHJlcz8uZGF0YT8uc3RyZWFtcztcclxuICAgICAgdGhpcy5hY3RpdmVTdHJlYW0gPSByZXM/LmRhdGE/LnN0cmVhbXNbMF07XHJcbiAgICAgIHRoaXMuaXNzdWVkRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICB0aGlzLmFjdGl2ZUFycmF5ID0gdGhpcy5pc3N1ZWREYXRhLmZpbmQoKGl0ZW06YW55KSA9PiBpdGVtPy5pc3N1ZURhdGUgPT09IHRoaXMuYWN0aXZlRGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmZvckVhY2goKGl0ZW06YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBpc3N1ZURhdGUgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXNzdWU6YW55KSA9PiBpc3N1ZS5pc3N1ZURhdGUgPT0gaXRlbS5kYXRlKTtcclxuICAgICAgICBpZihpc3N1ZURhdGUgJiYgaXNzdWVEYXRlPy5wcmltYXJ5SXNzdWUpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgZGF0ZTppdGVtLmRhdGUsXHJcbiAgICAgICAgICAgIHNob3dJY29uIDp0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICBcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZSgpIHtcclxuXHJcbiAgICB9LFxyXG4gIH0pXHJcbn1cclxuZ2V0Q2FtZXJhQW5nbGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgIFwiRGF0ZVwiOiB0aGlzLmFjdGl2ZURhdGUsXHJcbiAgICAgICAgXCJTdHJlYW1OYW1lXCI6IHRoaXMuYWN0aXZlU3RyZWFtPy5zdHJlYW1OYW1lLFxyXG4gICAgICAgIFwic3RvcmVJZFwiOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2UuY2FtZXJhQW5nbGVDaGFuZ2UoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9IHJlcy5kYXRhO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9JydcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICBcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7XHJcbiAgXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG59XHJcbmdldHN0cmVhbWJhc2VkQW5nbGUodmFsdWU6YW55KXtcclxuICB0aGlzLmFjdGl2ZVN0cmVhbSA9IHZhbHVlO1xyXG4gIHRoaXMuZ2V0Q2FtZXJhQW5nbGUoKVxyXG59XHJcbiAgcmFpc2VUaWNrZXQoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSYWlzZVRpY2tldENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZCxcclxuICAgICAgY291bnRUeXBlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlLFxyXG4gICAgICBzdG9yZU5hbWU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlLFxyXG4gICAgICBmZWF0dXJlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRGZWF0dXJlLFxyXG4gICAgICBlbWFpbDp0aGlzLmFuYWx5emVyZXBvcnQ/LmVtYWlsLFxyXG4gICAgICBkYXRlOnRoaXMuYWN0aXZlRGF0ZVxyXG4gICAgfSBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGNsb3NlVGlja2V0KCl7XHJcbiAgICB0aGlzLmdldElzc3VlcygpO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudElkeCA8IHRoaXMuc2VsZWN0ZWREYXRlPy5sZW5ndGggLSAxICYmIHRoaXMuY3VycmVudElkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudElkeCA9IHRoaXMuY3VycmVudElkeCArIDE7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZT10aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGVcclxuICAgIH1cclxuICB9XHJcbiAgY29uZmlybVNhdmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbiAgdmlld01vcmUoKXtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLlJlY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgfVxyXG4gIG9wZW5Qb3B1cCgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uZmlybU1vcmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUltYWdlRXJyb3IoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuYW5nbGVJbWFnZSA9IGV2ZW50Py50eXBlO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIHB5LTAgc2Nyb2xsLXlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9lZGdlYXBwIGljb24uc3ZnXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkFuYWx5emUgUmVwb3J0PC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZSBxLXF1ZXJ5LXRleHRcIj5Zb3VyIFF1ZXJpZXMgcmVwb3J0ZWQgYmVsb3cgc3RvcmVzIGFyZSBnb3Qge3thbmFseXplcmVwb3J0Py5jb3VudFR5cGV9fSB7e2FuYWx5emVyZXBvcnQ/LmZpbHRlcmVkRmVhdHVyZX19IG9uIHt7c2VsZWN0ZWREYXRlWzBdPy5kYXRlfX0gdG9cclxuICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRGF0ZVtzZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0/LmRhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbXktMyB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBzZWxlY3RlZERhdGU7bGV0IGk9aW5kZXhcIiBjbGFzcz1cIm5hdi1pdGVtIHBlLW5vbmVcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiID48YSBkYXRhLWJzLXRvZ2dsZT1cInRhYlwiIFtuZ0NsYXNzXT1cImFjdGl2ZURhdGUgPT09IGRhdGUuZGF0ZSA/ICdhY3RpdmUnOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGJ0biBidG4tc20gYnRuLWNvbG9yLW11dGVkIGJ0bi1hY3RpdmUgZnctYm9sZGVyIHB4LTEwIG1lLTEgc2hvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAge3tkYXRlLmRhdGV9fSA8c3BhbiAqbmdJZj1cImFjdGl2ZURhdGUgPT09IGRhdGUuZGF0ZSAmJiBkYXRlPy5zaG93SWNvblwiIGNsYXNzPVwibXgtMlwiPjxzdmcgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHN0eWxlPVwibWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4yNVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMTBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF84NzEzXzEwMzc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4yNSA4VjEwTTEwLjI1IDEySDEwLjI1NU0xNS4yNSAxMEMxNS4yNSAxMi43NjE0IDEzLjAxMTQgMTUgMTAuMjUgMTVDNy40ODg1OCAxNSA1LjI1IDEyLjc2MTQgNS4yNSAxMEM1LjI1IDcuMjM4NTggNy40ODg1OCA1IDEwLjI1IDVDMTMuMDExNCA1IDE1LjI1IDcuMjM4NTggMTUuMjUgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NzEzXzEwMzc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjI1IDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSAhPT0gZGF0ZS5kYXRlICYmIGRhdGU/LnNob3dJY29uXCIgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHlsZT1cIm1peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMjVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNGMkY0RjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODcxM18xMDM3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMjUgOFYxME0xMC4yNSAxMkgxMC4yNTVNMTUuMjUgMTBDMTUuMjUgMTIuNzYxNCAxMy4wMTE0IDE1IDEwLjI1IDE1QzcuNDg4NTggMTUgNS4yNSAxMi43NjE0IDUuMjUgMTBDNS4yNSA3LjIzODU4IDcuNDg4NTggNSAxMC4yNSA1QzEzLjAxMTQgNSAxNS4yNSA3LjIzODU4IDE1LjI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfODcxM18xMDM3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC4yNSA0KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPC9hPjwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlXCIgY2xhc3M9XCJteS0zIG10LTVcIj5cclxuICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXkgJiYgYWN0aXZlQXJyYXkubGVuZ3RoID4gMFwiIGNsYXNzPVwidWwtbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlXCIgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPlRoZSBwcmltYXJ5IGlzc3VlIHdhcyA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlfX08L3NwYW4+IHdoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIDxzcGFuICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFjdGl2ZUFycmF5Py5zZWNvbmRhcnlSZWFzb24gbGV0IGxhc3QgPSBsYXN0XCIgY2xhc3M9XCJmdy1ib2xkLTcwMFwiPmRhdGEgPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiw8L3NwYW4+PC9zcGFuPiB3YXMgdGhlIHNlY29uZGFyeSBjb25jZXJuLiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlQXJyYXk/LmRvd25UaW1lID4gMFwiIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5TdG9yZSBFeHBlcmllbmNlZCBhIGRvd250aW1lIG9mIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5kb3duVGltZX19IG1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZWQgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/Lmlzc3VlRGF0ZX19PC9zcGFuPiB3aGVyZSBcIk4gRmlsZXMgTG9zdFwiIGFuZCB3YXMgdW5hYmxlIHRvIHNlbmQgdG8gb3VyXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvdWQgZHVlIHRvIHNwZWVkIGJlaW5nIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5zcGVlZFRlc3R9fSBNYnBzLjwvc3Bhbj4gPC9saT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5XZSB3ZXJlIGFibGUgdG8gY2FwdHVyZSBvbmx5IDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj4xMDAgRm9vdGZhbGxzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRlc3BpdGUgdGhlIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj5JbnRlcm5ldCBzbG93PC9zcGFuPiBpc3N1ZSA8L2xpPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+ICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWxhYmVsIGZ3LWJvbGRlciBmcy0zIG1iLTFcIj5UYW5nbyBQcmUtUmVxdWlzaXRlIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyBtcy0yXCI+V2FybmluZzwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1zaXplXCI+e3thY3RpdmVTdHJlYW0/LmNhbWVyYU51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG14LTUgcHgtMlwiPiBcclxuICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTIgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LXNpemUgXCI+IENhbWVyYSBBbmdsZTwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYW5nbGVJbWFnZSAhPT0nZXJyb3InXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMCBtaC0xNTBweFwiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgPyBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA6YWN0aXZlU3RyZWFtPy50aHVtYm5haWxJbWFnZVwiIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKCRldmVudClcIj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYW5nbGVJbWFnZSA9PT0nZXJyb3InXCIgY2xhc3M9XCJ3LTEwMCBoLTI1MHB4IHJvdW5kZWQtMyBvdmVyZmxvdy1oaWRkZW4gTm9wcmV2aWV3IGFsaWduLWNvbnRlbnQtY2VudGVyIG10LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdUaXRsZSB0ZXh0LWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICBQcmV2aWV3IG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlld3N1YlRpdGxlIGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICBUaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHAtMFwiICAqbmdJZj1cIihhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSB8fCBhY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlKSAmJiBhbmdsZUltYWdlICE9PSdlcnJvcidcIj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG0tMCBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJnLWxpZ2h0LXByaW1hcnkgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsc3BhblwiPkV4cGVjdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbS0wIHBzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYmctbGlnaHQtcHJpbWFyeSBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWxzcGFuXCI+QWN0dWFsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVwb25zaXZlIG10LTVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJib3R0b20tYm9yZGVyIHctMTAwXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW5zdGFuY2VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+RXhjZXB0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5BY3R1YWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5SZXN1bHQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkNhbWVyYSBBbmdsZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgW3NyY109XCJhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA/IGFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlIDphY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhYW5nbGVDaGFuZ2U/LmFuZ2xlY2hhbmdlXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25zdWNjZXNzLnN2Z1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlY2hhbmdlXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25mYWlsZWQuc3ZnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5SZXNvbHV0aW9uPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+MTA4MCB4IDkwODwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7YW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gPyBhbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25zdWNjZXNzLnN2Z1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkRvd250aW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+NC4wMCBBTTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjkuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmRhbmdlci5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj4gLS0+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3RyZWFtRGV0YWlscz8ubGVuZ3RoXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RyZWFtIG9mIHN0cmVhbURldGFpbHNcIiBbbmdDbGFzc109XCJzdHJlYW0/LnN0cmVhbU5hbWUgPT09IGFjdGl2ZVN0cmVhbT8uc3RyZWFtTmFtZT8gJ2JnLWRhcmsnIDogJ2JnLW9wYWNpdHktMjUnXCIgY2xhc3M9XCJ3LTEwcHggaC0xMHB4IHJvdW5kZWQtNSBiZy1kYXJrIGN1cnNvci1wb2ludGVyIG14LTNcIiAoY2xpY2spPVwiZ2V0c3RyZWFtYmFzZWRBbmdsZShzdHJlYW0pXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBib3JkZXItMCBwdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWwtdGl0bGUgbWItMVwiPlF1ZXJpZXMgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld01vcmUoKVwiIGNsYXNzPVwiY2FyZC10b29sYmFyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW1hcnktbGlzdCBjdXJzb3ItcG9pbnRlclwiPlZpZXcgbW9yZSBEZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIHEtcXVlcnktdGV4dFwiPkZyb20gdGhlIGRhdGUgb2YgaW5zdGFsbGF0aW9uIHRpbGwgdG9kYXkgdGhlIGJlbG93IHF1ZXJpZXMgc3VjY2VzcyByYXRlIGhhcyBiZWVuIG1haW50YWluZWQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweS0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWluLXctMTI1cHggcHktMyBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWhpc3RvcnktdGl0bGVcIj5FYXJuaW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWhpc3RvcnktY291bnRcIj57e3N1Y2Nlc3NSYXRlPy50b3RhbH19IFRpY2tldHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSAhPT0gJ251bGwnICYmIHN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSA+IDAgJiYgc3VjY2Vzc1JhdGU/LnN1Y2Nlc3NSYXRlICE9PSAnJ1wiIGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWhpc3RvcnktdGl0bGVcIj5TdWNjZXNzIFJhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+e3tzdWNjZXNzUmF0ZT8uc3VjY2Vzc1JhdGV9fSU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1ncmF5LTUwMFwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0yIGZ3LWJvbGRlclwiPjQ1MDAkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmFpc2VUaWNrZXQoKVwiPlJhaXNlIGEgVGlja2V0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSAhPT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLTNcIiAoY2xpY2spPVwiY2xvc2VUaWNrZXQoKVwiPkFjY2VwdCAmIENsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSA9PT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLTNcIiAoY2xpY2spPVwib3BlblBvcHVwKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPlVuc2F2ZWQgQ2hhbmdlczwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzdWItaGVhZGVyIGZ3LWJvbGQtNDAwXCI+RG8geW91IHdhbnQgdG8gY2xpc2UgdGhlIHRpY2tldHM/PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1TYXZlKCk7bW9kYWwuY2xvc2UoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjUmVjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPkFyZSB5b3Ugc3VyZSwgd2FudCB0byB2aWV3IG1vcmUgZGV0YWlscz88L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPklmIHNvIHlvdSB3aWxsIHJlZGlyZWN0IHRvIFF1ZXJpZXMgc3VtbWFyeSAmIGNhbuKAmXQgYWJsZSB0byBjb21lIGJhY2sgdG8gdGhlIHNjcmVlbi48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTUwIG1zLTJcIiAoY2xpY2spPVwiY29uZmlybU1vcmUoKTttb2RhbC5kaXNtaXNzKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gICJdfQ==
|