tango-app-ui-store-ticket-infra 3.3.0-beta.21 → 3.7.0-beta.10

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.
@@ -0,0 +1,200 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { Subject, takeUntil } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/tickets.service";
5
+ import * as i2 from "tango-app-ui-global";
6
+ import * as i3 from "tango-app-ui-shared";
7
+ import * as i4 from "@angular/common";
8
+ export class FootfallDirectoryComponent {
9
+ ticketservice;
10
+ cd;
11
+ gs;
12
+ toastService;
13
+ selectedTab;
14
+ constructor(ticketservice, cd, gs, toastService) {
15
+ this.ticketservice = ticketservice;
16
+ this.cd = cd;
17
+ this.gs = gs;
18
+ this.toastService = toastService;
19
+ }
20
+ userType;
21
+ headerFilter;
22
+ clientId;
23
+ destroy$ = new Subject();
24
+ footfallList_req;
25
+ ngOnInit() {
26
+ this.loading = true;
27
+ let userInfo = JSON.parse(localStorage.getItem("user-info") || "{}");
28
+ this.userType = userInfo.userType;
29
+ this.gs.dataRangeValue
30
+ .pipe(takeUntil(this.destroy$))
31
+ .subscribe((data) => {
32
+ if (data != null) {
33
+ this.headerFilter = data;
34
+ this.footfallList_req = {
35
+ client: this.headerFilter?.client,
36
+ fromDate: this.headerFilter?.date?.startDate,
37
+ toDate: this.headerFilter?.date?.endDate,
38
+ };
39
+ this.getTicketList();
40
+ this.cd.detectChanges();
41
+ }
42
+ });
43
+ }
44
+ ngOnDestroy() {
45
+ this.destroy$.next(true);
46
+ this.destroy$.complete();
47
+ }
48
+ loading = false;
49
+ noData = false;
50
+ searchValue = "";
51
+ offset = 1;
52
+ limit = 10;
53
+ isExport = false;
54
+ footfallListData = [];
55
+ totalCount = 0;
56
+ getTicketList() {
57
+ this.loading = true;
58
+ this.footfallListData = [];
59
+ this.footfallTicketsData = [];
60
+ this.searchValue = this.searchValue?.trim() || '';
61
+ this.offset = this.offset || 1;
62
+ this.limit = this.limit || 10;
63
+ this.isExport = false;
64
+ this.ticketservice
65
+ .getTicketListApi(this.footfallList_req.client, this.headerFilter?.store, this.footfallList_req.fromDate, this.footfallList_req.toDate, this.searchValue, this.limit, this.offset, this.isExport)
66
+ .pipe(takeUntil(this.destroy$))
67
+ .subscribe({
68
+ next: (res) => {
69
+ if (res && res.code === 200) {
70
+ this.noData = false;
71
+ this.loading = false;
72
+ this.footfallListData = res?.data?.result;
73
+ this.totalCount = res?.data?.count;
74
+ this.dataStoreView(this.footfallListData[0]?._source);
75
+ }
76
+ else {
77
+ this.noData = true;
78
+ this.loading = false;
79
+ this.footfallListData = [];
80
+ }
81
+ this.cd.detectChanges();
82
+ },
83
+ error: (err) => {
84
+ this.noData = true;
85
+ this.loading = false;
86
+ },
87
+ complete: () => {
88
+ this.loading = false;
89
+ },
90
+ });
91
+ }
92
+ footfallNoData = false;
93
+ footfallLoading = false;
94
+ footfallTicketsData = [];
95
+ imageUrl = '';
96
+ storeIdValue;
97
+ footfalloffset = 1;
98
+ footfalllimit = 10;
99
+ totalItemsFootfall = 0;
100
+ dataStoreView(data) {
101
+ this.footfallNoData = false;
102
+ this.footfallLoading = true;
103
+ this.imageUrl = this.ticketservice?.footfallCDN;
104
+ const storeId = data.storeId || this.storeIdValue;
105
+ const fromDate = this.footfallList_req?.fromDate;
106
+ const toDate = this.footfallList_req?.toDate;
107
+ const offset = this.footfalloffset;
108
+ const limit = this.footfalllimit;
109
+ const dateString = data?.dateString;
110
+ const revopsType = '';
111
+ const selectedStatus = '';
112
+ const actionStatus = '';
113
+ this.ticketservice
114
+ .getTicketsApi(storeId, fromDate, toDate, revopsType, selectedStatus, actionStatus, offset, limit, dateString)
115
+ .pipe(takeUntil(this.destroy$))
116
+ .subscribe({
117
+ next: (res) => {
118
+ if (res && res.code === 200) {
119
+ if (res?.data?.result?.length === 0) {
120
+ this.footfallTicketsData = [];
121
+ this.footfallNoData = true;
122
+ this.footfallLoading = false;
123
+ }
124
+ else {
125
+ this.footfallTicketsData = res?.data?.result ?? [];
126
+ this.totalItemsFootfall = res?.data?.count;
127
+ this.footfallNoData = false;
128
+ this.footfallLoading = false;
129
+ }
130
+ }
131
+ else {
132
+ this.footfallTicketsData = [];
133
+ this.footfallNoData = true;
134
+ this.footfallLoading = false;
135
+ }
136
+ },
137
+ error: () => {
138
+ this.footfallTicketsData = [];
139
+ this.footfallNoData = true;
140
+ this.footfallLoading = false;
141
+ },
142
+ complete: () => {
143
+ this.cd.detectChanges();
144
+ },
145
+ });
146
+ }
147
+ selectCard = 0;
148
+ ticketId;
149
+ ShowTicket(value, index) {
150
+ this.selectCard = index;
151
+ this.ticketId = value.ticketId;
152
+ this.dataStoreView(value);
153
+ }
154
+ getFormattedEntryTime(entryTime) {
155
+ if (!entryTime)
156
+ return '-';
157
+ const [hours, minutes, seconds] = entryTime.split(':').map(Number);
158
+ const date = new Date();
159
+ date.setHours(hours, minutes, seconds);
160
+ return date.toLocaleTimeString('en-US', {
161
+ hour: '2-digit',
162
+ minute: '2-digit',
163
+ // second: '2-digit',
164
+ hour12: true
165
+ });
166
+ }
167
+ getTimeAgo(date) {
168
+ const now = new Date();
169
+ const past = new Date(date);
170
+ const diffInSeconds = Math.floor((now.getTime() - past.getTime()) / 1000);
171
+ if (isNaN(diffInSeconds))
172
+ return '';
173
+ if (diffInSeconds < 60) {
174
+ return `${diffInSeconds} sec ago`;
175
+ }
176
+ const diffInMinutes = Math.floor(diffInSeconds / 60);
177
+ if (diffInMinutes < 60) {
178
+ return `${diffInMinutes} min ago`;
179
+ }
180
+ const diffInHours = Math.floor(diffInMinutes / 60);
181
+ if (diffInHours < 24) {
182
+ return `${diffInHours} hr${diffInHours > 1 ? 's' : ''} ago`;
183
+ }
184
+ const diffInDays = Math.floor(diffInHours / 24);
185
+ if (diffInDays < 7) {
186
+ return `${diffInDays} day${diffInDays > 1 ? 's' : ''} ago`;
187
+ }
188
+ // Fallback: return actual date if older than a week
189
+ return past.toLocaleDateString();
190
+ }
191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FootfallDirectoryComponent, deps: [{ token: i1.TicketsService }, { token: i0.ChangeDetectorRef }, { token: i2.GlobalStateService }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Component });
192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FootfallDirectoryComponent, selector: "lib-footfall-directory", inputs: { selectedTab: "selectedTab" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Footfall Directory</span>\r\n <span class=\"text-sub mb-2\">\r\n An Summary of all the tickets for\r\n {{ headerFilter?.date?.startDate === headerFilter?.date?.endDate\r\n ? (headerFilter?.date?.endDate | customDateFormat)\r\n : (headerFilter?.date?.startDate | customDateFormat) + ' - ' + (headerFilter?.date?.endDate |\r\n customDateFormat) }}\r\n </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-0\">\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let ticket of footfallListData; let i = index\" class=\"issuecard w-100 mb-5\"\r\n [ngClass]=\"(selectCard ? selectCard : 0) === i ? 'active' : ''\">\r\n <section *ngIf=\"ticket?._source as source\" (click)=\"ShowTicket(source,i)\" class=\"cursor-pointer\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src='./assets/tango/Images/ticket.svg'><span\r\n class=\"mx-2\">{{source?.ticketId}}</span></span>\r\n <span\r\n [ngClass]=\"source.status === 'closed' ? 'badge-secondary' :(source.status === 'open' ? 'badge-light-primary':'badge-secondary')\"\r\n class=\"badge mx-2\">{{source?.status | titlecase}}</span>\r\n </div>\r\n\r\n <div class=\"text-footfall\">Ticket raised for mismatch in footfall data.</div>\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><span class=\"m-2\"></span></span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.3335V4.00016M5.33333 1.3335V4.00016M2 6.66683H14M3.33333 2.66683H12.6667C13.403 2.66683 14 3.26378 14 4.00016V13.3335C14 14.0699 13.403 14.6668 12.6667 14.6668H3.33333C2.59695 14.6668 2 14.0699 2 13.3335V4.00016C2 3.26378 2.59695 2.66683 3.33333 2.66683Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"text-desc mx-2\">{{source?.createdAt | date:'dd MMM,yyyy'}}</span><span class=\"text-desc\" *ngIf=\"source.status === 'closed'\">, </span>\r\n <span *ngIf=\"source.status === 'closed'\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.3335V4.00016M5.33333 1.3335V4.00016M2 6.66683H14M3.33333 2.66683H12.6667C13.403 2.66683 14 3.26378 14 4.00016V13.3335C14 14.0699 13.403 14.6668 12.6667 14.6668H3.33333C2.59695 14.6668 2 14.0699 2 13.3335V4.00016C2 3.26378 2.59695 2.66683 3.33333 2.66683Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"text-desc ms-2\">{{source?.updatedAt | date:'dd MMM,yyyy'}}</span></span></span>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <!-- <div class=\"maincard-content\">\r\n <div class=\"row p-10\"> -->\r\n <div class=\"col-sm-6 \">\r\n <ng-container *ngIf=\"footfallLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"footfallNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngIf=\"!footfallLoading && !footfallNoData\" class=\"card-body mt-3 py-0 pe-1\">\r\n <ng-container *ngFor=\"let ticket of footfallTicketsData\">\r\n <div *ngIf=\"ticket?._source as source\"\r\n class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src='./assets/tango/Images/ticket.svg'><span class=\"mx-2\">{{ticketId ? ticketId\r\n :source?.ticketId}}</span></span>\r\n <span\r\n [ngClass]=\"source?.status === 'close' ? 'badge-light-success' :(source?.status === 'open' ? 'badge-light-primary':'badge-secondary')\"\r\n class=\"badge mx-2\">{{source?.status | titlecase}}</span>\r\n </div>\r\n <section *ngIf=\"ticket?._source as source\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n \r\n <span>\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M30.4932 28.3351L29.6867 27.5286L20.9965 18.8384L23.5744 16.2605L24.1921 15.6416C24.251 15.5818 24.2843 15.5014 24.2847 15.4174C24.2845 15.3759 24.2761 15.3349 24.26 15.2966C24.2439 15.2584 24.2204 15.2237 24.1909 15.1945L23.572 14.5756L20.8381 11.8368L20.2192 11.218C20.19 11.1882 20.1551 11.1645 20.1166 11.1484C20.0781 11.1323 20.0368 11.124 19.995 11.124C19.9533 11.124 19.912 11.1323 19.8735 11.1484C19.835 11.1645 19.8001 11.1882 19.7709 11.218L19.152 11.8381L15.8016 15.1884C15.7719 15.2176 15.7483 15.2523 15.7322 15.2907C15.7161 15.3291 15.7077 15.3703 15.7077 15.412C15.7077 15.4536 15.7161 15.4948 15.7322 15.5332C15.7483 15.5716 15.7719 15.6064 15.8016 15.6355L19.0021 18.8372L10.3107 27.5286L9.50787 28.3351C9.44834 28.3941 9.41461 28.4743 9.41406 28.5581C9.41441 28.6391 9.4453 28.717 9.50056 28.7762C9.53007 28.8077 9.56573 28.8328 9.60533 28.85C9.64494 28.8672 9.68765 28.8761 9.73082 28.8761H17.5487C17.6326 28.8757 17.713 28.8423 17.7723 28.7829C17.8316 28.7236 17.8651 28.6432 17.8654 28.5593V27.782C17.8654 27.6979 17.8321 27.6172 17.7727 27.5576C17.7134 27.498 17.6328 27.4644 17.5487 27.464H12.3709L19.9987 19.8362L27.6265 27.464H22.4036C22.3195 27.4644 22.2389 27.498 22.1796 27.5576C22.1202 27.6172 22.0869 27.6979 22.0869 27.782V28.5593C22.0867 28.601 22.0949 28.6424 22.111 28.6809C22.1272 28.7194 22.1508 28.7543 22.1807 28.7835C22.2399 28.8426 22.32 28.8758 22.4036 28.8761H30.269C30.3124 28.8762 30.3553 28.8674 30.3952 28.8502C30.435 28.833 30.4708 28.8078 30.5005 28.7762C30.5574 28.7164 30.5885 28.6367 30.5872 28.5542C30.5858 28.4716 30.552 28.393 30.4932 28.3351ZM19.9938 12.9906L22.4219 15.4187L19.9999 17.8407L17.5718 15.4126L19.9938 12.9906Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n\r\n </span>\r\n <!-- <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\"> -->\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n\r\n <div class=\"pt-0 w-100\">\r\n <div >\r\n <div class=\"email-val my-3\">{{source?.email | titlecase}} <span class=\"timestamp ms-2\">{{getTimeAgo(source?.createdAt)}}</span></div>\r\n <div class=\"headingtext px-3 text-capitalize\">Ticket raised for mismatch in footfall\r\n data.</div>\r\n <div class=\"timingtext px-3 pt-1\">The issue was identified during data validation,\r\n and the below issues need to be reviewed and confirmed for accuracy</div>\r\n </div>\r\n \r\n </div>\r\n\r\n </section>\r\n\r\n\r\n <div *ngIf=\"ticket?._source as source\" class=\"border-totalfootfall\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-5\">\r\n <div class=\"my-0\">\r\n <h5 class=\"card-title\">{{ source?.footfallCount !== null && source?.footfallCount !== undefined ? \r\n source?.footfallCount : 0 }} <span class=\"sub-header ms-2\">Total\r\n Footfall</span></h5>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-2 px-5\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.duplicateCount !== null && source?.duplicateCount !== undefined ?\r\n source?.duplicateCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Duplicates</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.employeeCount !== null && source?.employeeCount !== undefined ?\r\n source?.employeeCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Employee/Staff</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.junkCount !== null && source?.junkCount !== undefined ?\r\n source?.junkCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Junk</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.houseKeepingCount !== null && source?.houseKeepingCount !== undefined ?\r\n source?.houseKeepingCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">House Keeping</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 my-3 px-0\">\r\n <h5 class=\"card-title\"> {{\r\n (source.footfallCount || 0) -\r\n ((source.houseKeepingCount || 0) +\r\n (source.employeeCount || 0) + (source.junkCount || 0) +\r\n (source.duplicateCount || 0))\r\n }}</h5>\r\n <span class=\"card-title-sub-header\">Actual footfall</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"ticket?._source as source\" class=\"my-4\">\r\n <h3 class=\"text-lg font-semibold mb-2\"> <span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_730_76157)\">\r\n <path\r\n d=\"M3.75 11.25H3C2.60218 11.25 2.22064 11.092 1.93934 10.8107C1.65804 10.5294 1.5 10.1478 1.5 9.75V3C1.5 2.60218 1.65804 2.22064 1.93934 1.93934C2.22064 1.65804 2.60218 1.5 3 1.5H9.75C10.1478 1.5 10.5294 1.65804 10.8107 1.93934C11.092 2.22064 11.25 2.60218 11.25 3V3.75M8.25 6.75H15C15.8284 6.75 16.5 7.42157 16.5 8.25V15C16.5 15.8284 15.8284 16.5 15 16.5H8.25C7.42157 16.5 6.75 15.8284 6.75 15V8.25C6.75 7.42157 7.42157 6.75 8.25 6.75Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_730_76157\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Duplicates</h3>\r\n\r\n\r\n <div *ngFor=\"let original of source.duplicateImages\" class=\"mb-4\">\r\n <div *ngIf=\"source?.duplicateImages?.length\" class=\"duplicate-head my-2\">Original image\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-5 relative\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3\">\r\n\r\n <img [src]=\"imageUrl + original.filePath\" alt=\"\"\r\n class=\"w-100 rounded border\" />\r\n <div class=\"desc-title ms-2 mt-1\">Temp ID: {{ original.tempId }}\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{ original.entryTime }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"duplicate-head my-2\">Duplicates</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of original.data\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\"\r\n class=\"w-100 mb-2 rounded border\" />\r\n <div class=\"desc-title ms-2\">Temp ID: {{ img.tempId }}\r\n <span class=\"ms-2\" *ngIf=\"source?.duplicateStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.duplicateStatus === 'approved' || source?.duplicateStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.duplicateStatus === 'approved' || source?.duplicateStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{ getFormattedEntryTime(img?.entryTime) }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"source?.duplicateImages?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.employee?.length\" class=\"duplicate-head text-lg my-3\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\">\r\n<path d=\"M12.75 14.75V13.25C12.75 12.4544 12.4339 11.6913 11.8713 11.1287C11.3087 10.5661 10.5456 10.25 9.75 10.25H3.75C2.95435 10.25 2.19129 10.5661 1.62868 11.1287C1.06607 11.6913 0.75 12.4544 0.75 13.25V14.75M17.25 14.75V13.25C17.2495 12.5853 17.0283 11.9396 16.621 11.4142C16.2138 10.8889 15.6436 10.5137 15 10.3475M12 1.3475C12.6453 1.51273 13.2173 1.88803 13.6257 2.41423C14.0342 2.94044 14.2559 3.58762 14.2559 4.25375C14.2559 4.91988 14.0342 5.56706 13.6257 6.09327C13.2173 6.61947 12.6453 6.99477 12 7.16M9.75 4.25C9.75 5.90685 8.40685 7.25 6.75 7.25C5.09315 7.25 3.75 5.90685 3.75 4.25C3.75 2.59315 5.09315 1.25 6.75 1.25C8.40685 1.25 9.75 2.59315 9.75 4.25Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>Employee/Staff</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source.employee\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2\">Temp ID: {{img.tempId}} \r\n <span class=\"ms-2\" *ngIf=\"source?.employeeStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.employeeStatus === 'approved' || source?.employeeStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.employeeStatus === 'approved' || source?.employeeStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n</div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img?.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"source?.employee?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.junk?.length\" class=\"duplicate-head text-lg my-3\"><span class=\"me-2\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>Junk</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source?.junk\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2\">Temp ID: {{img.tempId}} \r\n <span class=\"ms-2\" *ngIf=\"source?.junkStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.junkStatus === 'approved' || source?.junkStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.junkStatus === 'approved' || source?.junkStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n</div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img?.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"source?.junk?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.houseKeeping?.length\" class=\"duplicate-head my-3\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.51995 0.613065C8.33739 -0.204355 9.66267 -0.204355 10.4801 0.613065L17.387 7.51995C18.2043 8.33739 18.2043 9.66267 17.387 10.4801L10.4801 17.387C9.66267 18.2043 8.33739 18.2043 7.51995 17.387L5.54626 15.4133L3.73708 17.2224C2.91966 18.0399 1.59436 18.0399 0.776944 17.2224C-0.0404767 16.4051 -0.0404767 15.0797 0.776944 14.2624L2.58612 12.4531L0.613065 10.4801C-0.204355 9.66267 -0.204355 8.33739 0.613065 7.51995L7.51995 0.613065ZM9.49336 1.59978C9.22088 1.32731 8.77909 1.32731 8.50661 1.59978L3.57286 6.53357L11.4665 14.4272L16.4002 9.49336C16.6727 9.22088 16.6727 8.77909 16.4002 8.5067L12.9465 5.05286L11.7952 6.20403C11.5228 6.4765 11.0811 6.4765 10.8086 6.20403C10.5361 5.93155 10.5361 5.48978 10.8086 5.21731L11.9597 4.06614L10.9732 3.07964L8.17757 5.87533C7.90509 6.1478 7.46329 6.1478 7.19081 5.87533C6.91833 5.60286 6.91833 5.16109 7.19081 4.88862L9.9865 2.09293L9.49336 1.59978ZM10.4797 15.4139L2.58615 7.52028L1.59978 8.5067C1.3273 8.77909 1.3273 9.22088 1.59978 9.49336L8.50661 16.4002C8.77909 16.6727 9.22088 16.6727 9.49336 16.4002L10.4797 15.4139ZM3.57275 13.4399L1.76366 15.249C1.49119 15.5215 1.49119 15.9633 1.76366 16.2358C2.03613 16.5082 2.4779 16.5082 2.75037 16.2358L4.55946 14.4266L3.57275 13.4399Z\" fill=\"#475467\"/>\r\n</svg></span>House Keeping</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source.houseKeeping\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2 \">Temp ID: {{img.tempId}}\r\n <span class=\"ms-2\" *ngIf=\"source?.houseKeepingStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.houseKeepingStatus === 'approved' || source?.houseKeepingStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.houseKeepingStatus === 'approved' || source?.houseKeepingStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section *ngIf=\"ticket?._source as source\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"d-flex align-items-centre justify-content-centre\">\r\n \r\n <span>\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/userProfile.svg\">\r\n\r\n </span>\r\n <!-- <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\"> -->\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"pt-0 w-100\">\r\n <div >\r\n <div class=\"email-val my-3\">{{source?.approverEmail | titlecase}} <span class=\"timestamp ms-2\">{{getTimeAgo(source?.updatedAt)}}</span></div>\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"headingtext px-3 text-capitalize\">\"Ticket closed\"</div>\r\n\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"timingtext fw-bold-400 mt-3 px-3\">Ticket has been addressed. Please check the\r\n revised footfall data.\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n </section>\r\n\r\n\r\n <section *ngIf=\"ticket?._source as source\"> \r\n <div *ngIf=\"source?.status ==='closed'\" class=\"border-totalfootfall\">\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"card-header ellipse1 min-h-45px py-1 px-5\">\r\n <div class=\"my-0\">\r\n <h5 class=\"card-title\">{{ source?.footfallCount !== null ?\r\n source?.footfallCount : '--' }} <span class=\"sub-header ms-2\">Total\r\n Footfall</span></h5>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"card-body py-2 px-5\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.duplicateACCount !== null && source?.duplicateACCount !== undefined ?\r\n source?.duplicateACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Duplicates</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.employeeACCount !== null && source?.employeeACCount !== undefined ?\r\n source?.employeeACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Employee/Staff</span>\r\n </div>\r\n<div class=\"col-lg-2 col-xl-2 col-md-2 mt-3\">\r\n \r\n <h5 class=\"card-title\">{{ source?.junkACCount !== null && source?.junkACCount !== undefined ?\r\n source?.junkACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Junk</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.houseKeepingACCount !== null && source?.houseKeepingACCount !== undefined ?\r\n source?.houseKeepingACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">House Keeping</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 my-3 px-0\">\r\n <h5 class=\"card-title\"> {{\r\n (source.footfallCount || 0) -\r\n ((source.houseKeepingACCount || 0) +\r\n (source.employeeACCount || 0) + (source.junkACCount || 0) +\r\n (source.duplicateACCount || 0))\r\n }}</h5>\r\n <span class=\"card-title-sub-header\">Actual footfall</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</section>\r\n </div>\r\n \r\n </ng-container>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <!-- </div> \r\n \r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.issuecard{width:19%;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-title-foot{color:var(--Gray-800, #1D2939)!important;font-size:18px;font-weight:600;line-height:28px}.card-title-label{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:600;line-height:28px}.card-title-value{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:400;line-height:28px}.border-selectall{border-radius:6px!important;border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important;padding:8px 2px}.border-selectall1{border-radius:6px!important;background:var(--White, #FFF)!important;padding:8px 2px}.border-totalfootfall{border-radius:12px;padding:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.vl{border-left:2px solid #000;height:50px}.duplicate-head{color:var(--Gray-700, #344054);font-size:16px;font-weight:600;line-height:20px}.img-border{border-radius:5px!important;border:2px solid var(--Gray-300, #D0D5DD)}.desc-title{color:var(--Gray-900, #101828);font-size:12px;font-weight:500;line-height:20px}.desc-value{color:var(--Gray-900, #475467);font-size:10px;font-weight:500;line-height:10px}.img-border{overflow:hidden;position:relative}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.absolute{top:5px;right:5px;z-index:2}.img-src{width:25%;height:20%}.text-footfall{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:500;line-height:24px}.text-desc{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500;line-height:20px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.email-val{color:var(--Gray-700, #344054);font-size:16px;font-weight:600;line-height:24px}.timestamp{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400;line-height:24px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i3.CustomDateFormatPipe, name: "customDateFormat" }] });
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FootfallDirectoryComponent, decorators: [{
195
+ type: Component,
196
+ args: [{ selector: "lib-footfall-directory", template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Footfall Directory</span>\r\n <span class=\"text-sub mb-2\">\r\n An Summary of all the tickets for\r\n {{ headerFilter?.date?.startDate === headerFilter?.date?.endDate\r\n ? (headerFilter?.date?.endDate | customDateFormat)\r\n : (headerFilter?.date?.startDate | customDateFormat) + ' - ' + (headerFilter?.date?.endDate |\r\n customDateFormat) }}\r\n </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-0\">\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let ticket of footfallListData; let i = index\" class=\"issuecard w-100 mb-5\"\r\n [ngClass]=\"(selectCard ? selectCard : 0) === i ? 'active' : ''\">\r\n <section *ngIf=\"ticket?._source as source\" (click)=\"ShowTicket(source,i)\" class=\"cursor-pointer\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src='./assets/tango/Images/ticket.svg'><span\r\n class=\"mx-2\">{{source?.ticketId}}</span></span>\r\n <span\r\n [ngClass]=\"source.status === 'closed' ? 'badge-secondary' :(source.status === 'open' ? 'badge-light-primary':'badge-secondary')\"\r\n class=\"badge mx-2\">{{source?.status | titlecase}}</span>\r\n </div>\r\n\r\n <div class=\"text-footfall\">Ticket raised for mismatch in footfall data.</div>\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><span class=\"m-2\"></span></span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.3335V4.00016M5.33333 1.3335V4.00016M2 6.66683H14M3.33333 2.66683H12.6667C13.403 2.66683 14 3.26378 14 4.00016V13.3335C14 14.0699 13.403 14.6668 12.6667 14.6668H3.33333C2.59695 14.6668 2 14.0699 2 13.3335V4.00016C2 3.26378 2.59695 2.66683 3.33333 2.66683Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"text-desc mx-2\">{{source?.createdAt | date:'dd MMM,yyyy'}}</span><span class=\"text-desc\" *ngIf=\"source.status === 'closed'\">, </span>\r\n <span *ngIf=\"source.status === 'closed'\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.3335V4.00016M5.33333 1.3335V4.00016M2 6.66683H14M3.33333 2.66683H12.6667C13.403 2.66683 14 3.26378 14 4.00016V13.3335C14 14.0699 13.403 14.6668 12.6667 14.6668H3.33333C2.59695 14.6668 2 14.0699 2 13.3335V4.00016C2 3.26378 2.59695 2.66683 3.33333 2.66683Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"text-desc ms-2\">{{source?.updatedAt | date:'dd MMM,yyyy'}}</span></span></span>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <!-- <div class=\"maincard-content\">\r\n <div class=\"row p-10\"> -->\r\n <div class=\"col-sm-6 \">\r\n <ng-container *ngIf=\"footfallLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"footfallNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngIf=\"!footfallLoading && !footfallNoData\" class=\"card-body mt-3 py-0 pe-1\">\r\n <ng-container *ngFor=\"let ticket of footfallTicketsData\">\r\n <div *ngIf=\"ticket?._source as source\"\r\n class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src='./assets/tango/Images/ticket.svg'><span class=\"mx-2\">{{ticketId ? ticketId\r\n :source?.ticketId}}</span></span>\r\n <span\r\n [ngClass]=\"source?.status === 'close' ? 'badge-light-success' :(source?.status === 'open' ? 'badge-light-primary':'badge-secondary')\"\r\n class=\"badge mx-2\">{{source?.status | titlecase}}</span>\r\n </div>\r\n <section *ngIf=\"ticket?._source as source\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n \r\n <span>\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M30.4932 28.3351L29.6867 27.5286L20.9965 18.8384L23.5744 16.2605L24.1921 15.6416C24.251 15.5818 24.2843 15.5014 24.2847 15.4174C24.2845 15.3759 24.2761 15.3349 24.26 15.2966C24.2439 15.2584 24.2204 15.2237 24.1909 15.1945L23.572 14.5756L20.8381 11.8368L20.2192 11.218C20.19 11.1882 20.1551 11.1645 20.1166 11.1484C20.0781 11.1323 20.0368 11.124 19.995 11.124C19.9533 11.124 19.912 11.1323 19.8735 11.1484C19.835 11.1645 19.8001 11.1882 19.7709 11.218L19.152 11.8381L15.8016 15.1884C15.7719 15.2176 15.7483 15.2523 15.7322 15.2907C15.7161 15.3291 15.7077 15.3703 15.7077 15.412C15.7077 15.4536 15.7161 15.4948 15.7322 15.5332C15.7483 15.5716 15.7719 15.6064 15.8016 15.6355L19.0021 18.8372L10.3107 27.5286L9.50787 28.3351C9.44834 28.3941 9.41461 28.4743 9.41406 28.5581C9.41441 28.6391 9.4453 28.717 9.50056 28.7762C9.53007 28.8077 9.56573 28.8328 9.60533 28.85C9.64494 28.8672 9.68765 28.8761 9.73082 28.8761H17.5487C17.6326 28.8757 17.713 28.8423 17.7723 28.7829C17.8316 28.7236 17.8651 28.6432 17.8654 28.5593V27.782C17.8654 27.6979 17.8321 27.6172 17.7727 27.5576C17.7134 27.498 17.6328 27.4644 17.5487 27.464H12.3709L19.9987 19.8362L27.6265 27.464H22.4036C22.3195 27.4644 22.2389 27.498 22.1796 27.5576C22.1202 27.6172 22.0869 27.6979 22.0869 27.782V28.5593C22.0867 28.601 22.0949 28.6424 22.111 28.6809C22.1272 28.7194 22.1508 28.7543 22.1807 28.7835C22.2399 28.8426 22.32 28.8758 22.4036 28.8761H30.269C30.3124 28.8762 30.3553 28.8674 30.3952 28.8502C30.435 28.833 30.4708 28.8078 30.5005 28.7762C30.5574 28.7164 30.5885 28.6367 30.5872 28.5542C30.5858 28.4716 30.552 28.393 30.4932 28.3351ZM19.9938 12.9906L22.4219 15.4187L19.9999 17.8407L17.5718 15.4126L19.9938 12.9906Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n\r\n </span>\r\n <!-- <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\"> -->\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n\r\n <div class=\"pt-0 w-100\">\r\n <div >\r\n <div class=\"email-val my-3\">{{source?.email | titlecase}} <span class=\"timestamp ms-2\">{{getTimeAgo(source?.createdAt)}}</span></div>\r\n <div class=\"headingtext px-3 text-capitalize\">Ticket raised for mismatch in footfall\r\n data.</div>\r\n <div class=\"timingtext px-3 pt-1\">The issue was identified during data validation,\r\n and the below issues need to be reviewed and confirmed for accuracy</div>\r\n </div>\r\n \r\n </div>\r\n\r\n </section>\r\n\r\n\r\n <div *ngIf=\"ticket?._source as source\" class=\"border-totalfootfall\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-5\">\r\n <div class=\"my-0\">\r\n <h5 class=\"card-title\">{{ source?.footfallCount !== null && source?.footfallCount !== undefined ? \r\n source?.footfallCount : 0 }} <span class=\"sub-header ms-2\">Total\r\n Footfall</span></h5>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-2 px-5\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.duplicateCount !== null && source?.duplicateCount !== undefined ?\r\n source?.duplicateCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Duplicates</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.employeeCount !== null && source?.employeeCount !== undefined ?\r\n source?.employeeCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Employee/Staff</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.junkCount !== null && source?.junkCount !== undefined ?\r\n source?.junkCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">Junk</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n <h5 class=\"card-title\">{{ source?.houseKeepingCount !== null && source?.houseKeepingCount !== undefined ?\r\n source?.houseKeepingCount : 0 }}</h5>\r\n \r\n <span class=\"card-title-sub-header\">House Keeping</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 my-3 px-0\">\r\n <h5 class=\"card-title\"> {{\r\n (source.footfallCount || 0) -\r\n ((source.houseKeepingCount || 0) +\r\n (source.employeeCount || 0) + (source.junkCount || 0) +\r\n (source.duplicateCount || 0))\r\n }}</h5>\r\n <span class=\"card-title-sub-header\">Actual footfall</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"ticket?._source as source\" class=\"my-4\">\r\n <h3 class=\"text-lg font-semibold mb-2\"> <span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_730_76157)\">\r\n <path\r\n d=\"M3.75 11.25H3C2.60218 11.25 2.22064 11.092 1.93934 10.8107C1.65804 10.5294 1.5 10.1478 1.5 9.75V3C1.5 2.60218 1.65804 2.22064 1.93934 1.93934C2.22064 1.65804 2.60218 1.5 3 1.5H9.75C10.1478 1.5 10.5294 1.65804 10.8107 1.93934C11.092 2.22064 11.25 2.60218 11.25 3V3.75M8.25 6.75H15C15.8284 6.75 16.5 7.42157 16.5 8.25V15C16.5 15.8284 15.8284 16.5 15 16.5H8.25C7.42157 16.5 6.75 15.8284 6.75 15V8.25C6.75 7.42157 7.42157 6.75 8.25 6.75Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_730_76157\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Duplicates</h3>\r\n\r\n\r\n <div *ngFor=\"let original of source.duplicateImages\" class=\"mb-4\">\r\n <div *ngIf=\"source?.duplicateImages?.length\" class=\"duplicate-head my-2\">Original image\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-5 relative\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3\">\r\n\r\n <img [src]=\"imageUrl + original.filePath\" alt=\"\"\r\n class=\"w-100 rounded border\" />\r\n <div class=\"desc-title ms-2 mt-1\">Temp ID: {{ original.tempId }}\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{ original.entryTime }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"duplicate-head my-2\">Duplicates</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of original.data\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\"\r\n class=\"w-100 mb-2 rounded border\" />\r\n <div class=\"desc-title ms-2\">Temp ID: {{ img.tempId }}\r\n <span class=\"ms-2\" *ngIf=\"source?.duplicateStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.duplicateStatus === 'approved' || source?.duplicateStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.duplicateStatus === 'approved' || source?.duplicateStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{ getFormattedEntryTime(img?.entryTime) }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"source?.duplicateImages?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.employee?.length\" class=\"duplicate-head text-lg my-3\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\">\r\n<path d=\"M12.75 14.75V13.25C12.75 12.4544 12.4339 11.6913 11.8713 11.1287C11.3087 10.5661 10.5456 10.25 9.75 10.25H3.75C2.95435 10.25 2.19129 10.5661 1.62868 11.1287C1.06607 11.6913 0.75 12.4544 0.75 13.25V14.75M17.25 14.75V13.25C17.2495 12.5853 17.0283 11.9396 16.621 11.4142C16.2138 10.8889 15.6436 10.5137 15 10.3475M12 1.3475C12.6453 1.51273 13.2173 1.88803 13.6257 2.41423C14.0342 2.94044 14.2559 3.58762 14.2559 4.25375C14.2559 4.91988 14.0342 5.56706 13.6257 6.09327C13.2173 6.61947 12.6453 6.99477 12 7.16M9.75 4.25C9.75 5.90685 8.40685 7.25 6.75 7.25C5.09315 7.25 3.75 5.90685 3.75 4.25C3.75 2.59315 5.09315 1.25 6.75 1.25C8.40685 1.25 9.75 2.59315 9.75 4.25Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>Employee/Staff</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source.employee\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2\">Temp ID: {{img.tempId}} \r\n <span class=\"ms-2\" *ngIf=\"source?.employeeStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.employeeStatus === 'approved' || source?.employeeStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.employeeStatus === 'approved' || source?.employeeStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n</div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img?.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"source?.employee?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.junk?.length\" class=\"duplicate-head text-lg my-3\"><span class=\"me-2\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n<path d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>Junk</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source?.junk\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2\">Temp ID: {{img.tempId}} \r\n <span class=\"ms-2\" *ngIf=\"source?.junkStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.junkStatus === 'approved' || source?.junkStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.junkStatus === 'approved' || source?.junkStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n</div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img?.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"source?.junk?.length\" class=\"separator separator-dashed mt-3 mb-5\"></div>\r\n\r\n <div *ngIf=\"source?.houseKeeping?.length\" class=\"duplicate-head my-3\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.51995 0.613065C8.33739 -0.204355 9.66267 -0.204355 10.4801 0.613065L17.387 7.51995C18.2043 8.33739 18.2043 9.66267 17.387 10.4801L10.4801 17.387C9.66267 18.2043 8.33739 18.2043 7.51995 17.387L5.54626 15.4133L3.73708 17.2224C2.91966 18.0399 1.59436 18.0399 0.776944 17.2224C-0.0404767 16.4051 -0.0404767 15.0797 0.776944 14.2624L2.58612 12.4531L0.613065 10.4801C-0.204355 9.66267 -0.204355 8.33739 0.613065 7.51995L7.51995 0.613065ZM9.49336 1.59978C9.22088 1.32731 8.77909 1.32731 8.50661 1.59978L3.57286 6.53357L11.4665 14.4272L16.4002 9.49336C16.6727 9.22088 16.6727 8.77909 16.4002 8.5067L12.9465 5.05286L11.7952 6.20403C11.5228 6.4765 11.0811 6.4765 10.8086 6.20403C10.5361 5.93155 10.5361 5.48978 10.8086 5.21731L11.9597 4.06614L10.9732 3.07964L8.17757 5.87533C7.90509 6.1478 7.46329 6.1478 7.19081 5.87533C6.91833 5.60286 6.91833 5.16109 7.19081 4.88862L9.9865 2.09293L9.49336 1.59978ZM10.4797 15.4139L2.58615 7.52028L1.59978 8.5067C1.3273 8.77909 1.3273 9.22088 1.59978 9.49336L8.50661 16.4002C8.77909 16.6727 9.22088 16.6727 9.49336 16.4002L10.4797 15.4139ZM3.57275 13.4399L1.76366 15.249C1.49119 15.5215 1.49119 15.9633 1.76366 16.2358C2.03613 16.5082 2.4779 16.5082 2.75037 16.2358L4.55946 14.4266L3.57275 13.4399Z\" fill=\"#475467\"/>\r\n</svg></span>House Keeping</div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 mb-5 position-relative\" *ngFor=\"let img of source.houseKeeping\">\r\n <div class=\"pb-3 img-border border border-1 h-100 rounded-3 position-relative\">\r\n\r\n <!-- Image -->\r\n <img [src]=\"imageUrl + img.filePath\" alt=\"\" class=\"w-100 mb-2 rounded border\" />\r\n\r\n <!-- Details -->\r\n <div class=\"desc-title ms-2 \">Temp ID: {{img.tempId}}\r\n <span class=\"ms-2\" *ngIf=\"source?.houseKeepingStatus === 'pending'\">\r\n <svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#F2F4F7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57918L4.13887 6.45835L3.3472 5.61252C3.20137 5.47502 2.9722 5.46668 2.80553 5.58335C2.64303 5.70418 2.5972 5.91668 2.6972 6.08752L3.6347 7.61252C3.72637 7.75418 3.8847 7.84168 4.06387 7.84168C4.2347 7.84168 4.3972 7.75418 4.48887 7.61252C4.63887 7.41668 7.50137 4.00418 7.50137 4.00418C7.87637 3.62085 7.4222 3.28335 7.1222 3.57502V3.57918Z\" fill=\"#667085\"/>\r\n</svg>\r\n </span>\r\n <span *ngIf=\"img.isChecked && (source?.houseKeepingStatus === 'approved' || source?.houseKeepingStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\" fill=\"#12B76A\"/>\r\n</svg> \r\n</span> \r\n<span *ngIf=\"!img.isChecked && (source?.houseKeepingStatus === 'approved' || source?.houseKeepingStatus === 'rejected')\"\r\n class=\"ms-2\"><svg style=\"width: 20px;\r\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1428_59484)\">\r\n <path d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" fill=\"#FEE4E2\"/>\r\n <path d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\" stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1428_59484\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n</svg></span>\r\n </div>\r\n <div class=\"desc-value ms-2 mt-2\">Entry Time: {{getFormattedEntryTime(img.entryTime)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section *ngIf=\"ticket?._source as source\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"d-flex align-items-centre justify-content-centre\">\r\n \r\n <span>\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/userProfile.svg\">\r\n\r\n </span>\r\n <!-- <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\"> -->\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"pt-0 w-100\">\r\n <div >\r\n <div class=\"email-val my-3\">{{source?.approverEmail | titlecase}} <span class=\"timestamp ms-2\">{{getTimeAgo(source?.updatedAt)}}</span></div>\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"headingtext px-3 text-capitalize\">\"Ticket closed\"</div>\r\n\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"timingtext fw-bold-400 mt-3 px-3\">Ticket has been addressed. Please check the\r\n revised footfall data.\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n </section>\r\n\r\n\r\n <section *ngIf=\"ticket?._source as source\"> \r\n <div *ngIf=\"source?.status ==='closed'\" class=\"border-totalfootfall\">\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"card-header ellipse1 min-h-45px py-1 px-5\">\r\n <div class=\"my-0\">\r\n <h5 class=\"card-title\">{{ source?.footfallCount !== null ?\r\n source?.footfallCount : '--' }} <span class=\"sub-header ms-2\">Total\r\n Footfall</span></h5>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"source?.status ==='closed'\" class=\"card-body py-2 px-5\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.duplicateACCount !== null && source?.duplicateACCount !== undefined ?\r\n source?.duplicateACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Duplicates</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.employeeACCount !== null && source?.employeeACCount !== undefined ?\r\n source?.employeeACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Employee/Staff</span>\r\n </div>\r\n<div class=\"col-lg-2 col-xl-2 col-md-2 mt-3\">\r\n \r\n <h5 class=\"card-title\">{{ source?.junkACCount !== null && source?.junkACCount !== undefined ?\r\n source?.junkACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">Junk</span>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-md-3 mt-3 px-0\">\r\n \r\n <h5 class=\"card-title\">{{ source?.houseKeepingACCount !== null && source?.houseKeepingACCount !== undefined ?\r\n source?.houseKeepingACCount : 0 }}</h5>\r\n <span class=\"card-title-sub-header\">House Keeping</span>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-md-2 my-3 px-0\">\r\n <h5 class=\"card-title\"> {{\r\n (source.footfallCount || 0) -\r\n ((source.houseKeepingACCount || 0) +\r\n (source.employeeACCount || 0) + (source.junkACCount || 0) +\r\n (source.duplicateACCount || 0))\r\n }}</h5>\r\n <span class=\"card-title-sub-header\">Actual footfall</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</section>\r\n </div>\r\n \r\n </ng-container>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <!-- </div> \r\n \r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.issuecard{width:19%;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-title-foot{color:var(--Gray-800, #1D2939)!important;font-size:18px;font-weight:600;line-height:28px}.card-title-label{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:600;line-height:28px}.card-title-value{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:400;line-height:28px}.border-selectall{border-radius:6px!important;border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important;padding:8px 2px}.border-selectall1{border-radius:6px!important;background:var(--White, #FFF)!important;padding:8px 2px}.border-totalfootfall{border-radius:12px;padding:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.vl{border-left:2px solid #000;height:50px}.duplicate-head{color:var(--Gray-700, #344054);font-size:16px;font-weight:600;line-height:20px}.img-border{border-radius:5px!important;border:2px solid var(--Gray-300, #D0D5DD)}.desc-title{color:var(--Gray-900, #101828);font-size:12px;font-weight:500;line-height:20px}.desc-value{color:var(--Gray-900, #475467);font-size:10px;font-weight:500;line-height:10px}.img-border{overflow:hidden;position:relative}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:1px!important}.absolute{top:5px;right:5px;z-index:2}.img-src{width:25%;height:20%}.text-footfall{color:var(--Gray-800, #1D2939)!important;font-size:16px;font-weight:500;line-height:24px}.text-desc{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500;line-height:20px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.email-val{color:var(--Gray-700, #344054);font-size:16px;font-weight:600;line-height:24px}.timestamp{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400;line-height:24px}\n"] }]
197
+ }], ctorParameters: () => [{ type: i1.TicketsService }, { type: i0.ChangeDetectorRef }, { type: i2.GlobalStateService }, { type: i3.ToastService }], propDecorators: { selectedTab: [{
198
+ type: Input
199
+ }] } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGZhbGwtZGlyZWN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvZm9vdGZhbGwtZGlyZWN0b3J5L2Zvb3RmYWxsLWRpcmVjdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2Zvb3RmYWxsLWRpcmVjdG9yeS9mb290ZmFsbC1kaXJlY3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUl2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUFJM0I7SUFDQTtJQUNEO0lBQ0M7SUFORCxXQUFXLENBQU07SUFFMUIsWUFDVSxhQUE2QixFQUM3QixFQUFxQixFQUN0QixFQUFzQixFQUNyQixZQUEwQjtRQUgxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUNKLFFBQVEsQ0FBTTtJQUNkLFlBQVksQ0FBTTtJQUNsQixRQUFRLENBQU07SUFDRyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUM1QyxnQkFBZ0IsQ0FBTTtJQUNwQixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFD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VUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksVUFBVSxHQUFHLENBQUMsRUFBRTtZQUNsQixPQUFPLEdBQUcsVUFBVSxPQUFPLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7U0FDNUQ7UUFFRCxvREFBb0Q7UUFDcEQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO3dHQWxNWSwwQkFBMEI7NEZBQTFCLDBCQUEwQixzR0NYdkMsOHh6Q0FvZ0JNOzs0RkR6Zk8sMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QjsrS0FLekIsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWZvb3RmYWxsLWRpcmVjdG9yeVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZm9vdGZhbGwtZGlyZWN0b3J5LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9mb290ZmFsbC1kaXJlY3RvcnkuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvb3RmYWxsRGlyZWN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFiOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0aWNrZXRzZXJ2aWNlOiBUaWNrZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIHVzZXJUeXBlOiBhbnk7XHJcbiAgaGVhZGVyRmlsdGVyOiBhbnk7XHJcbiAgY2xpZW50SWQ6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuZm9vdGZhbGxMaXN0X3JlcTogYW55O1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCB1c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICAgIHRoaXMudXNlclR5cGUgPSB1c2VySW5mby51c2VyVHlwZTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgICAgdGhpcy5mb290ZmFsbExpc3RfcmVxID0ge1xyXG4gICAgICAgICAgICBjbGllbnQ6IHRoaXMuaGVhZGVyRmlsdGVyPy5jbGllbnQsXHJcbiAgICAgICAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGlja2V0TGlzdCgpO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5sb2FkaW5nID0gZmFsc2U7XHJcbm5vRGF0YSA9IGZhbHNlO1xyXG5zZWFyY2hWYWx1ZTogc3RyaW5nID0gXCJcIjtcclxub2Zmc2V0OiBudW1iZXIgPSAxO1xyXG5saW1pdDogbnVtYmVyID0gMTA7XHJcbmlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbmZvb3RmYWxsTGlzdERhdGE6IGFueVtdID0gW107XHJcbnRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBnZXRUaWNrZXRMaXN0KCl7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5mb290ZmFsbExpc3REYXRhPVtdO1xyXG4gICAgdGhpcy5mb290ZmFsbFRpY2tldHNEYXRhID1bXTtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlPy50cmltKCkgfHwgJyc7XHJcbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IHx8IDE7XHJcbiAgICB0aGlzLmxpbWl0ID0gdGhpcy5saW1pdCB8fCAxMDtcclxuICAgIHRoaXMuaXNFeHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMudGlja2V0c2VydmljZVxyXG4gICAgICAuZ2V0VGlja2V0TGlzdEFwaShcclxuICAgICAgICB0aGlzLmZvb3RmYWxsTGlzdF9yZXEuY2xpZW50LFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsdGVyPy5zdG9yZSxcclxuICAgICAgICB0aGlzLmZvb3RmYWxsTGlzdF9yZXEuZnJvbURhdGUsXHJcbiAgICAgICAgdGhpcy5mb290ZmFsbExpc3RfcmVxLnRvRGF0ZSxcclxuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlLHRoaXMubGltaXQsXHJcbiAgICAgICAgdGhpcy5vZmZzZXQsdGhpcy5pc0V4cG9ydFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZm9vdGZhbGxMaXN0RGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXM/LmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTdG9yZVZpZXcodGhpcy5mb290ZmFsbExpc3REYXRhWzBdPy5fc291cmNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgdGhpcy5mb290ZmFsbExpc3REYXRhID1bXTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbmZvb3RmYWxsTm9EYXRhID0gZmFsc2U7XHJcbmZvb3RmYWxsTG9hZGluZyA9IGZhbHNlO1xyXG5mb290ZmFsbFRpY2tldHNEYXRhOiBhbnlbXSA9IFtdO1xyXG5pbWFnZVVybDogc3RyaW5nID0gJyc7XHJcbnN0b3JlSWRWYWx1ZTogYW55O1xyXG5mb290ZmFsbG9mZnNldDogbnVtYmVyID0gMTtcclxuZm9vdGZhbGxsaW1pdDogbnVtYmVyID0gMTA7XHJcbnRvdGFsSXRlbXNGb290ZmFsbDogbnVtYmVyID0gMDtcclxuICBkYXRhU3RvcmVWaWV3KGRhdGE/OiBhbnkpIHtcclxuICB0aGlzLmZvb3RmYWxsTm9EYXRhID0gZmFsc2U7XHJcbiAgdGhpcy5mb290ZmFsbExvYWRpbmcgPSB0cnVlO1xyXG5cclxuICB0aGlzLmltYWdlVXJsID0gdGhpcy50aWNrZXRzZXJ2aWNlPy5mb290ZmFsbENETjtcclxuXHJcblxyXG4gIGNvbnN0IHN0b3JlSWQgPSBkYXRhLnN0b3JlSWQgfHwgdGhpcy5zdG9yZUlkVmFsdWU7XHJcbiAgY29uc3QgZnJvbURhdGUgPSB0aGlzLmZvb3RmYWxsTGlzdF9yZXE/LmZyb21EYXRlO1xyXG4gIGNvbnN0IHRvRGF0ZSA9ICB0aGlzLmZvb3RmYWxsTGlzdF9yZXE/LnRvRGF0ZTtcclxuICBjb25zdCBvZmZzZXQgPSB0aGlzLmZvb3RmYWxsb2Zmc2V0O1xyXG4gIGNvbnN0IGxpbWl0ID0gIHRoaXMuZm9vdGZhbGxsaW1pdDtcclxuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YT8uZGF0ZVN0cmluZztcclxuY29uc3QgcmV2b3BzVHlwZSA9Jyc7XHJcbiAgY29uc3Qgc2VsZWN0ZWRTdGF0dXMgPSAnJztcclxuICBjb25zdCBhY3Rpb25TdGF0dXMgPSAnJztcclxuICB0aGlzLnRpY2tldHNlcnZpY2VcclxuICAgIC5nZXRUaWNrZXRzQXBpKHN0b3JlSWQsIGZyb21EYXRlLCB0b0RhdGUsIHJldm9wc1R5cGUsIHNlbGVjdGVkU3RhdHVzLCBhY3Rpb25TdGF0dXMsIG9mZnNldCwgbGltaXQsZGF0ZVN0cmluZylcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT09MjAwKXtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5yZXN1bHQ/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5mb290ZmFsbFRpY2tldHNEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmZvb3RmYWxsTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZm9vdGZhbGxMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9vdGZhbGxUaWNrZXRzRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0ID8/IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zRm9vdGZhbGwgPSByZXM/LmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgdGhpcy5mb290ZmFsbE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5mb290ZmFsbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb290ZmFsbFRpY2tldHNEYXRhID0gW107XHJcbiAgICBcclxuICAgICAgICB0aGlzLmZvb3RmYWxsTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvb3RmYWxsTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb290ZmFsbFRpY2tldHNEYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5mb290ZmFsbE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb290ZmFsbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG59XHJcbnNlbGVjdENhcmQgPTA7XHJcbnRpY2tldElkOmFueTtcclxuICBTaG93VGlja2V0KHZhbHVlOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0Q2FyZCA9IGluZGV4O1xyXG4gICAgdGhpcy50aWNrZXRJZCA9IHZhbHVlLnRpY2tldElkO1xyXG4gICAgdGhpcy5kYXRhU3RvcmVWaWV3KHZhbHVlKTtcclxuICAgIFxyXG4gIH1cclxuICBnZXRGb3JtYXR0ZWRFbnRyeVRpbWUoZW50cnlUaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGlmICghZW50cnlUaW1lKSByZXR1cm4gJy0nO1xyXG4gIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBlbnRyeVRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICBkYXRlLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTtcclxuICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAvLyBzZWNvbmQ6ICcyLWRpZ2l0JyxcclxuICAgIGhvdXIxMjogdHJ1ZVxyXG4gIH0pO1xyXG59XHJcblxyXG5nZXRUaW1lQWdvKGRhdGU6IGFueSk6IHN0cmluZyB7XHJcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICBjb25zdCBwYXN0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgY29uc3QgZGlmZkluU2Vjb25kcyA9IE1hdGguZmxvb3IoKG5vdy5nZXRUaW1lKCkgLSBwYXN0LmdldFRpbWUoKSkgLyAxMDAwKTtcclxuXHJcbiAgaWYgKGlzTmFOKGRpZmZJblNlY29uZHMpKSByZXR1cm4gJyc7XHJcblxyXG4gIGlmIChkaWZmSW5TZWNvbmRzIDwgNjApIHtcclxuICAgIHJldHVybiBgJHtkaWZmSW5TZWNvbmRzfSBzZWMgYWdvYDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRpZmZJbk1pbnV0ZXMgPSBNYXRoLmZsb29yKGRpZmZJblNlY29uZHMgLyA2MCk7XHJcbiAgaWYgKGRpZmZJbk1pbnV0ZXMgPCA2MCkge1xyXG4gICAgcmV0dXJuIGAke2RpZmZJbk1pbnV0ZXN9IG1pbiBhZ29gO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZGlmZkluSG91cnMgPSBNYXRoLmZsb29yKGRpZmZJbk1pbnV0ZXMgLyA2MCk7XHJcbiAgaWYgKGRpZmZJbkhvdXJzIDwgMjQpIHtcclxuICAgIHJldHVybiBgJHtkaWZmSW5Ib3Vyc30gaHIke2RpZmZJbkhvdXJzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZGlmZkluRGF5cyA9IE1hdGguZmxvb3IoZGlmZkluSG91cnMgLyAyNCk7XHJcbiAgaWYgKGRpZmZJbkRheXMgPCA3KSB7XHJcbiAgICByZXR1cm4gYCR7ZGlmZkluRGF5c30gZGF5JHtkaWZmSW5EYXlzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xyXG4gIH1cclxuXHJcbiAgLy8gRmFsbGJhY2s6IHJldHVybiBhY3R1YWwgZGF0ZSBpZiBvbGRlciB0aGFuIGEgd2Vla1xyXG4gIHJldHVybiBwYXN0LnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG59XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5Gb290ZmFsbCBEaXJlY3Rvcnk8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgQW4gU3VtbWFyeSBvZiBhbGwgdGhlIHRpY2tldHMgZm9yXHJcbiAgICAgICAgICAgICAgICB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlXHJcbiAgICAgICAgICAgICAgICA/IChoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUgfCBjdXN0b21EYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgOiAoaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUgfCBjdXN0b21EYXRlRm9ybWF0KSArICcgLSAnICsgKGhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSB8XHJcbiAgICAgICAgICAgICAgICBjdXN0b21EYXRlRm9ybWF0KSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTBcIj5cclxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0aWNrZXQgb2YgZm9vdGZhbGxMaXN0RGF0YTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXNzdWVjYXJkIHctMTAwIG1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihzZWxlY3RDYXJkID8gc2VsZWN0Q2FyZCA6IDApID09PSBpID8gJ2FjdGl2ZScgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwidGlja2V0Py5fc291cmNlIGFzIHNvdXJjZVwiIChjbGljayk9XCJTaG93VGlja2V0KHNvdXJjZSxpKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz0nLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3RpY2tldC5zdmcnPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiPnt7c291cmNlPy50aWNrZXRJZH19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic291cmNlLnN0YXR1cyA9PT0gJ2Nsb3NlZCcgPyAnYmFkZ2Utc2Vjb25kYXJ5JyA6KHNvdXJjZS5zdGF0dXMgPT09ICdvcGVuJyA/ICdiYWRnZS1saWdodC1wcmltYXJ5JzonYmFkZ2Utc2Vjb25kYXJ5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgbXgtMlwiPnt7c291cmNlPy5zdGF0dXMgfCB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1mb290ZmFsbFwiPlRpY2tldCByYWlzZWQgZm9yIG1pc21hdGNoIGluIGZvb3RmYWxsIGRhdGEuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48c3BhbiBjbGFzcz1cIm0tMlwiPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuNjY2NyAxLjMzMzVWNC4wMDAxNk01LjMzMzMzIDEuMzMzNVY0LjAwMDE2TTIgNi42NjY4M0gxNE0zLjMzMzMzIDIuNjY2ODNIMTIuNjY2N0MxMy40MDMgMi42NjY4MyAxNCAzLjI2Mzc4IDE0IDQuMDAwMTZWMTMuMzMzNUMxNCAxNC4wNjk5IDEzLjQwMyAxNC42NjY4IDEyLjY2NjcgMTQuNjY2OEgzLjMzMzMzQzIuNTk2OTUgMTQuNjY2OCAyIDE0LjA2OTkgMiAxMy4zMzM1VjQuMDAwMTZDMiAzLjI2Mzc4IDIuNTk2OTUgMi42NjY4MyAzLjMzMzMzIDIuNjY2ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzYyBteC0yXCI+e3tzb3VyY2U/LmNyZWF0ZWRBdCB8IGRhdGU6J2RkIE1NTSx5eXl5J319PC9zcGFuPjxzcGFuIGNsYXNzPVwidGV4dC1kZXNjXCIgKm5nSWY9XCJzb3VyY2Uuc3RhdHVzID09PSAnY2xvc2VkJ1wiPiwgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlLnN0YXR1cyA9PT0gJ2Nsb3NlZCdcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuNjY2NyAxLjMzMzVWNC4wMDAxNk01LjMzMzMzIDEuMzMzNVY0LjAwMDE2TTIgNi42NjY4M0gxNE0zLjMzMzMzIDIuNjY2ODNIMTIuNjY2N0MxMy40MDMgMi42NjY4MyAxNCAzLjI2Mzc4IDE0IDQuMDAwMTZWMTMuMzMzNUMxNCAxNC4wNjk5IDEzLjQwMyAxNC42NjY4IDEyLjY2NjcgMTQuNjY2OEgzLjMzMzMzQzIuNTk2OTUgMTQuNjY2OCAyIDE0LjA2OTkgMiAxMy4zMzM1VjQuMDAwMTZDMiAzLjI2Mzc4IDIuNTk2OTUgMi42NjY4MyAzLjMzMzMzIDIuNjY2ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cInRleHQtZGVzYyBtcy0yXCI+e3tzb3VyY2U/LnVwZGF0ZWRBdCB8IGRhdGU6J2RkIE1NTSx5eXl5J319PC9zcGFuPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHAtMTBcIj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiAgXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvb3RmYWxsTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZmFsbE5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmb290ZmFsbExvYWRpbmcgJiYgIWZvb3RmYWxsTm9EYXRhXCIgY2xhc3M9XCJjYXJkLWJvZHkgbXQtMyBweS0wIHBlLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrZXQgb2YgZm9vdGZhbGxUaWNrZXRzRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGlja2V0Py5fc291cmNlIGFzIHNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LWJvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpbWcgc3JjPScuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Zyc+PHNwYW4gY2xhc3M9XCJteC0yXCI+e3t0aWNrZXRJZCA/IHRpY2tldElkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzb3VyY2U/LnRpY2tldElkfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3VyY2U/LnN0YXR1cyA9PT0gJ2Nsb3NlJyA/ICdiYWRnZS1saWdodC1zdWNjZXNzJyA6KHNvdXJjZT8uc3RhdHVzID09PSAnb3BlbicgPyAnYmFkZ2UtbGlnaHQtcHJpbWFyeSc6J2JhZGdlLXNlY29uZGFyeScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIG14LTJcIj57e3NvdXJjZT8uc3RhdHVzIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInRpY2tldD8uX3NvdXJjZSBhcyBzb3VyY2VcIiBjbGFzcz1cImQtZmxleCBtYi01IG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zMC40OTMyIDI4LjMzNTFMMjkuNjg2NyAyNy41Mjg2TDIwLjk5NjUgMTguODM4NEwyMy41NzQ0IDE2LjI2MDVMMjQuMTkyMSAxNS42NDE2QzI0LjI1MSAxNS41ODE4IDI0LjI4NDMgMTUuNTAxNCAyNC4yODQ3IDE1LjQxNzRDMjQuMjg0NSAxNS4zNzU5IDI0LjI3NjEgMTUuMzM0OSAyNC4yNiAxNS4yOTY2QzI0LjI0MzkgMTUuMjU4NCAyNC4yMjA0IDE1LjIyMzcgMjQuMTkwOSAxNS4xOTQ1TDIzLjU3MiAxNC41NzU2TDIwLjgzODEgMTEuODM2OEwyMC4yMTkyIDExLjIxOEMyMC4xOSAxMS4xODgyIDIwLjE1NTEgMTEuMTY0NSAyMC4xMTY2IDExLjE0ODRDMjAuMDc4MSAxMS4xMzIzIDIwLjAzNjggMTEuMTI0IDE5Ljk5NSAxMS4xMjRDMTkuOTUzMyAxMS4xMjQgMTkuOTEyIDExLjEzMjMgMTkuODczNSAxMS4xNDg0QzE5LjgzNSAxMS4xNjQ1IDE5LjgwMDEgMTEuMTg4MiAxOS43NzA5IDExLjIxOEwxOS4xNTIgMTEuODM4MUwxNS44MDE2IDE1LjE4ODRDMTUuNzcxOSAxNS4yMTc2IDE1Ljc0ODMgMTUuMjUyMyAxNS43MzIyIDE1LjI5MDdDMTUuNzE2MSAxNS4zMjkxIDE1LjcwNzcgMTUuMzcwMyAxNS43MDc3IDE1LjQxMkMxNS43MDc3IDE1LjQ1MzYgMTUuNzE2MSAxNS40OTQ4IDE1LjczMjIgMTUuNTMzMkMxNS43NDgzIDE1LjU3MTYgMTUuNzcxOSAxNS42MDY0IDE1LjgwMTYgMTUuNjM1NUwxOS4wMDIxIDE4LjgzNzJMMTAuMzEwNyAyNy41Mjg2TDkuNTA3ODcgMjguMzM1MUM5LjQ0ODM0IDI4LjM5NDEgOS40MTQ2MSAyOC40NzQzIDkuNDE0MDYgMjguNTU4MUM5LjQxNDQxIDI4LjYzOTEgOS40NDUzIDI4LjcxNyA5LjUwMDU2IDI4Ljc3NjJDOS41MzAwNyAyOC44MDc3IDkuNTY1NzMgMjguODMyOCA5LjYwNTMzIDI4Ljg1QzkuNjQ0OTQgMjguODY3MiA5LjY4NzY1IDI4Ljg3NjEgOS43MzA4MiAyOC44NzYxSDE3LjU0ODdDMTcuNjMyNiAyOC44NzU3IDE3LjcxMyAyOC44NDIzIDE3Ljc3MjMgMjguNzgyOUMxNy44MzE2IDI4LjcyMzYgMTcuODY1MSAyOC42NDMyIDE3Ljg2NTQgMjguNTU5M1YyNy43ODJDMTcuODY1NCAyNy42OTc5IDE3LjgzMjEgMjcuNjE3MiAxNy43NzI3IDI3LjU1NzZDMTcuNzEzNCAyNy40OTggMTcuNjMyOCAyNy40NjQ0IDE3LjU0ODcgMjcuNDY0SDEyLjM3MDlMMTkuOTk4NyAxOS44MzYyTDI3LjYyNjUgMjcuNDY0SDIyLjQwMzZDMjIuMzE5NSAyNy40NjQ0IDIyLjIzODkgMjcuNDk4IDIyLjE3OTYgMjcuNTU3NkMyMi4xMjAyIDI3LjYxNzIgMjIuMDg2OSAyNy42OTc5IDIyLjA4NjkgMjcuNzgyVjI4LjU1OTNDMjIuMDg2NyAyOC42MDEgMjIuMDk0OSAyOC42NDI0IDIyLjExMSAyOC42ODA5QzIyLjEyNzIgMjguNzE5NCAyMi4xNTA4IDI4Ljc1NDMgMjIuMTgwNyAyOC43ODM1QzIyLjIzOTkgMjguODQyNiAyMi4zMiAyOC44NzU4IDIyLjQwMzYgMjguODc2MUgzMC4yNjlDMzAuMzEyNCAyOC44NzYyIDMwLjM1NTMgMjguODY3NCAzMC4zOTUyIDI4Ljg1MDJDMzAuNDM1IDI4LjgzMyAzMC40NzA4IDI4LjgwNzggMzAuNTAwNSAyOC43NzYyQzMwLjU1NzQgMjguNzE2NCAzMC41ODg1IDI4LjYzNjcgMzAuNTg3MiAyOC41NTQyQzMwLjU4NTggMjguNDcxNiAzMC41NTIgMjguMzkzIDMwLjQ5MzIgMjguMzM1MVpNMTkuOTkzOCAxMi45OTA2TDIyLjQyMTkgMTUuNDE4N0wxOS45OTk5IDE3Ljg0MDdMMTcuNTcxOCAxNS40MTI2TDE5Ljk5MzggMTIuOTkwNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwibXNncHJvZmlsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90YW5nb3Byb2ZpbGUucG5nXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTAgaC0xMDAgbXQtMyBib3JkZXIgYm9yZGVyLTEgYm9yZGVyLWdyYXlcIiBzdHlsZT1cIndpZHRoOjBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtYWlsLXZhbCBteS0zXCI+e3tzb3VyY2U/LmVtYWlsIHwgdGl0bGVjYXNlfX0gPHNwYW4gY2xhc3M9XCJ0aW1lc3RhbXAgbXMtMlwiPnt7Z2V0VGltZUFnbyhzb3VyY2U/LmNyZWF0ZWRBdCl9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmd0ZXh0IHB4LTMgdGV4dC1jYXBpdGFsaXplXCI+VGlja2V0IHJhaXNlZCBmb3IgbWlzbWF0Y2ggaW4gZm9vdGZhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IHB4LTMgcHQtMVwiPlRoZSBpc3N1ZSB3YXMgaWRlbnRpZmllZCBkdXJpbmcgZGF0YSB2YWxpZGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBiZWxvdyBpc3N1ZXMgbmVlZCB0byBiZSByZXZpZXdlZCBhbmQgY29uZmlybWVkIGZvciBhY2N1cmFjeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aWNrZXQ/Ll9zb3VyY2UgYXMgc291cmNlXCIgY2xhc3M9XCJib3JkZXItdG90YWxmb290ZmFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggIHB5LTEgcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/LmZvb3RmYWxsQ291bnQgIT09IG51bGwgJiYgc291cmNlPy5mb290ZmFsbENvdW50ICE9PSB1bmRlZmluZWQgPyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT8uZm9vdGZhbGxDb3VudCA6IDAgfX0gPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIG1zLTJcIj5Ub3RhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvb3RmYWxsPC9zcGFuPjwvaDU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTIgcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wtbWQtMiBtdC0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgc291cmNlPy5kdXBsaWNhdGVDb3VudCAhPT0gbnVsbCAmJiBzb3VyY2U/LmR1cGxpY2F0ZUNvdW50ICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT8uZHVwbGljYXRlQ291bnQgOiAwIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLXRpdGxlLXN1Yi1oZWFkZXJcIj5EdXBsaWNhdGVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC1tZC0zIG10LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/LmVtcGxveWVlQ291bnQgIT09IG51bGwgJiYgc291cmNlPy5lbXBsb3llZUNvdW50ICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT8uZW1wbG95ZWVDb3VudCA6IDAgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUtc3ViLWhlYWRlclwiPkVtcGxveWVlL1N0YWZmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC14bC0yIGNvbC1tZC0yIG10LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/Lmp1bmtDb3VudCAhPT0gbnVsbCAmJiBzb3VyY2U/Lmp1bmtDb3VudCAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U/Lmp1bmtDb3VudCA6IDAgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLXRpdGxlLXN1Yi1oZWFkZXJcIj5KdW5rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC1tZC0zIG10LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/LmhvdXNlS2VlcGluZ0NvdW50ICE9PSBudWxsICYmIHNvdXJjZT8uaG91c2VLZWVwaW5nQ291bnQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPy5ob3VzZUtlZXBpbmdDb3VudCA6IDAgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLXRpdGxlLXN1Yi1oZWFkZXJcIj5Ib3VzZSBLZWVwaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC14bC0yIGNvbC1tZC0yIG15LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UuZm9vdGZhbGxDb3VudCB8fCAwKSAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzb3VyY2UuaG91c2VLZWVwaW5nQ291bnQgfHwgMCkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UuZW1wbG95ZWVDb3VudCB8fCAwKSArIChzb3VyY2UuanVua0NvdW50IHx8IDApICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLmR1cGxpY2F0ZUNvdW50IHx8IDApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZS1zdWItaGVhZGVyXCI+QWN0dWFsIGZvb3RmYWxsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpY2tldD8uX3NvdXJjZSBhcyBzb3VyY2VcIiBjbGFzcz1cIm15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi0yXCI+IDxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzczMF83NjE1NylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuNzUgMTEuMjVIM0MyLjYwMjE4IDExLjI1IDIuMjIwNjQgMTEuMDkyIDEuOTM5MzQgMTAuODEwN0MxLjY1ODA0IDEwLjUyOTQgMS41IDEwLjE0NzggMS41IDkuNzVWM0MxLjUgMi42MDIxOCAxLjY1ODA0IDIuMjIwNjQgMS45MzkzNCAxLjkzOTM0QzIuMjIwNjQgMS42NTgwNCAyLjYwMjE4IDEuNSAzIDEuNUg5Ljc1QzEwLjE0NzggMS41IDEwLjUyOTQgMS42NTgwNCAxMC44MTA3IDEuOTM5MzRDMTEuMDkyIDIuMjIwNjQgMTEuMjUgMi42MDIxOCAxMS4yNSAzVjMuNzVNOC4yNSA2Ljc1SDE1QzE1LjgyODQgNi43NSAxNi41IDcuNDIxNTcgMTYuNSA4LjI1VjE1QzE2LjUgMTUuODI4NCAxNS44Mjg0IDE2LjUgMTUgMTYuNUg4LjI1QzcuNDIxNTcgMTYuNSA2Ljc1IDE1LjgyODQgNi43NSAxNVY4LjI1QzYuNzUgNy40MjE1NyA3LjQyMTU3IDYuNzUgOC4yNSA2Ljc1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzczMF83NjE1N1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5EdXBsaWNhdGVzPC9oMz5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3JpZ2luYWwgb2Ygc291cmNlLmR1cGxpY2F0ZUltYWdlc1wiIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LmR1cGxpY2F0ZUltYWdlcz8ubGVuZ3RoXCIgY2xhc3M9XCJkdXBsaWNhdGUtaGVhZCBteS0yXCI+T3JpZ2luYWwgaW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBiLTMgaW1nLWJvcmRlciBib3JkZXIgYm9yZGVyLTEgaC0xMDAgcm91bmRlZC0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVVybCArIG9yaWdpbmFsLmZpbGVQYXRoXCIgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCByb3VuZGVkIGJvcmRlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2MtdGl0bGUgbXMtMiBtdC0xXCI+VGVtcCBJRDoge3sgb3JpZ2luYWwudGVtcElkIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2MtdmFsdWUgbXMtMiBtdC0yXCI+RW50cnkgVGltZToge3sgb3JpZ2luYWwuZW50cnlUaW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkdXBsaWNhdGUtaGVhZCBteS0yXCI+RHVwbGljYXRlczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG1iLTUgcG9zaXRpb24tcmVsYXRpdmVcIiAqbmdGb3I9XCJsZXQgaW1nIG9mIG9yaWdpbmFsLmRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi0zIGltZy1ib3JkZXIgYm9yZGVyIGJvcmRlci0xIGgtMTAwIHJvdW5kZWQtMyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVVybCArIGltZy5maWxlUGF0aFwiIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbWItMiByb3VuZGVkIGJvcmRlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2MtdGl0bGUgbXMtMlwiPlRlbXAgSUQ6IHt7IGltZy50ZW1wSWQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCIgKm5nSWY9XCJzb3VyY2U/LmR1cGxpY2F0ZVN0YXR1cyA9PT0gJ3BlbmRpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxyXG4gIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0YyRjRGN1wiLz5cclxuICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNy4xMjIyIDMuNTc5MThMNC4xMzg4NyA2LjQ1ODM1TDMuMzQ3MiA1LjYxMjUyQzMuMjAxMzcgNS40NzUwMiAyLjk3MjIgNS40NjY2OCAyLjgwNTUzIDUuNTgzMzVDMi42NDMwMyA1LjcwNDE4IDIuNTk3MiA1LjkxNjY4IDIuNjk3MiA2LjA4NzUyTDMuNjM0NyA3LjYxMjUyQzMuNzI2MzcgNy43NTQxOCAzLjg4NDcgNy44NDE2OCA0LjA2Mzg3IDcuODQxNjhDNC4yMzQ3IDcuODQxNjggNC4zOTcyIDcuNzU0MTggNC40ODg4NyA3LjYxMjUyQzQuNjM4ODcgNy40MTY2OCA3LjUwMTM3IDQuMDA0MTggNy41MDEzNyA0LjAwNDE4QzcuODc2MzcgMy42MjA4NSA3LjQyMjIgMy4yODMzNSA3LjEyMjIgMy41NzUwMlYzLjU3OTE4WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImltZy5pc0NoZWNrZWQgJiYgKHNvdXJjZT8uZHVwbGljYXRlU3RhdHVzID09PSAnYXBwcm92ZWQnIHx8IHNvdXJjZT8uZHVwbGljYXRlU3RhdHVzID09PSAncmVqZWN0ZWQnKVwiXHJcbiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxyXG4gIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiLz5cclxuICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiIGZpbGw9XCIjMTJCNzZBXCIvPlxyXG48L3N2Zz4gXHJcbjwvc3Bhbj4gXHJcbjxzcGFuICpuZ0lmPVwiIWltZy5pc0NoZWNrZWQgJiYgKHNvdXJjZT8uZHVwbGljYXRlU3RhdHVzID09PSAnYXBwcm92ZWQnIHx8IHNvdXJjZT8uZHVwbGljYXRlU3RhdHVzID09PSAncmVqZWN0ZWQnKVwiXHJcbiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cclxuICAgIDxwYXRoIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIiBmaWxsPVwiI0ZFRTRFMlwiLz5cclxuICAgIDxwYXRoIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICA8L2c+XHJcbiAgPGRlZnM+XHJcbiAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XHJcbiAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIvPlxyXG4gICAgPC9jbGlwUGF0aD5cclxuICA8L2RlZnM+XHJcbjwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzYy12YWx1ZSBtcy0yIG10LTJcIj5FbnRyeSBUaW1lOiB7eyBnZXRGb3JtYXR0ZWRFbnRyeVRpbWUoaW1nPy5lbnRyeVRpbWUpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiA8ZGl2ICpuZ0lmPVwic291cmNlPy5kdXBsaWNhdGVJbWFnZXM/Lmxlbmd0aFwiIGNsYXNzPVwic2VwYXJhdG9yIHNlcGFyYXRvci1kYXNoZWQgbXQtMyBtYi01XCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uZW1wbG95ZWU/Lmxlbmd0aFwiIGNsYXNzPVwiZHVwbGljYXRlLWhlYWQgdGV4dC1sZyBteS0zXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxOCAxNlwiIGZpbGw9XCJub25lXCI+XHJcbjxwYXRoIGQ9XCJNMTIuNzUgMTQuNzVWMTMuMjVDMTIuNzUgMTIuNDU0NCAxMi40MzM5IDExLjY5MTMgMTEuODcxMyAxMS4xMjg3QzExLjMwODcgMTAuNTY2MSAxMC41NDU2IDEwLjI1IDkuNzUgMTAuMjVIMy43NUMyLjk1NDM1IDEwLjI1IDIuMTkxMjkgMTAuNTY2MSAxLjYyODY4IDExLjEyODdDMS4wNjYwNyAxMS42OTEzIDAuNzUgMTIuNDU0NCAwLjc1IDEzLjI1VjE0Ljc1TTE3LjI1IDE0Ljc1VjEzLjI1QzE3LjI0OTUgMTIuNTg1MyAxNy4wMjgzIDExLjkzOTYgMTYuNjIxIDExLjQxNDJDMTYuMjEzOCAxMC44ODg5IDE1LjY0MzYgMTAuNTEzNyAxNSAxMC4zNDc1TTEyIDEuMzQ3NUMxMi42NDUzIDEuNTEyNzMgMTMuMjE3MyAxLjg4ODAzIDEzLjYyNTcgMi40MTQyM0MxNC4wMzQyIDIuOTQwNDQgMTQuMjU1OSAzLjU4NzYyIDE0LjI1NTkgNC4yNTM3NUMxNC4yNTU5IDQuOTE5ODggMTQuMDM0MiA1LjU2NzA2IDEzLjYyNTcgNi4wOTMyN0MxMy4yMTczIDYuNjE5NDcgMTIuNjQ1MyA2Ljk5NDc3IDEyIDcuMTZNOS43NSA0LjI1QzkuNzUgNS45MDY4NSA4LjQwNjg1IDcuMjUgNi43NSA3LjI1QzUuMDkzMTUgNy4yNSAzLjc1IDUuOTA2ODUgMy43NSA0LjI1QzMuNzUgMi41OTMxNSA1LjA5MzE1IDEuMjUgNi43NSAxLjI1QzguNDA2ODUgMS4yNSA5Ljc1IDIuNTkzMTUgOS43NSA0LjI1WlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz48L3NwYW4+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbWItNSBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0Zvcj1cImxldCBpbWcgb2Ygc291cmNlLmVtcGxveWVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi0zIGltZy1ib3JkZXIgYm9yZGVyIGJvcmRlci0xIGgtMTAwIHJvdW5kZWQtMyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVVybCArIGltZy5maWxlUGF0aFwiIGFsdD1cIlwiIGNsYXNzPVwidy0xMDAgbWItMiByb3VuZGVkIGJvcmRlclwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXRhaWxzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2MtdGl0bGUgbXMtMlwiPlRlbXAgSUQ6IHt7aW1nLnRlbXBJZH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIiAqbmdJZj1cInNvdXJjZT8uZW1wbG95ZWVTdGF0dXMgPT09ICdwZW5kaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNGMkY0RjdcIi8+XHJcbiAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuMTIyMiAzLjU3OTE4TDQuMTM4ODcgNi40NTgzNUwzLjM0NzIgNS42MTI1MkMzLjIwMTM3IDUuNDc1MDIgMi45NzIyIDUuNDY2NjggMi44MDU1MyA1LjU4MzM1QzIuNjQzMDMgNS43MDQxOCAyLjU5NzIgNS45MTY2OCAyLjY5NzIgNi4wODc1MkwzLjYzNDcgNy42MTI1MkMzLjcyNjM3IDcuNzU0MTggMy44ODQ3IDcuODQxNjggNC4wNjM4NyA3Ljg0MTY4QzQuMjM0NyA3Ljg0MTY4IDQuMzk3MiA3Ljc1NDE4IDQuNDg4ODcgNy42MTI1MkM0LjYzODg3IDcuNDE2NjggNy41MDEzNyA0LjAwNDE4IDcuNTAxMzcgNC4wMDQxOEM3Ljg3NjM3IDMuNjIwODUgNy40MjIyIDMuMjgzMzUgNy4xMjIyIDMuNTc1MDJWMy41NzkxOFpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImltZy5pc0NoZWNrZWQgJiYgKHNvdXJjZT8uZW1wbG95ZWVTdGF0dXMgPT09ICdhcHByb3ZlZCcgfHwgc291cmNlPy5lbXBsb3llZVN0YXR1cyA9PT0gJ3JlamVjdGVkJylcIlxyXG4gY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIi8+XHJcbiAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIiBmaWxsPVwiIzEyQjc2QVwiLz5cclxuPC9zdmc+IFxyXG48L3NwYW4+IFxyXG48c3BhbiAqbmdJZj1cIiFpbWcuaXNDaGVja2VkICYmIChzb3VyY2U/LmVtcGxveWVlU3RhdHVzID09PSAnYXBwcm92ZWQnIHx8IHNvdXJjZT8uZW1wbG95ZWVTdGF0dXMgPT09ICdyZWplY3RlZCcpXCJcclxuIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxyXG4gICAgPHBhdGggZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiIGZpbGw9XCIjRkVFNEUyXCIvPlxyXG4gICAgPHBhdGggZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gIDwvZz5cclxuICA8ZGVmcz5cclxuICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cclxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIi8+XHJcbiAgICA8L2NsaXBQYXRoPlxyXG4gIDwvZGVmcz5cclxuPC9zdmc+PC9zcGFuPlxyXG48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjLXZhbHVlIG1zLTIgbXQtMlwiPkVudHJ5IFRpbWU6IHt7Z2V0Rm9ybWF0dGVkRW50cnlUaW1lKGltZz8uZW50cnlUaW1lKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuIDxkaXYgKm5nSWY9XCJzb3VyY2U/LmVtcGxveWVlPy5sZW5ndGhcIiBjbGFzcz1cInNlcGFyYXRvciBzZXBhcmF0b3ItZGFzaGVkIG10LTMgbWItNVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5qdW5rPy5sZW5ndGhcIiBjbGFzcz1cImR1cGxpY2F0ZS1oZWFkIHRleHQtbGcgbXktM1wiPjxzcGFuIGNsYXNzPVwibWUtMlwiPiAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz48L3NwYW4+SnVuazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtYi01IHBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nRm9yPVwibGV0IGltZyBvZiBzb3VyY2U/Lmp1bmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBiLTMgaW1nLWJvcmRlciBib3JkZXIgYm9yZGVyLTEgaC0xMDAgcm91bmRlZC0zIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlVXJsICsgaW1nLmZpbGVQYXRoXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTEwMCBtYi0yIHJvdW5kZWQgYm9yZGVyXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERldGFpbHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzYy10aXRsZSBtcy0yXCI+VGVtcCBJRDoge3tpbWcudGVtcElkfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiICpuZ0lmPVwic291cmNlPy5qdW5rU3RhdHVzID09PSAncGVuZGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRjJGNEY3XCIvPlxyXG4gIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjEyMjIgMy41NzkxOEw0LjEzODg3IDYuNDU4MzVMMy4zNDcyIDUuNjEyNTJDMy4yMDEzNyA1LjQ3NTAyIDIuOTcyMiA1LjQ2NjY4IDIuODA1NTMgNS41ODMzNUMyLjY0MzAzIDUuNzA0MTggMi41OTcyIDUuOTE2NjggMi42OTcyIDYuMDg3NTJMMy42MzQ3IDcuNjEyNTJDMy43MjYzNyA3Ljc1NDE4IDMuODg0NyA3Ljg0MTY4IDQuMDYzODcgNy44NDE2OEM0LjIzNDcgNy44NDE2OCA0LjM5NzIgNy43NTQxOCA0LjQ4ODg3IDcuNjEyNTJDNC42Mzg4NyA3LjQxNjY4IDcuNTAxMzcgNC4wMDQxOCA3LjUwMTM3IDQuMDA0MThDNy44NzYzNyAzLjYyMDg1IDcuNDIyMiAzLjI4MzM1IDcuMTIyMiAzLjU3NTAyVjMuNTc5MThaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbWcuaXNDaGVja2VkICYmIChzb3VyY2U/Lmp1bmtTdGF0dXMgPT09ICdhcHByb3ZlZCcgfHwgc291cmNlPy5qdW5rU3RhdHVzID09PSAncmVqZWN0ZWQnKVwiXHJcbiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxyXG4gIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiLz5cclxuICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiIGZpbGw9XCIjMTJCNzZBXCIvPlxyXG48L3N2Zz4gXHJcbjwvc3Bhbj4gXHJcbjxzcGFuICpuZ0lmPVwiIWltZy5pc0NoZWNrZWQgJiYgKHNvdXJjZT8uanVua1N0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCBzb3VyY2U/Lmp1bmtTdGF0dXMgPT09ICdyZWplY3RlZCcpXCJcclxuIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxyXG4gICAgPHBhdGggZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiIGZpbGw9XCIjRkVFNEUyXCIvPlxyXG4gICAgPHBhdGggZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gIDwvZz5cclxuICA8ZGVmcz5cclxuICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cclxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIi8+XHJcbiAgICA8L2NsaXBQYXRoPlxyXG4gIDwvZGVmcz5cclxuPC9zdmc+PC9zcGFuPlxyXG48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjLXZhbHVlIG1zLTIgbXQtMlwiPkVudHJ5IFRpbWU6IHt7Z2V0Rm9ybWF0dGVkRW50cnlUaW1lKGltZz8uZW50cnlUaW1lKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuIDxkaXYgKm5nSWY9XCJzb3VyY2U/Lmp1bms/Lmxlbmd0aFwiIGNsYXNzPVwic2VwYXJhdG9yIHNlcGFyYXRvci1kYXNoZWQgbXQtMyBtYi01XCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uaG91c2VLZWVwaW5nPy5sZW5ndGhcIiBjbGFzcz1cImR1cGxpY2F0ZS1oZWFkIG15LTNcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuNTE5OTUgMC42MTMwNjVDOC4zMzczOSAtMC4yMDQzNTUgOS42NjI2NyAtMC4yMDQzNTUgMTAuNDgwMSAwLjYxMzA2NUwxNy4zODcgNy41MTk5NUMxOC4yMDQzIDguMzM3MzkgMTguMjA0MyA5LjY2MjY3IDE3LjM4NyAxMC40ODAxTDEwLjQ4MDEgMTcuMzg3QzkuNjYyNjcgMTguMjA0MyA4LjMzNzM5IDE4LjIwNDMgNy41MTk5NSAxNy4zODdMNS41NDYyNiAxNS40MTMzTDMuNzM3MDggMTcuMjIyNEMyLjkxOTY2IDE4LjAzOTkgMS41OTQzNiAxOC4wMzk5IDAuNzc2OTQ0IDE3LjIyMjRDLTAuMDQwNDc2NyAxNi40MDUxIC0wLjA0MDQ3NjcgMTUuMDc5NyAwLjc3Njk0NCAxNC4yNjI0TDIuNTg2MTIgMTIuNDUzMUwwLjYxMzA2NSAxMC40ODAxQy0wLjIwNDM1NSA5LjY2MjY3IC0wLjIwNDM1NSA4LjMzNzM5IDAuNjEzMDY1IDcuNTE5OTVMNy41MTk5NSAwLjYxMzA2NVpNOS40OTMzNiAxLjU5OTc4QzkuMjIwODggMS4zMjczMSA4Ljc3OTA5IDEuMzI3MzEgOC41MDY2MSAxLjU5OTc4TDMuNTcyODYgNi41MzM1N0wxMS40NjY1IDE0LjQyNzJMMTYuNDAwMiA5LjQ5MzM2QzE2LjY3MjcgOS4yMjA4OCAxNi42NzI3IDguNzc5MDkgMTYuNDAwMiA4LjUwNjdMMTIuOTQ2NSA1LjA1Mjg2TDExLjc5NTIgNi4yMDQwM0MxMS41MjI4IDYuNDc2NSAxMS4wODExIDYuNDc2NSAxMC44MDg2IDYuMjA0MDNDMTAuNTM2MSA1LjkzMTU1IDEwLjUzNjEgNS40ODk3OCAxMC44MDg2IDUuMjE3MzFMMTEuOTU5NyA0LjA2NjE0TDEwLjk3MzIgMy4wNzk2NEw4LjE3NzU3IDUuODc1MzNDNy45MDUwOSA2LjE0NzggNy40NjMyOSA2LjE0NzggNy4xOTA4MSA1Ljg3NTMzQzYuOTE4MzMgNS42MDI4NiA2LjkxODMzIDUuMTYxMDkgNy4xOTA4MSA0Ljg4ODYyTDkuOTg2NSAyLjA5MjkzTDkuNDkzMzYgMS41OTk3OFpNMTAuNDc5NyAxNS40MTM5TDIuNTg2MTUgNy41MjAyOEwxLjU5OTc4IDguNTA2N0MxLjMyNzMgOC43NzkwOSAxLjMyNzMgOS4yMjA4OCAxLjU5OTc4IDkuNDkzMzZMOC41MDY2MSAxNi40MDAyQzguNzc5MDkgMTYuNjcyNyA5LjIyMDg4IDE2LjY3MjcgOS40OTMzNiAxNi40MDAyTDEwLjQ3OTcgMTUuNDEzOVpNMy41NzI3NSAxMy40Mzk5TDEuNzYzNjYgMTUuMjQ5QzEuNDkxMTkgMTUuNTIxNSAxLjQ5MTE5IDE1Ljk2MzMgMS43NjM2NiAxNi4yMzU4QzIuMDM2MTMgMTYuNTA4MiAyLjQ3NzkgMTYuNTA4MiAyLjc1MDM3IDE2LjIzNThMNC41NTk0NiAxNC40MjY2TDMuNTcyNzUgMTMuNDM5OVpcIiBmaWxsPVwiIzQ3NTQ2N1wiLz5cclxuPC9zdmc+PC9zcGFuPkhvdXNlIEtlZXBpbmc8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbWItNSBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0Zvcj1cImxldCBpbWcgb2Ygc291cmNlLmhvdXNlS2VlcGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGItMyBpbWctYm9yZGVyIGJvcmRlciBib3JkZXItMSBoLTEwMCByb3VuZGVkLTMgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlVXJsICsgaW1nLmZpbGVQYXRoXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTEwMCBtYi0yIHJvdW5kZWQgYm9yZGVyXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERldGFpbHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzYy10aXRsZSBtcy0yIFwiPlRlbXAgSUQ6IHt7aW1nLnRlbXBJZH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiICAqbmdJZj1cInNvdXJjZT8uaG91c2VLZWVwaW5nU3RhdHVzID09PSAncGVuZGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRjJGNEY3XCIvPlxyXG4gIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjEyMjIgMy41NzkxOEw0LjEzODg3IDYuNDU4MzVMMy4zNDcyIDUuNjEyNTJDMy4yMDEzNyA1LjQ3NTAyIDIuOTcyMiA1LjQ2NjY4IDIuODA1NTMgNS41ODMzNUMyLjY0MzAzIDUuNzA0MTggMi41OTcyIDUuOTE2NjggMi42OTcyIDYuMDg3NTJMMy42MzQ3IDcuNjEyNTJDMy43MjYzNyA3Ljc1NDE4IDMuODg0NyA3Ljg0MTY4IDQuMDYzODcgNy44NDE2OEM0LjIzNDcgNy44NDE2OCA0LjM5NzIgNy43NTQxOCA0LjQ4ODg3IDcuNjEyNTJDNC42Mzg4NyA3LjQxNjY4IDcuNTAxMzcgNC4wMDQxOCA3LjUwMTM3IDQuMDA0MThDNy44NzYzNyAzLjYyMDg1IDcuNDIyMiAzLjI4MzM1IDcuMTIyMiAzLjU3NTAyVjMuNTc5MThaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbWcuaXNDaGVja2VkICYmIChzb3VyY2U/LmhvdXNlS2VlcGluZ1N0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCBzb3VyY2U/LmhvdXNlS2VlcGluZ1N0YXR1cyA9PT0gJ3JlamVjdGVkJylcIlxyXG4gY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIi8+XHJcbiAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIiBmaWxsPVwiIzEyQjc2QVwiLz5cclxuPC9zdmc+IFxyXG48L3NwYW4+IFxyXG48c3BhbiAqbmdJZj1cIiFpbWcuaXNDaGVja2VkICYmIChzb3VyY2U/LmhvdXNlS2VlcGluZ1N0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCBzb3VyY2U/LmhvdXNlS2VlcGluZ1N0YXR1cyA9PT0gJ3JlamVjdGVkJylcIlxyXG4gY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCIgZmlsbD1cIiNGRUU0RTJcIi8+XHJcbiAgICA8cGF0aCBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgPC9nPlxyXG4gIDxkZWZzPlxyXG4gICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxyXG4gICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiLz5cclxuICAgIDwvY2xpcFBhdGg+XHJcbiAgPC9kZWZzPlxyXG48L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjLXZhbHVlIG1zLTIgbXQtMlwiPkVudHJ5IFRpbWU6IHt7Z2V0Rm9ybWF0dGVkRW50cnlUaW1lKGltZy5lbnRyeVRpbWUpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJ0aWNrZXQ/Ll9zb3VyY2UgYXMgc291cmNlXCIgY2xhc3M9XCJkLWZsZXggbWItNSBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5zdGF0dXMgPT09J2Nsb3NlZCdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXNncHJvZmlsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy91c2VyUHJvZmlsZS5zdmdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwibXNncHJvZmlsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90YW5nb3Byb2ZpbGUucG5nXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTAgaC0xMDAgbXQtMyBib3JkZXIgYm9yZGVyLTEgYm9yZGVyLWdyYXlcIiBzdHlsZT1cIndpZHRoOjBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uc3RhdHVzID09PSdjbG9zZWQnXCIgY2xhc3M9XCJwdC0wIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbWFpbC12YWwgbXktM1wiPnt7c291cmNlPy5hcHByb3ZlckVtYWlsIHwgdGl0bGVjYXNlfX0gPHNwYW4gY2xhc3M9XCJ0aW1lc3RhbXAgbXMtMlwiPnt7Z2V0VGltZUFnbyhzb3VyY2U/LnVwZGF0ZWRBdCl9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uc3RhdHVzID09PSdjbG9zZWQnXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBweC0zIHRleHQtY2FwaXRhbGl6ZVwiPlwiVGlja2V0IGNsb3NlZFwiPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LnN0YXR1cyA9PT0nY2xvc2VkJ1wiIGNsYXNzPVwidGltaW5ndGV4dCBmdy1ib2xkLTQwMCBtdC0zIHB4LTNcIj5UaWNrZXQgaGFzIGJlZW4gYWRkcmVzc2VkLiBQbGVhc2UgY2hlY2sgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzZWQgZm9vdGZhbGwgZGF0YS5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJ0aWNrZXQ/Ll9zb3VyY2UgYXMgc291cmNlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uc3RhdHVzID09PSdjbG9zZWQnXCIgIGNsYXNzPVwiYm9yZGVyLXRvdGFsZm9vdGZhbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LnN0YXR1cyA9PT0nY2xvc2VkJ1wiICBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggIHB5LTEgcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/LmZvb3RmYWxsQ291bnQgIT09IG51bGwgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPy5mb290ZmFsbENvdW50IDogJy0tJyB9fSA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXIgbXMtMlwiPlRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGZhbGw8L3NwYW4+PC9oNT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LnN0YXR1cyA9PT0nY2xvc2VkJ1wiIGNsYXNzPVwiY2FyZC1ib2R5IHB5LTIgcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wtbWQtMiBtdC0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgIGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7IHNvdXJjZT8uZHVwbGljYXRlQUNDb3VudCAhPT0gbnVsbCAmJiBzb3VyY2U/LmR1cGxpY2F0ZUFDQ291bnQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPy5kdXBsaWNhdGVBQ0NvdW50IDogMCB9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUtc3ViLWhlYWRlclwiPkR1cGxpY2F0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLW1kLTMgbXQtMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgICBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/LmVtcGxveWVlQUNDb3VudCAhPT0gbnVsbCAmJiBzb3VyY2U/LmVtcGxveWVlQUNDb3VudCAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U/LmVtcGxveWVlQUNDb3VudCA6IDAgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLXRpdGxlLXN1Yi1oZWFkZXJcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wtbWQtMiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgICBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBzb3VyY2U/Lmp1bmtBQ0NvdW50ICE9PSBudWxsICYmIHNvdXJjZT8uanVua0FDQ291bnQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPy5qdW5rQUNDb3VudCA6IDAgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLXRpdGxlLXN1Yi1oZWFkZXJcIj5KdW5rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC1tZC0zIG10LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgc291cmNlPy5ob3VzZUtlZXBpbmdBQ0NvdW50ICE9PSBudWxsICYmIHNvdXJjZT8uaG91c2VLZWVwaW5nQUNDb3VudCAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U/LmhvdXNlS2VlcGluZ0FDQ291bnQgOiAwIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZS1zdWItaGVhZGVyXCI+SG91c2UgS2VlcGluZzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wtbWQtMiBteS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj4ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLmZvb3RmYWxsQ291bnQgfHwgMCkgLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc291cmNlLmhvdXNlS2VlcGluZ0FDQ291bnQgfHwgMCkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UuZW1wbG95ZWVBQ0NvdW50IHx8IDApICsgKHNvdXJjZS5qdW5rQUNDb3VudCB8fCAwKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS5kdXBsaWNhdGVBQ0NvdW50IHx8IDApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZS1zdWItaGVhZGVyXCI+QWN0dWFsIGZvb3RmYWxsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPC9kaXY+IFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==