tango-app-ui-manage-tickets 3.7.0-beta.49 → 3.7.0-beta.50

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.
@@ -121,7 +121,7 @@ export class TicketService {
121
121
  getTicketListOldApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder) {
122
122
  return this.http.get(`${this.footfallDirapiUrl}/ticket-list?clientId=${client}&fromDate=${fromDate}&toDate=${toDate}&searchValue=${searchvalue}&limit=${limit}&offset=${offset}&isExport=${isExport}&sortBy=${sortBy}&sortOrder=${sortOrder}`);
123
123
  }
124
- getTicketListApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder, tangoType, permissionType) {
124
+ getTicketListApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder, tangoType, permissionType, filters) {
125
125
  let url = `${this.footfallDirapiUrl}/ticket-list?` +
126
126
  `clientId=${client}` +
127
127
  `&fromDate=${fromDate}` +
@@ -136,12 +136,34 @@ export class TicketService {
136
136
  if (permissionType) {
137
137
  url += `&permissionType=${permissionType}`;
138
138
  }
139
+ if (filters) {
140
+ // array params – send as comma-separated
141
+ if (filters.filterByStatus?.length) {
142
+ url += `&filterByStatus=${encodeURIComponent(filters.filterByStatus.join(','))}`;
143
+ }
144
+ if (filters.filterByReviewedBy?.length) {
145
+ url += `&filterByReviewedBy=${encodeURIComponent(filters.filterByReviewedBy.join(','))}`;
146
+ }
147
+ if (filters.fileterByApprovedBy?.length) {
148
+ url += `&fileterByApprovedBy=${encodeURIComponent(filters.fileterByApprovedBy.join(','))}`;
149
+ }
150
+ // string params – JSON stringified accuracy
151
+ if (filters.filterByReviewer) {
152
+ url += `&filterByReviewer=${encodeURIComponent(filters.filterByReviewer)}`;
153
+ }
154
+ if (filters.filterByApprover) {
155
+ url += `&filterByApprover=${encodeURIComponent(filters.filterByApprover)}`;
156
+ }
157
+ if (filters.filterByTango) {
158
+ url += `&filterByTango=${encodeURIComponent(filters.filterByTango)}`;
159
+ }
160
+ }
139
161
  return this.http.get(url);
140
162
  }
141
163
  getTicketListExportOldApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder) {
142
164
  return this.http.get(`${this.footfallDirapiUrl}/ticket-list?clientId=${client}&fromDate=${fromDate}&toDate=${toDate}&searchValue=${searchvalue}&limit=${limit}&offset=${offset}&isExport=${isExport}&sortBy=${sortBy}&sortOrder=${sortOrder}`, { responseType: "arraybuffer" });
143
165
  }
144
- getTicketListExportApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder, tangoType, permissionType) {
166
+ getTicketListExportApi(client, fromDate, toDate, searchvalue, limit, offset, isExport, sortBy, sortOrder, tangoType, permissionType, filters) {
145
167
  let url = `${this.footfallDirapiUrl}/ticket-list?` +
146
168
  `clientId=${client}` +
147
169
  `&fromDate=${fromDate}` +
@@ -156,7 +178,26 @@ export class TicketService {
156
178
  if (permissionType) {
157
179
  url += `&permissionType=${permissionType}`;
158
180
  }
159
- // If export is TRUE → return arraybuffer
181
+ if (filters) {
182
+ if (filters.filterByStatus?.length) {
183
+ url += `&filterByStatus=${encodeURIComponent(filters.filterByStatus.join(','))}`;
184
+ }
185
+ if (filters.filterByReviewedBy?.length) {
186
+ url += `&filterByReviewedBy=${encodeURIComponent(filters.filterByReviewedBy.join(','))}`;
187
+ }
188
+ if (filters.fileterByApprovedBy?.length) {
189
+ url += `&fileterByApprovedBy=${encodeURIComponent(filters.fileterByApprovedBy.join(','))}`;
190
+ }
191
+ if (filters.filterByReviewer) {
192
+ url += `&filterByReviewer=${encodeURIComponent(filters.filterByReviewer)}`;
193
+ }
194
+ if (filters.filterByApprover) {
195
+ url += `&filterByApprover=${encodeURIComponent(filters.filterByApprover)}`;
196
+ }
197
+ if (filters.filterByTango) {
198
+ url += `&filterByTango=${encodeURIComponent(filters.filterByTango)}`;
199
+ }
200
+ }
160
201
  const options = isExport
161
202
  ? { responseType: 'arraybuffer' }
162
203
  : {};
@@ -256,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
256
297
  providedIn: "root",
257
298
  }]
258
299
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdGlja2V0cy9zcmMvbGliL3NlcnZpY2VzL3RpY2tldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUNMLGVBQWUsR0FNaEIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFJbEQsTUFBTSxPQUFPLGFBQWE7SUFZSjtJQUEwQjtJQVg5QyxVQUFVLENBQU07SUFDaEIsYUFBYSxDQUFNO0lBQ25CLFdBQVcsQ0FBTTtJQUNqQixpQkFBaUIsQ0FBTTtJQUN2QixlQUFlLENBQU07SUFDckIsaUJBQWlCLENBQU07SUFDdkIsV0FBVyxDQUFNO0lBQ2pCLGFBQWEsQ0FBTTtJQUNuQixXQUFXLENBQU07SUFDakIsWUFBWSxDQUFLO0lBQ2pCLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNqRCxZQUFvQixJQUFnQixFQUFVLEVBQXNCO1FBQWhELFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUNsRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFD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TUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBjYXRjaEVycm9yLFxyXG4gIG1hcCxcclxuICBvZixcclxuICB0aHJvd0Vycm9yLFxyXG59IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGlja2V0U2VydmljZSB7XHJcbiAgdXNlckFwaVVybDogYW55O1xyXG4gIHRpY2tldHNBcGlVcmw6IGFueTtcclxuICBhdWRpdEFwaVVybDogYW55O1xyXG4gIGF1ZGl0bWV0cmljQXBpVXJsOiBhbnk7XHJcbiAgem9uZWF1ZGl0QXBpVXJsOiBhbnk7XHJcbiAgZm9vdGZhbGxEaXJhcGlVcmw6IGFueTtcclxuICBmb290ZmFsbENETjogYW55O1xyXG4gIHRyYWZmaWNBcGlVcmw6IGFueTtcclxuICByZXZvcEFwaVVybDogYW55O1xyXG4gIGNsaWVudEFwaVVybDphbnk7XHJcbiAgZHJvcERvd25UcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLnVzZXJBcGlVcmwgPSBlbnYudXNlckFwaVVybDtcclxuICAgICAgICB0aGlzLnRpY2tldHNBcGlVcmwgPSBlbnYudGlja2V0c0FwaVVybDtcclxuICAgICAgICB0aGlzLmF1ZGl0bWV0cmljQXBpVXJsID0gZW52LmF1ZGl0bWV0cmljQXBpVXJsO1xyXG4gICAgICAgIHRoaXMuYXVkaXRBcGlVcmwgPSBlbnYuYXVkaXRBcGlVcmw7XHJcbiAgICAgICAgdGhpcy56b25lYXVkaXRBcGlVcmwgPSBlbnYuem9uZWF1ZGl0QXBpVXJsO1xyXG4gICAgICAgIHRoaXMuY2xpZW50QXBpVXJsID0gZW52LmNsaWVudEFwaVVybDtcclxuICAgICAgICB0aGlzLmZvb3RmYWxsRGlyYXBpVXJsID0gZW52LmZvb3RmYWxsRGlyYXBpVXJsO1xyXG4gICAgICAgIHRoaXMuZm9vdGZhbGxDRE4gPSBlbnYuZm9vdGZhbGxDRE47XHJcbiAgICAgICAgdGhpcy50cmFmZmljQXBpVXJsID0gZW52LnRyYWZmaWNBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5yZXZvcEFwaVVybCA9IGVudi5yZXZvcEFwaVVybDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTGlzdChwYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnVzZXJBcGlVcmx9L2dldC1saXN0YCwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEluc3RhbGxhdGlvbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvaW5zdGFsbGF0aW9uVGFibGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRJbmZyYUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9pbmZyYVRhYmxlYCwgZGF0YSwge1xyXG4gICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0TWF0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL21hdFRhYmxlYCwgZGF0YSwge1xyXG4gICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U290cmVzTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvc3RvcmVGaWx0ZXJgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldEluc3RhbGxhdGlvbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9pbnN0YWxsYXRpb25UYWJsZWAsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRJbmZyYUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2luZnJhVGFibGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldEFzc2lnblRpY2tldChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KFxyXG4gICAgICBgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2Fzc2lnblRpY2tldGAsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRNYXRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9tYXRUYWJsZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGlja2V0SXNzdWUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9lbXBsb3llZVRyYW5pbmcvdXBkYXRlY29tbWVudGAsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyQWN0aXZlTGlzdChwYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnVzZXJBcGlVcmx9L2xpc3RgLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ291bnRzKGRhdGE6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvYWxsQ291bnRzYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0c3RvcmVNZXRyaWNzKGRhdGE6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmF1ZGl0QXBpVXJsfS9tZXRyaWNzL3N0b3JlLW1ldHJpY3NgLGRhdGEpXHJcbiAgfVxyXG4gIGdldHN0b3JlTWV0cmljc0V4cG9ydChkYXRhOmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5hdWRpdEFwaVVybH0vbWV0cmljcy9zdG9yZS1tZXRyaWNzYCxkYXRhLHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuICBnZXRjbGllbnRMaXN0KCl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmF1ZGl0QXBpVXJsfS9jbGllbnRzYClcclxuICB9XHJcbiAgZ2V0dXNlckxpc3QoKXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXVkaXRBcGlVcmx9L3RhbmdvLXVzZXJzYClcclxuICB9XHJcbiAgYXVkaXRyZXRyaWdnZXIoZGF0YTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXVkaXRBcGlVcmx9L21ldHJpY3MvcmUtdHJpZ2dlcmAsZGF0YSlcclxuIH1cclxuIGdldGZvb3RmYWxsY291bnQoZGF0YTphbnkpe1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMucmV2b3BBcGlVcmx9L3N0b3JlLXByb2Nlc3NlZC1kYXRhP3N0b3JlSWQ9JHtkYXRhLnN0b3JlSWR9JmZyb21EYXRlPSR7ZGF0YS5EYXRlfSZ0b0RhdGU9JHtkYXRhLkRhdGV9YClcclxuICBcclxuIH1cclxuIGdldHN0b3JlTGlzdChkYXRhOmFueSl7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXVkaXRBcGlVcmx9L2F1ZGl0LXN0b3Jlc2AsZGF0YSlcclxuIH1cclxuIGNoZWNrVGlja2V0RXhpc3RzKGRhdGE6YW55KXtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vY2hlY2tUaWNrZXRFeGlzdHNgLGRhdGEpXHJcbiB9XHJcbiBtZXJnZXRpY2tldChkYXRhOmFueSl7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L21lcmdldGlja2V0YCxkYXRhKVxyXG4gfVxyXG4gIGdldERhdGFNaXNtYXRoTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KFxyXG4gICAgICBgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2RhdGFNaXNtYXRjaFRhYmxlYCxcclxuICAgICAgZGF0YVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFNaXNtYXRjaExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvZGF0YU1pc21hdGNoVGFibGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QXVkaXRJbWFnZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5hdWRpdEFwaVVybH0vYXVkaXQtaW1hZ2VzP2ZpbGVEYXRlPSR7ZGF0YT8uZmlsZURhdGV9JnN0b3JlSWQ9JHtkYXRhPy5zdG9yZUlkfSZpbWFnZVR5cGU9JHtkYXRhPy5pbWFnZVR5cGV9JmV4cG9ydD0ke2RhdGE/LmV4cG9ydH0mem9uZU5hbWU9JHtkYXRhPy56b25lTmFtZX0mbW9kdWxlVHlwZT0ke2RhdGE/Lm1vZHVsZVR5cGV9YFxyXG4gICAgKTtcclxuICB9XHJcbiAgRXhwb3J0QXVkaXRJbWFnZXNhc3hsc3goZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5hdWRpdEFwaVVybH0vYXVkaXQtaW1hZ2VzP2ZpbGVEYXRlPSR7ZGF0YT8uZmlsZURhdGV9JnN0b3JlSWQ9JHtkYXRhPy5zdG9yZUlkfSZpbWFnZVR5cGU9JHtkYXRhPy5pbWFnZVR5cGV9JmV4cG9ydD0ke2RhdGE/LmV4cG9ydH0mem9uZU5hbWU9JHtkYXRhPy56b25lTmFtZX0mbW9kdWxlVHlwZT0ke2RhdGE/Lm1vZHVsZVR5cGV9YCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGlja2V0U3VtbWFyeUFwaShcclxuICAgIGNsaWVudDogYW55LFxyXG4gICAgZnJvbURhdGU6IGFueSxcclxuICAgIHRvRGF0ZTogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS90aWNrZXQtc3VtbWFyeT9jbGllbnRJZD0ke2NsaWVudH0mZnJvbURhdGU9JHtmcm9tRGF0ZX0mdG9EYXRlPSR7dG9EYXRlfWBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRMaXN0T2xkQXBpKFxyXG4gICAgY2xpZW50OiBhbnksXHJcbiAgICBmcm9tRGF0ZTogYW55LFxyXG4gICAgdG9EYXRlOiBhbnksXHJcbiAgICBzZWFyY2h2YWx1ZTogYW55LFxyXG4gICAgbGltaXQ6IGFueSxcclxuICAgIG9mZnNldDogYW55LFxyXG4gICAgaXNFeHBvcnQ6IGFueSxcclxuICAgIHNvcnRCeTogYW55LFxyXG4gICAgc29ydE9yZGVyOiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3RpY2tldC1saXN0P2NsaWVudElkPSR7Y2xpZW50fSZmcm9tRGF0ZT0ke2Zyb21EYXRlfSZ0b0RhdGU9JHt0b0RhdGV9JnNlYXJjaFZhbHVlPSR7c2VhcmNodmFsdWV9JmxpbWl0PSR7bGltaXR9Jm9mZnNldD0ke29mZnNldH0maXNFeHBvcnQ9JHtpc0V4cG9ydH0mc29ydEJ5PSR7c29ydEJ5fSZzb3J0T3JkZXI9JHtzb3J0T3JkZXJ9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldExpc3RBcGkoXHJcbiAgICBjbGllbnQ6IGFueSxcclxuICAgIGZyb21EYXRlOiBhbnksXHJcbiAgICB0b0RhdGU6IGFueSxcclxuICAgIHNlYXJjaHZhbHVlOiBhbnksXHJcbiAgICBsaW1pdDogYW55LFxyXG4gICAgb2Zmc2V0OiBhbnksXHJcbiAgICBpc0V4cG9ydDogYW55LFxyXG4gICAgc29ydEJ5OiBhbnksXHJcbiAgICBzb3J0T3JkZXI6IGFueSxcclxuICAgIHRhbmdvVHlwZTogYW55LFxyXG4gICAgIHBlcm1pc3Npb25UeXBlPzogc3RyaW5nIHwgbnVsbFxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdGlja2V0LWxpc3Q/YCArXHJcbiAgICAgICAgICAgIGBjbGllbnRJZD0ke2NsaWVudH1gICtcclxuICAgICAgICAgICAgYCZmcm9tRGF0ZT0ke2Zyb21EYXRlfWAgK1xyXG4gICAgICAgICAgICBgJnRvRGF0ZT0ke3RvRGF0ZX1gICtcclxuICAgICAgICAgICAgYCZzZWFyY2hWYWx1ZT0ke3NlYXJjaHZhbHVlfWAgK1xyXG4gICAgICAgICAgICBgJmxpbWl0PSR7bGltaXR9YCArXHJcbiAgICAgICAgICAgIGAmb2Zmc2V0PSR7b2Zmc2V0fWAgK1xyXG4gICAgICAgICAgICBgJmlzRXhwb3J0PSR7aXNFeHBvcnR9YCArXHJcbiAgICAgICAgICAgIGAmc29ydEJ5PSR7c29ydEJ5fWAgK1xyXG4gICAgICAgICAgICBgJnNvcnRPcmRlcj0ke3NvcnRPcmRlcn1gICtcclxuICAgICAgICAgICAgYCZ0YW5nb1R5cGU9JHt0YW5nb1R5cGV9YDtcclxuXHJcbiAgaWYgKHBlcm1pc3Npb25UeXBlKSB7XHJcbiAgICB1cmwgKz0gYCZwZXJtaXNzaW9uVHlwZT0ke3Blcm1pc3Npb25UeXBlfWA7IFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldExpc3RFeHBvcnRPbGRBcGkoXHJcbiAgICBjbGllbnQ6IGFueSxcclxuICAgIGZyb21EYXRlOiBhbnksXHJcbiAgICB0b0RhdGU6IGFueSxcclxuICAgIHNlYXJjaHZhbHVlOiBhbnksXHJcbiAgICBsaW1pdDogYW55LFxyXG4gICAgb2Zmc2V0OiBhbnksXHJcbiAgICBpc0V4cG9ydDogYW55LFxyXG4gICAgc29ydEJ5OiBhbnksXHJcbiAgICBzb3J0T3JkZXI6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdGlja2V0LWxpc3Q/Y2xpZW50SWQ9JHtjbGllbnR9JmZyb21EYXRlPSR7ZnJvbURhdGV9JnRvRGF0ZT0ke3RvRGF0ZX0mc2VhcmNoVmFsdWU9JHtzZWFyY2h2YWx1ZX0mbGltaXQ9JHtsaW1pdH0mb2Zmc2V0PSR7b2Zmc2V0fSZpc0V4cG9ydD0ke2lzRXhwb3J0fSZzb3J0Qnk9JHtzb3J0Qnl9JnNvcnRPcmRlcj0ke3NvcnRPcmRlcn1gLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRMaXN0RXhwb3J0QXBpKFxyXG4gICAgIGNsaWVudDogYW55LFxyXG4gICAgZnJvbURhdGU6IGFueSxcclxuICAgIHRvRGF0ZTogYW55LFxyXG4gICAgc2VhcmNodmFsdWU6IGFueSxcclxuICAgIGxpbWl0OiBhbnksXHJcbiAgICBvZmZzZXQ6IGFueSxcclxuICAgIGlzRXhwb3J0OiBhbnksXHJcbiAgICBzb3J0Qnk6IGFueSxcclxuICAgIHNvcnRPcmRlcjogYW55LFxyXG4gICAgdGFuZ29UeXBlOiBhbnksXHJcbiAgICAgcGVybWlzc2lvblR5cGU/OiBzdHJpbmcgfCBudWxsXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICBsZXQgdXJsID0gYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdGlja2V0LWxpc3Q/YCArXHJcbiAgICAgICAgICAgIGBjbGllbnRJZD0ke2NsaWVudH1gICtcclxuICAgICAgICAgICAgYCZmcm9tRGF0ZT0ke2Zyb21EYXRlfWAgK1xyXG4gICAgICAgICAgICBgJnRvRGF0ZT0ke3RvRGF0ZX1gICtcclxuICAgICAgICAgICAgYCZzZWFyY2hWYWx1ZT0ke3NlYXJjaHZhbHVlfWAgK1xyXG4gICAgICAgICAgICBgJmxpbWl0PSR7bGltaXR9YCArXHJcbiAgICAgICAgICAgIGAmb2Zmc2V0PSR7b2Zmc2V0fWAgK1xyXG4gICAgICAgICAgICBgJmlzRXhwb3J0PSR7aXNFeHBvcnR9YCArXHJcbiAgICAgICAgICAgIGAmc29ydEJ5PSR7c29ydEJ5fWAgK1xyXG4gICAgICAgICAgICBgJnNvcnRPcmRlcj0ke3NvcnRPcmRlcn1gICtcclxuICAgICAgICAgICAgYCZ0YW5nb1R5cGU9JHt0YW5nb1R5cGV9YDtcclxuXHJcbiAgaWYgKHBlcm1pc3Npb25UeXBlKSB7XHJcbiAgICB1cmwgKz0gYCZwZXJtaXNzaW9uVHlwZT0ke3Blcm1pc3Npb25UeXBlfWA7XHJcbiAgfVxyXG5cclxuICAvLyBJZiBleHBvcnQgaXMgVFJVRSDihpIgcmV0dXJuIGFycmF5YnVmZmVyXHJcbiAgY29uc3Qgb3B0aW9ucyA9IGlzRXhwb3J0XHJcbiAgICA/IHsgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzICdqc29uJyB9XHJcbiAgICA6IHt9O1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGlja2V0c0FwaShcclxuICAgIHN0b3JlOiBhbnksXHJcbiAgICBmcm9tRGF0ZTogYW55LFxyXG4gICAgdG9EYXRlOiBhbnksXHJcbiAgICByZXZvcHNUeXBlOiBhbnksXHJcbiAgICBzdGF0dXM6IGFueSxcclxuICAgIGFjdGlvbjogYW55LFxyXG4gICAgb2Zmc2V0OiBhbnksXHJcbiAgICBsaW1pdDogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgIC5zZXQoXCJzdG9yZUlkXCIsIHN0b3JlKVxyXG4gICAgICAuc2V0KFwiZnJvbURhdGVcIiwgZnJvbURhdGUpXHJcbiAgICAgIC5zZXQoXCJ0b0RhdGVcIiwgdG9EYXRlKVxyXG4gICAgICAuc2V0KFwib2Zmc2V0XCIsIG9mZnNldClcclxuICAgICAgLnNldChcImxpbWl0XCIsIGxpbWl0KTtcclxuICAgIGlmIChyZXZvcHNUeXBlKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJyZXZvcHNUeXBlXCIsIHJldm9wc1R5cGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwic3RhdHVzXCIsIHN0YXR1cyk7XHJcbiAgICB9XHJcbiAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJhY3Rpb25cIiwgYWN0aW9uKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2dldC10aWNrZXRzYCwgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRzTmV3QXBpKHRpY2tldElkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwidGlja2V0SWRcIiwgdGlja2V0SWQpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vZ2V0LXRpY2tldHNgLCB7IHBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGdldFRhZ2dlZFN0b3Jlc0FwaShcclxuICAgIGNsaWVudDogYW55LFxyXG4gICAgZnJvbURhdGU6IGFueSxcclxuICAgIHRvRGF0ZTogYW55LFxyXG4gICAgc2VhcmNoVmFsdWU6IGFueSxcclxuICAgIGNsdXN0ZXJzOiBhbnksXHJcbiAgICBzb3J0T3JkZXI6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAuc2V0KFwiY2xpZW50SWRcIiwgY2xpZW50KVxyXG4gICAgICAuc2V0KFwiZnJvbURhdGVcIiwgZnJvbURhdGUpXHJcbiAgICAgIC5zZXQoXCJ0b0RhdGVcIiwgdG9EYXRlKTsgLy8gQWRkIHNlYXJjaFZhbHVlIGFzIGFuIGVtcHR5IHN0cmluZyBpZiBub3QgcHJvdmlkZWRcclxuICAgIC8vIE9ubHkgYWRkICdjbHVzdGVycycgaWYgaXQncyBub3QgbnVsbCwgdW5kZWZpbmVkLCBvciBhbiBlbXB0eSBhcnJheS9zdHJpbmdcclxuICAgIGlmIChzZWFyY2hWYWx1ZSkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwic2VhcmNoVmFsdWVcIiwgc2VhcmNoVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjbHVzdGVycyAmJiBjbHVzdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJjbHVzdGVyc1wiLCBjbHVzdGVycyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydE9yZGVyKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJzb3J0T3JkZXJcIiwgc29ydE9yZGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2dldC10YWdnZWQtc3RvcmVzYCwge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFVwZGF0ZVN0YXR1c0FwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdXBkYXRlLXN0YXR1c2A7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh1cmwsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXBkYXRlVGVtcFN0YXR1c0FwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3VwZGF0ZS10ZW1wLXN0YXR1c2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3BlblRpY2tldExpc3RBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9vcGVuLXRpY2tldC1saXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRVcGRhdGVUaWNrZXRTdGF0dXNBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdXBkYXRlLXRpY2tldC1zdGF0dXNgLFxyXG4gICAgICBkYXRhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbmdldENyZWF0ZVRpY2tldExpc3RBcGkoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9jcmVhdGUtdGlja2V0YCwgZGF0YSk7XHJcbn1cclxuQ3JlYXRlaW50ZXJuYWxUaWNrZXRBcGkoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9jcmVhdGUtaW50ZXJuYWx0aWNrZXRgLCBkYXRhKTtcclxufVxyXG4gIGdldGNsdXN0ZXJzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyY2x1c3Rlcl92MmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmV2aWV3ZXJBcGkoY2xpZW50SWQ6IGFueSx0eXBlOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJjbGllbnRJZFwiLCBjbGllbnRJZClcclxuICAgICAgLnNldChcInR5cGVcIix0eXBlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3Jldmlld2VyLWxpc3RgLCB7IHBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldEFzc2lnbkFwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2Fzc2lnbi10aWNrZXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE11bHRpQ2xvc2VUaWNrZXRBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vbXVsdGktY2xvc2UtdGlja2V0c2AsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlRnVuY3Rpb24oY2xpZW50SWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJjbGllbnRJZFwiLCBjbGllbnRJZCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vZ2V0LWZvb3RmYWxsLWRpcmVjdG9yeS1jb25maWdgLCB7IHBhcmFtcyB9KTtcclxuXHJcbiAgICBcclxuICB9XHJcbiAgcHJpdmF0ZSBmb290ZmFsbERhdGE6IGFueTtcclxuXHJcbiAgc2V0Rm9vdGZhbGxEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5mb290ZmFsbERhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9vdGZhbGxEYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9vdGZhbGxEYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdGlja2V0cy9zcmMvbGliL3NlcnZpY2VzL3RpY2tldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUNMLGVBQWUsR0FNaEIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFJbEQsTUFBTSxPQUFPLGFBQWE7SUFZSjtJQUEwQjtJQVg5QyxVQUFVLENBQU07SUFDaEIsYUFBYSxDQUFNO0lBQ25CLFdBQVcsQ0FBTTtJQUNqQixpQkFBaUIsQ0FBTTtJQUN2QixlQUFlLENBQU07SUFDckIsaUJBQWlCLENBQU07SUFDdkIsV0FBVyxDQUFNO0lBQ2pCLGFBQWEsQ0FBTTtJQUNuQixXQUFXLENBQU07SUFDakIsWUFBWSxDQUFLO0lBQ2pCLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNqRCxZQUFvQixJQUFnQixFQUFVLEVBQXNCO1FBQWhELFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUNsRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFD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LElBQVM7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVM7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLHNCQUFzQixFQUMvQyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBYTtRQUMzQixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUd6RixDQUFDO0lBQ08sWUFBWSxDQUFNO0lBRTFCLGVBQWUsQ0FBQyxJQUFTO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7d0dBeGNVLGFBQWE7NEdBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LFxyXG4gIE9ic2VydmFibGUsXHJcbiAgY2F0Y2hFcnJvcixcclxuICBtYXAsXHJcbiAgb2YsXHJcbiAgdGhyb3dFcnJvcixcclxufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpY2tldFNlcnZpY2Uge1xyXG4gIHVzZXJBcGlVcmw6IGFueTtcclxuICB0aWNrZXRzQXBpVXJsOiBhbnk7XHJcbiAgYXVkaXRBcGlVcmw6IGFueTtcclxuICBhdWRpdG1ldHJpY0FwaVVybDogYW55O1xyXG4gIHpvbmVhdWRpdEFwaVVybDogYW55O1xyXG4gIGZvb3RmYWxsRGlyYXBpVXJsOiBhbnk7XHJcbiAgZm9vdGZhbGxDRE46IGFueTtcclxuICB0cmFmZmljQXBpVXJsOiBhbnk7XHJcbiAgcmV2b3BBcGlVcmw6IGFueTtcclxuICBjbGllbnRBcGlVcmw6YW55O1xyXG4gIGRyb3BEb3duVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy51c2VyQXBpVXJsID0gZW52LnVzZXJBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzQXBpVXJsID0gZW52LnRpY2tldHNBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1ldHJpY0FwaVVybCA9IGVudi5hdWRpdG1ldHJpY0FwaVVybDtcclxuICAgICAgICB0aGlzLmF1ZGl0QXBpVXJsID0gZW52LmF1ZGl0QXBpVXJsO1xyXG4gICAgICAgIHRoaXMuem9uZWF1ZGl0QXBpVXJsID0gZW52LnpvbmVhdWRpdEFwaVVybDtcclxuICAgICAgICB0aGlzLmNsaWVudEFwaVVybCA9IGVudi5jbGllbnRBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5mb290ZmFsbERpcmFwaVVybCA9IGVudi5mb290ZmFsbERpcmFwaVVybDtcclxuICAgICAgICB0aGlzLmZvb3RmYWxsQ0ROID0gZW52LmZvb3RmYWxsQ0ROO1xyXG4gICAgICAgIHRoaXMudHJhZmZpY0FwaVVybCA9IGVudi50cmFmZmljQXBpVXJsO1xyXG4gICAgICAgIHRoaXMucmV2b3BBcGlVcmwgPSBlbnYucmV2b3BBcGlVcmw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckxpc3QocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy51c2VyQXBpVXJsfS9nZXQtbGlzdGAsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRJbnN0YWxsYXRpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2luc3RhbGxhdGlvblRhYmxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0SW5mcmFMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvaW5mcmFUYWJsZWAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydE1hdExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9tYXRUYWJsZWAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNvdHJlc0xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL3N0b3JlRmlsdGVyYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRJbnN0YWxsYXRpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXHJcbiAgICAgIGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvaW5zdGFsbGF0aW9uVGFibGVgLFxyXG4gICAgICBkYXRhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5mcmFMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9pbmZyYVRhYmxlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3NpZ25UaWNrZXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9hc3NpZ25UaWNrZXRgLFxyXG4gICAgICBkYXRhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWF0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvbWF0VGFibGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRpY2tldElzc3VlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXHJcbiAgICAgIGAke3RoaXMudGlja2V0c0FwaVVybH0vZW1wbG95ZWVUcmFuaW5nL3VwZGF0ZWNvbW1lbnRgLFxyXG4gICAgICBkYXRhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckFjdGl2ZUxpc3QocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy51c2VyQXBpVXJsfS9saXN0YCwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGdldEFsbENvdW50cyhkYXRhOmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2FsbENvdW50c2AsIGRhdGEpXHJcbiAgfVxyXG4gIGdldHN0b3JlTWV0cmljcyhkYXRhOmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5hdWRpdEFwaVVybH0vbWV0cmljcy9zdG9yZS1tZXRyaWNzYCxkYXRhKVxyXG4gIH1cclxuICBnZXRzdG9yZU1ldHJpY3NFeHBvcnQoZGF0YTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXVkaXRBcGlVcmx9L21ldHJpY3Mvc3RvcmUtbWV0cmljc2AsZGF0YSx7cmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInfSlcclxuICB9XHJcbiAgZ2V0Y2xpZW50TGlzdCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hdWRpdEFwaVVybH0vY2xpZW50c2ApXHJcbiAgfVxyXG4gIGdldHVzZXJMaXN0KCl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmF1ZGl0QXBpVXJsfS90YW5nby11c2Vyc2ApXHJcbiAgfVxyXG4gIGF1ZGl0cmV0cmlnZ2VyKGRhdGE6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmF1ZGl0QXBpVXJsfS9tZXRyaWNzL3JlLXRyaWdnZXJgLGRhdGEpXHJcbiB9XHJcbiBnZXRmb290ZmFsbGNvdW50KGRhdGE6YW55KXtcclxuICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnJldm9wQXBpVXJsfS9zdG9yZS1wcm9jZXNzZWQtZGF0YT9zdG9yZUlkPSR7ZGF0YS5zdG9yZUlkfSZmcm9tRGF0ZT0ke2RhdGEuRGF0ZX0mdG9EYXRlPSR7ZGF0YS5EYXRlfWApXHJcbiAgXHJcbiB9XHJcbiBnZXRzdG9yZUxpc3QoZGF0YTphbnkpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmF1ZGl0QXBpVXJsfS9hdWRpdC1zdG9yZXNgLGRhdGEpXHJcbiB9XHJcbiBjaGVja1RpY2tldEV4aXN0cyhkYXRhOmFueSl7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2NoZWNrVGlja2V0RXhpc3RzYCxkYXRhKVxyXG4gfVxyXG4gbWVyZ2V0aWNrZXQoZGF0YTphbnkpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9tZXJnZXRpY2tldGAsZGF0YSlcclxuIH1cclxuICBnZXREYXRhTWlzbWF0aExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9kYXRhTWlzbWF0Y2hUYWJsZWAsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhTWlzbWF0Y2hMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2RhdGFNaXNtYXRjaFRhYmxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEF1ZGl0SW1hZ2VzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuYXVkaXRBcGlVcmx9L2F1ZGl0LWltYWdlcz9maWxlRGF0ZT0ke2RhdGE/LmZpbGVEYXRlfSZzdG9yZUlkPSR7ZGF0YT8uc3RvcmVJZH0maW1hZ2VUeXBlPSR7ZGF0YT8uaW1hZ2VUeXBlfSZleHBvcnQ9JHtkYXRhPy5leHBvcnR9JnpvbmVOYW1lPSR7ZGF0YT8uem9uZU5hbWV9Jm1vZHVsZVR5cGU9JHtkYXRhPy5tb2R1bGVUeXBlfWBcclxuICAgICk7XHJcbiAgfVxyXG4gIEV4cG9ydEF1ZGl0SW1hZ2VzYXN4bHN4KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuYXVkaXRBcGlVcmx9L2F1ZGl0LWltYWdlcz9maWxlRGF0ZT0ke2RhdGE/LmZpbGVEYXRlfSZzdG9yZUlkPSR7ZGF0YT8uc3RvcmVJZH0maW1hZ2VUeXBlPSR7ZGF0YT8uaW1hZ2VUeXBlfSZleHBvcnQ9JHtkYXRhPy5leHBvcnR9JnpvbmVOYW1lPSR7ZGF0YT8uem9uZU5hbWV9Jm1vZHVsZVR5cGU9JHtkYXRhPy5tb2R1bGVUeXBlfWAsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldFN1bW1hcnlBcGkoXHJcbiAgICBjbGllbnQ6IGFueSxcclxuICAgIGZyb21EYXRlOiBhbnksXHJcbiAgICB0b0RhdGU6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdGlja2V0LXN1bW1hcnk/Y2xpZW50SWQ9JHtjbGllbnR9JmZyb21EYXRlPSR7ZnJvbURhdGV9JnRvRGF0ZT0ke3RvRGF0ZX1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGlja2V0TGlzdE9sZEFwaShcclxuICAgIGNsaWVudDogYW55LFxyXG4gICAgZnJvbURhdGU6IGFueSxcclxuICAgIHRvRGF0ZTogYW55LFxyXG4gICAgc2VhcmNodmFsdWU6IGFueSxcclxuICAgIGxpbWl0OiBhbnksXHJcbiAgICBvZmZzZXQ6IGFueSxcclxuICAgIGlzRXhwb3J0OiBhbnksXHJcbiAgICBzb3J0Qnk6IGFueSxcclxuICAgIHNvcnRPcmRlcjogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS90aWNrZXQtbGlzdD9jbGllbnRJZD0ke2NsaWVudH0mZnJvbURhdGU9JHtmcm9tRGF0ZX0mdG9EYXRlPSR7dG9EYXRlfSZzZWFyY2hWYWx1ZT0ke3NlYXJjaHZhbHVlfSZsaW1pdD0ke2xpbWl0fSZvZmZzZXQ9JHtvZmZzZXR9JmlzRXhwb3J0PSR7aXNFeHBvcnR9JnNvcnRCeT0ke3NvcnRCeX0mc29ydE9yZGVyPSR7c29ydE9yZGVyfWBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuZ2V0VGlja2V0TGlzdEFwaShcclxuICBjbGllbnQ6IGFueSxcclxuICBmcm9tRGF0ZTogYW55LFxyXG4gIHRvRGF0ZTogYW55LFxyXG4gIHNlYXJjaHZhbHVlOiBhbnksXHJcbiAgbGltaXQ6IGFueSxcclxuICBvZmZzZXQ6IGFueSxcclxuICBpc0V4cG9ydDogYW55LFxyXG4gIHNvcnRCeTogYW55LFxyXG4gIHNvcnRPcmRlcjogYW55LFxyXG4gIHRhbmdvVHlwZTogYW55LFxyXG4gIHBlcm1pc3Npb25UeXBlPzogc3RyaW5nIHwgbnVsbCxcclxuICBmaWx0ZXJzPzoge1xyXG4gICAgZmlsdGVyQnlTdGF0dXM/OiBzdHJpbmdbXTtcclxuICAgIGZpbHRlckJ5UmV2aWV3ZXI/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZmlsdGVyQnlBcHByb3Zlcj86IHN0cmluZyB8IG51bGw7XHJcbiAgICBmaWx0ZXJCeVRhbmdvPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGZpbHRlckJ5UmV2aWV3ZWRCeT86IHN0cmluZ1tdO1xyXG4gICAgZmlsZXRlckJ5QXBwcm92ZWRCeT86IHN0cmluZ1tdO1xyXG4gIH1cclxuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICBsZXQgdXJsID1cclxuICAgIGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3RpY2tldC1saXN0P2AgK1xyXG4gICAgYGNsaWVudElkPSR7Y2xpZW50fWAgK1xyXG4gICAgYCZmcm9tRGF0ZT0ke2Zyb21EYXRlfWAgK1xyXG4gICAgYCZ0b0RhdGU9JHt0b0RhdGV9YCArXHJcbiAgICBgJnNlYXJjaFZhbHVlPSR7c2VhcmNodmFsdWV9YCArXHJcbiAgICBgJmxpbWl0PSR7bGltaXR9YCArXHJcbiAgICBgJm9mZnNldD0ke29mZnNldH1gICtcclxuICAgIGAmaXNFeHBvcnQ9JHtpc0V4cG9ydH1gICtcclxuICAgIGAmc29ydEJ5PSR7c29ydEJ5fWAgK1xyXG4gICAgYCZzb3J0T3JkZXI9JHtzb3J0T3JkZXJ9YCArXHJcbiAgICBgJnRhbmdvVHlwZT0ke3RhbmdvVHlwZX1gO1xyXG5cclxuICBpZiAocGVybWlzc2lvblR5cGUpIHtcclxuICAgIHVybCArPSBgJnBlcm1pc3Npb25UeXBlPSR7cGVybWlzc2lvblR5cGV9YDtcclxuICB9XHJcblxyXG4gIGlmIChmaWx0ZXJzKSB7XHJcbiAgICAvLyBhcnJheSBwYXJhbXMg4oCTIHNlbmQgYXMgY29tbWEtc2VwYXJhdGVkXHJcbiAgICBpZiAoZmlsdGVycy5maWx0ZXJCeVN0YXR1cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5U3RhdHVzPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcnMuZmlsdGVyQnlTdGF0dXMuam9pbignLCcpKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJzLmZpbHRlckJ5UmV2aWV3ZWRCeT8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5UmV2aWV3ZWRCeT0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJzLmZpbHRlckJ5UmV2aWV3ZWRCeS5qb2luKCcsJykpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlcnMuZmlsZXRlckJ5QXBwcm92ZWRCeT8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbGV0ZXJCeUFwcHJvdmVkQnk9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5maWxldGVyQnlBcHByb3ZlZEJ5LmpvaW4oJywnKSl9YDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdHJpbmcgcGFyYW1zIOKAkyBKU09OIHN0cmluZ2lmaWVkIGFjY3VyYWN5XHJcbiAgICBpZiAoZmlsdGVycy5maWx0ZXJCeVJldmlld2VyKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5UmV2aWV3ZXI9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5maWx0ZXJCeVJldmlld2VyKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJzLmZpbHRlckJ5QXBwcm92ZXIpIHtcclxuICAgICAgdXJsICs9IGAmZmlsdGVyQnlBcHByb3Zlcj0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJzLmZpbHRlckJ5QXBwcm92ZXIpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlcnMuZmlsdGVyQnlUYW5nbykge1xyXG4gICAgICB1cmwgKz0gYCZmaWx0ZXJCeVRhbmdvPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcnMuZmlsdGVyQnlUYW5nbyl9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCk7XHJcbn1cclxuXHJcblxyXG4gIGdldFRpY2tldExpc3RFeHBvcnRPbGRBcGkoXHJcbiAgICBjbGllbnQ6IGFueSxcclxuICAgIGZyb21EYXRlOiBhbnksXHJcbiAgICB0b0RhdGU6IGFueSxcclxuICAgIHNlYXJjaHZhbHVlOiBhbnksXHJcbiAgICBsaW1pdDogYW55LFxyXG4gICAgb2Zmc2V0OiBhbnksXHJcbiAgICBpc0V4cG9ydDogYW55LFxyXG4gICAgc29ydEJ5OiBhbnksXHJcbiAgICBzb3J0T3JkZXI6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdGlja2V0LWxpc3Q/Y2xpZW50SWQ9JHtjbGllbnR9JmZyb21EYXRlPSR7ZnJvbURhdGV9JnRvRGF0ZT0ke3RvRGF0ZX0mc2VhcmNoVmFsdWU9JHtzZWFyY2h2YWx1ZX0mbGltaXQ9JHtsaW1pdH0mb2Zmc2V0PSR7b2Zmc2V0fSZpc0V4cG9ydD0ke2lzRXhwb3J0fSZzb3J0Qnk9JHtzb3J0Qnl9JnNvcnRPcmRlcj0ke3NvcnRPcmRlcn1gLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuZ2V0VGlja2V0TGlzdEV4cG9ydEFwaShcclxuICBjbGllbnQ6IGFueSxcclxuICBmcm9tRGF0ZTogYW55LFxyXG4gIHRvRGF0ZTogYW55LFxyXG4gIHNlYXJjaHZhbHVlOiBhbnksXHJcbiAgbGltaXQ6IGFueSxcclxuICBvZmZzZXQ6IGFueSxcclxuICBpc0V4cG9ydDogYW55LFxyXG4gIHNvcnRCeTogYW55LFxyXG4gIHNvcnRPcmRlcjogYW55LFxyXG4gIHRhbmdvVHlwZTogYW55LFxyXG4gIHBlcm1pc3Npb25UeXBlPzogc3RyaW5nIHwgbnVsbCxcclxuICBmaWx0ZXJzPzoge1xyXG4gICAgZmlsdGVyQnlTdGF0dXM/OiBzdHJpbmdbXTtcclxuICAgIGZpbHRlckJ5UmV2aWV3ZXI/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZmlsdGVyQnlBcHByb3Zlcj86IHN0cmluZyB8IG51bGw7XHJcbiAgICBmaWx0ZXJCeVRhbmdvPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGZpbHRlckJ5UmV2aWV3ZWRCeT86IHN0cmluZ1tdO1xyXG4gICAgZmlsZXRlckJ5QXBwcm92ZWRCeT86IHN0cmluZ1tdO1xyXG4gIH1cclxuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICBsZXQgdXJsID1cclxuICAgIGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3RpY2tldC1saXN0P2AgK1xyXG4gICAgYGNsaWVudElkPSR7Y2xpZW50fWAgK1xyXG4gICAgYCZmcm9tRGF0ZT0ke2Zyb21EYXRlfWAgK1xyXG4gICAgYCZ0b0RhdGU9JHt0b0RhdGV9YCArXHJcbiAgICBgJnNlYXJjaFZhbHVlPSR7c2VhcmNodmFsdWV9YCArXHJcbiAgICBgJmxpbWl0PSR7bGltaXR9YCArXHJcbiAgICBgJm9mZnNldD0ke29mZnNldH1gICtcclxuICAgIGAmaXNFeHBvcnQ9JHtpc0V4cG9ydH1gICtcclxuICAgIGAmc29ydEJ5PSR7c29ydEJ5fWAgK1xyXG4gICAgYCZzb3J0T3JkZXI9JHtzb3J0T3JkZXJ9YCArXHJcbiAgICBgJnRhbmdvVHlwZT0ke3RhbmdvVHlwZX1gO1xyXG5cclxuICBpZiAocGVybWlzc2lvblR5cGUpIHtcclxuICAgIHVybCArPSBgJnBlcm1pc3Npb25UeXBlPSR7cGVybWlzc2lvblR5cGV9YDtcclxuICB9XHJcblxyXG4gIGlmIChmaWx0ZXJzKSB7XHJcbiAgICBpZiAoZmlsdGVycy5maWx0ZXJCeVN0YXR1cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5U3RhdHVzPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcnMuZmlsdGVyQnlTdGF0dXMuam9pbignLCcpKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJzLmZpbHRlckJ5UmV2aWV3ZWRCeT8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5UmV2aWV3ZWRCeT0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJzLmZpbHRlckJ5UmV2aWV3ZWRCeS5qb2luKCcsJykpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlcnMuZmlsZXRlckJ5QXBwcm92ZWRCeT8ubGVuZ3RoKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbGV0ZXJCeUFwcHJvdmVkQnk9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5maWxldGVyQnlBcHByb3ZlZEJ5LmpvaW4oJywnKSl9YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsdGVycy5maWx0ZXJCeVJldmlld2VyKSB7XHJcbiAgICAgIHVybCArPSBgJmZpbHRlckJ5UmV2aWV3ZXI9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5maWx0ZXJCeVJldmlld2VyKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJzLmZpbHRlckJ5QXBwcm92ZXIpIHtcclxuICAgICAgdXJsICs9IGAmZmlsdGVyQnlBcHByb3Zlcj0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJzLmZpbHRlckJ5QXBwcm92ZXIpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlcnMuZmlsdGVyQnlUYW5nbykge1xyXG4gICAgICB1cmwgKz0gYCZmaWx0ZXJCeVRhbmdvPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcnMuZmlsdGVyQnlUYW5nbyl9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IG9wdGlvbnMgPSBpc0V4cG9ydFxyXG4gICAgPyB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyBhcyAnanNvbicgfVxyXG4gICAgOiB7fTtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCBvcHRpb25zKTtcclxufVxyXG5cclxuXHJcbiAgZ2V0VGlja2V0c0FwaShcclxuICAgIHN0b3JlOiBhbnksXHJcbiAgICBmcm9tRGF0ZTogYW55LFxyXG4gICAgdG9EYXRlOiBhbnksXHJcbiAgICByZXZvcHNUeXBlOiBhbnksXHJcbiAgICBzdGF0dXM6IGFueSxcclxuICAgIGFjdGlvbjogYW55LFxyXG4gICAgb2Zmc2V0OiBhbnksXHJcbiAgICBsaW1pdDogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgIC5zZXQoXCJzdG9yZUlkXCIsIHN0b3JlKVxyXG4gICAgICAuc2V0KFwiZnJvbURhdGVcIiwgZnJvbURhdGUpXHJcbiAgICAgIC5zZXQoXCJ0b0RhdGVcIiwgdG9EYXRlKVxyXG4gICAgICAuc2V0KFwib2Zmc2V0XCIsIG9mZnNldClcclxuICAgICAgLnNldChcImxpbWl0XCIsIGxpbWl0KTtcclxuICAgIGlmIChyZXZvcHNUeXBlKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJyZXZvcHNUeXBlXCIsIHJldm9wc1R5cGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwic3RhdHVzXCIsIHN0YXR1cyk7XHJcbiAgICB9XHJcbiAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJhY3Rpb25cIiwgYWN0aW9uKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2dldC10aWNrZXRzYCwgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRzTmV3QXBpKHRpY2tldElkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwidGlja2V0SWRcIiwgdGlja2V0SWQpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vZ2V0LXRpY2tldHNgLCB7IHBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGdldFRhZ2dlZFN0b3Jlc0FwaShcclxuICAgIGNsaWVudDogYW55LFxyXG4gICAgZnJvbURhdGU6IGFueSxcclxuICAgIHRvRGF0ZTogYW55LFxyXG4gICAgc2VhcmNoVmFsdWU6IGFueSxcclxuICAgIGNsdXN0ZXJzOiBhbnksXHJcbiAgICBzb3J0T3JkZXI6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAuc2V0KFwiY2xpZW50SWRcIiwgY2xpZW50KVxyXG4gICAgICAuc2V0KFwiZnJvbURhdGVcIiwgZnJvbURhdGUpXHJcbiAgICAgIC5zZXQoXCJ0b0RhdGVcIiwgdG9EYXRlKTsgLy8gQWRkIHNlYXJjaFZhbHVlIGFzIGFuIGVtcHR5IHN0cmluZyBpZiBub3QgcHJvdmlkZWRcclxuICAgIC8vIE9ubHkgYWRkICdjbHVzdGVycycgaWYgaXQncyBub3QgbnVsbCwgdW5kZWZpbmVkLCBvciBhbiBlbXB0eSBhcnJheS9zdHJpbmdcclxuICAgIGlmIChzZWFyY2hWYWx1ZSkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwic2VhcmNoVmFsdWVcIiwgc2VhcmNoVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjbHVzdGVycyAmJiBjbHVzdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJjbHVzdGVyc1wiLCBjbHVzdGVycyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydE9yZGVyKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJzb3J0T3JkZXJcIiwgc29ydE9yZGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2dldC10YWdnZWQtc3RvcmVzYCwge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFVwZGF0ZVN0YXR1c0FwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdXBkYXRlLXN0YXR1c2A7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh1cmwsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXBkYXRlVGVtcFN0YXR1c0FwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3VwZGF0ZS10ZW1wLXN0YXR1c2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3BlblRpY2tldExpc3RBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9vcGVuLXRpY2tldC1saXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRVcGRhdGVUaWNrZXRTdGF0dXNBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vdXBkYXRlLXRpY2tldC1zdGF0dXNgLFxyXG4gICAgICBkYXRhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbmdldENyZWF0ZVRpY2tldExpc3RBcGkoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9jcmVhdGUtdGlja2V0YCwgZGF0YSk7XHJcbn1cclxuQ3JlYXRlaW50ZXJuYWxUaWNrZXRBcGkoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmZvb3RmYWxsRGlyYXBpVXJsfS9jcmVhdGUtaW50ZXJuYWx0aWNrZXRgLCBkYXRhKTtcclxufVxyXG4gIGdldGNsdXN0ZXJzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyY2x1c3Rlcl92MmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmV2aWV3ZXJBcGkoY2xpZW50SWQ6IGFueSx0eXBlOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJjbGllbnRJZFwiLCBjbGllbnRJZClcclxuICAgICAgLnNldChcInR5cGVcIix0eXBlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L3Jldmlld2VyLWxpc3RgLCB7IHBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldEFzc2lnbkFwaShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZm9vdGZhbGxEaXJhcGlVcmx9L2Fzc2lnbi10aWNrZXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE11bHRpQ2xvc2VUaWNrZXRBcGkoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5mb290ZmFsbERpcmFwaVVybH0vbXVsdGktY2xvc2UtdGlja2V0c2AsXHJcbiAgICAgIGRhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlRnVuY3Rpb24oY2xpZW50SWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJjbGllbnRJZFwiLCBjbGllbnRJZCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vZ2V0LWZvb3RmYWxsLWRpcmVjdG9yeS1jb25maWdgLCB7IHBhcmFtcyB9KTtcclxuXHJcbiAgICBcclxuICB9XHJcbiAgcHJpdmF0ZSBmb290ZmFsbERhdGE6IGFueTtcclxuXHJcbiAgc2V0Rm9vdGZhbGxEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5mb290ZmFsbERhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9vdGZhbGxEYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9vdGZhbGxEYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=