@sunbird-cb/consumption 0.0.60 → 0.0.61

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.
@@ -5,9 +5,9 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Inject, Injectable } from '@angular/core';
7
7
  import { HttpClient, HttpHeaders } from '@angular/common/http';
8
- import { throwError, of } from 'rxjs';
8
+ import { Observable, throwError } from 'rxjs';
9
9
  import { catchError, map } from 'rxjs/operators';
10
- // import 'rxjs/add/observable/of'
10
+ import 'rxjs/add/observable/of';
11
11
  import * as dayjs_ from 'dayjs';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/common/http";
@@ -115,11 +115,32 @@ export class WidgetUserService {
115
115
  * @return {?}
116
116
  */
117
117
  (data) => {
118
- localStorage.setItem('enrollmentData', JSON.stringify(data.result));
118
+ /** @type {?} */
119
+ const coursesData = [];
120
+ if (data && data.result && data.result.courses) {
121
+ data.result.courses.forEach((/**
122
+ * @param {?} content
123
+ * @return {?}
124
+ */
125
+ (content) => {
126
+ if (content.contentStatus) {
127
+ delete content.contentStatus;
128
+ }
129
+ coursesData.push(content);
130
+ }));
131
+ this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo, data.result.courses.length);
132
+ data.result.courses = coursesData;
133
+ if (data.result.courses.length < 200) {
134
+ localStorage.removeItem('enrollmentData');
135
+ this.setTime('enrollmentService');
136
+ localStorage.setItem('enrollmentData', JSON.stringify(data.result));
137
+ this.mapEnrollmentData(data.result);
138
+ return data.result;
139
+ }
140
+ }
119
141
  this.mapEnrollmentData(data.result);
120
142
  return data.result;
121
143
  })));
122
- this.setTime('enrollmentService');
123
144
  return result;
124
145
  }
125
146
  return this.getData('enrollmentData');
@@ -199,7 +220,7 @@ export class WidgetUserService {
199
220
  * @return {?}
200
221
  */
201
222
  getData(key) {
202
- return of(JSON.parse(localStorage.getItem(key) || '{}'));
223
+ return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'));
203
224
  }
204
225
  /**
205
226
  * @param {?} key
@@ -303,11 +324,11 @@ export class WidgetUserService {
303
324
  const endDate = dayjs(c.endDate).format('YYYY-MM-DD');
304
325
  /** @type {?} */
305
326
  const daysCount = dayjs(endDate).diff(todayDate, 'day');
306
- childData.planDuration = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29
327
+ childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29
307
328
  ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING;
308
- childData.endDate = c.endDate;
309
- childData.parentId = c.id;
310
- childData.planType = 'cbPlan';
329
+ childData['endDate'] = c.endDate;
330
+ childData['parentId'] = c.id;
331
+ childData['planType'] = 'cbPlan';
311
332
  if (childData.status !== NsCardContent.IGOTConst.RETIRED) {
312
333
  contentNew.push(childData);
313
334
  }
@@ -330,9 +351,9 @@ export class WidgetUserService {
330
351
  const competencyThemeId = [];
331
352
  /** @type {?} */
332
353
  const competencySubThemeId = [];
333
- childData.contentStatus = 0;
354
+ childData['contentStatus'] = 0;
334
355
  if (childEnrollData) {
335
- childData.contentStatus = childEnrollData.status;
356
+ childData['contentStatus'] = childEnrollData.status;
336
357
  }
337
358
  if (childData.competencies_v5) {
338
359
  childData.competencies_v5.forEach((/**
@@ -357,13 +378,13 @@ export class WidgetUserService {
357
378
  }
358
379
  }));
359
380
  }
360
- childData.competencyArea = competencyArea;
361
- childData.competencyTheme = competencyTheme;
362
- childData.competencyThemeType = competencyThemeType;
363
- childData.competencySubTheme = competencySubTheme;
364
- childData.competencyAreaId = competencyAreaId;
365
- childData.competencyThemeId = competencyThemeId;
366
- childData.competencySubThemeId = competencySubThemeId;
381
+ childData['competencyArea'] = competencyArea;
382
+ childData['competencyTheme'] = competencyTheme;
383
+ childData['competencyThemeType'] = competencyThemeType;
384
+ childData['competencySubTheme'] = competencySubTheme;
385
+ childData['competencyAreaId'] = competencyAreaId;
386
+ childData['competencyThemeId'] = competencyThemeId;
387
+ childData['competencySubThemeId'] = competencySubThemeId;
367
388
  }));
368
389
  }));
369
390
  if (contentNew.length > 1) {
@@ -412,8 +433,23 @@ export class WidgetUserService {
412
433
  enrollData[data.collectionId] = data;
413
434
  }));
414
435
  }
436
+ localStorage.removeItem('enrollmentMapData');
415
437
  localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData));
416
438
  }
439
+ /**
440
+ * @param {?} enrollmentData
441
+ * @param {?} enrolledCourseCount
442
+ * @return {?}
443
+ */
444
+ storeUserEnrollmentInfo(enrollmentData, enrolledCourseCount) {
445
+ /** @type {?} */
446
+ const userData = {
447
+ enrolledCourseCount,
448
+ userCourseEnrolmentInfo: enrollmentData,
449
+ };
450
+ localStorage.removeItem('userEnrollmentCount');
451
+ localStorage.setItem('userEnrollmentCount', JSON.stringify(userData));
452
+ }
417
453
  }
418
454
  WidgetUserService.decorators = [
419
455
  { type: Injectable, args: [{
@@ -436,4 +472,4 @@ if (false) {
436
472
  WidgetUserService.prototype.http;
437
473
  }
438
474
  export { ɵ0, ɵ1, ɵ2, ɵ3 };
439
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy93aWRnZXQtdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUlqRCxPQUFPLEtBQUssTUFBTSxNQUFNLE9BQU8sQ0FBQzs7OztNQUMxQixLQUFLLEdBQUcsTUFBTTtBQUNwQiw2REFBNkQ7OztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O01BRzNCLGlCQUFpQixHQUFHLG9CQUFvQjs7Ozs7QUFFekIsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUNwQyxHQUFHLGlCQUFpQixxQ0FBcUMsTUFBTSxFQUFFOzs7O0FBRXZDLENBQUMsTUFBMEIsRUFBRSxFQUFFO0FBQ3pELDRDQUE0QztBQUM1QywyREFBMkQsTUFBTSx5VEFBeVQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLG1HQUFtRzs7OztBQUMvZCxDQUFDLE1BQTBCLEVBQUUsRUFBRTtBQUNqRSw0Q0FBNEM7QUFDNUMsMkRBQTJELE1BQU0seVRBQXlULGFBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSw4SEFBOEg7Ozs7Ozs7O0FBRS9mLENBQUMsTUFBMEIsRUFBRSxVQUFrQixFQUFFLGNBQXNCLEVBQUUsTUFBYyxFQUFFLFlBQW9CLEVBQUUsRUFBRTtB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LFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDOzs7WUFyUUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7OzRDQUlJLE1BQU0sU0FBQyxhQUFhO1lBcENoQixVQUFVOzs7OztJQWtDakIsd0NBQWlCOzs7OztJQUdmLGlDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVVzZXJHcm91cERldGFpbHMgfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC11c2VyLm1vZGVsJztcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnO1xuLy8gaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL29mJ1xuaW1wb3J0ICogYXMgZGF5anNfIGZyb20gJ2RheWpzJztcbmNvbnN0IGRheWpzID0gZGF5anNfXG4vLyBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJ3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnXG5pbXBvcnQgeyBOc0NhcmRDb250ZW50IH0gZnJvbSAnLi4vX21vZGVscy9jYXJkLWNvbnRlbnQtdjIubW9kZWwnO1xuaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XG5cblxuY29uc3QgUFJPVEVDVEVEX1NMQUdfVjggPSAnL2FwaXMvcHJvdGVjdGVkL3Y4JztcbmNvbnN0IEFQSV9FTkRfUE9JTlRTID0ge1xuICBGRVRDSF9VU0VSX0dST1VQUzogKHVzZXJJZDogc3RyaW5nKSA9PlxuICAgIGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2dyb3VwL2ZldGNoVXNlckdyb3VwP3VzZXJJZD0ke3VzZXJJZH1gLFxuICAgIEZFVENIX0NQQl9QTEFOUzogYC9hcGlzL3Byb3hpZXMvdjgvdXNlci92MS9jYnBsYW5gLFxuICBGRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVDogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9b3JnTmFtZSxlbWFpbCZsaWNlbnNlRGV0YWlscz1uYW1lLGRlc2NyaXB0aW9uLHVybCZmaWVsZHM9Y29udGVudFR5cGUscHJpbWFyeUNhdGVnb3J5LGNvdXJzZUNhdGVnb3J5LHRvcGljLG5hbWUsY2hhbm5lbCxtaW1lVHlwZSxhcHBJY29uLGdyYWRlTGV2ZWwscmVzb3VyY2VUeXBlLGlkZW50aWZpZXIsbWVkaXVtLHBrZ1ZlcnNpb24sYm9hcmQsc3ViamVjdCx0cmFja2FibGUscG9zdGVySW1hZ2UsZHVyYXRpb24sY3JlYXRvckxvZ28sbGljZW5zZSx2ZXJzaW9uLHZlcnNpb25LZXksYXZnUmF0aW5nLGFkZGl0aW9uYWxUYWdzLCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9bmFtZSxlbmREYXRlLHN0YXJ0RGF0ZSxzdGF0dXMsZW5yb2xsbWVudFR5cGUsY3JlYXRlZEJ5LGNlcnRpZmljYXRlcyxiYXRjaEF0dHJpYnV0ZXNgLFxuICBGRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9QUk9GSUxFOiAodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92Mi91c2VyL2Vucm9sbG1lbnQvbGlzdC8ke3VzZXJJZH0/b3JnZGV0YWlscz1vcmdOYW1lLGVtYWlsJmxpY2Vuc2VEZXRhaWxzPW5hbWUsZGVzY3JpcHRpb24sdXJsJmZpZWxkcz1jb250ZW50VHlwZSxwcmltYXJ5Q2F0ZWdvcnksY291cnNlQ2F0ZWdvcnksdG9waWMsbmFtZSxjaGFubmVsLG1pbWVUeXBlLGFwcEljb24sZ3JhZGVMZXZlbCxyZXNvdXJjZVR5cGUsaWRlbnRpZmllcixtZWRpdW0scGtnVmVyc2lvbixib2FyZCxzdWJqZWN0LHRyYWNrYWJsZSxwb3N0ZXJJbWFnZSxkdXJhdGlvbixjcmVhdG9yTG9nbyxsaWNlbnNlLHZlcnNpb24sdmVyc2lvbktleSxhdmdSYXRpbmcsYWRkaXRpb25hbFRhZ3MsJHtOc0NhcmRDb250ZW50LklHT1RDb25zdC5DT01QRVRFTkNJRVN9JmJhdGNoRGV0YWlscz1uYW1lLGVuZERhdGUsc3RhcnREYXRlLHN0YXR1cyxlbnJvbGxtZW50VHlwZSxjcmVhdGVkQnksY2VydGlmaWNhdGVzLGJhdGNoQXR0cmlidXRlcyZyZXRpcmVkQ291cnNlc0VuYWJsZWQ9dHJ1ZWAsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIEZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyOiAodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9yZ2RldGFpbHM6IHN0cmluZywgbGljZW5zZURldGFpbHM6IHN0cmluZywgZmllbGRzOiBzdHJpbmcsIGJhdGNoRGV0YWlsczogc3RyaW5nKSA9PlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgYGFwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92Mi91c2VyL2Vucm9sbG1lbnQvbGlzdC8ke3VzZXJJZH0/b3JnZGV0YWlscz0ke29yZ2RldGFpbHN9JmxpY2Vuc2VEZXRhaWxzPSR7bGljZW5zZURldGFpbHN9JmZpZWxkcz0ke2ZpZWxkc30sY291cnNlQ2F0ZWdvcnksJHtOc0NhcmRDb250ZW50LklHT1RDb25zdC5DT01QRVRFTkNJRVN9JmJhdGNoRGV0YWlscz0ke2JhdGNoRGV0YWlsc31gLFxufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFVzZXJTZXJ2aWNlIHtcbiAgZW52aXJvbm1lbnQ6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgIH1cblxuICBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3JFdmVudCkge1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICBpZiAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBgRXJyb3I6ICR7ZXJyb3IuZXJyb3IubWVzc2FnZX1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICB9XG5cbiAgZmV0Y2hVc2VyR3JvdXBEZXRhaWxzKHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJVXNlckdyb3VwRGV0YWlsc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxJVXNlckdyb3VwRGV0YWlsc1tdPihBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0dST1VQUyh1c2VySWQpKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBmZXRjaFVzZXJCYXRjaExpc3QodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHF1ZXJ5UGFyYW1zPzogeyBvcmdkZXRhaWxzOiBhbnksIGxpY2Vuc2VEZXRhaWxzOiBhbnksIGZpZWxkczogYW55LCBiYXRjaERldGFpbHM6IGFueSB9KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvdXJzZVtdPiB7XG4gICAgbGV0IHBhdGggPSAnJztcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUKHVzZXJJZCk7XG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAgJ25vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICAgIEV4cGlyZXM6ICcwJyxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScsICdlbnJvbGxtZW50RGF0YScpKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpO1xuICAgICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRUaW1lKCdlbnJvbGxtZW50U2VydmljZScpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgnZW5yb2xsbWVudERhdGEnKTtcblxuICB9XG5cbiAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIGZldGNoUHJvZmlsZVVzZXJCYXRjaExpc3QodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHF1ZXJ5UGFyYW1zPzogeyBvcmdkZXRhaWxzOiBhbnksIGxpY2Vuc2VEZXRhaWxzOiBhbnksIGZpZWxkczogYW55LCBiYXRjaERldGFpbHM6IGFueSB9KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvdXJzZVtdPiB7XG4gICAgbGV0IHBhdGggPSAnJztcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1BST0ZJTEUodXNlcklkKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICAnbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgRXhwaXJlczogJzAnLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgLy8gaWYgKHRoaXMuY2hlY2tTdG9yYWdlRGF0YSgnZW5yb2xsbWVudFNlcnZpY2UnKSkge1xuICAgIC8vICAgY29uc3QgcmVzdWx0OiBhbnkgPSAgdGhpcy5odHRwLmdldChwYXRoLCB7IGhlYWRlcnMgfSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLCBtYXAoXG4gICAgLy8gICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Vucm9sbG1lbnREYXRhJywgSlNPTi5zdHJpbmdpZnkoZGF0YS5yZXN1bHQpKVxuICAgIC8vICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdClcbiAgICAvLyAgICAgICAgIHJldHVybiBkYXRhLnJlc3VsdFxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgKVxuICAgIC8vICAgKVxuICAgIC8vICAgdGhpcy5zZXRUaW1lKCdlbnJvbGxtZW50U2VydmljZScpXG4gICAgLy8gICByZXR1cm4gcmVzdWx0XG4gICAgLy8gfVxuICAgIC8vIHJldHVybiB0aGlzLmdldERhdGEoJ2Vucm9sbG1lbnREYXRhJylcbiAgfVxuXG4gIGNoZWNrU3RvcmFnZURhdGEoa2V5OiBhbnksIGRhdGFLZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKTtcbiAgICBpZiAoY2hlY2tUaW1lKSB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShjaGVja1RpbWUpO1xuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgICBjb25zdCBkYXRlID0gZGF5anMoKTtcbiAgICAgICAgY29uc3QgZGlmZk1pbiA9IGRhdGUuZGlmZihwYXJzZWREYXRhW2tleV0sICdtaW51dGUnKTtcbiAgICAgICAgY29uc3QgdGltZUNoZWNrID0gdGhpcy5lbnZpcm9ubWVudC5hcGlDYWNoZSB8fCAwO1xuICAgICAgICBpZiAoZGlmZk1pbiA+PSB0aW1lQ2hlY2spIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oZGF0YUtleSkgPyBmYWxzZSA6IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXREYXRhKGtleTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gb2YoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICd7fScpKTtcbiAgfVxuICBnZXRTYXZlZERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpO1xuICB9XG5cbiAgc2V0VGltZShrZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKTtcbiAgICBpZiAoY2hlY2tUaW1lKSB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShjaGVja1RpbWUpO1xuICAgICAgcGFyc2VkRGF0YVtrZXldID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSB7fTtcbiAgICAgIGRhdGFba2V5XSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RpbWVDaGVjaycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB9XG4gIH1cblxuICByZXNldFRpbWUoa2V5OiBhbnkpIHtcbiAgICBjb25zdCBjaGVja1RpbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGltZUNoZWNrJyk7XG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKTtcbiAgICAgIGlmIChwYXJzZWREYXRhW2tleV0pIHtcbiAgICAgICBkZWxldGUgcGFyc2VkRGF0YVtrZXldO1xuICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aW1lQ2hlY2snLCBKU09OLnN0cmluZ2lmeShwYXJzZWREYXRhKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hDYnBQbGFuTGlzdCgpIHtcblxuICAgIC8vIGxldCBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2JwRGF0YScpfHwgJycpXG4gICAgLy8gaWYoIWRhdGEpIHtcbiAgICAvLyAgIHRoaXMuaHR0cC5nZXQoQVBJX0VORF9QT0lOVFMuRkVUQ0hfQ1BCX1BMQU5TKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgIGNvbnN0IGNvdXJzZURhdGEgPSB0aGlzLm1hcERhdGEoZGF0YS5yZXN1bHQpXG4gICAgLy8gICAgICAgcmV0dXJuIGNvdXJzZURhdGFcbiAgICAvLyAgICAgfVxuICAgIC8vICAgKVxuICAgIC8vICAgKVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICByZXR1cm4gdGhpcy5nZXREYXRhKCdjYnBEYXRhJylcblxuICAgIC8vIH1cbiAgICAgaWYgKHRoaXMuY2hlY2tTdG9yYWdlRGF0YSgnY2JwU2VydmljZScsICdjYnBEYXRhJykpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmh0dHAuZ2V0KEFQSV9FTkRfUE9JTlRTLkZFVENIX0NQQl9QTEFOUykucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLCBtYXAoXG4gICAgICAgICAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwRGF0YShkYXRhLnJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgICB0aGlzLnNldFRpbWUoJ2NicFNlcnZpY2UnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgIHJldHVybiB0aGlzLmdldERhdGEoJ2NicERhdGEnKTtcbiAgfVxuXG4gIGFzeW5jIG1hcERhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29udGVudE5ldzogYW55ID0gW107XG4gICAgY29uc3QgdG9kYXlEYXRlID0gZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcblxuICAgIGNvbnN0IGVucm9sbExpc3Q6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Vucm9sbG1lbnRNYXBEYXRhJykgfHwgJ3t9Jyk7XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmNvdW50KSB7XG4gICAgICBkYXRhLmNvbnRlbnQuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgIGMuY29udGVudExpc3QuZm9yRWFjaCgoY2hpbGREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZEVucm9sbERhdGEgPSBlbnJvbGxMaXN0W2NoaWxkRGF0YS5pZGVudGlmaWVyXTtcbiAgICAgICAgICBjb25zdCBlbmREYXRlID0gZGF5anMoYy5lbmREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgICBjb25zdCBkYXlzQ291bnQgPSBkYXlqcyhlbmREYXRlKS5kaWZmKHRvZGF5RGF0ZSwgJ2RheScpO1xuICAgICAgICAgIGNoaWxkRGF0YS5wbGFuRHVyYXRpb24gPSAgZGF5c0NvdW50IDwgMCA/IE5zQ2FyZENvbnRlbnQuQUNCUENvbnN0Lk9WRVJEVUUgOiBkYXlzQ291bnQgPiAyOVxuICAgICAgICAgID8gTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuU1VDQ0VTUyA6IE5zQ2FyZENvbnRlbnQuQUNCUENvbnN0LlVQQ09NSU5HO1xuICAgICAgICAgIGNoaWxkRGF0YS5lbmREYXRlID0gYy5lbmREYXRlO1xuICAgICAgICAgIGNoaWxkRGF0YS5wYXJlbnRJZCA9IGMuaWQ7XG4gICAgICAgICAgY2hpbGREYXRhLnBsYW5UeXBlID0gJ2NiUGxhbic7XG4gICAgICAgICAgaWYgKGNoaWxkRGF0YS5zdGF0dXMgIT09IE5zQ2FyZENvbnRlbnQuSUdPVENvbnN0LlJFVElSRUQpIHtcbiAgICAgICAgICAgIGNvbnRlbnROZXcucHVzaChjaGlsZERhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhICYmIGNoaWxkRW5yb2xsRGF0YS5zdGF0dXMgPT09IDIpIHtcbiAgICAgICAgICAgICAgY29udGVudE5ldy5wdXNoKGNoaWxkRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeUFyZWE6IGFueSA9IFtdO1xuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZTogYW55ID0gW107XG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lVHlwZTogYW55ID0gW107XG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVN1YlRoZW1lOiBhbnkgPSBbXTtcbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5QXJlYUlkOiBhbnkgPSBbXTtcbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWVJZDogYW55ID0gW107XG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVN1YlRoZW1lSWQ6IGFueSA9IFtdO1xuICAgICAgICAgIGNoaWxkRGF0YS5jb250ZW50U3RhdHVzID0gMDtcbiAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhKSB7XG4gICAgICAgICAgICBjaGlsZERhdGEuY29udGVudFN0YXR1cyA9IGNoaWxkRW5yb2xsRGF0YS5zdGF0dXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaGlsZERhdGEuY29tcGV0ZW5jaWVzX3Y1KSB7XG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY2llc192NS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeUFyZWEuaW5jbHVkZXMoZWxlbWVudC5jb21wZXRlbmN5QXJlYSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeUFyZWEucHVzaChlbGVtZW50LmNvbXBldGVuY3lBcmVhKTtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeUFyZWFJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWFJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lUaGVtZS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lUaGVtZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lLnB1c2goZWxlbWVudC5jb21wZXRlbmN5VGhlbWUpO1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWVJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5VGhlbWVUeXBlLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lVHlwZS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lTdWJUaGVtZS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lLnB1c2goZWxlbWVudC5jb21wZXRlbmN5U3ViVGhlbWUpO1xuICAgICAgICAgICAgICBjb21wZXRlbmN5U3ViVGhlbWVJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVN1YlRoZW1lSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgfVxuXG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY3lBcmVhID0gY29tcGV0ZW5jeUFyZWE7XG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY3lUaGVtZSA9IGNvbXBldGVuY3lUaGVtZTtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeVRoZW1lVHlwZSA9IGNvbXBldGVuY3lUaGVtZVR5cGU7XG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY3lTdWJUaGVtZSA9IGNvbXBldGVuY3lTdWJUaGVtZTtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeUFyZWFJZCA9IGNvbXBldGVuY3lBcmVhSWQ7XG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY3lUaGVtZUlkID0gY29tcGV0ZW5jeVRoZW1lSWQ7XG4gICAgICAgICAgY2hpbGREYXRhLmNvbXBldGVuY3lTdWJUaGVtZUlkID0gY29tcGV0ZW5jeVN1YlRoZW1lSWQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoY29udGVudE5ldy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGE6IGFueSA9IGNvbnRlbnROZXcuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmaXJzdERhdGU6IGFueSA9IG5ldyBEYXRlKGEuZW5kRGF0ZSk7XG4gICAgICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5lbmREYXRlKTtcblxuICAgICAgICAgIHJldHVybiAgc2Vjb25kRGF0ZSA+IGZpcnN0RGF0ZSAgPyAxIDogLTE7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1bmlxdWVVc2Vyc0J5SUQgPSBsb2Rhc2gudW5pcUJ5KHNvcnRlZERhdGEsICdpZGVudGlmaWVyJyk7XG4gICAgICAgIGNvbnN0IHNvcnRlZEJ5RW5kRGF0ZSA9ICBsb2Rhc2gub3JkZXJCeSh1bmlxdWVVc2Vyc0J5SUQsIFsnZW5kRGF0ZSddLCBbJ2FzYyddKTtcbiAgICAgICAgY29uc3Qgc29ydGVkQnlTdGF0dXMgPSAgbG9kYXNoLm9yZGVyQnkoc29ydGVkQnlFbmREYXRlLCBbJ2NvbnRlbnRTdGF0dXMnXSwgWydhc2MnXSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoc29ydGVkQnlTdGF0dXMpKTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZEJ5U3RhdHVzO1xuICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnROZXcpKTtcbiAgICAgIHJldHVybiBjb250ZW50TmV3O1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KFtdKSk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbWFwRW5yb2xsbWVudERhdGEoY291cnNlRGF0YTogYW55KSB7XG4gICAgY29uc3QgZW5yb2xsRGF0YTogYW55ID0ge307XG4gICAgaWYgKGNvdXJzZURhdGEgJiYgY291cnNlRGF0YS5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgY291cnNlRGF0YS5jb3Vyc2VzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGVucm9sbERhdGFbZGF0YS5jb2xsZWN0aW9uSWRdID0gZGF0YTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudE1hcERhdGEnLCBKU09OLnN0cmluZ2lmeShlbnJvbGxEYXRhKSk7XG4gIH1cbn1cbiJdfQ==
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy93aWRnZXQtdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBTSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxPQUFPLENBQUM7Ozs7TUFDMUIsS0FBSyxHQUFHLE1BQU07QUFDcEIsNkRBQTZEOzs7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOztNQUczQixpQkFBaUIsR0FBRyxvQkFBb0I7Ozs7O0FBRXpCLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FDcEMsR0FBRyxpQkFBaUIscUNBQXFDLE1BQU0sRUFBRTs7OztBQUV2QyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtBQUN6RCw0Q0FBNEM7QUFDNUMsMkRBQTJELE1BQU0seVRBQXlULGFBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSxtR0FBbUc7Ozs7QUFDL2QsQ0FBQyxNQUEwQixFQUFFLEVBQUU7QUFDakUsNENBQTRDO0FBQzVDLDJEQUEyRCxNQUFNLHlUQUF5VCxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksOEhBQThIOzs7Ozs7OztBQUUvZixDQUFDLE1BQTBCLEVBQUUsVUFBa0IsRUFBRSxjQUFzQixFQUFFLE1BQWMs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QUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUN2RSxDQUFDOzs7Ozs7SUFDRCx1QkFBdUIsQ0FBQyxjQUFtQixFQUFFLG1CQUEyQjs7Y0FDaEUsUUFBUSxHQUFHO1lBQ2YsbUJBQW1CO1lBQ25CLHVCQUF1QixFQUFFLGNBQWM7U0FDeEM7UUFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDOUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDdkUsQ0FBQzs7O1lBaFNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs0Q0FJSSxNQUFNLFNBQUMsYUFBYTtZQXBDaEIsVUFBVTs7Ozs7SUFrQ2pCLHdDQUFpQjs7Ozs7SUFHZixpQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElVc2VyR3JvdXBEZXRhaWxzIH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1jb250ZW50Lm1vZGVsJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9vZidcbmltcG9ydCAqIGFzIGRheWpzXyBmcm9tICdkYXlqcyc7XG5jb25zdCBkYXlqcyA9IGRheWpzX1xuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICdzcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50J1xuaW1wb3J0IHsgTnNDYXJkQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvY2FyZC1jb250ZW50LXYyLm1vZGVsJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgRkVUQ0hfVVNFUl9HUk9VUFM6ICh1c2VySWQ6IHN0cmluZykgPT5cbiAgICBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9ncm91cC9mZXRjaFVzZXJHcm91cD91c2VySWQ9JHt1c2VySWR9YCxcbiAgICBGRVRDSF9DUEJfUExBTlM6IGAvYXBpcy9wcm94aWVzL3Y4L3VzZXIvdjEvY2JwbGFuYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1Q6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPW9yZ05hbWUsZW1haWwmbGljZW5zZURldGFpbHM9bmFtZSxkZXNjcmlwdGlvbix1cmwmZmllbGRzPWNvbnRlbnRUeXBlLHByaW1hcnlDYXRlZ29yeSxjb3Vyc2VDYXRlZ29yeSx0b3BpYyxuYW1lLGNoYW5uZWwsbWltZVR5cGUsYXBwSWNvbixncmFkZUxldmVsLHJlc291cmNlVHlwZSxpZGVudGlmaWVyLG1lZGl1bSxwa2dWZXJzaW9uLGJvYXJkLHN1YmplY3QsdHJhY2thYmxlLHBvc3RlckltYWdlLGR1cmF0aW9uLGNyZWF0b3JMb2dvLGxpY2Vuc2UsdmVyc2lvbix2ZXJzaW9uS2V5LGF2Z1JhdGluZyxhZGRpdGlvbmFsVGFncywke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPW5hbWUsZW5kRGF0ZSxzdGFydERhdGUsc3RhdHVzLGVucm9sbG1lbnRUeXBlLGNyZWF0ZWRCeSxjZXJ0aWZpY2F0ZXMsYmF0Y2hBdHRyaWJ1dGVzYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRTogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9b3JnTmFtZSxlbWFpbCZsaWNlbnNlRGV0YWlscz1uYW1lLGRlc2NyaXB0aW9uLHVybCZmaWVsZHM9Y29udGVudFR5cGUscHJpbWFyeUNhdGVnb3J5LGNvdXJzZUNhdGVnb3J5LHRvcGljLG5hbWUsY2hhbm5lbCxtaW1lVHlwZSxhcHBJY29uLGdyYWRlTGV2ZWwscmVzb3VyY2VUeXBlLGlkZW50aWZpZXIsbWVkaXVtLHBrZ1ZlcnNpb24sYm9hcmQsc3ViamVjdCx0cmFja2FibGUscG9zdGVySW1hZ2UsZHVyYXRpb24sY3JlYXRvckxvZ28sbGljZW5zZSx2ZXJzaW9uLHZlcnNpb25LZXksYXZnUmF0aW5nLGFkZGl0aW9uYWxUYWdzLCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9bmFtZSxlbmREYXRlLHN0YXJ0RGF0ZSxzdGF0dXMsZW5yb2xsbWVudFR5cGUsY3JlYXRlZEJ5LGNlcnRpZmljYXRlcyxiYXRjaEF0dHJpYnV0ZXMmcmV0aXJlZENvdXJzZXNFbmFibGVkPXRydWVgLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBGRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9WMjogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmdkZXRhaWxzOiBzdHJpbmcsIGxpY2Vuc2VEZXRhaWxzOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nLCBiYXRjaERldGFpbHM6IHN0cmluZykgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGBhcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9JHtvcmdkZXRhaWxzfSZsaWNlbnNlRGV0YWlscz0ke2xpY2Vuc2VEZXRhaWxzfSZmaWVsZHM9JHtmaWVsZHN9LGNvdXJzZUNhdGVnb3J5LCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9JHtiYXRjaERldGFpbHN9YCxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRVc2VyU2VydmljZSB7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICB9XG5cbiAgIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvckV2ZW50KSB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYEVycm9yOiAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YFxuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpXG4gIH1cblxuICBmZXRjaFVzZXJHcm91cERldGFpbHModXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElVc2VyR3JvdXBEZXRhaWxzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElVc2VyR3JvdXBEZXRhaWxzW10+KEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfR1JPVVBTKHVzZXJJZCkpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKVxuICB9XG4gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgZmV0Y2hVc2VyQmF0Y2hMaXN0KHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBxdWVyeVBhcmFtcz86IHsgb3JnZGV0YWlsczogYW55LCBsaWNlbnNlRGV0YWlsczogYW55LCBmaWVsZHM6IGFueSwgYmF0Y2hEZXRhaWxzOiBhbnkgfSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb3Vyc2VbXT4ge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1QodXNlcklkKVxuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDYWNoZS1Db250cm9sJzogICduby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcsXG4gICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICBFeHBpcmVzOiAnMCcsXG4gICAgfSlcbiAgICBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScsICdlbnJvbGxtZW50RGF0YScpKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvdXJzZXNEYXRhOiBhbnkgPSBbXVxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5yZXN1bHQgJiYgZGF0YS5yZXN1bHQuY291cnNlcykge1xuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzLmZvckVhY2goKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmNvbnRlbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50LmNvbnRlbnRTdGF0dXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291cnNlc0RhdGEucHVzaChjb250ZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB0aGlzLnN0b3JlVXNlckVucm9sbG1lbnRJbmZvKGRhdGEucmVzdWx0LnVzZXJDb3Vyc2VFbnJvbG1lbnRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0LmNvdXJzZXMubGVuZ3RoKVxuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzID0gY291cnNlc0RhdGFcbiAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvdXJzZXMubGVuZ3RoIDwgMjAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Vucm9sbG1lbnREYXRhJylcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJylcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlc3VsdFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXREYXRhKCdlbnJvbGxtZW50RGF0YScpXG5cbiAgfVxuXG4gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBmZXRjaFByb2ZpbGVVc2VyQmF0Y2hMaXN0KHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBxdWVyeVBhcmFtcz86IHsgb3JnZGV0YWlsczogYW55LCBsaWNlbnNlRGV0YWlsczogYW55LCBmaWVsZHM6IGFueSwgYmF0Y2hEZXRhaWxzOiBhbnkgfSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb3Vyc2VbXT4ge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRSh1c2VySWQpXG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAgJ25vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICAgIEV4cGlyZXM6ICcwJyxcbiAgICB9KVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0XG4gICAgICAgIClcbiAgICAgIClcbiAgICAvLyBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScpKSB7XG4gICAgLy8gICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpXG4gICAgLy8gICAgICAgICB0aGlzLm1hcEVucm9sbG1lbnREYXRhKGRhdGEucmVzdWx0KVxuICAgIC8vICAgICAgICAgcmV0dXJuIGRhdGEucmVzdWx0XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICApXG4gICAgLy8gICApXG4gICAgLy8gICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJylcbiAgICAvLyAgIHJldHVybiByZXN1bHRcbiAgICAvLyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuZ2V0RGF0YSgnZW5yb2xsbWVudERhdGEnKVxuICB9XG5cbiAgY2hlY2tTdG9yYWdlRGF0YShrZXk6IGFueSwgZGF0YUtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgICBjb25zdCBkYXRlID0gZGF5anMoKVxuICAgICAgICBjb25zdCBkaWZmTWluID0gZGF0ZS5kaWZmKHBhcnNlZERhdGFba2V5XSwgJ21pbnV0ZScpXG4gICAgICAgIGNvbnN0IHRpbWVDaGVjayA9IHRoaXMuZW52aXJvbm1lbnQuYXBpQ2FjaGUgfHwgMFxuICAgICAgICBpZiAoZGlmZk1pbiA+PSB0aW1lQ2hlY2spIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShkYXRhS2V5KSA/IGZhbHNlIDogdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAne30nKSlcbiAgfVxuICBnZXRTYXZlZERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpXG4gIH1cblxuICBzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgcGFyc2VkRGF0YVtrZXldID0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aW1lQ2hlY2snLCBKU09OLnN0cmluZ2lmeShwYXJzZWREYXRhKSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0ge31cbiAgICAgIGRhdGFba2V5XSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgfVxuICB9XG5cbiAgcmVzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2tleV1cbiAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hDYnBQbGFuTGlzdCgpIHtcblxuICAgIC8vIGxldCBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2JwRGF0YScpfHwgJycpXG4gICAgLy8gaWYoIWRhdGEpIHtcbiAgICAvLyAgIHRoaXMuaHR0cC5nZXQoQVBJX0VORF9QT0lOVFMuRkVUQ0hfQ1BCX1BMQU5TKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgIGNvbnN0IGNvdXJzZURhdGEgPSB0aGlzLm1hcERhdGEoZGF0YS5yZXN1bHQpXG4gICAgLy8gICAgICAgcmV0dXJuIGNvdXJzZURhdGFcbiAgICAvLyAgICAgfVxuICAgIC8vICAgKVxuICAgIC8vICAgKVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICByZXR1cm4gdGhpcy5nZXREYXRhKCdjYnBEYXRhJylcblxuICAgIC8vIH1cbiAgICAgaWYgKHRoaXMuY2hlY2tTdG9yYWdlRGF0YSgnY2JwU2VydmljZScsICdjYnBEYXRhJykpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmh0dHAuZ2V0KEFQSV9FTkRfUE9JTlRTLkZFVENIX0NQQl9QTEFOUykucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLCBtYXAoXG4gICAgICAgICAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwRGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0VGltZSgnY2JwU2VydmljZScpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldERhdGEoJ2NicERhdGEnKVxuICB9XG5cbiAgYXN5bmMgbWFwRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZW50TmV3OiBhbnkgPSBbXVxuICAgIGNvbnN0IHRvZGF5RGF0ZSA9IGRheWpzKCkuZm9ybWF0KCdZWVlZLU1NLUREJylcblxuICAgIGNvbnN0IGVucm9sbExpc3Q6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Vucm9sbG1lbnRNYXBEYXRhJykgfHwgJ3t9JylcblxuICAgIGlmIChkYXRhICYmIGRhdGEuY291bnQpIHtcbiAgICAgIGRhdGEuY29udGVudC5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgYy5jb250ZW50TGlzdC5mb3JFYWNoKChjaGlsZERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkRW5yb2xsRGF0YSA9IGVucm9sbExpc3RbY2hpbGREYXRhLmlkZW50aWZpZXJdXG4gICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IGRheWpzKGMuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgICAgICBjb25zdCBkYXlzQ291bnQgPSBkYXlqcyhlbmREYXRlKS5kaWZmKHRvZGF5RGF0ZSwgJ2RheScpXG4gICAgICAgICAgY2hpbGREYXRhWydwbGFuRHVyYXRpb24nXSA9ICBkYXlzQ291bnQgPCAwID8gTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuT1ZFUkRVRSA6IGRheXNDb3VudCA+IDI5XG4gICAgICAgICAgPyBOc0NhcmRDb250ZW50LkFDQlBDb25zdC5TVUNDRVNTIDogTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuVVBDT01JTkdcbiAgICAgICAgICBjaGlsZERhdGFbJ2VuZERhdGUnXSA9IGMuZW5kRGF0ZVxuICAgICAgICAgIGNoaWxkRGF0YVsncGFyZW50SWQnXSA9IGMuaWRcbiAgICAgICAgICBjaGlsZERhdGFbJ3BsYW5UeXBlJ10gPSAnY2JQbGFuJ1xuICAgICAgICAgIGlmIChjaGlsZERhdGEuc3RhdHVzICE9PSBOc0NhcmRDb250ZW50LklHT1RDb25zdC5SRVRJUkVEKSB7XG4gICAgICAgICAgICBjb250ZW50TmV3LnB1c2goY2hpbGREYXRhKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhICYmIGNoaWxkRW5yb2xsRGF0YS5zdGF0dXMgPT09IDIpIHtcbiAgICAgICAgICAgICAgY29udGVudE5ldy5wdXNoKGNoaWxkRGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5QXJlYTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWU6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lVHlwZTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWU6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeUFyZWFJZDogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWVJZDogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWVJZDogYW55ID0gW11cbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbnRlbnRTdGF0dXMnXSA9IDBcbiAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhKSB7XG4gICAgICAgICAgICBjaGlsZERhdGFbJ2NvbnRlbnRTdGF0dXMnXSA9IGNoaWxkRW5yb2xsRGF0YS5zdGF0dXNcbiAgICAgICAgICB9XG4gICAgICAgICBpZiAoY2hpbGREYXRhLmNvbXBldGVuY2llc192NSkge1xuICAgICAgICAgIGNoaWxkRGF0YS5jb21wZXRlbmNpZXNfdjUuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lBcmVhLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWEpKSB7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lBcmVhLnB1c2goZWxlbWVudC5jb21wZXRlbmN5QXJlYSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeUFyZWFJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWFJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5VGhlbWVUeXBlLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lVHlwZS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVN1YlRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVN1YlRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5U3ViVGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICB9XG5cbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lBcmVhJ10gPSBjb21wZXRlbmN5QXJlYVxuICAgICAgICAgIGNoaWxkRGF0YVsnY29tcGV0ZW5jeVRoZW1lJ10gPSBjb21wZXRlbmN5VGhlbWVcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lUaGVtZVR5cGUnXSA9IGNvbXBldGVuY3lUaGVtZVR5cGVcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lTdWJUaGVtZSddID0gY29tcGV0ZW5jeVN1YlRoZW1lXG4gICAgICAgICAgY2hpbGREYXRhWydjb21wZXRlbmN5QXJlYUlkJ10gPSBjb21wZXRlbmN5QXJlYUlkXG4gICAgICAgICAgY2hpbGREYXRhWydjb21wZXRlbmN5VGhlbWVJZCddID0gY29tcGV0ZW5jeVRoZW1lSWRcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lTdWJUaGVtZUlkJ10gPSBjb21wZXRlbmN5U3ViVGhlbWVJZFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgaWYgKGNvbnRlbnROZXcubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzb3J0ZWREYXRhOiBhbnkgPSBjb250ZW50TmV3LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmVuZERhdGUpXG4gICAgICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5lbmREYXRlKVxuXG4gICAgICAgICAgcmV0dXJuICBzZWNvbmREYXRlID4gZmlyc3REYXRlICA/IDEgOiAtMVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCB1bmlxdWVVc2Vyc0J5SUQgPSBsb2Rhc2gudW5pcUJ5KHNvcnRlZERhdGEsICdpZGVudGlmaWVyJylcbiAgICAgICAgY29uc3Qgc29ydGVkQnlFbmREYXRlID0gIGxvZGFzaC5vcmRlckJ5KHVuaXF1ZVVzZXJzQnlJRCwgWydlbmREYXRlJ10sIFsnYXNjJ10pXG4gICAgICAgIGNvbnN0IHNvcnRlZEJ5U3RhdHVzID0gIGxvZGFzaC5vcmRlckJ5KHNvcnRlZEJ5RW5kRGF0ZSwgWydjb250ZW50U3RhdHVzJ10sIFsnYXNjJ10pXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoc29ydGVkQnlTdGF0dXMpKVxuICAgICAgICByZXR1cm4gc29ydGVkQnlTdGF0dXNcbiAgICAgfVxuICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnROZXcpKVxuICAgICByZXR1cm4gY29udGVudE5ld1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KFtdKSlcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIG1hcEVucm9sbG1lbnREYXRhKGNvdXJzZURhdGE6IGFueSkge1xuICAgIGNvbnN0IGVucm9sbERhdGE6IGFueSA9IHt9XG4gICAgaWYgKGNvdXJzZURhdGEgJiYgY291cnNlRGF0YS5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgY291cnNlRGF0YS5jb3Vyc2VzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGVucm9sbERhdGFbZGF0YS5jb2xsZWN0aW9uSWRdID0gZGF0YVxuICAgICAgfSlcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Vucm9sbG1lbnRNYXBEYXRhJylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudE1hcERhdGEnLCBKU09OLnN0cmluZ2lmeShlbnJvbGxEYXRhKSlcbiAgfVxuICBzdG9yZVVzZXJFbnJvbGxtZW50SW5mbyhlbnJvbGxtZW50RGF0YTogYW55LCBlbnJvbGxlZENvdXJzZUNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCB1c2VyRGF0YSA9IHtcbiAgICAgIGVucm9sbGVkQ291cnNlQ291bnQsXG4gICAgICB1c2VyQ291cnNlRW5yb2xtZW50SW5mbzogZW5yb2xsbWVudERhdGEsXG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyRW5yb2xsbWVudENvdW50JylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlckVucm9sbG1lbnRDb3VudCcsIEpTT04uc3RyaW5naWZ5KHVzZXJEYXRhKSlcbiAgfVxufVxuIl19
@@ -5,9 +5,9 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Inject, Injectable } from '@angular/core';
7
7
  import { HttpClient, HttpHeaders } from '@angular/common/http';
8
- import { throwError, of } from 'rxjs';
8
+ import { Observable, throwError } from 'rxjs';
9
9
  import { catchError, map } from 'rxjs/operators';
10
- // import 'rxjs/add/observable/of'
10
+ import 'rxjs/add/observable/of';
11
11
  import * as dayjs_ from 'dayjs';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/common/http";
@@ -133,11 +133,32 @@ var WidgetUserService = /** @class */ (function () {
133
133
  * @return {?}
134
134
  */
135
135
  function (data) {
136
- localStorage.setItem('enrollmentData', JSON.stringify(data.result));
136
+ /** @type {?} */
137
+ var coursesData = [];
138
+ if (data && data.result && data.result.courses) {
139
+ data.result.courses.forEach((/**
140
+ * @param {?} content
141
+ * @return {?}
142
+ */
143
+ function (content) {
144
+ if (content.contentStatus) {
145
+ delete content.contentStatus;
146
+ }
147
+ coursesData.push(content);
148
+ }));
149
+ _this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo, data.result.courses.length);
150
+ data.result.courses = coursesData;
151
+ if (data.result.courses.length < 200) {
152
+ localStorage.removeItem('enrollmentData');
153
+ _this.setTime('enrollmentService');
154
+ localStorage.setItem('enrollmentData', JSON.stringify(data.result));
155
+ _this.mapEnrollmentData(data.result);
156
+ return data.result;
157
+ }
158
+ }
137
159
  _this.mapEnrollmentData(data.result);
138
160
  return data.result;
139
161
  })));
140
- this.setTime('enrollmentService');
141
162
  return result;
142
163
  }
143
164
  return this.getData('enrollmentData');
@@ -234,7 +255,7 @@ var WidgetUserService = /** @class */ (function () {
234
255
  * @return {?}
235
256
  */
236
257
  function (key) {
237
- return of(JSON.parse(localStorage.getItem(key) || '{}'));
258
+ return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'));
238
259
  };
239
260
  /**
240
261
  * @param {?} key
@@ -362,11 +383,11 @@ var WidgetUserService = /** @class */ (function () {
362
383
  var endDate = dayjs(c.endDate).format('YYYY-MM-DD');
363
384
  /** @type {?} */
364
385
  var daysCount = dayjs(endDate).diff(todayDate, 'day');
365
- childData.planDuration = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29
386
+ childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29
366
387
  ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING;
367
- childData.endDate = c.endDate;
368
- childData.parentId = c.id;
369
- childData.planType = 'cbPlan';
388
+ childData['endDate'] = c.endDate;
389
+ childData['parentId'] = c.id;
390
+ childData['planType'] = 'cbPlan';
370
391
  if (childData.status !== NsCardContent.IGOTConst.RETIRED) {
371
392
  contentNew.push(childData);
372
393
  }
@@ -389,9 +410,9 @@ var WidgetUserService = /** @class */ (function () {
389
410
  var competencyThemeId = [];
390
411
  /** @type {?} */
391
412
  var competencySubThemeId = [];
392
- childData.contentStatus = 0;
413
+ childData['contentStatus'] = 0;
393
414
  if (childEnrollData) {
394
- childData.contentStatus = childEnrollData.status;
415
+ childData['contentStatus'] = childEnrollData.status;
395
416
  }
396
417
  if (childData.competencies_v5) {
397
418
  childData.competencies_v5.forEach((/**
@@ -416,13 +437,13 @@ var WidgetUserService = /** @class */ (function () {
416
437
  }
417
438
  }));
418
439
  }
419
- childData.competencyArea = competencyArea;
420
- childData.competencyTheme = competencyTheme;
421
- childData.competencyThemeType = competencyThemeType;
422
- childData.competencySubTheme = competencySubTheme;
423
- childData.competencyAreaId = competencyAreaId;
424
- childData.competencyThemeId = competencyThemeId;
425
- childData.competencySubThemeId = competencySubThemeId;
440
+ childData['competencyArea'] = competencyArea;
441
+ childData['competencyTheme'] = competencyTheme;
442
+ childData['competencyThemeType'] = competencyThemeType;
443
+ childData['competencySubTheme'] = competencySubTheme;
444
+ childData['competencyAreaId'] = competencyAreaId;
445
+ childData['competencyThemeId'] = competencyThemeId;
446
+ childData['competencySubThemeId'] = competencySubThemeId;
426
447
  }));
427
448
  }));
428
449
  if (contentNew.length > 1) {
@@ -472,8 +493,28 @@ var WidgetUserService = /** @class */ (function () {
472
493
  enrollData[data.collectionId] = data;
473
494
  }));
474
495
  }
496
+ localStorage.removeItem('enrollmentMapData');
475
497
  localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData));
476
498
  };
499
+ /**
500
+ * @param {?} enrollmentData
501
+ * @param {?} enrolledCourseCount
502
+ * @return {?}
503
+ */
504
+ WidgetUserService.prototype.storeUserEnrollmentInfo = /**
505
+ * @param {?} enrollmentData
506
+ * @param {?} enrolledCourseCount
507
+ * @return {?}
508
+ */
509
+ function (enrollmentData, enrolledCourseCount) {
510
+ /** @type {?} */
511
+ var userData = {
512
+ enrolledCourseCount: enrolledCourseCount,
513
+ userCourseEnrolmentInfo: enrollmentData,
514
+ };
515
+ localStorage.removeItem('userEnrollmentCount');
516
+ localStorage.setItem('userEnrollmentCount', JSON.stringify(userData));
517
+ };
477
518
  WidgetUserService.decorators = [
478
519
  { type: Injectable, args: [{
479
520
  providedIn: 'root',
@@ -498,4 +539,4 @@ if (false) {
498
539
  WidgetUserService.prototype.http;
499
540
  }
500
541
  export { ɵ0, ɵ1, ɵ2, ɵ3 };
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy93aWRnZXQtdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUlqRCxPQUFPLEtBQUssTUFBTSxNQUFNLE9BQU8sQ0FBQzs7OztJQUMxQixLQUFLLEdBQUcsTUFBTTtBQUNwQiw2REFBNkQ7OztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0lBRzNCLGlCQUFpQixHQUFHLG9CQUFvQjs7Ozs7QUFFekIsVUFBQyxNQUFjO0lBQ2hDLE9BQUcsaUJBQWlCLDBDQUFxQyxNQUFRO0FBQWpFLENBQWlFOzs7O0FBRXZDLFVBQUMsTUFBMEI7SUFDckQsNENBQTRDO0lBQzVDLE9BQUEsNkRBQTJELE1BQU0sOFRBQXlULGFBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSxzR0FBbUc7QUFBamdCLENBQWlnQjs7OztBQUMvZCxVQUFDLE1BQTBCO0lBQzdELDRDQUE0QztJQUM1QyxPQUFBLDZEQUEyRCxNQUFNLDhUQUF5VCxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksaUlBQThIO0FBQTVoQixDQUE0aEI7Ozs7Ozs7O0FBRS9mLFVBQUMsTUFBMEIsRUFBRSxVQUFrQixFQUFFLGNBQXNCLEVBQUUsTUFBYyxFQUFFLFlB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R0FBUSxFQUFFO1FBQzFCLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzNDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTzs7OztZQUFDLFVBQUMsSUFBUztnQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekMsQ0FBQyxFQUFDLENBQUM7U0FDSjtRQUNELFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O2dCQXJRRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dEQUlJLE1BQU0sU0FBQyxhQUFhO2dCQXBDaEIsVUFBVTs7OzRCQURuQjtDQXFTQyxBQXRRRCxJQXNRQztTQW5RWSxpQkFBaUI7OztJQUM1Qix3Q0FBaUI7Ozs7O0lBR2YsaUNBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJVXNlckdyb3VwRGV0YWlscyB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LXVzZXIubW9kZWwnO1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtY29udGVudC5tb2RlbCc7XG4vLyBpbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnXG5pbXBvcnQgKiBhcyBkYXlqc18gZnJvbSAnZGF5anMnO1xuY29uc3QgZGF5anMgPSBkYXlqc19cbi8vIGltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCdcbmltcG9ydCB7IE5zQ2FyZENvbnRlbnQgfSBmcm9tICcuLi9fbW9kZWxzL2NhcmQtY29udGVudC12Mi5tb2RlbCc7XG5pbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBQUk9URUNURURfU0xBR19WOCA9ICcvYXBpcy9wcm90ZWN0ZWQvdjgnO1xuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIEZFVENIX1VTRVJfR1JPVVBTOiAodXNlcklkOiBzdHJpbmcpID0+XG4gICAgYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvZ3JvdXAvZmV0Y2hVc2VyR3JvdXA/dXNlcklkPSR7dXNlcklkfWAsXG4gICAgRkVUQ0hfQ1BCX1BMQU5TOiBgL2FwaXMvcHJveGllcy92OC91c2VyL3YxL2NicGxhbmAsXG4gIEZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUOiAodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92Mi91c2VyL2Vucm9sbG1lbnQvbGlzdC8ke3VzZXJJZH0/b3JnZGV0YWlscz1vcmdOYW1lLGVtYWlsJmxpY2Vuc2VEZXRhaWxzPW5hbWUsZGVzY3JpcHRpb24sdXJsJmZpZWxkcz1jb250ZW50VHlwZSxwcmltYXJ5Q2F0ZWdvcnksY291cnNlQ2F0ZWdvcnksdG9waWMsbmFtZSxjaGFubmVsLG1pbWVUeXBlLGFwcEljb24sZ3JhZGVMZXZlbCxyZXNvdXJjZVR5cGUsaWRlbnRpZmllcixtZWRpdW0scGtnVmVyc2lvbixib2FyZCxzdWJqZWN0LHRyYWNrYWJsZSxwb3N0ZXJJbWFnZSxkdXJhdGlvbixjcmVhdG9yTG9nbyxsaWNlbnNlLHZlcnNpb24sdmVyc2lvbktleSxhdmdSYXRpbmcsYWRkaXRpb25hbFRhZ3MsJHtOc0NhcmRDb250ZW50LklHT1RDb25zdC5DT01QRVRFTkNJRVN9JmJhdGNoRGV0YWlscz1uYW1lLGVuZERhdGUsc3RhcnREYXRlLHN0YXR1cyxlbnJvbGxtZW50VHlwZSxjcmVhdGVkQnksY2VydGlmaWNhdGVzLGJhdGNoQXR0cmlidXRlc2AsXG4gIEZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1BST0ZJTEU6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPW9yZ05hbWUsZW1haWwmbGljZW5zZURldGFpbHM9bmFtZSxkZXNjcmlwdGlvbix1cmwmZmllbGRzPWNvbnRlbnRUeXBlLHByaW1hcnlDYXRlZ29yeSxjb3Vyc2VDYXRlZ29yeSx0b3BpYyxuYW1lLGNoYW5uZWwsbWltZVR5cGUsYXBwSWNvbixncmFkZUxldmVsLHJlc291cmNlVHlwZSxpZGVudGlmaWVyLG1lZGl1bSxwa2dWZXJzaW9uLGJvYXJkLHN1YmplY3QsdHJhY2thYmxlLHBvc3RlckltYWdlLGR1cmF0aW9uLGNyZWF0b3JMb2dvLGxpY2Vuc2UsdmVyc2lvbix2ZXJzaW9uS2V5LGF2Z1JhdGluZyxhZGRpdGlvbmFsVGFncywke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPW5hbWUsZW5kRGF0ZSxzdGFydERhdGUsc3RhdHVzLGVucm9sbG1lbnRUeXBlLGNyZWF0ZWRCeSxjZXJ0aWZpY2F0ZXMsYmF0Y2hBdHRyaWJ1dGVzJnJldGlyZWRDb3Vyc2VzRW5hYmxlZD10cnVlYCxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfVjI6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3JnZGV0YWlsczogc3RyaW5nLCBsaWNlbnNlRGV0YWlsczogc3RyaW5nLCBmaWVsZHM6IHN0cmluZywgYmF0Y2hEZXRhaWxzOiBzdHJpbmcpID0+XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICBgYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPSR7b3JnZGV0YWlsc30mbGljZW5zZURldGFpbHM9JHtsaWNlbnNlRGV0YWlsc30mZmllbGRzPSR7ZmllbGRzfSxjb3Vyc2VDYXRlZ29yeSwke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPSR7YmF0Y2hEZXRhaWxzfWAsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VXNlclNlcnZpY2Uge1xuICBlbnZpcm9ubWVudDogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvckV2ZW50KSB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBFcnJvcjogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gIH1cblxuICBmZXRjaFVzZXJHcm91cERldGFpbHModXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElVc2VyR3JvdXBEZXRhaWxzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElVc2VyR3JvdXBEZXRhaWxzW10+KEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfR1JPVVBTKHVzZXJJZCkpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIGZldGNoVXNlckJhdGNoTGlzdCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM/OiB7IG9yZ2RldGFpbHM6IGFueSwgbGljZW5zZURldGFpbHM6IGFueSwgZmllbGRzOiBhbnksIGJhdGNoRGV0YWlsczogYW55IH0pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ291cnNlW10+IHtcbiAgICBsZXQgcGF0aCA9ICcnO1xuICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfVjIodXNlcklkLCBxdWVyeVBhcmFtcy5vcmdkZXRhaWxzLCBxdWVyeVBhcmFtcy5saWNlbnNlRGV0YWlscywgcXVlcnlQYXJhbXMuZmllbGRzLCBxdWVyeVBhcmFtcy5iYXRjaERldGFpbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1QodXNlcklkKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICAnbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgRXhwaXJlczogJzAnLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLmNoZWNrU3RvcmFnZURhdGEoJ2Vucm9sbG1lbnRTZXJ2aWNlJywgJ2Vucm9sbG1lbnREYXRhJykpIHtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gIHRoaXMuaHR0cC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSwgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbnJvbGxtZW50RGF0YScsIEpTT04uc3RyaW5naWZ5KGRhdGEucmVzdWx0KSk7XG4gICAgICAgICAgICB0aGlzLm1hcEVucm9sbG1lbnREYXRhKGRhdGEucmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXREYXRhKCdlbnJvbGxtZW50RGF0YScpO1xuXG4gIH1cblxuICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgZmV0Y2hQcm9maWxlVXNlckJhdGNoTGlzdCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM/OiB7IG9yZ2RldGFpbHM6IGFueSwgbGljZW5zZURldGFpbHM6IGFueSwgZmllbGRzOiBhbnksIGJhdGNoRGV0YWlsczogYW55IH0pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ291cnNlW10+IHtcbiAgICBsZXQgcGF0aCA9ICcnO1xuICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfVjIodXNlcklkLCBxdWVyeVBhcmFtcy5vcmdkZXRhaWxzLCBxdWVyeVBhcmFtcy5saWNlbnNlRGV0YWlscywgcXVlcnlQYXJhbXMuZmllbGRzLCBxdWVyeVBhcmFtcy5iYXRjaERldGFpbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRSh1c2VySWQpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDYWNoZS1Db250cm9sJzogICduby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcsXG4gICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICBFeHBpcmVzOiAnMCcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChwYXRoLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5yZXN1bHRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAvLyBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScpKSB7XG4gICAgLy8gICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpXG4gICAgLy8gICAgICAgICB0aGlzLm1hcEVucm9sbG1lbnREYXRhKGRhdGEucmVzdWx0KVxuICAgIC8vICAgICAgICAgcmV0dXJuIGRhdGEucmVzdWx0XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICApXG4gICAgLy8gICApXG4gICAgLy8gICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJylcbiAgICAvLyAgIHJldHVybiByZXN1bHRcbiAgICAvLyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuZ2V0RGF0YSgnZW5yb2xsbWVudERhdGEnKVxuICB9XG5cbiAgY2hlY2tTdG9yYWdlRGF0YShrZXk6IGFueSwgZGF0YUtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpO1xuICAgIGlmIChjaGVja1RpbWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGNoZWNrVGltZSk7XG4gICAgICBpZiAocGFyc2VkRGF0YVtrZXldKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcygpO1xuICAgICAgICBjb25zdCBkaWZmTWluID0gZGF0ZS5kaWZmKHBhcnNlZERhdGFba2V5XSwgJ21pbnV0ZScpO1xuICAgICAgICBjb25zdCB0aW1lQ2hlY2sgPSB0aGlzLmVudmlyb25tZW50LmFwaUNhY2hlIHx8IDA7XG4gICAgICAgIGlmIChkaWZmTWluID49IHRpbWVDaGVjaykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShkYXRhS2V5KSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvZihKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJ3t9JykpO1xuICB9XG4gIGdldFNhdmVkRGF0YShrZXk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAnJyk7XG4gIH1cblxuICBzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpO1xuICAgIGlmIChjaGVja1RpbWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGNoZWNrVGltZSk7XG4gICAgICBwYXJzZWREYXRhW2tleV0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aW1lQ2hlY2snLCBKU09OLnN0cmluZ2lmeShwYXJzZWREYXRhKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xuICAgICAgZGF0YVtrZXldID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0VGltZShrZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKTtcbiAgICBpZiAoY2hlY2tUaW1lKSB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShjaGVja1RpbWUpO1xuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2tleV07XG4gICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RpbWVDaGVjaycsIEpTT04uc3RyaW5naWZ5KHBhcnNlZERhdGEpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmZXRjaENicFBsYW5MaXN0KCkge1xuXG4gICAgLy8gbGV0IGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYnBEYXRhJyl8fCAnJylcbiAgICAvLyBpZighZGF0YSkge1xuICAgIC8vICAgdGhpcy5odHRwLmdldChBUElfRU5EX1BPSU5UUy5GRVRDSF9DUEJfUExBTlMpLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSwgbWFwKFxuICAgIC8vICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgY29uc3QgY291cnNlRGF0YSA9IHRoaXMubWFwRGF0YShkYXRhLnJlc3VsdClcbiAgICAvLyAgICAgICByZXR1cm4gY291cnNlRGF0YVxuICAgIC8vICAgICB9XG4gICAgLy8gICApXG4gICAgLy8gICApXG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLmdldERhdGEoJ2NicERhdGEnKVxuXG4gICAgLy8gfVxuICAgICBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdjYnBTZXJ2aWNlJywgJ2NicERhdGEnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHRoaXMuaHR0cC5nZXQoQVBJX0VORF9QT0lOVFMuRkVUQ0hfQ1BCX1BMQU5TKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAgICAgICBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYXBEYXRhKGRhdGEucmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0VGltZSgnY2JwU2VydmljZScpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgnY2JwRGF0YScpO1xuICB9XG5cbiAgYXN5bmMgbWFwRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZW50TmV3OiBhbnkgPSBbXTtcbiAgICBjb25zdCB0b2RheURhdGUgPSBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuXG4gICAgY29uc3QgZW5yb2xsTGlzdDogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZW5yb2xsbWVudE1hcERhdGEnKSB8fCAne30nKTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuY291bnQpIHtcbiAgICAgIGRhdGEuY29udGVudC5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgYy5jb250ZW50TGlzdC5mb3JFYWNoKChjaGlsZERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkRW5yb2xsRGF0YSA9IGVucm9sbExpc3RbY2hpbGREYXRhLmlkZW50aWZpZXJdO1xuICAgICAgICAgIGNvbnN0IGVuZERhdGUgPSBkYXlqcyhjLmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgIGNvbnN0IGRheXNDb3VudCA9IGRheWpzKGVuZERhdGUpLmRpZmYodG9kYXlEYXRlLCAnZGF5Jyk7XG4gICAgICAgICAgY2hpbGREYXRhLnBsYW5EdXJhdGlvbiA9ICBkYXlzQ291bnQgPCAwID8gTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuT1ZFUkRVRSA6IGRheXNDb3VudCA+IDI5XG4gICAgICAgICAgPyBOc0NhcmRDb250ZW50LkFDQlBDb25zdC5TVUNDRVNTIDogTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuVVBDT01JTkc7XG4gICAgICAgICAgY2hpbGREYXRhLmVuZERhdGUgPSBjLmVuZERhdGU7XG4gICAgICAgICAgY2hpbGREYXRhLnBhcmVudElkID0gYy5pZDtcbiAgICAgICAgICBjaGlsZERhdGEucGxhblR5cGUgPSAnY2JQbGFuJztcbiAgICAgICAgICBpZiAoY2hpbGREYXRhLnN0YXR1cyAhPT0gTnNDYXJkQ29udGVudC5JR09UQ29uc3QuUkVUSVJFRCkge1xuICAgICAgICAgICAgY29udGVudE5ldy5wdXNoKGNoaWxkRGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEVucm9sbERhdGEgJiYgY2hpbGRFbnJvbGxEYXRhLnN0YXR1cyA9PT0gMikge1xuICAgICAgICAgICAgICBjb250ZW50TmV3LnB1c2goY2hpbGREYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5QXJlYTogYW55ID0gW107XG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lOiBhbnkgPSBbXTtcbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWVUeXBlOiBhbnkgPSBbXTtcbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWU6IGFueSA9IFtdO1xuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lBcmVhSWQ6IGFueSA9IFtdO1xuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZUlkOiBhbnkgPSBbXTtcbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWVJZDogYW55ID0gW107XG4gICAgICAgICAgY2hpbGREYXRhLmNvbnRlbnRTdGF0dXMgPSAwO1xuICAgICAgICAgIGlmIChjaGlsZEVucm9sbERhdGEpIHtcbiAgICAgICAgICAgIGNoaWxkRGF0YS5jb250ZW50U3RhdHVzID0gY2hpbGRFbnJvbGxEYXRhLnN0YXR1cztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoaWxkRGF0YS5jb21wZXRlbmNpZXNfdjUpIHtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jaWVzX3Y1LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5QXJlYS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lBcmVhKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5QXJlYS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWEpO1xuICAgICAgICAgICAgICBjb21wZXRlbmN5QXJlYUlkLnB1c2goZWxlbWVudC5jb21wZXRlbmN5QXJlYUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZSk7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lUaGVtZUlkLnB1c2goZWxlbWVudC5jb21wZXRlbmN5VGhlbWVJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lUaGVtZVR5cGUuaW5jbHVkZXMoZWxlbWVudC5jb21wZXRlbmN5VGhlbWVUeXBlKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWVUeXBlLnB1c2goZWxlbWVudC5jb21wZXRlbmN5VGhlbWVUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVN1YlRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVN1YlRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5U3ViVGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSk7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lTdWJUaGVtZUlkLnB1c2goZWxlbWVudC5jb21wZXRlbmN5U3ViVGhlbWVJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICB9XG5cbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeUFyZWEgPSBjb21wZXRlbmN5QXJlYTtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeVRoZW1lID0gY29tcGV0ZW5jeVRoZW1lO1xuICAgICAgICAgIGNoaWxkRGF0YS5jb21wZXRlbmN5VGhlbWVUeXBlID0gY29tcGV0ZW5jeVRoZW1lVHlwZTtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeVN1YlRoZW1lID0gY29tcGV0ZW5jeVN1YlRoZW1lO1xuICAgICAgICAgIGNoaWxkRGF0YS5jb21wZXRlbmN5QXJlYUlkID0gY29tcGV0ZW5jeUFyZWFJZDtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeVRoZW1lSWQgPSBjb21wZXRlbmN5VGhlbWVJZDtcbiAgICAgICAgICBjaGlsZERhdGEuY29tcGV0ZW5jeVN1YlRoZW1lSWQgPSBjb21wZXRlbmN5U3ViVGhlbWVJZDtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChjb250ZW50TmV3Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YTogYW55ID0gY29udGVudE5ldy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF0ZTogYW55ID0gbmV3IERhdGUoYS5lbmREYXRlKTtcbiAgICAgICAgICBjb25zdCBzZWNvbmREYXRlOiBhbnkgPSBuZXcgRGF0ZShiLmVuZERhdGUpO1xuXG4gICAgICAgICAgcmV0dXJuICBzZWNvbmREYXRlID4gZmlyc3REYXRlICA/IDEgOiAtMTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuaXF1ZVVzZXJzQnlJRCA9IGxvZGFzaC51bmlxQnkoc29ydGVkRGF0YSwgJ2lkZW50aWZpZXInKTtcbiAgICAgICAgY29uc3Qgc29ydGVkQnlFbmREYXRlID0gIGxvZGFzaC5vcmRlckJ5KHVuaXF1ZVVzZXJzQnlJRCwgWydlbmREYXRlJ10sIFsnYXNjJ10pO1xuICAgICAgICBjb25zdCBzb3J0ZWRCeVN0YXR1cyA9ICBsb2Rhc2gub3JkZXJCeShzb3J0ZWRCeUVuZERhdGUsIFsnY29udGVudFN0YXR1cyddLCBbJ2FzYyddKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicERhdGEnLCBKU09OLnN0cmluZ2lmeShzb3J0ZWRCeVN0YXR1cykpO1xuICAgICAgICByZXR1cm4gc29ydGVkQnlTdGF0dXM7XG4gICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoY29udGVudE5ldykpO1xuICAgICAgcmV0dXJuIGNvbnRlbnROZXc7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoW10pKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBtYXBFbnJvbGxtZW50RGF0YShjb3Vyc2VEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBlbnJvbGxEYXRhOiBhbnkgPSB7fTtcbiAgICBpZiAoY291cnNlRGF0YSAmJiBjb3Vyc2VEYXRhLmNvdXJzZXMubGVuZ3RoKSB7XG4gICAgICBjb3Vyc2VEYXRhLmNvdXJzZXMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgZW5yb2xsRGF0YVtkYXRhLmNvbGxlY3Rpb25JZF0gPSBkYXRhO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbnJvbGxtZW50TWFwRGF0YScsIEpTT04uc3RyaW5naWZ5KGVucm9sbERhdGEpKTtcbiAgfVxufVxuIl19
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy93aWRnZXQtdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBTSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxPQUFPLENBQUM7Ozs7SUFDMUIsS0FBSyxHQUFHLE1BQU07QUFDcEIsNkRBQTZEOzs7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOztJQUczQixpQkFBaUIsR0FBRyxvQkFBb0I7Ozs7O0FBRXpCLFVBQUMsTUFBYztJQUNoQyxPQUFHLGlCQUFpQiwwQ0FBcUMsTUFBUTtBQUFqRSxDQUFpRTs7OztBQUV2QyxVQUFDLE1BQTBCO0lBQ3JELDRDQUE0QztJQUM1QyxPQUFBLDZEQUEyRCxNQUFNLDhUQUF5VCxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksc0dBQW1HO0FBQWpnQixDQUFpZ0I7Ozs7QUFDL2QsVUFBQyxNQUEwQjtJQUM3RCw0Q0FBNEM7SUFDNUMsT0FBQSw2REFBMkQsTUFBTSw4VEFBeVQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLGlJQUE4SDtBQUE1aEIsQ0FBNGhCOzs7Ozs7OztBQUUvZixVQUFDLE1BQTBCLEVBQUUsVUFBa0IsRUFBRSxj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SUFBSSxDQUFBO1lBQ3hDLENBQUMsRUFBQyxDQUFBO1NBQ0g7UUFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDNUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDdkUsQ0FBQzs7Ozs7O0lBQ0QsbURBQXVCOzs7OztJQUF2QixVQUF3QixjQUFtQixFQUFFLG1CQUEyQjs7WUFDaEUsUUFBUSxHQUFHO1lBQ2YsbUJBQW1CLHFCQUFBO1lBQ25CLHVCQUF1QixFQUFFLGNBQWM7U0FDeEM7UUFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDOUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDdkUsQ0FBQzs7Z0JBaFNGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0RBSUksTUFBTSxTQUFDLGFBQWE7Z0JBcENoQixVQUFVOzs7NEJBRG5CO0NBZ1VDLEFBalNELElBaVNDO1NBOVJZLGlCQUFpQjs7O0lBQzVCLHdDQUFpQjs7Ozs7SUFHZixpQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElVc2VyR3JvdXBEZXRhaWxzIH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1jb250ZW50Lm1vZGVsJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9vZidcbmltcG9ydCAqIGFzIGRheWpzXyBmcm9tICdkYXlqcyc7XG5jb25zdCBkYXlqcyA9IGRheWpzX1xuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICdzcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50J1xuaW1wb3J0IHsgTnNDYXJkQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvY2FyZC1jb250ZW50LXYyLm1vZGVsJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgRkVUQ0hfVVNFUl9HUk9VUFM6ICh1c2VySWQ6IHN0cmluZykgPT5cbiAgICBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9ncm91cC9mZXRjaFVzZXJHcm91cD91c2VySWQ9JHt1c2VySWR9YCxcbiAgICBGRVRDSF9DUEJfUExBTlM6IGAvYXBpcy9wcm94aWVzL3Y4L3VzZXIvdjEvY2JwbGFuYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1Q6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPW9yZ05hbWUsZW1haWwmbGljZW5zZURldGFpbHM9bmFtZSxkZXNjcmlwdGlvbix1cmwmZmllbGRzPWNvbnRlbnRUeXBlLHByaW1hcnlDYXRlZ29yeSxjb3Vyc2VDYXRlZ29yeSx0b3BpYyxuYW1lLGNoYW5uZWwsbWltZVR5cGUsYXBwSWNvbixncmFkZUxldmVsLHJlc291cmNlVHlwZSxpZGVudGlmaWVyLG1lZGl1bSxwa2dWZXJzaW9uLGJvYXJkLHN1YmplY3QsdHJhY2thYmxlLHBvc3RlckltYWdlLGR1cmF0aW9uLGNyZWF0b3JMb2dvLGxpY2Vuc2UsdmVyc2lvbix2ZXJzaW9uS2V5LGF2Z1JhdGluZyxhZGRpdGlvbmFsVGFncywke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPW5hbWUsZW5kRGF0ZSxzdGFydERhdGUsc3RhdHVzLGVucm9sbG1lbnRUeXBlLGNyZWF0ZWRCeSxjZXJ0aWZpY2F0ZXMsYmF0Y2hBdHRyaWJ1dGVzYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRTogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9b3JnTmFtZSxlbWFpbCZsaWNlbnNlRGV0YWlscz1uYW1lLGRlc2NyaXB0aW9uLHVybCZmaWVsZHM9Y29udGVudFR5cGUscHJpbWFyeUNhdGVnb3J5LGNvdXJzZUNhdGVnb3J5LHRvcGljLG5hbWUsY2hhbm5lbCxtaW1lVHlwZSxhcHBJY29uLGdyYWRlTGV2ZWwscmVzb3VyY2VUeXBlLGlkZW50aWZpZXIsbWVkaXVtLHBrZ1ZlcnNpb24sYm9hcmQsc3ViamVjdCx0cmFja2FibGUscG9zdGVySW1hZ2UsZHVyYXRpb24sY3JlYXRvckxvZ28sbGljZW5zZSx2ZXJzaW9uLHZlcnNpb25LZXksYXZnUmF0aW5nLGFkZGl0aW9uYWxUYWdzLCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9bmFtZSxlbmREYXRlLHN0YXJ0RGF0ZSxzdGF0dXMsZW5yb2xsbWVudFR5cGUsY3JlYXRlZEJ5LGNlcnRpZmljYXRlcyxiYXRjaEF0dHJpYnV0ZXMmcmV0aXJlZENvdXJzZXNFbmFibGVkPXRydWVgLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBGRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9WMjogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmdkZXRhaWxzOiBzdHJpbmcsIGxpY2Vuc2VEZXRhaWxzOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nLCBiYXRjaERldGFpbHM6IHN0cmluZykgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGBhcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9JHtvcmdkZXRhaWxzfSZsaWNlbnNlRGV0YWlscz0ke2xpY2Vuc2VEZXRhaWxzfSZmaWVsZHM9JHtmaWVsZHN9LGNvdXJzZUNhdGVnb3J5LCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9JHtiYXRjaERldGFpbHN9YCxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRVc2VyU2VydmljZSB7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICB9XG5cbiAgIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvckV2ZW50KSB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYEVycm9yOiAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YFxuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpXG4gIH1cblxuICBmZXRjaFVzZXJHcm91cERldGFpbHModXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElVc2VyR3JvdXBEZXRhaWxzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElVc2VyR3JvdXBEZXRhaWxzW10+KEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfR1JPVVBTKHVzZXJJZCkpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKVxuICB9XG4gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgZmV0Y2hVc2VyQmF0Y2hMaXN0KHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBxdWVyeVBhcmFtcz86IHsgb3JnZGV0YWlsczogYW55LCBsaWNlbnNlRGV0YWlsczogYW55LCBmaWVsZHM6IGFueSwgYmF0Y2hEZXRhaWxzOiBhbnkgfSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb3Vyc2VbXT4ge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1QodXNlcklkKVxuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDYWNoZS1Db250cm9sJzogICduby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcsXG4gICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICBFeHBpcmVzOiAnMCcsXG4gICAgfSlcbiAgICBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScsICdlbnJvbGxtZW50RGF0YScpKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvdXJzZXNEYXRhOiBhbnkgPSBbXVxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5yZXN1bHQgJiYgZGF0YS5yZXN1bHQuY291cnNlcykge1xuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzLmZvckVhY2goKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmNvbnRlbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50LmNvbnRlbnRTdGF0dXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291cnNlc0RhdGEucHVzaChjb250ZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB0aGlzLnN0b3JlVXNlckVucm9sbG1lbnRJbmZvKGRhdGEucmVzdWx0LnVzZXJDb3Vyc2VFbnJvbG1lbnRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0LmNvdXJzZXMubGVuZ3RoKVxuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzID0gY291cnNlc0RhdGFcbiAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvdXJzZXMubGVuZ3RoIDwgMjAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Vucm9sbG1lbnREYXRhJylcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJylcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXBFbnJvbGxtZW50RGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlc3VsdFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXREYXRhKCdlbnJvbGxtZW50RGF0YScpXG5cbiAgfVxuXG4gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBmZXRjaFByb2ZpbGVVc2VyQmF0Y2hMaXN0KHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBxdWVyeVBhcmFtcz86IHsgb3JnZGV0YWlsczogYW55LCBsaWNlbnNlRGV0YWlsczogYW55LCBmaWVsZHM6IGFueSwgYmF0Y2hEZXRhaWxzOiBhbnkgfSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb3Vyc2VbXT4ge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRSh1c2VySWQpXG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAgJ25vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICAgIEV4cGlyZXM6ICcwJyxcbiAgICB9KVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0XG4gICAgICAgIClcbiAgICAgIClcbiAgICAvLyBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdlbnJvbGxtZW50U2VydmljZScpKSB7XG4gICAgLy8gICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudERhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhLnJlc3VsdCkpXG4gICAgLy8gICAgICAgICB0aGlzLm1hcEVucm9sbG1lbnREYXRhKGRhdGEucmVzdWx0KVxuICAgIC8vICAgICAgICAgcmV0dXJuIGRhdGEucmVzdWx0XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICApXG4gICAgLy8gICApXG4gICAgLy8gICB0aGlzLnNldFRpbWUoJ2Vucm9sbG1lbnRTZXJ2aWNlJylcbiAgICAvLyAgIHJldHVybiByZXN1bHRcbiAgICAvLyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuZ2V0RGF0YSgnZW5yb2xsbWVudERhdGEnKVxuICB9XG5cbiAgY2hlY2tTdG9yYWdlRGF0YShrZXk6IGFueSwgZGF0YUtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgICBjb25zdCBkYXRlID0gZGF5anMoKVxuICAgICAgICBjb25zdCBkaWZmTWluID0gZGF0ZS5kaWZmKHBhcnNlZERhdGFba2V5XSwgJ21pbnV0ZScpXG4gICAgICAgIGNvbnN0IHRpbWVDaGVjayA9IHRoaXMuZW52aXJvbm1lbnQuYXBpQ2FjaGUgfHwgMFxuICAgICAgICBpZiAoZGlmZk1pbiA+PSB0aW1lQ2hlY2spIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShkYXRhS2V5KSA/IGZhbHNlIDogdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAne30nKSlcbiAgfVxuICBnZXRTYXZlZERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpXG4gIH1cblxuICBzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgcGFyc2VkRGF0YVtrZXldID0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aW1lQ2hlY2snLCBKU09OLnN0cmluZ2lmeShwYXJzZWREYXRhKSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0ge31cbiAgICAgIGRhdGFba2V5XSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgfVxuICB9XG5cbiAgcmVzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2tleV1cbiAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hDYnBQbGFuTGlzdCgpIHtcblxuICAgIC8vIGxldCBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2JwRGF0YScpfHwgJycpXG4gICAgLy8gaWYoIWRhdGEpIHtcbiAgICAvLyAgIHRoaXMuaHR0cC5nZXQoQVBJX0VORF9QT0lOVFMuRkVUQ0hfQ1BCX1BMQU5TKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAvLyAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgIGNvbnN0IGNvdXJzZURhdGEgPSB0aGlzLm1hcERhdGEoZGF0YS5yZXN1bHQpXG4gICAgLy8gICAgICAgcmV0dXJuIGNvdXJzZURhdGFcbiAgICAvLyAgICAgfVxuICAgIC8vICAgKVxuICAgIC8vICAgKVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICByZXR1cm4gdGhpcy5nZXREYXRhKCdjYnBEYXRhJylcblxuICAgIC8vIH1cbiAgICAgaWYgKHRoaXMuY2hlY2tTdG9yYWdlRGF0YSgnY2JwU2VydmljZScsICdjYnBEYXRhJykpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmh0dHAuZ2V0KEFQSV9FTkRfUE9JTlRTLkZFVENIX0NQQl9QTEFOUykucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLCBtYXAoXG4gICAgICAgICAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwRGF0YShkYXRhLnJlc3VsdClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0VGltZSgnY2JwU2VydmljZScpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldERhdGEoJ2NicERhdGEnKVxuICB9XG5cbiAgYXN5bmMgbWFwRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZW50TmV3OiBhbnkgPSBbXVxuICAgIGNvbnN0IHRvZGF5RGF0ZSA9IGRheWpzKCkuZm9ybWF0KCdZWVlZLU1NLUREJylcblxuICAgIGNvbnN0IGVucm9sbExpc3Q6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Vucm9sbG1lbnRNYXBEYXRhJykgfHwgJ3t9JylcblxuICAgIGlmIChkYXRhICYmIGRhdGEuY291bnQpIHtcbiAgICAgIGRhdGEuY29udGVudC5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgYy5jb250ZW50TGlzdC5mb3JFYWNoKChjaGlsZERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkRW5yb2xsRGF0YSA9IGVucm9sbExpc3RbY2hpbGREYXRhLmlkZW50aWZpZXJdXG4gICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IGRheWpzKGMuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgICAgICBjb25zdCBkYXlzQ291bnQgPSBkYXlqcyhlbmREYXRlKS5kaWZmKHRvZGF5RGF0ZSwgJ2RheScpXG4gICAgICAgICAgY2hpbGREYXRhWydwbGFuRHVyYXRpb24nXSA9ICBkYXlzQ291bnQgPCAwID8gTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuT1ZFUkRVRSA6IGRheXNDb3VudCA+IDI5XG4gICAgICAgICAgPyBOc0NhcmRDb250ZW50LkFDQlBDb25zdC5TVUNDRVNTIDogTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuVVBDT01JTkdcbiAgICAgICAgICBjaGlsZERhdGFbJ2VuZERhdGUnXSA9IGMuZW5kRGF0ZVxuICAgICAgICAgIGNoaWxkRGF0YVsncGFyZW50SWQnXSA9IGMuaWRcbiAgICAgICAgICBjaGlsZERhdGFbJ3BsYW5UeXBlJ10gPSAnY2JQbGFuJ1xuICAgICAgICAgIGlmIChjaGlsZERhdGEuc3RhdHVzICE9PSBOc0NhcmRDb250ZW50LklHT1RDb25zdC5SRVRJUkVEKSB7XG4gICAgICAgICAgICBjb250ZW50TmV3LnB1c2goY2hpbGREYXRhKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhICYmIGNoaWxkRW5yb2xsRGF0YS5zdGF0dXMgPT09IDIpIHtcbiAgICAgICAgICAgICAgY29udGVudE5ldy5wdXNoKGNoaWxkRGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5QXJlYTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWU6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lVHlwZTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWU6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeUFyZWFJZDogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWVJZDogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5U3ViVGhlbWVJZDogYW55ID0gW11cbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbnRlbnRTdGF0dXMnXSA9IDBcbiAgICAgICAgICBpZiAoY2hpbGRFbnJvbGxEYXRhKSB7XG4gICAgICAgICAgICBjaGlsZERhdGFbJ2NvbnRlbnRTdGF0dXMnXSA9IGNoaWxkRW5yb2xsRGF0YS5zdGF0dXNcbiAgICAgICAgICB9XG4gICAgICAgICBpZiAoY2hpbGREYXRhLmNvbXBldGVuY2llc192NSkge1xuICAgICAgICAgIGNoaWxkRGF0YS5jb21wZXRlbmNpZXNfdjUuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lBcmVhLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWEpKSB7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lBcmVhLnB1c2goZWxlbWVudC5jb21wZXRlbmN5QXJlYSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeUFyZWFJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWFJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5VGhlbWVUeXBlLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lVHlwZS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVN1YlRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVN1YlRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5U3ViVGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICB9XG5cbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lBcmVhJ10gPSBjb21wZXRlbmN5QXJlYVxuICAgICAgICAgIGNoaWxkRGF0YVsnY29tcGV0ZW5jeVRoZW1lJ10gPSBjb21wZXRlbmN5VGhlbWVcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lUaGVtZVR5cGUnXSA9IGNvbXBldGVuY3lUaGVtZVR5cGVcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lTdWJUaGVtZSddID0gY29tcGV0ZW5jeVN1YlRoZW1lXG4gICAgICAgICAgY2hpbGREYXRhWydjb21wZXRlbmN5QXJlYUlkJ10gPSBjb21wZXRlbmN5QXJlYUlkXG4gICAgICAgICAgY2hpbGREYXRhWydjb21wZXRlbmN5VGhlbWVJZCddID0gY29tcGV0ZW5jeVRoZW1lSWRcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbXBldGVuY3lTdWJUaGVtZUlkJ10gPSBjb21wZXRlbmN5U3ViVGhlbWVJZFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgaWYgKGNvbnRlbnROZXcubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzb3J0ZWREYXRhOiBhbnkgPSBjb250ZW50TmV3LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmVuZERhdGUpXG4gICAgICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5lbmREYXRlKVxuXG4gICAgICAgICAgcmV0dXJuICBzZWNvbmREYXRlID4gZmlyc3REYXRlICA/IDEgOiAtMVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCB1bmlxdWVVc2Vyc0J5SUQgPSBsb2Rhc2gudW5pcUJ5KHNvcnRlZERhdGEsICdpZGVudGlmaWVyJylcbiAgICAgICAgY29uc3Qgc29ydGVkQnlFbmREYXRlID0gIGxvZGFzaC5vcmRlckJ5KHVuaXF1ZVVzZXJzQnlJRCwgWydlbmREYXRlJ10sIFsnYXNjJ10pXG4gICAgICAgIGNvbnN0IHNvcnRlZEJ5U3RhdHVzID0gIGxvZGFzaC5vcmRlckJ5KHNvcnRlZEJ5RW5kRGF0ZSwgWydjb250ZW50U3RhdHVzJ10sIFsnYXNjJ10pXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoc29ydGVkQnlTdGF0dXMpKVxuICAgICAgICByZXR1cm4gc29ydGVkQnlTdGF0dXNcbiAgICAgfVxuICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnROZXcpKVxuICAgICByZXR1cm4gY29udGVudE5ld1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KFtdKSlcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIG1hcEVucm9sbG1lbnREYXRhKGNvdXJzZURhdGE6IGFueSkge1xuICAgIGNvbnN0IGVucm9sbERhdGE6IGFueSA9IHt9XG4gICAgaWYgKGNvdXJzZURhdGEgJiYgY291cnNlRGF0YS5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgY291cnNlRGF0YS5jb3Vyc2VzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGVucm9sbERhdGFbZGF0YS5jb2xsZWN0aW9uSWRdID0gZGF0YVxuICAgICAgfSlcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Vucm9sbG1lbnRNYXBEYXRhJylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5yb2xsbWVudE1hcERhdGEnLCBKU09OLnN0cmluZ2lmeShlbnJvbGxEYXRhKSlcbiAgfVxuICBzdG9yZVVzZXJFbnJvbGxtZW50SW5mbyhlbnJvbGxtZW50RGF0YTogYW55LCBlbnJvbGxlZENvdXJzZUNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCB1c2VyRGF0YSA9IHtcbiAgICAgIGVucm9sbGVkQ291cnNlQ291bnQsXG4gICAgICB1c2VyQ291cnNlRW5yb2xtZW50SW5mbzogZW5yb2xsbWVudERhdGEsXG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyRW5yb2xsbWVudENvdW50JylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlckVucm9sbG1lbnRDb3VudCcsIEpTT04uc3RyaW5naWZ5KHVzZXJEYXRhKSlcbiAgfVxufVxuIl19