@sabstravtech/obtservices 0.0.26051001 → 0.1.6161600
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular/fetchers.d.ts +2 -0
- package/angular/lib/vendor/fetchers/get-office.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-user-default-mi-value.fetcher.d.ts +7 -0
- package/angular/lib/vendor/services/enterprise-basket.service.d.ts +4 -4
- package/angular/lib/vendor/services/logon.service.d.ts +2 -2
- package/angular/lib/vendor/services/user.service.d.ts +5 -3
- package/angular/lib/vendor/types/graphql.angular.types.d.ts +389 -508
- package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
- package/base/fetchers.d.ts +2 -0
- package/base/lib/vendor/classes/base-enterprise.d.ts +3 -1
- package/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +5 -1
- package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +8 -1
- package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +11 -4
- package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/flight-enterprise-search.d.ts +11 -0
- package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +4 -0
- package/base/lib/vendor/classes/irl-enterprise-search.d.ts +9 -4
- package/base/lib/vendor/classes/lounges-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/management-info-and-valid.d.ts +2 -2
- package/base/lib/vendor/classes/parking-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/rail-enterprise-search.d.ts +1 -1
- package/base/lib/vendor/classes/user-favourite.enum.d.ts +1 -0
- package/base/lib/vendor/fetchers/eurostar-quote.fetcher.d.ts +3 -1
- package/base/lib/vendor/fetchers/flight-quote.fetcher.d.ts +1 -0
- package/base/lib/vendor/fetchers/get-office.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/get-user-default-mi-value.fetcher.d.ts +21 -0
- package/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.d.ts +2 -2
- package/base/lib/vendor/interfaces/Icabhire-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +2 -0
- package/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +3 -2
- package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +6 -0
- package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +3 -0
- package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +4 -4
- package/base/lib/vendor/interfaces/Imybookings.service.d.ts +3 -2
- package/base/lib/vendor/interfaces/Isearch.service.d.ts +1 -0
- package/base/lib/vendor/interfaces/Iuser.service.d.ts +10 -3
- package/base/lib/vendor/interfaces/rail-basket-item.interface.d.ts +2 -0
- package/base/lib/vendor/interfaces/summary-interface.d.ts +4 -0
- package/base/lib/vendor/models/traveller.object.d.ts +11 -1
- package/base/lib/vendor/services/enterprise-basket.service.d.ts +9 -7
- package/base/lib/vendor/services/logon.service.d.ts +3 -3
- package/base/lib/vendor/services/my-bookings.service.d.ts +3 -2
- package/base/lib/vendor/services/search.service.d.ts +3 -2
- package/base/lib/vendor/services/user.service.d.ts +18 -3
- package/base/lib/vendor/services/webtoken.service.d.ts +6 -4
- package/base/lib/vendor/types/graphql.types.d.ts +379 -508
- package/base/lib/vendor/types/types.d.ts +35 -7
- package/base/sabstravtech-obtservices-base.metadata.json +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.js +300 -201
- package/bundles/sabstravtech-obtservices-angular.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.js +2143 -597
- package/bundles/sabstravtech-obtservices-base.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.min.js +2 -2
- package/bundles/sabstravtech-obtservices-base.umd.min.js.map +1 -1
- package/esm2015/angular/fetchers.js +3 -1
- package/esm2015/angular/lib/vendor/fetchers/get-office.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-user-default-mi-value.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/services/enterprise-basket.service.js +25 -25
- package/esm2015/angular/lib/vendor/services/logon.service.js +7 -7
- package/esm2015/angular/lib/vendor/services/ticket-queue.service.js +4 -1
- package/esm2015/angular/lib/vendor/services/user.service.js +13 -7
- package/esm2015/angular/lib/vendor/services/webtoken.service.js +2 -2
- package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +808 -1231
- package/esm2015/base/fetchers.js +3 -1
- package/esm2015/base/lib/vendor/classes/base-enterprise.js +6 -3
- package/esm2015/base/lib/vendor/classes/bookable-basket.js +1 -3
- package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +155 -9
- package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +129 -8
- package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +351 -20
- package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +8 -5
- package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +94 -14
- package/esm2015/base/lib/vendor/classes/helpers.js +15 -2
- package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +86 -21
- package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +123 -18
- package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +63 -8
- package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +56 -33
- package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +109 -6
- package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +81 -7
- package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +17 -1
- package/esm2015/base/lib/vendor/classes/user-favourite.enum.js +2 -1
- package/esm2015/base/lib/vendor/data/countries.json +484 -242
- package/esm2015/base/lib/vendor/fetchers/eurostar-quote.fetcher.js +3 -3
- package/esm2015/base/lib/vendor/fetchers/flight-quote.fetcher.js +3 -3
- package/esm2015/base/lib/vendor/fetchers/get-office.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-user-default-mi-value.fetcher.js +10 -0
- package/esm2015/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Icabhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Imybookings.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isearch.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iuser.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/rail-basket-item.interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/summary-interface.js +1 -1
- package/esm2015/base/lib/vendor/models/traveller.object.js +21 -3
- package/esm2015/base/lib/vendor/services/enterprise-basket.service.js +42 -19
- package/esm2015/base/lib/vendor/services/logon.service.js +8 -5
- package/esm2015/base/lib/vendor/services/my-bookings.service.js +3 -2
- package/esm2015/base/lib/vendor/services/search.service.js +32 -24
- package/esm2015/base/lib/vendor/services/user.service.js +47 -3
- package/esm2015/base/lib/vendor/services/webtoken.service.js +12 -6
- package/esm2015/base/lib/vendor/types/graphql.types.js +15 -1
- package/esm2015/base/lib/vendor/types/types.js +4 -3
- package/fesm2015/sabstravtech-obtservices-angular.js +948 -1334
- package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
- package/fesm2015/sabstravtech-obtservices-base.js +1984 -472
- package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@ import moment from 'moment';
|
|
|
5
5
|
import { DifferentInvokdedUserReasons } from '../types/types';
|
|
6
6
|
import { ServiceType } from '../types/graphql.types';
|
|
7
7
|
export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
8
|
-
constructor(loungefetcher, helpers, basketService, storageService, searchService) {
|
|
9
|
-
super(storageService, helpers, searchService);
|
|
8
|
+
constructor(loungefetcher, helpers, basketService, storageService, searchService, userService) {
|
|
9
|
+
super(storageService, helpers, searchService, userService);
|
|
10
10
|
this.loungefetcher = loungefetcher;
|
|
11
11
|
this.basketService = basketService;
|
|
12
12
|
this.type = ServiceType.Lounge;
|
|
@@ -274,9 +274,13 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
274
274
|
this.results.next(results.sort(terminalSorter));
|
|
275
275
|
}
|
|
276
276
|
updateFromPreviousSearches(previousItems) {
|
|
277
|
-
var _a;
|
|
277
|
+
var _a, _b, _c, _d, _e;
|
|
278
278
|
console.log('PREPOPULATING LOUNGE FORM');
|
|
279
279
|
const flightItem = (_a = previousItems[ServiceType.Flight]) === null || _a === void 0 ? void 0 : _a.searchQuery;
|
|
280
|
+
const irlItem = (_b = previousItems[ServiceType.InternationalRail]) === null || _b === void 0 ? void 0 : _b.searchQuery;
|
|
281
|
+
const railItem = (_c = previousItems[ServiceType.Rail]) === null || _c === void 0 ? void 0 : _c.searchQuery;
|
|
282
|
+
const hotelItem = (_d = previousItems[ServiceType.Rail]) === null || _d === void 0 ? void 0 : _d.searchQuery;
|
|
283
|
+
const carItem = (_e = previousItems[ServiceType.Car]) === null || _e === void 0 ? void 0 : _e.searchQuery;
|
|
280
284
|
if (flightItem) {
|
|
281
285
|
try {
|
|
282
286
|
let date = this.searchService.searches[ServiceType.Flight].outBoundDate.toDate();
|
|
@@ -288,8 +292,56 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
288
292
|
this.locationCode = this.searchService.searches[ServiceType.Flight]
|
|
289
293
|
.arriveLocation;
|
|
290
294
|
}
|
|
291
|
-
catch (
|
|
292
|
-
console.error('Error trying to prepopulate
|
|
295
|
+
catch (_f) {
|
|
296
|
+
console.error('Error trying to prepopulate lounge from flight item');
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
else if (railItem) {
|
|
300
|
+
try {
|
|
301
|
+
let date = this.searchService.searches[ServiceType.Rail].outBoundDateTime.toDate();
|
|
302
|
+
this.date = {
|
|
303
|
+
day: date.getUTCDate(),
|
|
304
|
+
month: date.getUTCMonth() + 1,
|
|
305
|
+
year: date.getUTCFullYear()
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
catch (_g) {
|
|
309
|
+
console.error('Error trying to prepopulate lounge from rail item');
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
else if (irlItem) {
|
|
313
|
+
try {
|
|
314
|
+
let date = this.searchService.searches[ServiceType.InternationalRail].outBoundDateTime.toDate();
|
|
315
|
+
this.date = {
|
|
316
|
+
day: date.getUTCDate(),
|
|
317
|
+
month: date.getUTCMonth() + 1,
|
|
318
|
+
year: date.getUTCFullYear()
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
catch (_h) {
|
|
322
|
+
console.error('Error trying to prepopulate lounge from international rail item');
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else if (hotelItem) {
|
|
326
|
+
try {
|
|
327
|
+
let date = this.searchService.searches[ServiceType.Hotel].checkin_date.toDate();
|
|
328
|
+
this.date = {
|
|
329
|
+
day: date.getUTCDate(),
|
|
330
|
+
month: date.getUTCMonth() + 1,
|
|
331
|
+
year: date.getUTCFullYear()
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
catch (_j) {
|
|
335
|
+
console.error('Error trying to prepopulate lounge from hotel item');
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else if (carItem) {
|
|
339
|
+
try {
|
|
340
|
+
let date = this.searchService.searches[ServiceType.Car].pickup_date;
|
|
341
|
+
this.date = date;
|
|
342
|
+
}
|
|
343
|
+
catch (_k) {
|
|
344
|
+
console.error('Error trying to prepopulate lounge from car item');
|
|
293
345
|
}
|
|
294
346
|
}
|
|
295
347
|
}
|
|
@@ -322,7 +374,7 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
322
374
|
}
|
|
323
375
|
}
|
|
324
376
|
addLoungeToBasket(loungeQuote, loungeQuery) {
|
|
325
|
-
var _a;
|
|
377
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
326
378
|
return __awaiter(this, void 0, void 0, function* () {
|
|
327
379
|
if (loungeQuote.unavailable) {
|
|
328
380
|
return Promise.resolve(DifferentInvokdedUserReasons.cancel);
|
|
@@ -360,7 +412,10 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
360
412
|
price: loungeQuote.price,
|
|
361
413
|
currency: loungeQuote.currency,
|
|
362
414
|
searchQuery: loungeQuery,
|
|
363
|
-
outboundDate: loungeQuery.arrivalDatetime.format()
|
|
415
|
+
outboundDate: loungeQuery.arrivalDatetime.format(),
|
|
416
|
+
lowestPrice: ((_b = this.cheapestPrice) === null || _b === void 0 ? void 0 : _b.amount) != loungeQuote.price || ((_c = this.cheapestPrice) === null || _c === void 0 ? void 0 : _c.currencyCode) != loungeQuote.currency ? (_d = this.cheapestPrice) === null || _d === void 0 ? void 0 : _d.amount : null,
|
|
417
|
+
lowestPriceCurrency: ((_e = this.cheapestPrice) === null || _e === void 0 ? void 0 : _e.amount) != loungeQuote.price || ((_f = this.cheapestPrice) === null || _f === void 0 ? void 0 : _f.currencyCode) != loungeQuote.currency ?
|
|
418
|
+
(_g = this.cheapestPrice) === null || _g === void 0 ? void 0 : _g.currencyCode : null
|
|
364
419
|
}, intBasket, this.searchService, this.travellers, loungeQuote.requiresReason);
|
|
365
420
|
if (whatHappened === DifferentInvokdedUserReasons.research) {
|
|
366
421
|
this.performSearch();
|
|
@@ -470,4 +525,4 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
470
525
|
}
|
|
471
526
|
LoungesEnterpriseSearch.STORAGE_SESSION_PARAMS = 'search_lounge';
|
|
472
527
|
LoungesEnterpriseSearch.STORAGE_SESSION_RESULTS = 'results_lounge';
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG91bmdlcy1lbnRlcnByaXNlLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9sb3VuZ2VzLWVudGVycHJpc2Utc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQ0wsNEJBQTRCLEVBUTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQU9MLFdBQVcsRUFDWixNQUFNLHdCQUF3QixDQUFDO0FBZWhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLG9CQUlQO0lBbUtELFlBQ1UsYUFBMkMsRUFDbkQsT0FBMkIsRUFDbkIsYUFBK0MsRUFDdkQsY0FBa0MsRUFDbEMsYUFBK0M7UUFFL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFOdEMsa0JBQWEsR0FBYixhQUFhLENBQThCO1FBRTNDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQztRQWpLbEQsU0FBSSxHQUFnQixXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUErQnBELGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBb0U3QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFVdkMsbUJBQW1CO1FBQ1osYUFBUSxHQUFHO1lBQ2hCLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDM0IsR0FBRyxFQUFFLE1BQU0sRUFB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Q0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFDSyxjQUFjLENBQUMsR0FBUTs7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFJLENBQVcsQ0FBQyxJQUFJLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQ3JDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQztLQUFBOztBQWhqQmUsOENBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQ3pDLCtDQUF1QixHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVudGVycHJpc2VTZWFyY2ggfSBmcm9tICcuL2Jhc2UtZW50ZXJwcmlzZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0LFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgTmdiRGF0ZVN0cnVjdCxcclxuICBPQlRBaXJwb3J0RGV0YWlscyxcclxuICBSZWNlbnRTZWFyY2gsXHJcbiAgU2F2ZUZhdm91cml0ZVNlYXJjaFJlc3VsdCxcclxuICBUZXJtaW5hbHNUeXBlXHJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFpcnBvcnRSZXN1bHRzLFxyXG4gIEJhc2tldEl0ZW0sXHJcbiAgTG91bmdlUXVvdGUsXHJcbiAgU2F2ZVJlY2VudFNlYXJjaE11dGF0aW9uVmFyaWFibGVzLFxyXG4gIFNlYXJjaEZsaWdodHNWMlF1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyxcclxuICBTZXJ2aWNlVHlwZVxyXG59IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VMb3VuZ2VRdW90ZUZldGNoZXIsXHJcbiAgTG91bmdlUXVvdGVGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2xvdW5nZS1xdW90ZS5mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZSxcclxuICBJbnRlcm5hbEJhc2tldEludGVyZmFjZVxyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWVudGVycHJpc2UtYmFza2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRlcnByaXNlU2VhcmNoU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaEludGVyZmFjZSxcclxuICBMb3VuZ2VzVGVtcFBhcmFtc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWxvdW5nZXMtZW50ZXJwcmlzZS1zZWFyY2gnO1xyXG5pbXBvcnQgeyBJQ2hlYXBlc3RQcmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlYXBlc3QtcHJpY2UnO1xyXG5leHBvcnQgY2xhc3MgTG91bmdlc0VudGVycHJpc2VTZWFyY2g8TFFfUSBleHRlbmRzIExvdW5nZVF1b3RlRmV0Y2hlclR5cGU+XHJcbiAgZXh0ZW5kcyBCYXNlRW50ZXJwcmlzZVNlYXJjaDxcclxuICAgIExvdW5nZXNUZW1wUGFyYW1zLFxyXG4gICAgTG91bmdlUXVvdGVSZXN1bHRBcnJheSxcclxuICAgIExvdW5nZVF1b3RlUmVzdWx0QXJyYXlcclxuICA+XHJcbiAgaW1wbGVtZW50cyBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaEludGVyZmFjZVxyXG57XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUT1JBR0VfU0VTU0lPTl9QQVJBTVMgPSAnc2VhcmNoX2xvdW5nZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUT1JBR0VfU0VTU0lPTl9SRVNVTFRTID0gJ3Jlc3VsdHNfbG91bmdlJztcclxuICBwdWJsaWMgdHlwZTogU2VydmljZVR5cGUgPSBTZXJ2aWNlVHlwZS5Mb3VuZ2U7XHJcbiAgcHVibGljIHRlcm1pbmFscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVybWluYWxzVHlwZVtdPihbXSk7XHJcblxyXG4gIHByaXZhdGUgdHJhdmVsbGVyczogVHJhdmVsbGVyW107XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb25Db2RlOiBzdHJpbmc7XHJcblxyXG4gIGdldCBhZHVsdHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFkdWx0cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2hpbGRyZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW47XHJcbiAgfVxyXG5cclxuICBzZXQgY2hpbGRyZW4odmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmNoaWxkcmVuID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5mYW50cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZmFudHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmluZmFudHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZsaWdodE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgZ2V0IGZsaWdodE51bWJlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsaWdodE51bWJlcjtcclxuICB9XHJcblxyXG4gIHNldCBmbGlnaHROdW1iZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZmxpZ2h0TnVtYmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbG9jYXRpb25Db2RlKCk6IHN0cmluZyB8IE9CVEFpcnBvcnREZXRhaWxzIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMubG9jYXRpb25Db2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0IGxvY2F0aW9uQ29kZSh2YWx1ZTogc3RyaW5nIHwgT0JUQWlycG9ydERldGFpbHMpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy5sb2NhdGlvbkNvZGUgPSB2YWx1ZTtcclxuICAgIGNvbnN0IHRlcm1pbmFsc1R5cGU6IFRlcm1pbmFsc1R5cGVbXSA9IHRoaXMudGVybWluYWxzPy52YWx1ZTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuX2xvY2F0aW9uQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dChbXSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUuZ2F0ZXdheSkge1xyXG4gICAgICB0aGlzLl9sb2NhdGlvbkNvZGUgPSB2YWx1ZS5nYXRld2F5O1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dCh2YWx1ZS50ZXJtaW5hbHMpO1xyXG4gICAgICBpZiAodGVybWluYWxzVHlwZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSB0ZXJtaW5hbHNUeXBlWzBdLmtleTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9sb2NhdGlvbkNvZGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dChbXSk7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0ZXJtaW5hbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbFxyXG4gICAgICA/IHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbC50b1N0cmluZygpXHJcbiAgICAgIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHNldCB0ZXJtaW5hbChpbnB1dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwgPSBpbnB1dDtcclxuICAgIGNvbnN0IGZvdW5kOiBUZXJtaW5hbHNUeXBlID0gdGhpcy50ZXJtaW5hbHMudmFsdWUuZmluZChcclxuICAgICAgKHRlcm1pbmFsOiBUZXJtaW5hbHNUeXBlLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRlcm1pbmFsLnZhbHVlID09PSBpbnB1dCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmb3VuZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSBmb3VuZC5rZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50ZXJtaW5hbHMudmFsdWUgJiYgdGhpcy50ZXJtaW5hbHMudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IHRoaXMudGVybWluYWxzLnZhbHVlWzBdLmtleTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSAnQW55IFRlcm1pbmFsJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUZXJtaW5hbDogc3RyaW5nID0gJyc7XHJcbiAgc2V0IHNlbGVjdGVkVGVybWluYWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRUZXJtaW5hbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkVGVybWluYWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRlcm1pbmFsO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIHZhcmlhYmxlc1xyXG4gIHB1YmxpYyBtaW5fZGF0ZSA9IHtcclxuICAgIHllYXI6IG1vbWVudCgpLnllYXIoKSxcclxuICAgIG1vbnRoOiBtb21lbnQoKS5tb250aCgpICsgMSwgLy8gbmdiRGF0ZSBtb250aHMgYXJlIG5vdCAwIGluZGV4ZWRcclxuICAgIGRheTogbW9tZW50KCkuZGF0ZSgpXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZGF0ZTogTmdiRGF0ZVN0cnVjdCA9IG51bGw7XHJcbiAgZ2V0IGRhdGUoKTogTmdiRGF0ZVN0cnVjdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcclxuICB9XHJcblxyXG4gIHNldCBkYXRlKHZhbHVlOiBOZ2JEYXRlU3RydWN0KSB7XHJcbiAgICB0aGlzLl9kYXRlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVEYXRlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGltZTogc3RyaW5nID0gbnVsbDtcclxuICBnZXQgdGltZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdGltZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl90aW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVEYXRlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFycml2YWxEYXRldGltZSgpOiBtb21lbnQuTW9tZW50IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFycml2YWxEYXRldGltZSh2YWx1ZTogbW9tZW50Lk1vbWVudCkge1xyXG4gICAgaWYgKHZhbHVlLmlzVmFsaWQoKSkge1xyXG4gICAgICB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lID0gdmFsdWU7XHJcblxyXG4gICAgICB0aGlzLl9kYXRlID0gdGhpcy5oZWxwZXJzLm1vbWVudFRvTmdEYXRlKHZhbHVlKTtcclxuICAgICAgdGhpcy5fdGltZSA9IHRoaXMuaGVscGVycy5mb3JtYXRUaW1lQ29sb24odmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVzdWx0c1Nlc3Npb25OYW1lID1cclxuICAgIExvdW5nZXNFbnRlcnByaXNlU2VhcmNoLlNUT1JBR0VfU0VTU0lPTl9SRVNVTFRTO1xyXG4gIHByb3RlY3RlZCBtdWx0aVJlc3VsdHNTZXNzaW9uTmFtZSA9XHJcbiAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUkVTVUxUUztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxvdW5nZWZldGNoZXI6IEJhc2VMb3VuZ2VRdW90ZUZldGNoZXI8TFFfUT4sXHJcbiAgICBoZWxwZXJzOiBCYXNlSGVscGVyUm91dGluZXMsXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdG9yYWdlU2VydmljZSwgaGVscGVycywgc2VhcmNoU2VydmljZSk7XHJcbiAgICBjb25zdCBkYXRhOiB7XHJcbiAgICAgIHRlbXBQYXJhbXM6IExvdW5nZXNUZW1wUGFyYW1zO1xyXG4gICAgfSA9IHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TXHJcbiAgICApIHx8IHtcclxuICAgICAgdGVtcFBhcmFtczoge30gYXMgTG91bmdlc1RlbXBQYXJhbXNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy51cGRhdGVUZW1wUGFyYW1zKHNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeShkYXRhLnRlbXBQYXJhbXMpKTtcclxuXHJcbiAgICBpZiAoc2VhcmNoU2VydmljZS5zaG91bGRBZGRUcmF2ZWxsZXJTdWJzY3JpcHRpb24oKSkge1xyXG4gICAgICBzZWFyY2hTZXJ2aWNlLnRyYXZlbGxlckluZm9ybWF0aW9uLnN1YnNjcmliZShcclxuICAgICAgICAodHJhdmVsbGVyczogVHJhdmVsbGVyW10pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNwbGl0VHJhdmVsbGVycyA9IHRoaXMuaGVscGVycy5zZWxlY3RlZFRyYXZlbGxlcnMoXHJcbiAgICAgICAgICAgIHRyYXZlbGxlcnMsXHJcbiAgICAgICAgICAgIFNlcnZpY2VUeXBlLkxvdW5nZVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzID0gc3BsaXRUcmF2ZWxsZXJzLmFkdWx0cy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4gPSBzcGxpdFRyYXZlbGxlcnMuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy50cmF2ZWxsZXJzID0gdHJhdmVsbGVycztcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzdWx0cyA9XHJcbiAgICAgIHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtQXNMaXN0PExvdW5nZVF1b3RlUmVzdWx0QXJyYXk+KFxyXG4gICAgICAgIHRoaXMucmVzdWx0c1Nlc3Npb25OYW1lXHJcbiAgICAgICkgfHwgW107XHJcbiAgICAvLyBpZiAocmVzdWx0cyA9PSBudWxsICYmIHRoaXMuaXNWYWxpZCkge1xyXG4gICAgLy8gICBzZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX2NoZWFwZXN0UmVzdWx0UHJpY2UgPSB0aGlzLnVwZGF0ZUxvd2VzdFByaWNlKHJlc3VsdHMpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cyB8fCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVzZXRRdWVyeSgpIHtcclxuICAgIHRoaXMudXBkYXRlVGVtcFBhcmFtcyh0aGlzLnNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeSgpKTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFF1ZXJ5KCk6IFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyB7XHJcbiAgICBjb25zdCBxdWVyeTogU2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzID0ge1xyXG4gICAgICBhZHVsdHM6IHRoaXMudGVtcFBhcmFtcy5hZHVsdHMsXHJcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4sXHJcbiAgICAgIGluZmFudHM6IHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzLFxyXG4gICAgICBsb2NhdGlvbkNvZGU6IHRoaXMuX2xvY2F0aW9uQ29kZSxcclxuICAgICAgdGVybWluYWw6XHJcbiAgICAgICAgdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsID09PSAnQW55JyA/IG51bGwgOiB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwsXHJcbiAgICAgIGFycml2YWxEYXRldGltZTogdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMucmVtb3ZlTnVsbHM8U2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzPihxdWVyeSk7XHJcbiAgfVxyXG5cclxuICAvLyBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5kb0NoZWNrcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TLFxyXG4gICAgICB7XHJcbiAgICAgICAgdGVtcFBhcmFtczogdGhpcy50ZW1wUGFyYW1zLFxyXG4gICAgICAgIHRyYXZlbGxlcnM6IHRoaXMudHJhdmVsbGVyc1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzID0gW107XHJcbiAgICBpZiAoIXRoaXMuX2xvY2F0aW9uQ29kZSB8fCB0aGlzLl9sb2NhdGlvbkNvZGUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLnB1c2goJ1lvdSBtdXN0IHNlbGVjdCBhaXJwb3J0IGZpcnN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhpcy5xdWVyeS50ZXJtaW5hbCkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdUZXJtaW5hbCBjYW4gbm90IGJlIGVtcHR5LicpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lLnVuaXgoKSA8IG1vbWVudCgpLnVuaXgoKSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdPdXR3YXJkIGpvdXJuZXkgY2Fubm90IGJlIGluIHRoZSBwYXN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNWYWxpZC5uZXh0KHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLm5leHQodGhpcy52YWxpZGF0aW9uTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlRGF0ZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5fZGF0ZSAmJiB0aGlzLl90aW1lKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLmhlbHBlcnMubmdEYXRlVG9Nb21lbnQodGhpcy5fZGF0ZSwgdGhpcy5fdGltZSk7XHJcbiAgICAgIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWUgPSB0aW1lLmlzVmFsaWQoKSA/IHRpbWUgOiBudWxsO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydFNlYXJjaCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KFtdKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5nZXRTZWFyY2hRdWVyeSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2F2ZVJlY2VudFNlYXJjaCh0aGlzLmdldFJlY2VudFNlYXJjaFF1ZXJ5KHF1ZXJ5KSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zdGFydFNlYXJjaChcclxuICAgICAgICB0aGlzLmxvdW5nZWZldGNoZXIuZmV0Y2hMaXN0KFxyXG4gICAgICAgICAgdGhpcy5oZWxwZXJzLnJlbW92ZU51bGxzPFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcz4ocXVlcnkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZWNlbnRTZWFyY2hRdWVyeShcclxuICAgIHF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBTYXZlUmVjZW50U2VhcmNoTXV0YXRpb25WYXJpYWJsZXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkxvdW5nZSxcclxuICAgICAgc2VhcmNoQXJnczogcXVlcnksXHJcbiAgICAgIHRyYXZlbERhdGU6IHRoaXMuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICB0cmF2ZWxsZXJzOiB0aGlzLmhlbHBlcnMuZ2V0VHJhdmVsbGVyc0lkKHRoaXMudHJhdmVsbGVycylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhcnRSZWNlbnRTZWFyY2gocmVjZW50U2VhcmNoOiBSZWNlbnRTZWFyY2gpOiB2b2lkIHtcclxuICAgIHRoaXMuYXJyaXZhbERhdGV0aW1lID0gbW9tZW50KHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLmFycml2YWxEYXRldGltZSk7XHJcbiAgICB0aGlzLnRlcm1pbmFsID0gcmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MudGVybWluYWw7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcclxuICAgICAgLmdldEFpcnBvcnRCeUNvZGUocmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MubG9jYXRpb25Db2RlKVxyXG4gICAgICAuc3Vic2NyaWJlKChhaXJwb3J0OiBBaXJwb3J0UmVzdWx0cykgPT4ge1xyXG4gICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uQ29kZSA9IHtcclxuICAgICAgICAgICAgY291bnRyeTogYWlycG9ydC5pYXRhTWF0Y2g/LmxvY2F0aW9uRGV0YWlscz8uY291bnRyeSxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogYWlycG9ydC5pYXRhTWF0Y2gubmFtZSxcclxuICAgICAgICAgICAgZ2F0ZXdheTogYWlycG9ydC5pYXRhTWF0Y2guaWF0YSxcclxuICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbHM6IHRoaXMuc2VhcmNoU2VydmljZS5wcm9jZXNzVGVybWluYWxzKFxyXG4gICAgICAgICAgICAgIGFpcnBvcnQuaWF0YU1hdGNoLnRlcm1pbmFsc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy50ZXJtaW5hbCA9IHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLnRlcm1pbmFsO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICB9XHJcblxyXG4gIHNvcnRCeVByaWNlKGFzYz86IGJvb2xlYW4sIHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCBzb3J0UmVzdWx0cyA9IFsuLi50aGlzLmZ1bGxSZXN1bHRzXSBhcyBMb3VuZ2VRdW90ZVtdO1xyXG4gICAgaWYgKCFzb3J0UmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgc29ydFJlc3VsdHMgPSByZXN1bHRBcnJheTtcclxuICAgIH1cclxuICAgIHNvcnRSZXN1bHRzID0gdGhpcy5zb3J0UmVzdWx0c1ByaWNlKHNvcnRSZXN1bHRzLCBhc2MpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQoc29ydFJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgc29ydFJlc3VsdHNQcmljZShyZXN1bHRBcnJheTogTG91bmdlUXVvdGVbXSwgYXNjPzogYm9vbGVhbik6IExvdW5nZVF1b3RlW10ge1xyXG4gICAgbGV0IHJlc3VsdHMgPSBbLi4ucmVzdWx0QXJyYXldO1xyXG4gICAgaWYgKGFzYykge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGIucHJpY2UgLSBhLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGEucHJpY2UgLSBiLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRlcm1pbmFsKHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCByZXN1bHRzID0gWy4uLnRoaXMuZnVsbFJlc3VsdHNdO1xyXG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0QXJyYXk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0ZXJtaW5hbFNvcnRlciA9IChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IHtcclxuICAgICAgcmV0dXJuIC0xOyAvLyBUT0RPIGEucmF3RGF0YS5GbGlnaHRUZXJtT3V0ID4gYi5yYXdEYXRhLkZsaWdodFRlcm1PdXQgPyAxIDogLTE7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cy5zb3J0KHRlcm1pbmFsU29ydGVyKSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGcm9tUHJldmlvdXNTZWFyY2hlcyhcclxuICAgIHByZXZpb3VzSXRlbXM6IFJlY29yZDxTZXJ2aWNlVHlwZSwgQmFza2V0SXRlbT5cclxuICApOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdQUkVQT1BVTEFUSU5HIExPVU5HRSBGT1JNJyk7XHJcbiAgICBjb25zdCBmbGlnaHRJdGVtOiBTZWFyY2hGbGlnaHRzVjJRdWVyeVZhcmlhYmxlcyA9XHJcbiAgICAgIHByZXZpb3VzSXRlbXNbU2VydmljZVR5cGUuRmxpZ2h0XT8uc2VhcmNoUXVlcnk7XHJcbiAgICBpZiAoZmxpZ2h0SXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5GbGlnaHRdLm91dEJvdW5kRGF0ZS50b0RhdGUoKTtcclxuICAgICAgICB0aGlzLmRhdGUgPSB7XHJcbiAgICAgICAgICBkYXk6IGRhdGUuZ2V0VVRDRGF0ZSgpLFxyXG4gICAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgICAgICB5ZWFyOiBkYXRlLmdldFVUQ0Z1bGxZZWFyKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaGVzW1NlcnZpY2VUeXBlLkZsaWdodF1cclxuICAgICAgICAgIC5hcnJpdmVMb2NhdGlvbiBhcyBPQlRBaXJwb3J0RGV0YWlscztcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdHJ5aW5nIHRvIHByZXBvcHVsYXRlIHBhcmtpbmcgZnJvbSBsb3VuZ2UgaXRlbScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWFyY2hGcm9tRXhwaXJlZEJhc2tldEl0ZW0oYmFza2V0SXRlbTogQmFza2V0SXRlbSk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoTG91bmdlc1F1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXMgPVxyXG4gICAgICBiYXNrZXRJdGVtLnNlYXJjaFF1ZXJ5O1xyXG4gICAgaWYgKHNlYXJjaExvdW5nZXNRdWVyeSkge1xyXG4gICAgICB0aGlzLmFycml2YWxEYXRldGltZSA9IG1vbWVudChzZWFyY2hMb3VuZ2VzUXVlcnkuYXJyaXZhbERhdGV0aW1lKTtcclxuXHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBzZWFyY2hMb3VuZ2VzUXVlcnkudGVybWluYWw7XHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxyXG4gICAgICAgIC5nZXRBaXJwb3J0QnlDb2RlKHNlYXJjaExvdW5nZXNRdWVyeS5sb2NhdGlvbkNvZGUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoYWlycG9ydDogQWlycG9ydFJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0ge1xyXG4gICAgICAgICAgICAgIGNvdW50cnk6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBhaXJwb3J0LmlhdGFNYXRjaC5uYW1lLFxyXG4gICAgICAgICAgICAgIGdhdGV3YXk6IGFpcnBvcnQuaWF0YU1hdGNoLmlhdGEsXHJcbiAgICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICAgIHRlcm1pbmFsczogdGhpcy5zZWFyY2hTZXJ2aWNlLnByb2Nlc3NUZXJtaW5hbHMoXHJcbiAgICAgICAgICAgICAgICBhaXJwb3J0LmlhdGFNYXRjaC50ZXJtaW5hbHNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIFRyYXZlbGxlcnNcclxuICAgIGlmIChiYXNrZXRJdGVtLnVzZXJzKSB7XHJcbiAgICAgIGJhc2tldEl0ZW0udXNlcnMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmFkZFRyYXZlbGxlcih1c2VyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRMb3VuZ2VUb0Jhc2tldChcclxuICAgIGxvdW5nZVF1b3RlOiBMb3VuZ2VRdW90ZSxcclxuICAgIGxvdW5nZVF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBQcm9taXNlPERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnM+IHtcclxuICAgIGlmIChsb3VuZ2VRdW90ZS51bmF2YWlsYWJsZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnMuY2FuY2VsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludEJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UgPVxyXG4gICAgICBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0RGVmYXVsdEJhc2tldCgpO1xyXG4gICAgY29uc3QgYmFza2V0ID0gaW50QmFza2V0Py5zdWJqZWN0LnZhbHVlO1xyXG4gICAgY29uc3QgdGVybXNBbmRDb25kaXRpb25zID0gdGhpcy5nZXRUZXJtc0FuZENvbmQobG91bmdlUXVvdGUpO1xyXG4gICAgaWYgKGJhc2tldCkge1xyXG4gICAgICBjb25zdCB3aGF0SGFwcGVuZWQgPSBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuYWRkVG9CYXNrZXQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYWR1bHRzOiBsb3VuZ2VRdWVyeS5hZHVsdHMsXHJcbiAgICAgICAgICBjaGlsZHJlbjogbG91bmdlUXVlcnkuY2hpbGRyZW4sXHJcbiAgICAgICAgICBpbmZhbnRzOiBsb3VuZ2VRdWVyeS5pbmZhbnRzLFxyXG4gICAgICAgICAgYmFza2V0OiBiYXNrZXQuaWQsXHJcbiAgICAgICAgICBzZXJ2aWNlOiBsb3VuZ2VRdW90ZS5zb3VyY2VJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgZGV0YWlsOiB7XHJcbiAgICAgICAgICAgIGFycml2YWxEYXRldGltZTogbG91bmdlUXVlcnkuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICAgICAgICBsb2NhdGlvbkNvZGU6IGxvdW5nZVF1b3RlLmNvZGUsXHJcbiAgICAgICAgICAgIG5hbWU6IGxvdW5nZVF1b3RlLm5hbWUsXHJcbiAgICAgICAgICAgIGFpcnBvcnRJYXRhOiBsb3VuZ2VRdWVyeT8ubG9jYXRpb25Db2RlLFxyXG4gICAgICAgICAgICBsb2dvOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubG9nbyxcclxuICAgICAgICAgICAgaW50cm9kdWN0aW9uOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuaW50cm9kdWN0aW9uLFxyXG4gICAgICAgICAgICBjb3ZpZENvcHk6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmNvdmlkQ29weSxcclxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNhbmNlbGxhdGlvbkluZm8sXHJcbiAgICAgICAgICAgIGFkbWVuZG1lbnRzSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmFtZW5kbWVudHNJbmZvLFxyXG4gICAgICAgICAgICBjaGVja0luSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNoZWNrSW5JbmZvLFxyXG4gICAgICAgICAgICBkcmVzc0NvZGU6IGxvdW5nZVF1b3RlLmxvdW5nZS5kcmVzc0NvZGUsXHJcbiAgICAgICAgICAgIGZvb2RBbmRCZXZlcmFnZTogbG91bmdlUXVvdGUubG91bmdlLmZvb2RBbmRCZXZlcmFnZSxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZEZvb2Q6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRm9vZCxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZERyaW5rczogbG91bmdlUXVvdGUubG91bmdlLndoYXRzSW5jbHVkZWREcmlua3MsXHJcbiAgICAgICAgICAgIHdoYXRzSW5jbHVkZWRFeHRyYXM6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRXh0cmFzLFxyXG4gICAgICAgICAgICBncm91cEluZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5ncm91cEluZm8sXHJcbiAgICAgICAgICAgIHRlcm1pbmFsOiBsb3VuZ2VRdW90ZS5sb3VuZ2UudGVybWluYWw/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHRlcm1zQW5kQ29uZDogdGVybXNBbmRDb25kaXRpb25zXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcHJpY2U6IGxvdW5nZVF1b3RlLnByaWNlLFxyXG4gICAgICAgICAgY3VycmVuY3k6IGxvdW5nZVF1b3RlLmN1cnJlbmN5LFxyXG4gICAgICAgICAgc2VhcmNoUXVlcnk6IGxvdW5nZVF1ZXJ5LFxyXG4gICAgICAgICAgb3V0Ym91bmREYXRlOiBsb3VuZ2VRdWVyeS5hcnJpdmFsRGF0ZXRpbWUuZm9ybWF0KClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGludEJhc2tldCxcclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UsXHJcbiAgICAgICAgdGhpcy50cmF2ZWxsZXJzLFxyXG4gICAgICAgIGxvdW5nZVF1b3RlLnJlcXVpcmVzUmVhc29uXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAod2hhdEhhcHBlbmVkID09PSBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLnJlc2VhcmNoKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHdoYXRIYXBwZW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLmNhbmNlbDsgLy8gVE9ETyBzaG91bGQgdGhpcyB0aHJvdyBhbiBlcnJvcj9cclxuICB9XHJcblxyXG4gIGdldFRlcm1zQW5kQ29uZChsb3VuZ2VRdW90ZTogTG91bmdlUXVvdGUpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnTmFtZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5uYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnVGVsZXBob25lJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLnRlbGVwaG9uZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0ltcG9ydGFudCBJbmZvcm1hdGlvbicsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmltcG9ydGFudEluZm9ybWF0aW9uXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnSW50cm9kdWN0aW9uJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmludHJvZHVjdGlvblxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0RyZXNzIENvZGUnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZHJlc3NDb2RlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQnVzaW5lc3MgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmJ1c2luZXNzZmFjaWxpdGllc1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0VudGVydGFpbm1lbnQgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmVudGVydGFpbm1lbnRGYWNpbGl0aWVzXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRGlzYWJsZWQgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmZhY2lsaXRpZXNkaXNhYmxlZFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0ZhY2lsaXRpZXMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZmFjaWxpdGllcy50b1N0cmluZygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnVGltZXMnLFxyXG4gICAgICAgIHZhbHVlOiBgT3BlbnMgJHtsb3VuZ2VRdW90ZS5sb3VuZ2Uub3BlblRpbWV9OyBDbG9zZXMgJHtsb3VuZ2VRdW90ZS5sb3VuZ2UuY2xvc2VUaW1lfWBcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdEaXJlY3Rpb25zJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmRpcmVjdGlvbnNcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdHcm91cHMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZ3JvdXBJbmZvXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQ2hlY2stSW4gVGltZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5jaGVja0luSW5mb1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0FtZW5kIEluZm8nLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuYW1lbmRtZW50c0luZm9cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdDYW5jZWwgSW5mbycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5jYW5jZWxsYXRpb25JbmZvXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb3dlc3RQcmljZShyZXN1bHRzOiBMb3VuZ2VRdW90ZVtdKTogSUNoZWFwZXN0UHJpY2Uge1xyXG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBjdXJyZW5jeSA9IHJlc3VsdHNbMF0uY3VycmVuY3k7XHJcbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXHJcbiAgICAgIChjaGVhcGVzdFByaWNlOiBJQ2hlYXBlc3RQcmljZSwgcmVzdWx0OiBMb3VuZ2VRdW90ZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByaWNlID0gcmVzdWx0LnByaWNlO1xyXG4gICAgICAgIGlmIChjaGVhcGVzdFByaWNlLmFtb3VudCA+IHByaWNlKSBjaGVhcGVzdFByaWNlLmFtb3VudCA9IHByaWNlO1xyXG4gICAgICAgIHJldHVybiBjaGVhcGVzdFByaWNlO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFtb3VudDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsIGN1cnJlbmN5Q29kZTogY3VycmVuY3kgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWFyY2goKTogT2JzZXJ2YWJsZTxTYXZlRmF2b3VyaXRlU2VhcmNoUmVzdWx0PiB7XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuZ2V0U2VhcmNoUXVlcnkoKTtcclxuICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IHtcclxuICAgICAgICBuYW1lOiBgJHttb21lbnQoKX1gLFxyXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlVHlwZS5Mb3VuZ2UsXHJcbiAgICAgICAgc2VhcmNoQXJnczogc2VhcmNoXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2Uuc2F2ZUZhdm91cml0ZVNlYXJjaChzZWFyY2hJbmZvKTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgYXBwbHlGYXZvdXJpdGUoZmF2OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5nZXRBaXJwb3J0c0xpc3QoZmF2LmxvY2F0aW9uQ29kZSkuc3Vic2NyaWJlKChhKSA9PiB7XHJcbiAgICAgIHRoaXMubG9jYXRpb25Db2RlID0gKGEgYXMgYW55W10pLmZpbmQoXHJcbiAgICAgICAgKGEpID0+IGEuZ2F0ZXdheSA9PSBmYXYubG9jYXRpb25Db2RlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBmYXYudGVybWluYWw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWR1bHRzID0gZmF2LmFkdWx0cztcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBmYXYuY2hpbGRyZW47XHJcbiAgICB0aGlzLmluZmFudHMgPSBmYXYuaW5mYW50cztcclxuICB9XHJcbn1cclxuIl19
|
|
528
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG91bmdlcy1lbnRlcnByaXNlLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9sb3VuZ2VzLWVudGVycHJpc2Utc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQ0wsNEJBQTRCLEVBUTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQVdMLFdBQVcsRUFFWixNQUFNLHdCQUF3QixDQUFDO0FBZ0JoQyxNQUFNLE9BQU8sdUJBQ1gsU0FBUSxvQkFJUDtJQW1LRCxZQUNVLGFBQTJDLEVBQ25ELE9BQTJCLEVBQ25CLGFBQStDLEVBQ3ZELGNBQWtDLEVBQ2xDLGFBQStDLEVBQy9DLFdBQWlDO1FBR2pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQVJuRCxrQkFBYSxHQUFiLGFBQWEsQ0FBOEI7UUFFM0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBaktsRCxTQUFJLEdBQWdCLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQStCcEQsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFvRTdCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQVV2QyxtQkFBbUI7UUFDWixhQUFRLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRTtZQUNyQixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztZ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TUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFVBQVUsR0FBRztnQkFDakIsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUU7Z0JBQ25CLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtnQkFDL0IsVUFBVSxFQUFFLE1BQU07YUFDbkIsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFDSyxjQUFjLENBQUMsR0FBUTs7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFJLENBQVcsQ0FBQyxJQUFJLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQ3JDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQztLQUFBOztBQTltQmUsOENBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQ3pDLCtDQUF1QixHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVudGVycHJpc2VTZWFyY2ggfSBmcm9tICcuL2Jhc2UtZW50ZXJwcmlzZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0LFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgTmdiRGF0ZVN0cnVjdCxcclxuICBPQlRBaXJwb3J0RGV0YWlscyxcclxuICBSZWNlbnRTZWFyY2gsXHJcbiAgU2F2ZUZhdm91cml0ZVNlYXJjaFJlc3VsdCxcclxuICBUZXJtaW5hbHNUeXBlXHJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFpcnBvcnRSZXN1bHRzLFxyXG4gIEJhc2tldEl0ZW0sXHJcbiAgTG91bmdlUXVvdGUsXHJcbiAgU2F2ZVJlY2VudFNlYXJjaE11dGF0aW9uVmFyaWFibGVzLFxyXG4gIFNlYXJjaEZsaWdodHNWMlF1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlYXJjaEhvdGVsc1F1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlYXJjaElybFF1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyxcclxuICBTZWFyY2hSYWlsUXVlcnlWYXJpYWJsZXMsXHJcbiAgU2VhcmNoQ2FySGlyZVF1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlcnZpY2VUeXBlLFxyXG4gIEN1cnJlbmN5Q29kZVxyXG59IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VMb3VuZ2VRdW90ZUZldGNoZXIsXHJcbiAgTG91bmdlUXVvdGVGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2xvdW5nZS1xdW90ZS5mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZSxcclxuICBJbnRlcm5hbEJhc2tldEludGVyZmFjZVxyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWVudGVycHJpc2UtYmFza2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRlcnByaXNlU2VhcmNoU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaEludGVyZmFjZSxcclxuICBMb3VuZ2VzVGVtcFBhcmFtc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWxvdW5nZXMtZW50ZXJwcmlzZS1zZWFyY2gnO1xyXG5pbXBvcnQgeyBJQ2hlYXBlc3RQcmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlYXBlc3QtcHJpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmV4cG9ydCBjbGFzcyBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaDxMUV9RIGV4dGVuZHMgTG91bmdlUXVvdGVGZXRjaGVyVHlwZT5cclxuICBleHRlbmRzIEJhc2VFbnRlcnByaXNlU2VhcmNoPFxyXG4gICAgTG91bmdlc1RlbXBQYXJhbXMsXHJcbiAgICBMb3VuZ2VRdW90ZVJlc3VsdEFycmF5LFxyXG4gICAgTG91bmdlUXVvdGVSZXN1bHRBcnJheVxyXG4gID5cclxuICBpbXBsZW1lbnRzIExvdW5nZXNFbnRlcnByaXNlU2VhcmNoSW50ZXJmYWNlXHJcbntcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RPUkFHRV9TRVNTSU9OX1BBUkFNUyA9ICdzZWFyY2hfbG91bmdlJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RPUkFHRV9TRVNTSU9OX1JFU1VMVFMgPSAncmVzdWx0c19sb3VuZ2UnO1xyXG4gIHB1YmxpYyB0eXBlOiBTZXJ2aWNlVHlwZSA9IFNlcnZpY2VUeXBlLkxvdW5nZTtcclxuICBwdWJsaWMgdGVybWluYWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXJtaW5hbHNUeXBlW10+KFtdKTtcclxuXHJcbiAgcHJpdmF0ZSB0cmF2ZWxsZXJzOiBUcmF2ZWxsZXJbXTtcclxuICBwcml2YXRlIF9sb2NhdGlvbkNvZGU6IHN0cmluZztcclxuXHJcbiAgZ2V0IGFkdWx0cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5hZHVsdHM7XHJcbiAgfVxyXG5cclxuICBzZXQgYWR1bHRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy5hZHVsdHMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldCBjaGlsZHJlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5jaGlsZHJlbjtcclxuICB9XHJcblxyXG4gIHNldCBjaGlsZHJlbih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4gPSB2YWx1ZTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldCBpbmZhbnRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLmluZmFudHM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5mYW50cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMuaW5mYW50cyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmxpZ2h0TnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBnZXQgZmxpZ2h0TnVtYmVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxpZ2h0TnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZsaWdodE51bWJlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9mbGlnaHROdW1iZXIgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhdGlvbkNvZGUoKTogc3RyaW5nIHwgT0JUQWlycG9ydERldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5sb2NhdGlvbkNvZGU7XHJcbiAgfVxyXG5cclxuICBzZXQgbG9jYXRpb25Db2RlKHZhbHVlOiBzdHJpbmcgfCBPQlRBaXJwb3J0RGV0YWlscykge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmxvY2F0aW9uQ29kZSA9IHZhbHVlO1xyXG4gICAgY29uc3QgdGVybWluYWxzVHlwZTogVGVybWluYWxzVHlwZVtdID0gdGhpcy50ZXJtaW5hbHM/LnZhbHVlO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5fbG9jYXRpb25Db2RlID0gJyc7XHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlcm1pbmFscy5uZXh0KFtdKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB2YWx1ZS5nYXRld2F5KSB7XHJcbiAgICAgIHRoaXMuX2xvY2F0aW9uQ29kZSA9IHZhbHVlLmdhdGV3YXk7XHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlcm1pbmFscy5uZXh0KHZhbHVlLnRlcm1pbmFscyk7XHJcbiAgICAgIGlmICh0ZXJtaW5hbHNUeXBlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IHRlcm1pbmFsc1R5cGVbMF0ua2V5O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xvY2F0aW9uQ29kZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlcm1pbmFscy5uZXh0KFtdKTtcclxuICAgICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRlcm1pbmFsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsXHJcbiAgICAgID8gdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsLnRvU3RyaW5nKClcclxuICAgICAgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0IHRlcm1pbmFsKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbCA9IGlucHV0O1xyXG4gICAgY29uc3QgZm91bmQ6IFRlcm1pbmFsc1R5cGUgPSB0aGlzLnRlcm1pbmFscy52YWx1ZS5maW5kKFxyXG4gICAgICAodGVybWluYWw6IFRlcm1pbmFsc1R5cGUsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAodGVybWluYWwudmFsdWUgPT09IGlucHV0KSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IGZvdW5kLmtleTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRlcm1pbmFscy52YWx1ZSAmJiB0aGlzLnRlcm1pbmFscy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gdGhpcy50ZXJtaW5hbHMudmFsdWVbMF0ua2V5O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9ICdBbnkgVGVybWluYWwnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZFRlcm1pbmFsOiBzdHJpbmcgPSAnJztcclxuICBzZXQgc2VsZWN0ZWRUZXJtaW5hbCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFRlcm1pbmFsID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0ZWRUZXJtaW5hbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGVybWluYWw7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgdmFyaWFibGVzXHJcbiAgcHVibGljIG1pbl9kYXRlID0ge1xyXG4gICAgeWVhcjogbW9tZW50KCkueWVhcigpLFxyXG4gICAgbW9udGg6IG1vbWVudCgpLm1vbnRoKCkgKyAxLCAvLyBuZ2JEYXRlIG1vbnRocyBhcmUgbm90IDAgaW5kZXhlZFxyXG4gICAgZGF5OiBtb21lbnQoKS5kYXRlKClcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9kYXRlOiBOZ2JEYXRlU3RydWN0ID0gbnVsbDtcclxuICBnZXQgZGF0ZSgpOiBOZ2JEYXRlU3RydWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlO1xyXG4gIH1cclxuXHJcbiAgc2V0IGRhdGUodmFsdWU6IE5nYkRhdGVTdHJ1Y3QpIHtcclxuICAgIHRoaXMuX2RhdGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3VwZGF0ZURhdGVUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90aW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIGdldCB0aW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZTtcclxuICB9XHJcblxyXG4gIHNldCB0aW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RpbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3VwZGF0ZURhdGVUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXJyaXZhbERhdGV0aW1lKCk6IG1vbWVudC5Nb21lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgYXJyaXZhbERhdGV0aW1lKHZhbHVlOiBtb21lbnQuTW9tZW50KSB7XHJcbiAgICBpZiAodmFsdWUuaXNWYWxpZCgpKSB7XHJcbiAgICAgIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuX2RhdGUgPSB0aGlzLmhlbHBlcnMubW9tZW50VG9OZ0RhdGUodmFsdWUpO1xyXG4gICAgICB0aGlzLl90aW1lID0gdGhpcy5oZWxwZXJzLmZvcm1hdFRpbWVDb2xvbih2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZXN1bHRzU2Vzc2lvbk5hbWUgPVxyXG4gICAgTG91bmdlc0VudGVycHJpc2VTZWFyY2guU1RPUkFHRV9TRVNTSU9OX1JFU1VMVFM7XHJcbiAgcHJvdGVjdGVkIG11bHRpUmVzdWx0c1Nlc3Npb25OYW1lID1cclxuICAgIExvdW5nZXNFbnRlcnByaXNlU2VhcmNoLlNUT1JBR0VfU0VTU0lPTl9SRVNVTFRTO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG91bmdlZmV0Y2hlcjogQmFzZUxvdW5nZVF1b3RlRmV0Y2hlcjxMUV9RPixcclxuICAgIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lcyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgICBzdG9yYWdlU2VydmljZTogQmFzZVN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgc2VhcmNoU2VydmljZTogRW50ZXJwcmlzZVNlYXJjaFNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgICB1c2VyU2VydmljZTogVXNlclNlcnZpY2VJbnRlcmZhY2VcclxuXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdG9yYWdlU2VydmljZSwgaGVscGVycywgc2VhcmNoU2VydmljZSwgdXNlclNlcnZpY2UpO1xyXG4gICAgY29uc3QgZGF0YToge1xyXG4gICAgICB0ZW1wUGFyYW1zOiBMb3VuZ2VzVGVtcFBhcmFtcztcclxuICAgIH0gPSBzdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uSXRlbShcclxuICAgICAgTG91bmdlc0VudGVycHJpc2VTZWFyY2guU1RPUkFHRV9TRVNTSU9OX1BBUkFNU1xyXG4gICAgKSB8fCB7XHJcbiAgICAgIHRlbXBQYXJhbXM6IHt9IGFzIExvdW5nZXNUZW1wUGFyYW1zXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMudXBkYXRlVGVtcFBhcmFtcyhzZWFyY2hTZXJ2aWNlLm1ha2VMb3VuZ2VzUXVlcnkoZGF0YS50ZW1wUGFyYW1zKSk7XHJcblxyXG4gICAgaWYgKHNlYXJjaFNlcnZpY2Uuc2hvdWxkQWRkVHJhdmVsbGVyU3Vic2NyaXB0aW9uKCkpIHtcclxuICAgICAgc2VhcmNoU2VydmljZS50cmF2ZWxsZXJJbmZvcm1hdGlvbi5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHRyYXZlbGxlcnM6IFRyYXZlbGxlcltdKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzcGxpdFRyYXZlbGxlcnMgPSB0aGlzLmhlbHBlcnMuc2VsZWN0ZWRUcmF2ZWxsZXJzKFxyXG4gICAgICAgICAgICB0cmF2ZWxsZXJzLFxyXG4gICAgICAgICAgICBTZXJ2aWNlVHlwZS5Mb3VuZ2VcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy50ZW1wUGFyYW1zLmFkdWx0cyA9IHNwbGl0VHJhdmVsbGVycy5hZHVsdHMubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy50ZW1wUGFyYW1zLmNoaWxkcmVuID0gc3BsaXRUcmF2ZWxsZXJzLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMudHJhdmVsbGVycyA9IHRyYXZlbGxlcnM7XHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3VsdHMgPVxyXG4gICAgICBzdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uSXRlbUFzTGlzdDxMb3VuZ2VRdW90ZVJlc3VsdEFycmF5PihcclxuICAgICAgICB0aGlzLnJlc3VsdHNTZXNzaW9uTmFtZVxyXG4gICAgICApIHx8IFtdO1xyXG4gICAgLy8gaWYgKHJlc3VsdHMgPT0gbnVsbCAmJiB0aGlzLmlzVmFsaWQpIHtcclxuICAgIC8vICAgc2VhcmNoU2VydmljZS5zdGFydFNlYXJjaGVzKCk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLl9jaGVhcGVzdFJlc3VsdFByaWNlID0gdGhpcy51cGRhdGVMb3dlc3RQcmljZShyZXN1bHRzKTtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KHJlc3VsdHMgfHwgW10pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlc2V0UXVlcnkoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVRlbXBQYXJhbXModGhpcy5zZWFyY2hTZXJ2aWNlLm1ha2VMb3VuZ2VzUXVlcnkoKSk7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hRdWVyeSgpOiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXMge1xyXG4gICAgY29uc3QgcXVlcnk6IFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyA9IHtcclxuICAgICAgYWR1bHRzOiB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy50ZW1wUGFyYW1zLmNoaWxkcmVuLFxyXG4gICAgICBpbmZhbnRzOiB0aGlzLnRlbXBQYXJhbXMuaW5mYW50cyxcclxuICAgICAgbG9jYXRpb25Db2RlOiB0aGlzLl9sb2NhdGlvbkNvZGUsXHJcbiAgICAgIHRlcm1pbmFsOlxyXG4gICAgICAgIHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbCA9PT0gJ0FueScgPyBudWxsIDogdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsLFxyXG4gICAgICBhcnJpdmFsRGF0ZXRpbWU6IHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWVcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLnJlbW92ZU51bGxzPFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcz4ocXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgLy8gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gIHByaXZhdGUgX2lzVmFsaWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZG9DaGVja3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbShcclxuICAgICAgTG91bmdlc0VudGVycHJpc2VTZWFyY2guU1RPUkFHRV9TRVNTSU9OX1BBUkFNUyxcclxuICAgICAge1xyXG4gICAgICAgIHRlbXBQYXJhbXM6IHRoaXMudGVtcFBhcmFtcyxcclxuICAgICAgICB0cmF2ZWxsZXJzOiB0aGlzLnRyYXZlbGxlcnNcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcyA9IFtdO1xyXG4gICAgaWYgKCF0aGlzLl9sb2NhdGlvbkNvZGUgfHwgdGhpcy5fbG9jYXRpb25Db2RlID09PSAnJykge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdZb3UgbXVzdCBzZWxlY3QgYWlycG9ydCBmaXJzdC4nKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAoIXRoaXMucXVlcnkudGVybWluYWwpIHtcclxuICAgIC8vICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZXMucHVzaCgnVGVybWluYWwgY2FuIG5vdCBiZSBlbXB0eS4nKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZS51bml4KCkgPCBtb21lbnQoKS51bml4KCkpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZXMucHVzaCgnT3V0d2FyZCBqb3VybmV5IGNhbm5vdCBiZSBpbiB0aGUgcGFzdC4nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzVmFsaWQubmV4dCh0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5sZW5ndGggPT09IDApO1xyXG4gICAgdGhpcy5tZXNzYWdlcy5uZXh0KHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZURhdGVUaW1lKCkge1xyXG4gICAgaWYgKHRoaXMuX2RhdGUgJiYgdGhpcy5fdGltZSkge1xyXG4gICAgICBjb25zdCB0aW1lID0gdGhpcy5oZWxwZXJzLm5nRGF0ZVRvTW9tZW50KHRoaXMuX2RhdGUsIHRoaXMuX3RpbWUpO1xyXG4gICAgICB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lID0gdGltZS5pc1ZhbGlkKCkgPyB0aW1lIDogbnVsbDtcclxuICAgICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRTZWFyY2goKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLnJlc3VsdHMubmV4dChbXSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNWYWxpZC52YWx1ZSkge1xyXG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0U2VhcmNoUXVlcnkoKTtcclxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNhdmVSZWNlbnRTZWFyY2godGhpcy5nZXRSZWNlbnRTZWFyY2hRdWVyeShxdWVyeSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fc3RhcnRTZWFyY2goXHJcbiAgICAgICAgdGhpcy5sb3VuZ2VmZXRjaGVyLmZldGNoTGlzdChcclxuICAgICAgICAgIHRoaXMuaGVscGVycy5yZW1vdmVOdWxsczxTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXM+KHF1ZXJ5KVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVjZW50U2VhcmNoUXVlcnkoXHJcbiAgICBxdWVyeTogU2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzXHJcbiAgKTogU2F2ZVJlY2VudFNlYXJjaE11dGF0aW9uVmFyaWFibGVzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlVHlwZS5Mb3VuZ2UsXHJcbiAgICAgIHNlYXJjaEFyZ3M6IHF1ZXJ5LFxyXG4gICAgICB0cmF2ZWxEYXRlOiB0aGlzLmFycml2YWxEYXRldGltZS5mb3JtYXQoKSxcclxuICAgICAgdHJhdmVsbGVyczogdGhpcy5oZWxwZXJzLmdldFRyYXZlbGxlcnNJZCh0aGlzLnRyYXZlbGxlcnMpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0UmVjZW50U2VhcmNoKHJlY2VudFNlYXJjaDogUmVjZW50U2VhcmNoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFycml2YWxEYXRldGltZSA9IG1vbWVudChyZWNlbnRTZWFyY2guc2VhcmNoQXJncy5hcnJpdmFsRGF0ZXRpbWUpO1xyXG4gICAgdGhpcy50ZXJtaW5hbCA9IHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLnRlcm1pbmFsO1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXHJcbiAgICAgIC5nZXRBaXJwb3J0QnlDb2RlKHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLmxvY2F0aW9uQ29kZSlcclxuICAgICAgLnN1YnNjcmliZSgoYWlycG9ydDogQWlycG9ydFJlc3VsdHMpID0+IHtcclxuICAgICAgICBpZiAoYWlycG9ydCkge1xyXG4gICAgICAgICAgdGhpcy5sb2NhdGlvbkNvZGUgPSB7XHJcbiAgICAgICAgICAgIGNvdW50cnk6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnksXHJcbiAgICAgICAgICAgIGNvdW50cnlDb2RlOiBhaXJwb3J0LmlhdGFNYXRjaD8ubG9jYXRpb25EZXRhaWxzPy5jb3VudHJ5Q29kZSxcclxuICAgICAgICAgICAgZGVzdGluYXRpb246IGFpcnBvcnQuaWF0YU1hdGNoLm5hbWUsXHJcbiAgICAgICAgICAgIGdhdGV3YXk6IGFpcnBvcnQuaWF0YU1hdGNoLmlhdGEsXHJcbiAgICAgICAgICAgIHBvc3Rjb2RlOiBhaXJwb3J0LmlhdGFNYXRjaD8ubG9jYXRpb25EZXRhaWxzPy5wb3N0Y29kZSxcclxuICAgICAgICAgICAgdGVybWluYWxzOiB0aGlzLnNlYXJjaFNlcnZpY2UucHJvY2Vzc1Rlcm1pbmFscyhcclxuICAgICAgICAgICAgICBhaXJwb3J0LmlhdGFNYXRjaC50ZXJtaW5hbHNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMudGVybWluYWwgPSByZWNlbnRTZWFyY2guc2VhcmNoQXJncy50ZXJtaW5hbDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zdGFydFNlYXJjaGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zdGFydFNlYXJjaGVzKCk7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlQcmljZShhc2M/OiBib29sZWFuLCByZXN1bHRBcnJheTogTG91bmdlUXVvdGVbXSA9IFtdKSB7XHJcbiAgICBsZXQgc29ydFJlc3VsdHMgPSBbLi4udGhpcy5mdWxsUmVzdWx0c10gYXMgTG91bmdlUXVvdGVbXTtcclxuICAgIGlmICghc29ydFJlc3VsdHMubGVuZ3RoKSB7XHJcbiAgICAgIHNvcnRSZXN1bHRzID0gcmVzdWx0QXJyYXk7XHJcbiAgICB9XHJcbiAgICBzb3J0UmVzdWx0cyA9IHRoaXMuc29ydFJlc3VsdHNQcmljZShzb3J0UmVzdWx0cywgYXNjKTtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KHNvcnRSZXN1bHRzKTtcclxuICB9XHJcblxyXG4gIHNvcnRSZXN1bHRzUHJpY2UocmVzdWx0QXJyYXk6IExvdW5nZVF1b3RlW10sIGFzYz86IGJvb2xlYW4pOiBMb3VuZ2VRdW90ZVtdIHtcclxuICAgIGxldCByZXN1bHRzID0gWy4uLnJlc3VsdEFycmF5XTtcclxuICAgIGlmIChhc2MpIHtcclxuICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuc29ydChcclxuICAgICAgICAoYTogTG91bmdlUXVvdGVSZXN1bHQsIGI6IExvdW5nZVF1b3RlUmVzdWx0KSA9PiBiLnByaWNlIC0gYS5wcmljZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuc29ydChcclxuICAgICAgICAoYTogTG91bmdlUXVvdGVSZXN1bHQsIGI6IExvdW5nZVF1b3RlUmVzdWx0KSA9PiBhLnByaWNlIC0gYi5wcmljZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlUZXJtaW5hbChyZXN1bHRBcnJheTogTG91bmdlUXVvdGVbXSA9IFtdKSB7XHJcbiAgICBsZXQgcmVzdWx0cyA9IFsuLi50aGlzLmZ1bGxSZXN1bHRzXTtcclxuICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgcmVzdWx0cyA9IHJlc3VsdEFycmF5O1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGVybWluYWxTb3J0ZXIgPSAoYTogTG91bmdlUXVvdGVSZXN1bHQsIGI6IExvdW5nZVF1b3RlUmVzdWx0KSA9PiB7XHJcbiAgICAgIHJldHVybiAtMTsgLy8gVE9ETyBhLnJhd0RhdGEuRmxpZ2h0VGVybU91dCA+IGIucmF3RGF0YS5GbGlnaHRUZXJtT3V0ID8gMSA6IC0xO1xyXG4gICAgfTtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KHJlc3VsdHMuc29ydCh0ZXJtaW5hbFNvcnRlcikpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRnJvbVByZXZpb3VzU2VhcmNoZXMoXHJcbiAgICBwcmV2aW91c0l0ZW1zOiBSZWNvcmQ8U2VydmljZVR5cGUsIEJhc2tldEl0ZW0+XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnUFJFUE9QVUxBVElORyBMT1VOR0UgRk9STScpO1xyXG4gICAgY29uc3QgZmxpZ2h0SXRlbTogU2VhcmNoRmxpZ2h0c1YyUXVlcnlWYXJpYWJsZXMgPVxyXG4gICAgICBwcmV2aW91c0l0ZW1zW1NlcnZpY2VUeXBlLkZsaWdodF0/LnNlYXJjaFF1ZXJ5O1xyXG4gICAgY29uc3QgaXJsSXRlbTogU2VhcmNoSXJsUXVlcnlWYXJpYWJsZXMgPSBcclxuICAgICAgcHJldmlvdXNJdGVtc1tTZXJ2aWNlVHlwZS5JbnRlcm5hdGlvbmFsUmFpbF0/LnNlYXJjaFF1ZXJ5XHJcbiAgICBjb25zdCByYWlsSXRlbTogU2VhcmNoUmFpbFF1ZXJ5VmFyaWFibGVzID1cclxuICAgICAgcHJldmlvdXNJdGVtc1tTZXJ2aWNlVHlwZS5SYWlsXT8uc2VhcmNoUXVlcnk7XHJcbiAgICBjb25zdCBob3RlbEl0ZW06IFNlYXJjaEhvdGVsc1F1ZXJ5VmFyaWFibGVzID1cclxuICAgICAgcHJldmlvdXNJdGVtc1tTZXJ2aWNlVHlwZS5SYWlsXT8uc2VhcmNoUXVlcnk7XHJcbiAgICBjb25zdCBjYXJJdGVtOiBTZWFyY2hDYXJIaXJlUXVlcnlWYXJpYWJsZXMgPSBcclxuICAgICAgcHJldmlvdXNJdGVtc1tTZXJ2aWNlVHlwZS5DYXJdPy5zZWFyY2hRdWVyeVxyXG4gICAgaWYgKGZsaWdodEl0ZW0pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgZGF0ZSA9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoZXNbU2VydmljZVR5cGUuRmxpZ2h0XS5vdXRCb3VuZERhdGUudG9EYXRlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRlID0ge1xyXG4gICAgICAgICAgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKSxcclxuICAgICAgICAgIG1vbnRoOiBkYXRlLmdldFVUQ01vbnRoKCkgKyAxLFxyXG4gICAgICAgICAgeWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uQ29kZSA9IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5GbGlnaHRdXHJcbiAgICAgICAgICAuYXJyaXZlTG9jYXRpb24gYXMgT0JUQWlycG9ydERldGFpbHM7XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHRyeWluZyB0byBwcmVwb3B1bGF0ZSBsb3VuZ2UgZnJvbSBmbGlnaHQgaXRlbScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyYWlsSXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5SYWlsXS5vdXRCb3VuZERhdGVUaW1lLnRvRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuZGF0ZSA9IHtcclxuICAgICAgICAgIGRheTogZGF0ZS5nZXRVVENEYXRlKCksXHJcbiAgICAgICAgICBtb250aDogZGF0ZS5nZXRVVENNb250aCgpICsgMSxcclxuICAgICAgICAgIHllYXI6IGRhdGUuZ2V0VVRDRnVsbFllYXIoKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHRyeWluZyB0byBwcmVwb3B1bGF0ZSBsb3VuZ2UgZnJvbSByYWlsIGl0ZW0nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXJsSXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5JbnRlcm5hdGlvbmFsUmFpbF0ub3V0Qm91bmREYXRlVGltZS50b0RhdGUoKTtcclxuICAgICAgICB0aGlzLmRhdGUgPSB7XHJcbiAgICAgICAgICBkYXk6IGRhdGUuZ2V0VVRDRGF0ZSgpLFxyXG4gICAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgICAgICB5ZWFyOiBkYXRlLmdldFVUQ0Z1bGxZZWFyKClcclxuICAgICAgICB9O1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB0cnlpbmcgdG8gcHJlcG9wdWxhdGUgbG91bmdlIGZyb20gaW50ZXJuYXRpb25hbCByYWlsIGl0ZW0nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaG90ZWxJdGVtKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGRhdGUgPVxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaGVzW1NlcnZpY2VUeXBlLkhvdGVsXS5jaGVja2luX2RhdGUudG9EYXRlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRlID0ge1xyXG4gICAgICAgICAgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKSxcclxuICAgICAgICAgIG1vbnRoOiBkYXRlLmdldFVUQ01vbnRoKCkgKyAxLFxyXG4gICAgICAgICAgeWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdHJ5aW5nIHRvIHByZXBvcHVsYXRlIGxvdW5nZSBmcm9tIGhvdGVsIGl0ZW0nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2FySXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5DYXJdLnBpY2t1cF9kYXRlO1xyXG4gICAgICAgIHRoaXMuZGF0ZSA9IGRhdGU7XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHRyeWluZyB0byBwcmVwb3B1bGF0ZSBsb3VuZ2UgZnJvbSBjYXIgaXRlbScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWFyY2hGcm9tRXhwaXJlZEJhc2tldEl0ZW0oYmFza2V0SXRlbTogQmFza2V0SXRlbSk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoTG91bmdlc1F1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXMgPVxyXG4gICAgICBiYXNrZXRJdGVtLnNlYXJjaFF1ZXJ5O1xyXG4gICAgaWYgKHNlYXJjaExvdW5nZXNRdWVyeSkge1xyXG4gICAgICB0aGlzLmFycml2YWxEYXRldGltZSA9IG1vbWVudChzZWFyY2hMb3VuZ2VzUXVlcnkuYXJyaXZhbERhdGV0aW1lKTtcclxuXHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBzZWFyY2hMb3VuZ2VzUXVlcnkudGVybWluYWw7XHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxyXG4gICAgICAgIC5nZXRBaXJwb3J0QnlDb2RlKHNlYXJjaExvdW5nZXNRdWVyeS5sb2NhdGlvbkNvZGUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoYWlycG9ydDogQWlycG9ydFJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0ge1xyXG4gICAgICAgICAgICAgIGNvdW50cnk6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBhaXJwb3J0LmlhdGFNYXRjaC5uYW1lLFxyXG4gICAgICAgICAgICAgIGdhdGV3YXk6IGFpcnBvcnQuaWF0YU1hdGNoLmlhdGEsXHJcbiAgICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICAgIHRlcm1pbmFsczogdGhpcy5zZWFyY2hTZXJ2aWNlLnByb2Nlc3NUZXJtaW5hbHMoXHJcbiAgICAgICAgICAgICAgICBhaXJwb3J0LmlhdGFNYXRjaC50ZXJtaW5hbHNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIFRyYXZlbGxlcnNcclxuICAgIGlmIChiYXNrZXRJdGVtLnVzZXJzKSB7XHJcbiAgICAgIGJhc2tldEl0ZW0udXNlcnMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmFkZFRyYXZlbGxlcih1c2VyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRMb3VuZ2VUb0Jhc2tldChcclxuICAgIGxvdW5nZVF1b3RlOiBMb3VuZ2VRdW90ZSxcclxuICAgIGxvdW5nZVF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBQcm9taXNlPERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnM+IHtcclxuICAgIGlmIChsb3VuZ2VRdW90ZS51bmF2YWlsYWJsZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnMuY2FuY2VsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludEJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UgPVxyXG4gICAgICBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0RGVmYXVsdEJhc2tldCgpO1xyXG4gICAgY29uc3QgYmFza2V0ID0gaW50QmFza2V0Py5zdWJqZWN0LnZhbHVlO1xyXG4gICAgY29uc3QgdGVybXNBbmRDb25kaXRpb25zID0gdGhpcy5nZXRUZXJtc0FuZENvbmQobG91bmdlUXVvdGUpO1xyXG4gICAgaWYgKGJhc2tldCkge1xyXG4gICAgICBjb25zdCB3aGF0SGFwcGVuZWQgPSBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuYWRkVG9CYXNrZXQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYWR1bHRzOiBsb3VuZ2VRdWVyeS5hZHVsdHMsXHJcbiAgICAgICAgICBjaGlsZHJlbjogbG91bmdlUXVlcnkuY2hpbGRyZW4sXHJcbiAgICAgICAgICBpbmZhbnRzOiBsb3VuZ2VRdWVyeS5pbmZhbnRzLFxyXG4gICAgICAgICAgYmFza2V0OiBiYXNrZXQuaWQsXHJcbiAgICAgICAgICBzZXJ2aWNlOiBsb3VuZ2VRdW90ZS5zb3VyY2VJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgZGV0YWlsOiB7XHJcbiAgICAgICAgICAgIGFycml2YWxEYXRldGltZTogbG91bmdlUXVlcnkuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICAgICAgICBsb2NhdGlvbkNvZGU6IGxvdW5nZVF1b3RlLmNvZGUsXHJcbiAgICAgICAgICAgIG5hbWU6IGxvdW5nZVF1b3RlLm5hbWUsXHJcbiAgICAgICAgICAgIGFpcnBvcnRJYXRhOiBsb3VuZ2VRdWVyeT8ubG9jYXRpb25Db2RlLFxyXG4gICAgICAgICAgICBsb2dvOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubG9nbyxcclxuICAgICAgICAgICAgaW50cm9kdWN0aW9uOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuaW50cm9kdWN0aW9uLFxyXG4gICAgICAgICAgICBjb3ZpZENvcHk6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmNvdmlkQ29weSxcclxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNhbmNlbGxhdGlvbkluZm8sXHJcbiAgICAgICAgICAgIGFkbWVuZG1lbnRzSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmFtZW5kbWVudHNJbmZvLFxyXG4gICAgICAgICAgICBjaGVja0luSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNoZWNrSW5JbmZvLFxyXG4gICAgICAgICAgICBkcmVzc0NvZGU6IGxvdW5nZVF1b3RlLmxvdW5nZS5kcmVzc0NvZGUsXHJcbiAgICAgICAgICAgIGZvb2RBbmRCZXZlcmFnZTogbG91bmdlUXVvdGUubG91bmdlLmZvb2RBbmRCZXZlcmFnZSxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZEZvb2Q6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRm9vZCxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZERyaW5rczogbG91bmdlUXVvdGUubG91bmdlLndoYXRzSW5jbHVkZWREcmlua3MsXHJcbiAgICAgICAgICAgIHdoYXRzSW5jbHVkZWRFeHRyYXM6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRXh0cmFzLFxyXG4gICAgICAgICAgICBncm91cEluZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5ncm91cEluZm8sXHJcbiAgICAgICAgICAgIHRlcm1pbmFsOiBsb3VuZ2VRdW90ZS5sb3VuZ2UudGVybWluYWw/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHRlcm1zQW5kQ29uZDogdGVybXNBbmRDb25kaXRpb25zXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcHJpY2U6IGxvdW5nZVF1b3RlLnByaWNlLFxyXG4gICAgICAgICAgY3VycmVuY3k6IGxvdW5nZVF1b3RlLmN1cnJlbmN5LFxyXG4gICAgICAgICAgc2VhcmNoUXVlcnk6IGxvdW5nZVF1ZXJ5LFxyXG4gICAgICAgICAgb3V0Ym91bmREYXRlOiBsb3VuZ2VRdWVyeS5hcnJpdmFsRGF0ZXRpbWUuZm9ybWF0KCksXHJcbiAgICAgICAgICBsb3dlc3RQcmljZTogdGhpcy5jaGVhcGVzdFByaWNlPy5hbW91bnQgIT0gbG91bmdlUXVvdGUucHJpY2UgfHwgdGhpcy5jaGVhcGVzdFByaWNlPy5jdXJyZW5jeUNvZGUgIT0gbG91bmdlUXVvdGUuY3VycmVuY3kgPyBcclxuICAgICAgICAgICAgdGhpcy5jaGVhcGVzdFByaWNlPy5hbW91bnQgOiBudWxsLFxyXG4gICAgICAgICAgbG93ZXN0UHJpY2VDdXJyZW5jeTogdGhpcy5jaGVhcGVzdFByaWNlPy5hbW91bnQgIT0gbG91bmdlUXVvdGUucHJpY2UgfHwgdGhpcy5jaGVhcGVzdFByaWNlPy5jdXJyZW5jeUNvZGUgIT0gbG91bmdlUXVvdGUuY3VycmVuY3kgPyBcclxuICAgICAgICAgICA8Q3VycmVuY3lDb2RlPnRoaXMuY2hlYXBlc3RQcmljZT8uY3VycmVuY3lDb2RlIDogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW50QmFza2V0LFxyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZSxcclxuICAgICAgICB0aGlzLnRyYXZlbGxlcnMsXHJcbiAgICAgICAgbG91bmdlUXVvdGUucmVxdWlyZXNSZWFzb25cclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh3aGF0SGFwcGVuZWQgPT09IERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnMucmVzZWFyY2gpIHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2goKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gd2hhdEhhcHBlbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnMuY2FuY2VsOyAvLyBUT0RPIHNob3VsZCB0aGlzIHRocm93IGFuIGVycm9yP1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVybXNBbmRDb25kKGxvdW5nZVF1b3RlOiBMb3VuZ2VRdW90ZSkge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdOYW1lJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLm5hbWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdUZWxlcGhvbmUnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UudGVsZXBob25lXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnSW1wb3J0YW50IEluZm9ybWF0aW9uJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLm1pc2MuaW1wb3J0YW50SW5mb3JtYXRpb25cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdJbnRyb2R1Y3Rpb24nLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuaW50cm9kdWN0aW9uXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRHJlc3MgQ29kZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5kcmVzc0NvZGVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdCdXNpbmVzcyBGYWNpbGl0aWVzJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLm1pc2MuYnVzaW5lc3NmYWNpbGl0aWVzXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRW50ZXJ0YWlubWVudCBGYWNpbGl0aWVzJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLm1pc2MuZW50ZXJ0YWlubWVudEZhY2lsaXRpZXNcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdEaXNhYmxlZCBGYWNpbGl0aWVzJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLm1pc2MuZmFjaWxpdGllc2Rpc2FibGVkXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5mYWNpbGl0aWVzLnRvU3RyaW5nKClcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdUaW1lcycsXHJcbiAgICAgICAgdmFsdWU6IGBPcGVucyAke2xvdW5nZVF1b3RlLmxvdW5nZS5vcGVuVGltZX07IENsb3NlcyAke2xvdW5nZVF1b3RlLmxvdW5nZS5jbG9zZVRpbWV9YFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0RpcmVjdGlvbnMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZGlyZWN0aW9uc1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0dyb3VwcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5ncm91cEluZm9cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdDaGVjay1JbiBUaW1lJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmNoZWNrSW5JbmZvXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQW1lbmQgSW5mbycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5hbWVuZG1lbnRzSW5mb1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0NhbmNlbCBJbmZvJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmNhbmNlbGxhdGlvbkluZm9cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxvd2VzdFByaWNlKHJlc3VsdHM6IExvdW5nZVF1b3RlW10pOiBJQ2hlYXBlc3RQcmljZSB7XHJcbiAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGN1cnJlbmN5ID0gcmVzdWx0c1swXS5jdXJyZW5jeTtcclxuICAgIHJldHVybiByZXN1bHRzLnJlZHVjZShcclxuICAgICAgKGNoZWFwZXN0UHJpY2U6IElDaGVhcGVzdFByaWNlLCByZXN1bHQ6IExvdW5nZVF1b3RlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJpY2UgPSByZXN1bHQucHJpY2U7XHJcbiAgICAgICAgaWYgKGNoZWFwZXN0UHJpY2UuYW1vdW50ID4gcHJpY2UpIGNoZWFwZXN0UHJpY2UuYW1vdW50ID0gcHJpY2U7XHJcbiAgICAgICAgcmV0dXJuIGNoZWFwZXN0UHJpY2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYW1vdW50OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgY3VycmVuY3lDb2RlOiBjdXJyZW5jeSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlYXJjaCgpOiBPYnNlcnZhYmxlPFNhdmVGYXZvdXJpdGVTZWFyY2hSZXN1bHQ+IHtcclxuICAgIGlmICh0aGlzLmlzVmFsaWQudmFsdWUpIHtcclxuICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5nZXRTZWFyY2hRdWVyeSgpO1xyXG4gICAgICBjb25zdCBzZWFyY2hJbmZvID0ge1xyXG4gICAgICAgIG5hbWU6IGAke21vbWVudCgpfWAsXHJcbiAgICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkxvdW5nZSxcclxuICAgICAgICBzZWFyY2hBcmdzOiBzZWFyY2hcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5zYXZlRmF2b3VyaXRlU2VhcmNoKHNlYXJjaEluZm8pO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyBhcHBseUZhdm91cml0ZShmYXY6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEFpcnBvcnRzTGlzdChmYXYubG9jYXRpb25Db2RlKS5zdWJzY3JpYmUoKGEpID0+IHtcclxuICAgICAgdGhpcy5sb2NhdGlvbkNvZGUgPSAoYSBhcyBhbnlbXSkuZmluZChcclxuICAgICAgICAoYSkgPT4gYS5nYXRld2F5ID09IGZhdi5sb2NhdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50ZXJtaW5hbCA9IGZhdi50ZXJtaW5hbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hZHVsdHMgPSBmYXYuYWR1bHRzO1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IGZhdi5jaGlsZHJlbjtcclxuICAgIHRoaXMuaW5mYW50cyA9IGZhdi5pbmZhbnRzO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -46,9 +46,13 @@ class FreeTextManagementInfo extends ManagementInfoAndIsValid {
|
|
|
46
46
|
this.tempValue = this.selectedValues
|
|
47
47
|
? ((_a = this.selectedValues[0]) === null || _a === void 0 ? void 0 : _a.freeValue) || ''
|
|
48
48
|
: '';
|
|
49
|
+
if (this.defaultValue && !this.selectedValues.length) {
|
|
50
|
+
this.value = this.defaultValue.value;
|
|
51
|
+
this.selectedValues[0].freeValue = this.defaultValue.value;
|
|
52
|
+
}
|
|
49
53
|
}
|
|
50
54
|
getValue() {
|
|
51
|
-
return this.
|
|
55
|
+
return this.selectedValues[0] ? this.selectedValues[0].freeValue : '';
|
|
52
56
|
}
|
|
53
57
|
setValue(val) {
|
|
54
58
|
if (this.tempValue === val) {
|
|
@@ -67,27 +71,32 @@ class FreeTextManagementInfo extends ManagementInfoAndIsValid {
|
|
|
67
71
|
this.basketService.setMiFreeValue(basketid, this, this.selectedValues[0] ? this.selectedValues[0].freeValue : '', userId, guest);
|
|
68
72
|
}
|
|
69
73
|
hasErrors(value) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
const _super = Object.create(null, {
|
|
75
|
+
hasErrors: { get: () => super.hasErrors }
|
|
76
|
+
});
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
return new Promise((resolve, reject) => {
|
|
79
|
+
if (this.mandatory && (!value || value.length === 0)) {
|
|
80
|
+
resolve({ hasErrors: true });
|
|
81
|
+
}
|
|
82
|
+
if (this.valueMask && !!value) {
|
|
83
|
+
return this.basketService
|
|
84
|
+
.validateFreeValeMi(this, value)
|
|
85
|
+
.then((result) => {
|
|
86
|
+
resolve(result ? null : { hasErrors: true });
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (this.values.length > 0) {
|
|
90
|
+
resolve(!!this.values.find((miv) => {
|
|
91
|
+
return miv.value === value;
|
|
92
|
+
})
|
|
93
|
+
? null
|
|
94
|
+
: { hasErrors: true });
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
resolve(_super.hasErrors.call(this, value));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
91
100
|
});
|
|
92
101
|
}
|
|
93
102
|
}
|
|
@@ -112,21 +121,28 @@ class AutoSugestManagementInfo extends ManagementInfoAndIsValid {
|
|
|
112
121
|
else {
|
|
113
122
|
console.error('No values for AutoSugest field');
|
|
114
123
|
}
|
|
124
|
+
if (this.defaultValue && !this.selectedValues.length) {
|
|
125
|
+
this.value = this.defaultValue.value;
|
|
126
|
+
this.selectedValues[0].value = {
|
|
127
|
+
id: this.defaultValue.valueId,
|
|
128
|
+
label: this.defaultValue.label,
|
|
129
|
+
value: this.defaultValue.value,
|
|
130
|
+
default: true,
|
|
131
|
+
fixed: false,
|
|
132
|
+
agentOnly: false
|
|
133
|
+
};
|
|
134
|
+
}
|
|
115
135
|
}
|
|
116
136
|
getValue() {
|
|
117
137
|
return this.selectedValues[0] ? this.selectedValues[0].value.id : '__NONE';
|
|
118
138
|
}
|
|
119
139
|
hasErrors(value) {
|
|
120
140
|
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
|
|
122
|
-
return
|
|
123
|
-
return value1.id === value.id;
|
|
124
|
-
})
|
|
125
|
-
? { hasErrors: true }
|
|
126
|
-
: null;
|
|
141
|
+
if (!value || value.length === 0) {
|
|
142
|
+
return ({ hasErrors: true });
|
|
127
143
|
}
|
|
128
|
-
|
|
129
|
-
return null;
|
|
144
|
+
if (this.value.length > 0) {
|
|
145
|
+
return (this.avaliableItems.find((value1) => { return value1.id === value.id; }) ? null : { hasErrors: true });
|
|
130
146
|
}
|
|
131
147
|
});
|
|
132
148
|
}
|
|
@@ -186,8 +202,15 @@ class DropdownManagementInfo extends ManagementInfoAndIsValid {
|
|
|
186
202
|
console.error('No values for Dropdown MI field ');
|
|
187
203
|
}
|
|
188
204
|
if (this.defaultValue && !this.selectedValues.length) {
|
|
189
|
-
this.value = this.defaultValue.
|
|
190
|
-
this.selectedValues[0].value =
|
|
205
|
+
this.value = this.defaultValue.valueId;
|
|
206
|
+
this.selectedValues[0].value = {
|
|
207
|
+
id: this.defaultValue.valueId,
|
|
208
|
+
label: this.defaultValue.label,
|
|
209
|
+
value: this.defaultValue.value,
|
|
210
|
+
default: true,
|
|
211
|
+
fixed: false,
|
|
212
|
+
agentOnly: false
|
|
213
|
+
};
|
|
191
214
|
}
|
|
192
215
|
}
|
|
193
216
|
getValue() {
|
|
@@ -251,4 +274,4 @@ export const makeManagamentInfo = (managementInfo, basketService) => {
|
|
|
251
274
|
}
|
|
252
275
|
return null;
|
|
253
276
|
};
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlbWVudC1pbmZvLWFuZC12YWxpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9tYW5hZ2VtZW50LWluZm8tYW5kLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQVNMLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE1BQU0sT0FBZ0Isd0JBQ3BCLFNBQVEsZ0JBQWdCO0lBaUR4QixZQUFzQixjQUE4QjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQXhCVixjQUFjO1FBQ2QsY0FBUyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWlEMUUsV0FBTSxHQUFHLENBQUMsS0FBeUIsRUFBdUMsRUFBRTtZQUMxRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7UUEzQkEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDakYsQ0FBQztJQXRCRCxJQUFJLGNBQWM7UUFHaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFxQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFB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a0IsR0FBRyxDQUNoQyxjQUE4QixFQUM5QixhQUErQyxFQUNyQixFQUFFO0lBQzVCLFFBQVEsY0FBYyxDQUFDLGNBQWMsRUFBRTtRQUNyQyxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQzFCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsS0FBSyxjQUFjLENBQUMsV0FBVztZQUM3QixPQUFPLElBQUksd0JBQXdCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssY0FBYyxDQUFDLE1BQU07WUFDeEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssY0FBYyxDQUFDLFFBQVE7WUFDMUIsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRTtZQUNFLE1BQU0sR0FBRyxHQUFVLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFwXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JDaGVja2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy92YWxpZGF0b3IuY2hlY2tlcic7XHJcbmltcG9ydCB7IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JZW50ZXJwcmlzZS1iYXNrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQm9va2VkQnlGaWVsZCxcclxuICBGaWVsZFdyYXBwZXIsXHJcbiAgTWFuYWdlbWVudEluZm8sXHJcbiAgTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBNYXliZSxcclxuICBTY2FsYXJzLFxyXG4gIFNlbGVjdGVkTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBTZXJ2aWNlLFxyXG4gIFVpUHJlc2VudGF0aW9uXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7IEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5LCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZFxyXG4gIGV4dGVuZHMgVmFsaWRhdG9yQ2hlY2tlclxyXG4gIGltcGxlbWVudHMgTWFuYWdlbWVudEluZm9cclxue1xyXG4gIC8vIE1hbmFnZW1lbnRJbmZvIGludGVyZmFjZVxyXG4gIGFnZW50T25seTogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgY3JlYXRlZEF0OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snRGF0ZVRpbWUnXT47XHJcbiAgZGJJZDogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0ludCddPjtcclxuICBkZWZhdWx0VmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGRlc2NyaXB0aW9uPzogTWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj47XHJcbiAgZml4ZWQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIGZpeGVkVmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGdyb3VwPzogTWF5YmU8QXJyYXk8TWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj4+PjtcclxuICBoYW5kb2ZmOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIGlkOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snSUQnXT47XHJcbiAgbWFuZGF0b3J5OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snQm9vbGVhbiddPjtcclxuICBuYW1lOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIHBlckJvb2tpbmc6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIHBlclBhc3NlbmdlcjogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgX3NlbGVjdGVkVmFsdWVzOiBBcnJheTxNYXliZTxGaWVsZFdyYXBwZXI8U2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHNlcnZpY2U6IEZpZWxkV3JhcHBlcjxTZXJ2aWNlPjtcclxuICB1aVByZXNlbnRhdGlvbjogRmllbGRXcmFwcGVyPFVpUHJlc2VudGF0aW9uPjtcclxuICB1cGRhdGVkQXQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydEYXRlVGltZSddPjtcclxuICB2YWx1ZU1hc2s/OiBNYXliZTxGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+PjtcclxuICB2YWx1ZXM6IEFycmF5PE1heWJlPEZpZWxkV3JhcHBlcjxNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHRlbXBWYWx1ZT86IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydTdHJpbmcnXT47XHJcblxyXG4gIC8vIGV4dHJhRmllbGRzXHJcbiAgaXNMb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBhdmFsaWFibGVJdGVtczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk7XHJcblxyXG4gIGdldCBzZWxlY3RlZFZhbHVlcygpOiBBcnJheTxcclxuICAgIE1heWJlPEZpZWxkV3JhcHBlcjxTZWxlY3RlZE1hbmFnZW1lbnRJbmZvVmFsdWU+PlxyXG4gID4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkVmFsdWVzKHZhbHVlczogU2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlW10pIHtcclxuICAgIGlmICghT2JqZWN0LmlzKHRoaXMuX3NlbGVjdGVkVmFsdWVzLCB2YWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VmFsdWUodmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG1hbmFnZW1lbnRJbmZvKTsgLy8gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCBfaXNWYWxpZCgpXHJcbiAgfVxyXG5cclxuICByZWFzb246IGJvb2xlYW47XHJcbiAgdGFrZVZhbHVlRnJvbVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICB0YWtlVmFsdWVGcm9tQm9va2VyRGVmYXVsdD86IGJvb2xlYW47XHJcbiAgZW5mb3JjZVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICBib29rZWRCeUZpZWxkPzogQm9va2VkQnlGaWVsZDtcclxuXHJcbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tYW5kYXRvcnkgfHwgdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggIT09IDA7XHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcnModmFsdWU6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcmVzb2x2ZShcclxuICAgICAgICB0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICAgOiBudWxsXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IGdldFZhbHVlKCk6IHN0cmluZztcclxuICBhYnN0cmFjdCBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gb2YoW10pO1xyXG4gIH07XHJcblxyXG4gIGFic3RyYWN0IHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pOiB2b2lkO1xyXG59XHJcblxyXG5jbGFzcyBGcmVlVGV4dE1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICB0ZW1wVmFsdWU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIHRoaXMudGVtcFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlc1xyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0/LmZyZWVWYWx1ZSB8fCAnJ1xyXG4gICAgICA6ICcnO1xyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGVtcFZhbHVlID09PSB2YWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZW1wVmFsdWUgPSB2YWw7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZyZWVWYWx1ZTogdmFsLFxyXG4gICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICB1c2VyTGV2ZWxWYWx1ZTogdGhpcy5wZXJQYXNzZW5nZXJcclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaUZyZWVWYWx1ZShcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLmZyZWVWYWx1ZSA6ICcnLFxyXG4gICAgICB1c2VySWQsXHJcbiAgICAgIGd1ZXN0XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFzRXJyb3JzKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnM+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgICByZXNvbHZlKHsgaGFzRXJyb3JzOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlTWFzayAmJiAhIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFza2V0U2VydmljZVxyXG4gICAgICAgICAgLnZhbGlkYXRlRnJlZVZhbGVNaSh0aGlzLCB2YWx1ZSlcclxuICAgICAgICAgIC50aGVuKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgPyBudWxsIDogeyBoYXNFcnJvcnM6IHRydWUgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzb2x2ZShcclxuICAgICAgICAgICEhdGhpcy52YWx1ZXMuZmluZCgobWl2OiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaXYudmFsdWUgPT09IHZhbHVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogeyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShzdXBlci5oYXNFcnJvcnModmFsdWUpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBBdXRvU3VnZXN0TWFuYWdlbWVudEluZm8gZXh0ZW5kcyBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgbWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvLFxyXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWFuYWdlbWVudEluZm8pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYXZhbGlhYmxlSXRlbXMgPSB0aGlzLnZhbHVlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHZhbHVlcyBmb3IgQXV0b1N1Z2VzdCBmaWVsZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIDogJ19fTk9ORSc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYXNFcnJvcnModmFsdWU6IGFueSk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuICF0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IHZhbHVlLmlkO1xyXG4gICAgICB9KVxyXG4gICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWU6IE1hbmFnZW1lbnRJbmZvVmFsdWUgPSB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoXHJcbiAgICAgICAgKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlMS5pZCA9PT0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoISF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHZhbHVlLmlkLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZS5sYWJlbCxcclxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUuZGVmYXVsdCxcclxuICAgICAgICAgICAgICBmaXhlZDogdmFsdWUuZml4ZWQsXHJcbiAgICAgICAgICAgICAgYWdlbnRPbmx5OiB2YWx1ZS5hZ2VudE9ubHlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYmFza2V0TGV2ZWxWYWx1ZTogdGhpcy5wZXJCb29raW5nLFxyXG4gICAgICAgICAgICB1c2VyTGV2ZWxWYWx1ZTogdGhpcy5wZXJQYXNzZW5nZXJcclxuICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gdGVybXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2IgPVxyXG4gICAgICAgICAgdGVybS5sZW5ndGggPiAyXHJcbiAgICAgICAgICAgID8gdGhpcy5iYXNrZXRTZXJ2aWNlLmdldE1pQXV0b1N1Z2VzdGlvbnMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IG9mKHRoaXMuYXZhbGlhYmxlSXRlbXMpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2I7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHN1Z2VzdGlvbnM6IEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdmFsaWFibGVJdGVtcyA9IHN1Z2VzdGlvbnM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcmlkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdID8gdGhpcy5zZWxlY3RlZFZhbHVlc1swXT8udmFsdWU/LmlkIDogJycsXHJcbiAgICAgIHVzZXJpZCxcclxuICAgICAgZ3Vlc3RcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBIaWRkZW5NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IobWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7fVxyXG5cclxuICBzYXZlKGJhc2tldGlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZykge31cclxufVxyXG5cclxuY2xhc3MgRHJvcGRvd25NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8sXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgICBpZiAodGhpcy52YWx1ZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hdmFsaWFibGVJdGVtcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gdmFsdWVzIGZvciBEcm9wZG93biBNSSBmaWVsZCAgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZS5pZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIDogJ19fTk9ORSc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYXNFcnJvcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuICF0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IGlkO1xyXG4gICAgICB9KVxyXG4gICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWU6IE1hbmFnZW1lbnRJbmZvVmFsdWUgPSB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoXHJcbiAgICAgICh2YWx1ZTE6IE1hbmFnZW1lbnRJbmZvVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gdmFsdWUxLmlkID09PSBpZDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgaWQ6IHZhbHVlLmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogdmFsdWUubGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUuZGVmYXVsdCxcclxuICAgICAgICAgICAgZml4ZWQ6IHZhbHVlLmZpeGVkLFxyXG4gICAgICAgICAgICBhZ2VudE9ubHk6IHZhbHVlLmFnZW50T25seVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICAgIHVzZXJMZXZlbFZhbHVlOiB0aGlzLnBlclBhc3NlbmdlclxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcmlkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIHx8ICcnLFxyXG4gICAgICB1c2VyaWQsIFxyXG4gICAgICBndWVzdFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYWtlTWFuYWdhbWVudEluZm8gPSAoXHJcbiAgbWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvLFxyXG4gIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbik6IE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCA9PiB7XHJcbiAgc3dpdGNoIChtYW5hZ2VtZW50SW5mby51aVByZXNlbnRhdGlvbikge1xyXG4gICAgY2FzZSBVaVByZXNlbnRhdGlvbi5GcmVlVGV4dDpcclxuICAgICAgcmV0dXJuIG5ldyBGcmVlVGV4dE1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvLCBiYXNrZXRTZXJ2aWNlKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uQXV0b1N1Z2dlc3Q6XHJcbiAgICAgIHJldHVybiBuZXcgQXV0b1N1Z2VzdE1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvLCBiYXNrZXRTZXJ2aWNlKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uSGlkZGVuOlxyXG4gICAgICByZXR1cm4gbmV3IEhpZGRlbk1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uRHJvcGRvd246XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcGRvd25NYW5hZ2VtZW50SW5mbyhtYW5hZ2VtZW50SW5mbywgYmFza2V0U2VydmljZSk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBjb25zdCB0bXA6IG5ldmVyID0gbWFuYWdlbWVudEluZm8udWlQcmVzZW50YXRpb247XHJcbiAgICAgIGNvbnNvbGUubG9nKHRtcCk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlbWVudC1pbmZvLWFuZC12YWxpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9tYW5hZ2VtZW50LWluZm8tYW5kLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQVVMLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE1BQU0sT0FBZ0Isd0JBQ3BCLFNBQVEsZ0JBQWdCO0lBaUR4QixZQUFzQixjQUE4QjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQXhCVixjQUFjO1FBQ2QsY0FBUyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWlEMUUsV0FBTSxHQUFHLENBQUMsS0FBeUIsRUFBdUMsRUFBRTtZQUMxRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7UUEzQkEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDakYsQ0FBQztJQXRCRCxJQUFJLGNBQWM7UUFHaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFxQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFB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Q3JDLE1BQU0sRUFDTixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLGNBQThCLEVBQzlCLGFBQStDLEVBQ3JCLEVBQUU7SUFDNUIsUUFBUSxjQUFjLENBQUMsY0FBYyxFQUFFO1FBQ3JDLEtBQUssY0FBYyxDQUFDLFFBQVE7WUFDMUIsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRSxLQUFLLGNBQWMsQ0FBQyxXQUFXO1lBQzdCLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDckUsS0FBSyxjQUFjLENBQUMsTUFBTTtZQUN4QixPQUFPLElBQUksb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsS0FBSyxjQUFjLENBQUMsUUFBUTtZQUMxQixPQUFPLElBQUksc0JBQXNCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FO1lBQ0UsTUFBTSxHQUFHLEdBQVUsY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YXBcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRvckNoZWNrZXIgfSBmcm9tICcuLi9jbGFzc2VzL3ZhbGlkYXRvci5jaGVja2VyJztcclxuaW1wb3J0IHsgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0llbnRlcnByaXNlLWJhc2tldC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBCb29rZWRCeUZpZWxkLFxyXG4gIEZpZWxkV3JhcHBlcixcclxuICBEZWZhdWx0TWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBNYW5hZ2VtZW50SW5mbyxcclxuICBNYW5hZ2VtZW50SW5mb1ZhbHVlLFxyXG4gIE1heWJlLFxyXG4gIFNjYWxhcnMsXHJcbiAgU2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlLFxyXG4gIFNlcnZpY2UsXHJcbiAgVWlQcmVzZW50YXRpb25cclxufSBmcm9tICcuLi90eXBlcy9ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHsgR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXksIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkXHJcbiAgZXh0ZW5kcyBWYWxpZGF0b3JDaGVja2VyXHJcbiAgaW1wbGVtZW50cyBNYW5hZ2VtZW50SW5mb1xyXG57XHJcbiAgLy8gTWFuYWdlbWVudEluZm8gaW50ZXJmYWNlXHJcbiAgYWdlbnRPbmx5OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snQm9vbGVhbiddPjtcclxuICBjcmVhdGVkQXQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydEYXRlVGltZSddPjtcclxuICBkYklkOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snSW50J10+O1xyXG4gIGRlZmF1bHRWYWx1ZT86IE1heWJlPEZpZWxkV3JhcHBlcjxEZWZhdWx0TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGRlc2NyaXB0aW9uPzogTWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj47XHJcbiAgZml4ZWQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIGZpeGVkVmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGdyb3VwPzogTWF5YmU8QXJyYXk8TWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj4+PjtcclxuICBoYW5kb2ZmOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIGlkOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snSUQnXT47XHJcbiAgbWFuZGF0b3J5OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snQm9vbGVhbiddPjtcclxuICBuYW1lOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIHBlckJvb2tpbmc6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIHBlclBhc3NlbmdlcjogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgX3NlbGVjdGVkVmFsdWVzOiBBcnJheTxNYXliZTxGaWVsZFdyYXBwZXI8U2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHNlcnZpY2U6IEZpZWxkV3JhcHBlcjxTZXJ2aWNlPjtcclxuICB1aVByZXNlbnRhdGlvbjogRmllbGRXcmFwcGVyPFVpUHJlc2VudGF0aW9uPjtcclxuICB1cGRhdGVkQXQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydEYXRlVGltZSddPjtcclxuICB2YWx1ZU1hc2s/OiBNYXliZTxGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+PjtcclxuICB2YWx1ZXM6IEFycmF5PE1heWJlPEZpZWxkV3JhcHBlcjxNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHRlbXBWYWx1ZT86IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydTdHJpbmcnXT47XHJcblxyXG4gIC8vIGV4dHJhRmllbGRzXHJcbiAgaXNMb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBhdmFsaWFibGVJdGVtczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk7XHJcblxyXG4gIGdldCBzZWxlY3RlZFZhbHVlcygpOiBBcnJheTxcclxuICAgIE1heWJlPEZpZWxkV3JhcHBlcjxTZWxlY3RlZE1hbmFnZW1lbnRJbmZvVmFsdWU+PlxyXG4gID4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkVmFsdWVzKHZhbHVlczogU2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlW10pIHtcclxuICAgIGlmICghT2JqZWN0LmlzKHRoaXMuX3NlbGVjdGVkVmFsdWVzLCB2YWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VmFsdWUodmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG1hbmFnZW1lbnRJbmZvKTsgLy8gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCBfaXNWYWxpZCgpXHJcbiAgfVxyXG5cclxuICByZWFzb246IGJvb2xlYW47XHJcbiAgdGFrZVZhbHVlRnJvbVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICB0YWtlVmFsdWVGcm9tQm9va2VyRGVmYXVsdD86IGJvb2xlYW47XHJcbiAgZW5mb3JjZVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICBib29rZWRCeUZpZWxkPzogQm9va2VkQnlGaWVsZDtcclxuXHJcbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tYW5kYXRvcnkgfHwgdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggIT09IDA7XHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcnModmFsdWU6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcmVzb2x2ZShcclxuICAgICAgICB0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICAgOiBudWxsXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IGdldFZhbHVlKCk6IHN0cmluZztcclxuICBhYnN0cmFjdCBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gb2YoW10pO1xyXG4gIH07XHJcblxyXG4gIGFic3RyYWN0IHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pOiB2b2lkO1xyXG59XHJcblxyXG5jbGFzcyBGcmVlVGV4dE1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICB0ZW1wVmFsdWU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIHRoaXMudGVtcFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlc1xyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0/LmZyZWVWYWx1ZSB8fCAnJ1xyXG4gICAgICA6ICcnO1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICYmICF0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUudmFsdWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0uZnJlZVZhbHVlID0gIHRoaXMuZGVmYXVsdFZhbHVlLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLmZyZWVWYWx1ZSA6ICcnO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGVtcFZhbHVlID09PSB2YWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZW1wVmFsdWUgPSB2YWw7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZyZWVWYWx1ZTogdmFsLFxyXG4gICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICB1c2VyTGV2ZWxWYWx1ZTogdGhpcy5wZXJQYXNzZW5nZXJcclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaUZyZWVWYWx1ZShcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLmZyZWVWYWx1ZSA6ICcnLFxyXG4gICAgICB1c2VySWQsXHJcbiAgICAgIGd1ZXN0XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFzRXJyb3JzKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnM+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgICByZXNvbHZlKHsgaGFzRXJyb3JzOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlTWFzayAmJiAhIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFza2V0U2VydmljZVxyXG4gICAgICAgICAgLnZhbGlkYXRlRnJlZVZhbGVNaSh0aGlzLCB2YWx1ZSlcclxuICAgICAgICAgIC50aGVuKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgPyBudWxsIDogeyBoYXNFcnJvcnM6IHRydWUgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzb2x2ZShcclxuICAgICAgICAgICEhdGhpcy52YWx1ZXMuZmluZCgobWl2OiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaXYudmFsdWUgPT09IHZhbHVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogeyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShzdXBlci5oYXNFcnJvcnModmFsdWUpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBBdXRvU3VnZXN0TWFuYWdlbWVudEluZm8gZXh0ZW5kcyBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgbWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvLFxyXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWFuYWdlbWVudEluZm8pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYXZhbGlhYmxlSXRlbXMgPSB0aGlzLnZhbHVlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHZhbHVlcyBmb3IgQXV0b1N1Z2VzdCBmaWVsZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICYmICF0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUudmFsdWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUgPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdFZhbHVlLnZhbHVlSWQsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuZGVmYXVsdFZhbHVlLmxhYmVsLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRWYWx1ZS52YWx1ZSxcclxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxyXG4gICAgICAgIGZpeGVkOiBmYWxzZSxcclxuICAgICAgICBhZ2VudE9ubHk6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1swXSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUuaWQgOiAnX19OT05FJztcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhc0Vycm9ycyh2YWx1ZTogYW55KTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzPiB7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gKHsgaGFzRXJyb3JzOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4geyByZXR1cm4gdmFsdWUxLmlkID09PSB2YWx1ZS5pZDt9KSA/IG51bGwgOiB7IGhhc0Vycm9yczogdHJ1ZSB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB2YWx1ZTogTWFuYWdlbWVudEluZm9WYWx1ZSA9IHRoaXMuYXZhbGlhYmxlSXRlbXMuZmluZChcclxuICAgICAgICAodmFsdWUxOiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUxLmlkID09PSBpZDtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICBpZDogdmFsdWUuaWQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlLmxhYmVsLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZS5kZWZhdWx0LFxyXG4gICAgICAgICAgICAgIGZpeGVkOiB2YWx1ZS5maXhlZCxcclxuICAgICAgICAgICAgICBhZ2VudE9ubHk6IHZhbHVlLmFnZW50T25seVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBiYXNrZXRMZXZlbFZhbHVlOiB0aGlzLnBlckJvb2tpbmcsXHJcbiAgICAgICAgICAgIHVzZXJMZXZlbFZhbHVlOiB0aGlzLnBlclBhc3NlbmdlclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2ggPSAodGVybXM6IE9ic2VydmFibGU8c3RyaW5nPik6IE9ic2VydmFibGU8R2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk+ID0+IHtcclxuICAgIHJldHVybiB0ZXJtcy5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zdCBvYiA9XHJcbiAgICAgICAgICB0ZXJtLmxlbmd0aCA+IDJcclxuICAgICAgICAgICAgPyB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0TWlBdXRvU3VnZXN0aW9ucyhcclxuICAgICAgICAgICAgICAgIHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogb2YodGhpcy5hdmFsaWFibGVJdGVtcyk7XHJcblxyXG4gICAgICAgIHJldHVybiBvYjtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgoc3VnZXN0aW9uczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXkpID0+IHtcclxuICAgICAgICB0aGlzLmF2YWxpYWJsZUl0ZW1zID0gc3VnZXN0aW9ucztcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgc2F2ZShiYXNrZXRpZDogc3RyaW5nLCB1c2VyaWQ/OiBzdHJpbmcsIGd1ZXN0PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnNldE1pU2VsZWN0ZWRWYWx1ZShcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdPy52YWx1ZT8uaWQgOiAnJyxcclxuICAgICAgdXNlcmlkLFxyXG4gICAgICBndWVzdFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEhpZGRlbk1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICBjb25zdHJ1Y3RvcihtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8pIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICB9XHJcbiAgZ2V0VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgc2V0VmFsdWUodmFsOiBzdHJpbmcpOiB2b2lkIHt9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKSB7fVxyXG59XHJcblxyXG5jbGFzcyBEcm9wZG93bk1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIGlmICh0aGlzLnZhbHVlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmF2YWxpYWJsZUl0ZW1zID0gdGhpcy52YWx1ZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdObyB2YWx1ZXMgZm9yIERyb3Bkb3duIE1JIGZpZWxkICAnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlLnZhbHVlSWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUgPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdFZhbHVlLnZhbHVlSWQsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuZGVmYXVsdFZhbHVlLmxhYmVsLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRWYWx1ZS52YWx1ZSxcclxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxyXG4gICAgICAgIGZpeGVkOiBmYWxzZSxcclxuICAgICAgICBhZ2VudE9ubHk6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1swXSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUuaWQgOiAnX19OT05FJztcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhc0Vycm9ycyhpZDogc3RyaW5nKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gIXRoaXMuYXZhbGlhYmxlSXRlbXMuZmluZCgodmFsdWUxOiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlMS5pZCA9PT0gaWQ7XHJcbiAgICAgIH0pXHJcbiAgICAgICAgPyB7IGhhc0Vycm9yczogdHJ1ZSB9XHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZTogTWFuYWdlbWVudEluZm9WYWx1ZSA9IHRoaXMuYXZhbGlhYmxlSXRlbXMuZmluZChcclxuICAgICAgKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IGlkO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCEhdmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICBpZDogdmFsdWUuaWQsXHJcbiAgICAgICAgICAgIGxhYmVsOiB2YWx1ZS5sYWJlbCxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxyXG4gICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZS5kZWZhdWx0LFxyXG4gICAgICAgICAgICBmaXhlZDogdmFsdWUuZml4ZWQsXHJcbiAgICAgICAgICAgIGFnZW50T25seTogdmFsdWUuYWdlbnRPbmx5XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYmFza2V0TGV2ZWxWYWx1ZTogdGhpcy5wZXJCb29raW5nLFxyXG4gICAgICAgICAgdXNlckxldmVsVmFsdWU6IHRoaXMucGVyUGFzc2VuZ2VyXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZShiYXNrZXRpZDogc3RyaW5nLCB1c2VyaWQ/OiBzdHJpbmcsIGd1ZXN0PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnNldE1pU2VsZWN0ZWRWYWx1ZShcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUuaWQgfHwgJycsXHJcbiAgICAgIHVzZXJpZCxcclxuICAgICAgZ3Vlc3RcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgbWFrZU1hbmFnYW1lbnRJbmZvID0gKFxyXG4gIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICBiYXNrZXRTZXJ2aWNlOiBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZVxyXG4pOiBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQgPT4ge1xyXG4gIHN3aXRjaCAobWFuYWdlbWVudEluZm8udWlQcmVzZW50YXRpb24pIHtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uRnJlZVRleHQ6XHJcbiAgICAgIHJldHVybiBuZXcgRnJlZVRleHRNYW5hZ2VtZW50SW5mbyhtYW5hZ2VtZW50SW5mbywgYmFza2V0U2VydmljZSk7XHJcbiAgICBjYXNlIFVpUHJlc2VudGF0aW9uLkF1dG9TdWdnZXN0OlxyXG4gICAgICByZXR1cm4gbmV3IEF1dG9TdWdlc3RNYW5hZ2VtZW50SW5mbyhtYW5hZ2VtZW50SW5mbywgYmFza2V0U2VydmljZSk7XHJcbiAgICBjYXNlIFVpUHJlc2VudGF0aW9uLkhpZGRlbjpcclxuICAgICAgcmV0dXJuIG5ldyBIaWRkZW5NYW5hZ2VtZW50SW5mbyhtYW5hZ2VtZW50SW5mbyk7XHJcbiAgICBjYXNlIFVpUHJlc2VudGF0aW9uLkRyb3Bkb3duOlxyXG4gICAgICByZXR1cm4gbmV3IERyb3Bkb3duTWFuYWdlbWVudEluZm8obWFuYWdlbWVudEluZm8sIGJhc2tldFNlcnZpY2UpO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgY29uc3QgdG1wOiBuZXZlciA9IG1hbmFnZW1lbnRJbmZvLnVpUHJlc2VudGF0aW9uO1xyXG4gICAgICBjb25zb2xlLmxvZyh0bXApO1xyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufTtcclxuIl19
|