ng-miam 9.2.0 → 9.2.2
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/bundles/ng-miam.umd.js +927 -634
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +1 -1
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/accordion/accordion.component.js +2 -2
- package/esm2015/lib/_components/addon-link/addon-link.component.js +3 -3
- package/esm2015/lib/_components/counter-input/counter-input.component.js +14 -12
- package/esm2015/lib/_components/guests-dropdown/guests-dropdown.component.js +8 -5
- package/esm2015/lib/_components/icon/icon.component.js +2 -2
- package/esm2015/lib/_components/like-button/like-button.component.js +6 -5
- package/esm2015/lib/_components/modal/modal.component.js +39 -36
- package/esm2015/lib/_components/no-pos-selected/no-pos-selected.component.js +2 -2
- package/esm2015/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.js +15 -6
- package/esm2015/lib/_components/product-card/product-card-skeleton/product-card-skeleton.component.js +1 -1
- package/esm2015/lib/_components/product-card/product-card.component.js +25 -7
- package/esm2015/lib/_components/products-picker/products-picker.component.js +2 -2
- package/esm2015/lib/_components/recipe-promotion-badge/recipe-promotion-badge.component.js +2 -2
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-logo-block/sponsor-logo-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-picture-block/sponsor-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-small-picture-block/sponsor-small-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +4 -4
- package/esm2015/lib/_models/basket-actions/basket-action.js +2 -2
- package/esm2015/lib/_services/basket-recipe-cleanup.service.js +62 -0
- package/esm2015/lib/_services/basket-transfer.service.js +3 -2
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +9 -3
- package/esm2015/lib/_services/context.service.js +17 -13
- package/esm2015/lib/_services/interceptor.service.js +10 -3
- package/esm2015/lib/_services/recipe-details.service.js +22 -7
- package/esm2015/lib/_services/recipes.service.js +5 -5
- package/esm2015/lib/_services/store-locator.service.js +10 -3
- package/esm2015/lib/_services/store-out-of-stock.service.js +57 -0
- package/esm2015/lib/_services/user.service.js +3 -3
- package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +3 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +130 -122
- package/esm2015/lib/_web-components/basket-preview/basket-preview-product/basket-preview-product.component.js +44 -34
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +14 -7
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +13 -13
- package/esm2015/lib/_web-components/no-supplier-onboarding/no-supplier-onboarding.component.js +8 -12
- package/esm2015/lib/_web-components/preferences/preferences-search/preferences-search.component.js +2 -2
- package/esm2015/lib/_web-components/preferences/preferences.component.js +28 -28
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +118 -97
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +21 -14
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +9 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +10 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +3 -3
- package/esm2015/lib/_web-components/recipe-catalog/catalog-toolbar/catalog-toolbar.component.js +14 -10
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +42 -37
- package/esm2015/lib/_web-components/recipe-details/last-order-modal/last-order-modal.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +16 -13
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +98 -103
- package/esm2015/lib/_web-components/recipe-details/store-locator-link/store-locator-link.component.js +8 -7
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +7 -2
- package/esm2015/lib/environments/environment.js +2 -2
- package/esm2015/lib/environments/environment.prod.js +2 -2
- package/esm2015/lib/environments/version.js +2 -2
- package/esm2015/lib/ng-miam.module.js +4 -1
- package/fesm2015/ng-miam.js +882 -627
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/components.module.d.ts +2 -1
- package/lib/_components/components.module.d.ts.map +1 -1
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts +7 -3
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts.map +1 -1
- package/lib/_components/product-card/product-card.component.d.ts +2 -0
- package/lib/_components/product-card/product-card.component.d.ts.map +1 -1
- package/lib/_models/basket-actions/basket-action.d.ts.map +1 -1
- package/lib/_services/basket-recipe-cleanup.service.d.ts +21 -0
- package/lib/_services/basket-recipe-cleanup.service.d.ts.map +1 -0
- package/lib/_services/basket-transfer.service.d.ts.map +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts.map +1 -1
- package/lib/_services/context.service.d.ts +3 -1
- package/lib/_services/context.service.d.ts.map +1 -1
- package/lib/_services/interceptor.service.d.ts +1 -0
- package/lib/_services/interceptor.service.d.ts.map +1 -1
- package/lib/_services/recipe-details.service.d.ts +8 -2
- package/lib/_services/recipe-details.service.d.ts.map +1 -1
- package/lib/_services/recipes.service.d.ts +2 -6
- package/lib/_services/recipes.service.d.ts.map +1 -1
- package/lib/_services/store-locator.service.d.ts +1 -0
- package/lib/_services/store-locator.service.d.ts.map +1 -1
- package/lib/_services/store-out-of-stock.service.d.ts +13 -0
- package/lib/_services/store-out-of-stock.service.d.ts.map +1 -0
- package/lib/_services/user.service.d.ts +2 -2
- package/lib/_services/user.service.d.ts.map +1 -1
- package/lib/_types/builded/mealz-interface.d.ts +4 -0
- package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -0
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +1 -0
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts.map +1 -1
- package/lib/environments/version.d.ts +1 -1
- package/lib/ng-miam.module.d.ts.map +1 -1
- package/miam-style.css +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { EventEmitter, Injectable } from '@angular/core';
|
|
3
3
|
import { Service } from 'miam-jsonapi';
|
|
4
|
-
import { BehaviorSubject, combineLatest, forkJoin, of,
|
|
4
|
+
import { BehaviorSubject, combineLatest, forkJoin, of, } from 'rxjs';
|
|
5
5
|
import { debounceTime, map, skip, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
6
6
|
import { Recipe } from '../_models';
|
|
7
7
|
import { RecipePricing } from '../_models/recipe-pricing';
|
|
@@ -64,7 +64,7 @@ export class RecipesService extends Service {
|
|
|
64
64
|
this.displayedRecipe$ = new BehaviorSubject(null);
|
|
65
65
|
this.displayHelper$ = new BehaviorSubject(false);
|
|
66
66
|
this.displayedRecipeChanged$ = new BehaviorSubject(null);
|
|
67
|
-
this.
|
|
67
|
+
this.recipeDetailsTabIndex$ = new BehaviorSubject(null);
|
|
68
68
|
this.hidden = new EventEmitter();
|
|
69
69
|
this.suggestionsPrimaryButtonActions = { display: true, addToBasket: true };
|
|
70
70
|
this.recipesPrimaryButtonActions = { display: true, addToBasket: true };
|
|
@@ -304,8 +304,8 @@ export class RecipesService extends Service {
|
|
|
304
304
|
this.analyticsService.sendEvent('basket.display', analyticsPath, {});
|
|
305
305
|
}
|
|
306
306
|
openRecipeDetails(recipeId, guests, initialTabIndex, path = '', categoryId = null) {
|
|
307
|
-
this.
|
|
308
|
-
this.
|
|
307
|
+
this.display(recipeId, { previewAllowed: true, previewMode: false, guests });
|
|
308
|
+
this.recipeDetailsTabIndex$.next(initialTabIndex);
|
|
309
309
|
this.analyticsService.sendEvent('recipe.display', path, { recipe_id: recipeId, category_id: categoryId });
|
|
310
310
|
}
|
|
311
311
|
openStoreLocator() {
|
|
@@ -440,4 +440,4 @@ RecipesService.ɵprov = i0.ɵɵdefineInjectable({ token: RecipesService, factory
|
|
|
440
440
|
providedIn: 'root'
|
|
441
441
|
}]
|
|
442
442
|
}], function () { return [{ type: i1.HttpClient }, { type: i2.AnalyticsService }, { type: i3.RecipeProviderService }, { type: i4.RecipeStatusService }, { type: i5.RecipeTypeService }, { type: i6.SuppliersService }, { type: i7.PointOfSalesService }, { type: i8.IngredientsService }, { type: i9.RecipeStepsService }, { type: i10.SponsorService }, { type: i11.PackageService }, { type: i12.TagsService }, { type: i13.RecipeLikesService }, { type: i14.SeoService }, { type: i15.PreferencesService }, { type: i16.StoreLocatorService }]; }, null); })();
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9yZWNpcGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBaUQsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQWUsTUFBTSxFQUFPLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixF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QUFFLENBQUMsQ0FBQztRQUNwRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7OzRFQXBqQlUsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uLCBEb2N1bWVudFJlc291cmNlLCBJUGFyYW1zLCBTZXJ2aWNlIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHNraXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZSwgUmVjaXBlLCBUYWcgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJbmdyZWRpZW50c1NlcnZpY2UgfSBmcm9tICcuL2luZ3JlZGllbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFja2FnZVNlcnZpY2UgfSBmcm9tICcuL3BhY2thZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1saWtlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlU3RhdHVzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVN0ZXBzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0ZXBzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZVNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS10eXBlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VvU2VydmljZSB9IGZyb20gJy4vc2VvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3BvbnNvclNlcnZpY2UgfSBmcm9tICcuL3Nwb25zb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZUxvY2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS1sb2NhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc1NlcnZpY2UgfSBmcm9tICcuL3RhZ3Muc2VydmljZSc7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuZXhwb3J0IGludGVyZmFjZSBSZWNpcGVEaXNwbGF5IHtcbiAgcHJldmlld0FsbG93ZWQ6IGJvb2xlYW47XG4gIHJlY2lwZTogUmVjaXBlO1xuICBwcmV2aWV3TW9kZTogYm9vbGVhbjtcbiAgd2FzQWRkZWQ6IGJvb2xlYW47XG4gIGZvcmNlPzogYm9vbGVhbjtcbiAgZGlzcGxheUd1ZXN0cz86IGJvb2xlYW47XG4gIGhlbHBCdXR0b25BbGxvd2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVjaXBlRGlzcGxheVBhcmFtcyB7XG4gIHByZXZpZXdBbGxvd2VkPzogYm9vbGVhbjtcbiAgZ3Vlc3RzPzogbnVtYmVyO1xuICBwcmV2aWV3TW9kZT86IGJvb2xlYW47XG4gIHdhc0FkZGVkPzogYm9vbGVhbjtcbiAgZGlzcGxheUd1ZXN0cz86IGJvb2xlYW47XG4gIGhlbHBCdXR0b25BbGxvd2VkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPFJlY2lwZT4ge1xuXG4gIHJlc291cmNlID0gUmVjaXBlO1xuICB0eXBlID0gJ3JlY2lwZXMnO1xuICBkaXNwbGF5ZWRSZWNpcGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNpcGVEaXNwbGF5PihudWxsKTtcbiAgZGlzcGxheUhlbHBlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzcGxheWVkUmVjaXBlQ2hhbmdlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuICByZWNpcGVEZXRhaWxzT3BlbmVkJCA9IG5ldyBTdWJqZWN0PHsgcmVjaXBlSWQ6IHN0cmluZzsgZ3Vlc3RzOiBudW1iZXI7IGluaXRpYWxUYWJJbmRleDogbnVtYmVyIH0+KCk7XG4gIGhpZGRlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheTogdHJ1ZSwgYWRkVG9CYXNrZXQ6IHRydWUgfTtcbiAgcmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zID0geyBkaXNwbGF5OiB0cnVlLCBhZGRUb0Jhc2tldDogdHJ1ZSB9O1xuICByZWxvYWRSZWNpcGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaWZmaWN1bHR5TGV2ZWxzOiB7IHZhbHVlOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdID0gW1xuICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnRmFjaWxlJyB9LFxuICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnTW95ZW4nIH0sXG4gICAgeyB2YWx1ZTogMywgbGFiZWw6ICdEaWZmaWNpbGUnIH1cbiAgXTtcbiAgY29uZmlybWF0aW9uVG9hc3RlcjogYm9vbGVhbjtcblxuICBwcml2YXRlIHJhbmRvbVNlZWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByYW5kb21SZWNpcGVDb3VudCA9IDE7XG4gIHByaXZhdGUgcmVjaXBlczogUmVjaXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvdmlkZXJTZXJ2aWNlOiBSZWNpcGVQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0dXNTZXJ2aWNlOiBSZWNpcGVTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHlwZVNlcnZpY2U6IFJlY2lwZVR5cGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmdyZWRpZW50c1NlcnZpY2U6IEluZ3JlZGllbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZVN0ZXBzU2VydmljZTogUmVjaXBlU3RlcHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZVNlcnZpY2U6IFBhY2thZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFnc1NlcnZpY2U6IFRhZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZW9TZXJ2aWNlOiBTZW9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlZmVyZW5jZXNTZXJ2aWNlOiBQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZUxvY2F0b3JTZXJ2aWNlOiBTdG9yZUxvY2F0b3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIHRoaXMuYXBwZW5kRGlzcGxheWVkUmVjaXBlVG9VcmxRdWVyeSgpO1xuICAgIHRoaXMuaW5pdFJhbmRvbVNlZWQoKTtcbiAgfVxuXG4gIGRpc3BsYXlSZWNpcGVJblVybCgpOiB2b2lkIHtcbiAgICBjb25zdCByZWNpcGVJZCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoJ2Rpc3BsYXlSZWNpcGUnKTtcbiAgICAvLyBJZiB0aGVyZSBpcyBhIHJlY2lwZSBpbiBVcmwsIGRpc3BsYXkgaXQgb24gc3RhcnR1cFxuICAgIGlmIChyZWNpcGVJZCkge1xuICAgICAgdGhpcy5kaXNwbGF5KHJlY2lwZUlkLCB7IHByZXZpZXdBbGxvd2VkOiB0cnVlLCBwcmV2aWV3TW9kZTogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFJlY2lwZXMocmVjaXBlc0luZm9zOiB7IGlkOiBzdHJpbmc7IGd1ZXN0cz86IHN0cmluZyB9W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChyZWNpcGVzSW5mb3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihyZWNpcGVzSW5mb3MubWFwKGluZm8gPT4gdGhpcy5nZXRPckZldGNoKGluZm8uaWQpLnBpcGUoXG4gICAgICB0YXAociA9PiB7XG4gICAgICAgIGlmIChpbmZvLmd1ZXN0cykge1xuICAgICAgICAgIHIubW9kaWZpZWRHdWVzdHMgPSAraW5mby5ndWVzdHM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWNpcGVzLnB1c2gocik7XG4gICAgICB9KVxuICAgICkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG1hbmRhdG9yeSBkYXRhIChndWVzdCwgcG9zIGlkKSBjb21wbGV0aW9uIHRvIHRoZSBnaXZlbiBmaWx0ZXJzLlxuICAgKi9cbiAgYWRkTWFuZGF0b3J5Q29tcGxldGlvblRvRmlsdGVyKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMpOiBPYnNlcnZhYmxlPFJlY2lwZUZpbHRlcnM+IHtcbiAgICBjb25zdCByZXF1ZXN0RmlsdGVycyA9IGZpbHRlcnMuY29weSgpO1xuICAgIC8vIG9ubHkgc2V0IHByaW1hcnlfY29tcGxldGlvbl9wZXJjIGlmIG5vdCBzZWFyY2hpbmcgZmF2b3JpdGUgcmVjaXBlc1xuICAgIGlmIChyZXF1ZXN0RmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycy5saWtlZCkge1xuICAgICAgcmV0dXJuIG9mKHJlcXVlc3RGaWx0ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLnBvc1dhc0luaXRpYWxpemVkKCkucGlwZShcbiAgICAgIHNraXBXaGlsZSh3YXNJbml0aWFsaXplZCA9PiAhd2FzSW5pdGlhbGl6ZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucG9zU2VydmljZS5wb3MkKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoKHBvczogUG9pbnRPZlNhbGUpID0+IHtcbiAgICAgICAgaWYgKHBvcz8uaWQpIHtcbiAgICAgICAgICAvLyBudW1iZXIgb2YgZ3Vlc3RzIGFuZCBwb2ludCBvZiBzYWxlIGlkIGFyZSBtYW5kYXRvcnkgaW4gb3JkZXIgdG8gdXNlIHByaW1hcnlfY29tcGxldGlvbl9wZXJjIGZpbHRlclxuICAgICAgICAgIHJlcXVlc3RGaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzID0ge1xuICAgICAgICAgICAgLi4uZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyxcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgZ3Vlc3RzOiAnNCcsXG4gICAgICAgICAgICAgIHBvaW50X29mX3NhbGVfaWQ6IHBvcy5pZCxcbiAgICAgICAgICAgICAgcHJpbWFyeV9jb21wbGV0aW9uX3BlcmM6ICcxMDAsMTAwJyxcbiAgICAgICAgICAgICAgZm9yY2VkX2NvbXBsZXRpb25fcGVyYzogJzEwMCwxMDAnLFxuICAgICAgICAgICAgICAuLi5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzPy5maWx0ZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVxdWVzdEZpbHRlcnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuXG4gIC8vIFJldHVybnMgbGlzdCBvZiBmaWx0ZXJlZCByZWNpcGVzLlxuICAvLyBGaWx0ZXJzIGFuZCBwYWdlIHBhcmFtZXRlcnMgYXJlIG1hbmRhdG9yeS5cbiAgLy8gTnVtYmVyIG9mIGd1ZXN0cyBhbmQgcmFuZG9taXphdGlvbiBhcmUgb3B0aW9uYWwgcGFyYW1ldGVyc1xuICBmaWx0ZXIoXG4gICAgZmlsdGVyczogUmVjaXBlRmlsdGVycyxcbiAgICBwYWdlOiB7IG51bWJlcjogbnVtYmVyOyBzaXplOiBudW1iZXIgfSxcbiAgICBpbmNsdWRlczogc3RyaW5nW10gPSBbXSxcbiAgICBmaWVsZHMgPSB7fSxcbiAgICBndWVzdHM6IG51bWJlciA9IG51bGwsXG4gICAgcmFuZG9tOiBib29sZWFuID0gZmFsc2UsXG4gICAgc29ydCA9ICcnXG4gICk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBsZXQgcmVjaXBlczogUmVjaXBlW107XG4gICAgY29uc3QgbGlrZWRGaWx0ZXIgPSBmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzPy5maWx0ZXJzLmxpa2VkID8geyBsaWtlZDogJ3RydWUnIH0gOiBudWxsO1xuICAgIGNvbnN0IHJlbW90ZWZpbHRlciA9IGxpa2VkRmlsdGVyIHx8IHRoaXMucHJlZmVyZW5jZXNTZXJ2aWNlLmFkZFByZWZlcmVuY2VzVG9SZW1vdGVGaWx0ZXJzKHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXJzKGZpbHRlcnMsIGd1ZXN0cykpO1xuXG4gICAgaWYgKHJhbmRvbSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZW1vdGVmaWx0ZXIsIHsgcmFuZG9tOiB0aGlzLnJhbmRvbVNlZWQgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsbCh7IHBhZ2UsIHJlbW90ZWZpbHRlciwgaW5jbHVkZTogaW5jbHVkZXMsIHNvcnQ6IFtzb3J0XSwgZmllbGRzIH0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICByZWNpcGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgIGlmIChndWVzdHMgJiYgZ3Vlc3RzID4gMCkge1xuICAgICAgICAgIHJlY2lwZXMuZm9yRWFjaChyID0+IHIubW9kaWZpZWRHdWVzdHMgPSBndWVzdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS5hZGRMaWtlc1RvUmVjaXBlcyhyZWNpcGVzKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHJlY2lwZXMpXG4gICAgKTtcbiAgfVxuXG4gIGxvYWRSZWNpcGVzRnJvbVBhY2thZ2VJZChwYWNrYWdlSWQ6IHN0cmluZywgcGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIsIGd1ZXN0czogbnVtYmVyKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnXTtcbiAgICBjb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gICAgICByZWNpcGVzOiBbJ3RpdGxlJyxcbiAgICAgICAgJ251bWJlci1vZi1ndWVzdHMnLFxuICAgICAgICAnbWVkaWEtdXJsJyxcbiAgICAgICAgJ3ZpZGVvLWlkJyxcbiAgICAgICAgJ2ZpbGlncmFuZS1sb2dvLXVybCcsXG4gICAgICAgICdkaWZmaWN1bHR5JyxcbiAgICAgICAgJ3ByZXBhcmF0aW9uLXRpbWUnLFxuICAgICAgICAnY29va2luZy10aW1lJyxcbiAgICAgICAgJ3Jlc3RpbmctdGltZScsIC4uLnJlY2lwZUluY2x1ZGVzXSxcbiAgICAgIHNwb25zb3JzOiBbJ2xvZ28tdXJsJ10sXG4gICAgICBbJ3JlY2lwZS1wcm92aWRlciddOiBbJ25hbWUnXVxuICAgIH07XG4gICAgY29uc3QgcGFja2FnZUZpbHRlciA9IG5ldyBSZWNpcGVGaWx0ZXJzKHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHBhY2thZ2VzOiBwYWNrYWdlSWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuYWRkTWFuZGF0b3J5Q29tcGxldGlvblRvRmlsdGVyKHBhY2thZ2VGaWx0ZXIpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocmVxdWVzdEZpbHRlcnMgPT4gdGhpcy5maWx0ZXIoXG4gICAgICAgIHJlcXVlc3RGaWx0ZXJzLFxuICAgICAgICB7IHNpemUsIG51bWJlcjogcGFnZSB9LFxuICAgICAgICByZWNpcGVJbmNsdWRlcyxcbiAgICAgICAgcmVjaXBlU3BhcnNlRmllbGRzLFxuICAgICAgICBndWVzdHMsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICAncG9zaXRpb24nXG4gICAgICApKVxuICAgICk7XG4gIH1cblxuICAvLyBGZXRjaGVzIHJlY2lwZXMgY29ycmVzcG9uZGluZyB0byBmaWx0ZXJzLCBhbmQgcmV0dXJuIHRvdGFsIHJlY2lwZXMgY291bnRcbiAgZmlsdGVyQ291bnQoZmlsdGVyczogUmVjaXBlRmlsdGVycywgZ3Vlc3RzOiBudW1iZXIgPSBudWxsLCBleGNsdWRlZFJlY2lwZXNJZHM6IHN0cmluZ1tdID0gW10sIGZyb21QcmVmZXJlbmNlID0gZmFsc2UpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0IGYgPSB0aGlzLnByZWZlcmVuY2VzU2VydmljZS5hZGRQcmVmZXJlbmNlc1RvUmVtb3RlRmlsdGVycyh0aGlzLmJ1aWxkUmVtb3RlRmlsdGVycyhmaWx0ZXJzLCBndWVzdHMpLCBmcm9tUHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy5hbGwoeyByZW1vdGVmaWx0ZXI6IGYsIHBhZ2U6IHsgbnVtYmVyOiAxLCBzaXplOiAxIH0sIGZpZWxkczogeyByZWNpcGVzOiBbJ2lkJ10gfSB9KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICBtYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4pID0+IHtcbiAgICAgICAgLy8gQXBwYXJlbnRseSB0b3RhbF9yZXNvdXJjZSA9IDEgZXZlbiBpZiBubyByZXN1bHQgd2FzIGZvdW5kIHNvIHdlIGhhdmUgdG8gY2hlY2tcbiAgICAgICAgbGV0IHJlY2lwZXNOdW1iZXIgPSByZXN1bHQuZGF0YS5sZW5ndGggPyByZXN1bHQucGFnZT8udG90YWxfcmVzb3VyY2VzIDogMDtcbiAgICAgICAgcmVjaXBlc051bWJlciAtPSByZXN1bHQuZGF0YS5maWx0ZXIociA9PiBleGNsdWRlZFJlY2lwZXNJZHMuaW5jbHVkZXMoci5pZCkpLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHJlY2lwZXNOdW1iZXI7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmVtb3RlRmlsdGVycyhmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzLCBndWVzdHM6IG51bWJlciA9IG51bGwpOiB7XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgICd0b3RhbC10aW1lJz86IHN0cmluZztcbiAgICBwcmljZT86IHN0cmluZztcbiAgICBkaWZmaWN1bHR5Pzogc3RyaW5nO1xuICAgIHBvaW50X29mX3NhbGVfaWQ/OiBzdHJpbmc7XG4gICAgZ3Vlc3RzPzogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcihmaWx0ZXJzLmRpZmZpY3VsdHksICctJyk7XG4gICAgY29uc3QgY29zdCA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVycy5jb3N0LCAnLScpPy5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHRvdGFsVGltZSA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVycy50aW1lLCAnLCcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihkaWZmaWN1bHR5Py5sZW5ndGggPiAwKSA/IHsgZGlmZmljdWx0eTogZGlmZmljdWx0eSArICcsZXEnIH0gOiB7fSwgLy8gZXg6IGZpbHRlcltkaWZmaWN1bHR5XT0xLTItMyxlcSA9PiBhbGwgY2hlY2tlZFxuICAgICAgLi4uKGNvc3Q/Lmxlbmd0aCA9PT0gMikgPyB7IGNvbXB1dGVkX2Nvc3Q6IGNvc3RbMF0gKyAnLGd0LCcgKyBjb3N0WzFdICsgJyxsdCcgfSA6IHt9LCAvLyBleDogZmlsdGVyW2Nvc3RdPTUsZ3QsMTAsbHQgPT4gNSA8IGNvc3QgPCAxMFxuICAgICAgLi4uKHRvdGFsVGltZT8ubGVuZ3RoID4gMCkgPyB7ICd0b3RhbC10aW1lJzogdG90YWxUaW1lIH0gOiB7fSxcbiAgICAgIC4uLihmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzPy5maWx0ZXJzKSA/IGZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuZmlsdGVycyA6IHt9LFxuICAgICAgLi4uKGZpbHRlcnMuc2VhcmNoKSA/IHsgc2VhcmNoOiBmaWx0ZXJzLnNlYXJjaCB9IDoge30sXG4gICAgICAuLi4oZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycy5wcmljZSkgPyB7IHBvaW50X29mX3NhbGVfaWQ6IHRoaXMucG9zU2VydmljZS5wb3MkLnZhbHVlLmlkIH0gOiB7fSxcbiAgICAgIC4uLihmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzPy5maWx0ZXJzLnByaWNlICYmIGd1ZXN0cyAhPT0gbnVsbCkgPyB7IGd1ZXN0czogZ3Vlc3RzLnRvU3RyaW5nKCkgfSA6IHt9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kRGlzcGxheWVkUmVjaXBlVG9VcmxRdWVyeSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHJlY2lwZURpc3BsYXk6IFJlY2lwZURpc3BsYXkpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5yZW1vdmVEaXNwbGF5UmVjaXBlRnJvbVVybFF1ZXJ5KCkpO1xuICAgICAgaWYgKHJlY2lwZURpc3BsYXk/LnJlY2lwZSkge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnZGlzcGxheVJlY2lwZScsIHJlY2lwZURpc3BsYXkucmVjaXBlLmlkKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIHVybC50b1N0cmluZygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRGlzcGxheVJlY2lwZUZyb21VcmxRdWVyeSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IGZpbHRlcmVkU2VhcmNoID0gdXJsLnNwbGl0KCc/JylbMV07XG4gICAgaWYgKGZpbHRlcmVkU2VhcmNoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGZpbHRlcmVkU2VhcmNoKTtcbiAgICAgIHBhcmFtcy5kZWxldGUoJ2Rpc3BsYXlSZWNpcGUnKTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkUXVlcnlTdHJpbmcgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIGlmIChmaWx0ZXJlZFF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB1cmwucmVwbGFjZShmaWx0ZXJlZFNlYXJjaCwgZmlsdGVyZWRRdWVyeVN0cmluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCc/JylbMF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvLyBSZWFkcyB0aGUgdmFsdWVzIG9mIGEgZmllbGQgYW5kIGNvbnZlcnRzIGl0IHRvIHRoZSBzdHJpbmcgdG8gcGFzcyBpbiB0aGUgcmVtb3RlRmlsdGVyc1xuICAvLyBleDogYnVpbGRSZW1vdGVGaWx0ZXIoe1xuICAvLyAgIHtuYW1lOiAnMScsIHZhbHVlOiB0cnVlLCB0ZXh0OiAnRmFjaWxlJ30sXG4gIC8vICAge25hbWU6ICcyJywgdmFsdWU6IGZhbHNlLCB0ZXh0OiAnTW95ZW4nfSxcbiAgLy8gICB7bmFtZTogJzMnLCB2YWx1ZTogdHJ1ZSwgdGV4dDogJ0RpZmZpY2lsZSd9XG4gIC8vIH0sICctJykgID09PiAnMS0zJ1xuICBwcml2YXRlIGJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcjogUmVjaXBlRmlsdGVyW10sIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWZpbHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBmb3IgKGNvbnN0IGYgb2YgZmlsdGVyKSB7XG4gICAgICBpZiAoZi52YWx1ZSkge1xuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBmLm5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBGZXRjaCBvbmUgcmFuZG9tIHJlY2lwZVxuICBnZXRSYW5kb20oaW5jbHVkZXM6IHN0cmluZ1tdID0gW10sIGZpZWxkcyA9IHt9KTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIHRoaXMucmFuZG9tUmVjaXBlQ291bnQrKztcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoXG4gICAgICB7IHJldmlld2VkOiB0cnVlLCBleGNsdWRlX25vX3BpY3R1cmU6IHRydWUgfSBhcyBSZWNpcGVGaWx0ZXJzLFxuICAgICAgeyBudW1iZXI6IHRoaXMucmFuZG9tUmVjaXBlQ291bnQsIHNpemU6IDEgfSxcbiAgICAgIGluY2x1ZGVzLFxuICAgICAgZmllbGRzLFxuICAgICAgbnVsbCxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgLy8gRGVib3VuY2UgdG8gbGV0IGVub3VnaCB0aW1lIGZvciB0aGUgcG9zIHRvIGJlIGRlZmluZWRcbiAgZ2V0U3VnZ2VzdGlvbihcbiAgICBjb250ZXh0OiB7IGlkOiBzdHJpbmc7IGhhc0hpZ2hXZWlnaHQ/OiBib29sZWFuIH1bXSxcbiAgICBpbmNsdWRlczogc3RyaW5nW10gPSBbXSxcbiAgICBmaWVsZHMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgbGV0IHN1Z2dlc3Rpb25GaWVsZHMgPSAnJztcbiAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHN1Z2dlc3Rpb25GaWVsZHMgKz0gYCZmaWVsZHNbJHtrZXl9XT0keyhmaWVsZHNba2V5XSBhcyBzdHJpbmdbXSkuam9pbignLCcpfWA7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnN1cHBsaWVyJCxcbiAgICAgIHRoaXMucG9zU2VydmljZS5wb3NXYXNJbml0aWFsaXplZCgpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZSh3YXNJbml0aWFsaXplZCA9PiAhd2FzSW5pdGlhbGl6ZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5wb3NTZXJ2aWNlLnBvcyQpXG4gICAgICApXG4gICAgXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzWzBdKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJ1aWxkU3VnZ2VzdGlvbkJvZHkoY29udGV4dCk7XG4gICAgICAgIGxldCBzdXBwbGllckZpbHRlciA9IGBzdXBwbGllcl9pZD0ke3Jlc3VsdHNbMF0uaWR9YDtcbiAgICAgICAgaWYgKHJlc3VsdHNbMV0pIHtcbiAgICAgICAgICBzdXBwbGllckZpbHRlciA9IGBzdXBwbGllcl9pZD0ke3Jlc3VsdHNbMF0uaWR9JnBvc19pZD0ke3Jlc3VsdHNbMV0uaWR9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvc3VnZ2VzdGlvbnM/JHtzdXBwbGllckZpbHRlcn0mYWxsb3ctZW1wdHk9dHJ1ZSR7KGluY2x1ZGVzLmxlbmd0aCA+IDApID8gKCcmaW5jbHVkZT0nICsgaW5jbHVkZXMuam9pbignLCcpKSA6ICcnfSR7c3VnZ2VzdGlvbkZpZWxkc30ke3RoaXMuYnVpbGRmaWx0ZXJVcmxGcm9tUHJlZmVyZW5jZXMoKX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBib2R5KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXR1cm5lZFJlY2lwZXM6IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY2lwZXMgPSB0aGlzLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgcmVjaXBlcy5maWxsKHJldHVybmVkUmVjaXBlcyk7XG4gICAgICAgIHJldHVybiByZWNpcGVzLmRhdGE7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZWFyY2hSZWNpcGVCeUV4dElkKHJlY2lwZUV4dElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke01JQU1fQVBJX0hPU1R9cmVjaXBlcy9leHRlcm5hbC8ke3JlY2lwZUV4dElkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogRG9jdW1lbnRSZXNvdXJjZTxSZWNpcGU+KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhPy5hdHRyaWJ1dGVzWydleHQtaWQnXSA9PT0gcmVjaXBlRXh0SWQpIHtcbiAgICAgICAgICBjb25zdCByZWNpcGUgPSB0aGlzLm5ldygpO1xuICAgICAgICAgIHJlY2lwZS5maWxsKHJlc3BvbnNlKTtcbiAgICAgICAgICByZXR1cm4gcmVjaXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJpY2luZyhyZWNpcGVJZDogc3RyaW5nLCBwb3NJZDogc3RyaW5nLCBwcmljZWJvb2tLZXk6IHN0cmluZywgc2VydmVzOiBudW1iZXIgPSBudWxsKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPiB7XG4gICAgaWYgKCFyZWNpcGVJZCkge1xuICAgICAgcmV0dXJuIChvZihudWxsKSBhcyBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+KTtcbiAgICB9XG4gICAgbGV0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZUlkfS9wcmljaW5nP3BvaW50X29mX3NhbGVfaWQ9JHtwb3NJZH0mcHJpY2Vib29rX2tleT0ke3ByaWNlYm9va0tleX1gO1xuICAgIGlmIChzZXJ2ZXMpIHtcbiAgICAgIHVybCArPSBgJnNlcnZlcz0ke3NlcnZlc31gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IG5ldyBSZWNpcGVQcmljaW5nKHJlc3VsdCkpXG4gICAgKTtcbiAgfVxuXG4gIGdlbmVyYXRlRnJvbVBpY3R1cmUoaW1hZ2VCYXNlNjQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gTUlBTV9BUElfSE9TVCArICdyZWNpcGVzL2dlbmVyYXRlX2Zyb21fcGljdHVyZSc7XG4gICAgY29uc3QgYm9keSA9IHsgYmFzZTY0X2ltYWdlOiBpbWFnZUJhc2U2NCB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHkpO1xuICB9XG5cbiAgLy8gT3BlbiBtb2RhbCBzaG93aW5nIHJlY2lwZSBkZXRhaWxzXG4gIGRpc3BsYXkoXG4gICAgcmVjaXBlSWQ6IHN0cmluZyxcbiAgICB7XG4gICAgICBwcmV2aWV3QWxsb3dlZCA9IHRydWUsXG4gICAgICBndWVzdHMgPSBudWxsLFxuICAgICAgcHJldmlld01vZGUgPSBmYWxzZSxcbiAgICAgIGRpc3BsYXlHdWVzdHMgPSB0cnVlLFxuICAgICAgaGVscEJ1dHRvbkFsbG93ZWQgPSB0cnVlXG4gICAgfTogSVJlY2lwZURpc3BsYXlQYXJhbXNcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFyZWNpcGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0KHJlY2lwZUlkLCB7IGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3RhZ3MnLCAncmVjaXBlLXByb3ZpZGVyJ10gfSlcbiAgICAgIC5waXBlKHNraXBXaGlsZShyZWNpcGUgPT4gcmVjaXBlLmlzX2xvYWRpbmcpKVxuICAgICAgLnN1YnNjcmliZShyZWNpcGUgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXlPYmplY3QocmVjaXBlLCB7IHByZXZpZXdBbGxvd2VkLCBndWVzdHMsIHByZXZpZXdNb2RlLCBkaXNwbGF5R3Vlc3RzLCBoZWxwQnV0dG9uQWxsb3dlZCB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGlzcGxheU9iamVjdChcbiAgICByZWNpcGU6IFJlY2lwZSxcbiAgICB7XG4gICAgICBwcmV2aWV3QWxsb3dlZCA9IHRydWUsXG4gICAgICBndWVzdHMgPSBudWxsLFxuICAgICAgcHJldmlld01vZGUgPSBmYWxzZSxcbiAgICAgIHdhc0FkZGVkID0gZmFsc2UsXG4gICAgICBkaXNwbGF5R3Vlc3RzID0gdHJ1ZSxcbiAgICAgIGhlbHBCdXR0b25BbGxvd2VkID0gdHJ1ZVxuICAgIH06IElSZWNpcGVEaXNwbGF5UGFyYW1zXG4gICk6IHZvaWQge1xuICAgIGlmICghcmVjaXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzIHx8ICtyZWNpcGUuZ3Vlc3RzO1xuICAgIHRoaXMuZGlzcGxheWVkUmVjaXBlJC5uZXh0KHsgcHJldmlld0FsbG93ZWQsIHJlY2lwZSwgcHJldmlld01vZGUsIHdhc0FkZGVkLCBkaXNwbGF5R3Vlc3RzLCBoZWxwQnV0dG9uQWxsb3dlZCB9KTtcbiAgfVxuXG4gIG9wZW5CYXNrZXQoYW5hbHl0aWNzUGF0aDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dCh7IHByZXZpZXdBbGxvd2VkOiB0cnVlLCByZWNpcGU6IG51bGwsIHByZXZpZXdNb2RlOiB0cnVlLCB3YXNBZGRlZDogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgnYmFza2V0LmRpc3BsYXknLCBhbmFseXRpY3NQYXRoLCB7fSk7XG4gIH1cblxuICBvcGVuUmVjaXBlRGV0YWlscyhyZWNpcGVJZDogc3RyaW5nLCBndWVzdHM6IG51bWJlciwgaW5pdGlhbFRhYkluZGV4OiBudW1iZXIsIHBhdGg6IHN0cmluZyA9ICcnLCBjYXRlZ29yeUlkOiBzdHJpbmcgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzT3BlbmVkJC5uZXh0KHsgcmVjaXBlSWQsIGd1ZXN0cywgaW5pdGlhbFRhYkluZGV4IH0pO1xuICAgIHRoaXMuZGlzcGxheShyZWNpcGVJZCwgeyBwcmV2aWV3QWxsb3dlZDogdHJ1ZSwgcHJldmlld01vZGU6IGZhbHNlIH0pO1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlY2lwZS5kaXNwbGF5JywgcGF0aCwgeyByZWNpcGVfaWQ6IHJlY2lwZUlkLCBjYXRlZ29yeV9pZDogY2F0ZWdvcnlJZCB9KTtcbiAgfVxuXG4gIG9wZW5TdG9yZUxvY2F0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZUxvY2F0b3JTZXJ2aWNlLmNsb3NlTW9kYWxPblNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlTG9jYXRvclNlcnZpY2Uub3BlblN0b3JlTG9jYXRvcih0cnVlKTtcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dCh7XG4gICAgICBwcmV2aWV3QWxsb3dlZDogZmFsc2UsXG4gICAgICByZWNpcGU6IG51bGwsXG4gICAgICBwcmV2aWV3TW9kZTogdHJ1ZSxcbiAgICAgIHdhc0FkZGVkOiBmYWxzZSxcbiAgICAgIGZvcmNlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVIZWxwZXIoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gICAgdGhpcy5kaXNwbGF5SGVscGVyJC5uZXh0KCF0aGlzLmRpc3BsYXlIZWxwZXIkLnZhbHVlKTtcbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLm5leHQobnVsbCk7XG4gICAgdGhpcy5oaWRkZW4uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGFkZFRhZ1RvUmVjaXBlKHJlY2lwZTogUmVjaXBlLCB0YWc6IFRhZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZS5pZH0vdGFncy8ke3RhZy5pZH1gLCB7fSk7XG4gIH1cblxuICBzZXRSZWNpcGVzUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSA9IHRydWUsIGFkZFRvQmFza2V0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zID0geyBkaXNwbGF5LCBhZGRUb0Jhc2tldCB9O1xuICAgIHRoaXMuc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICB0aGlzLnJlbG9hZEFsbFJlY2lwZXMoKTtcbiAgfVxuXG4gIHNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSA9IHRydWUsIGFkZFRvQmFza2V0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICB0aGlzLnJlbG9hZEFsbFJlY2lwZXMoKTtcbiAgfVxuXG4gIHBsYW4oXG4gICAgYnVkZ2V0OiBudW1iZXIsXG4gICAgZ3Vlc3RzOiBudW1iZXIsXG4gICAgcmVjaXBlc0NvdW50OiBudW1iZXIsXG4gICAgaW5jbHVkZXM6IHN0cmluZ1tdID0gW10sXG4gICAgZmllbGRzID0ge30sXG4gICAgaW5CYXNrZXQ/OiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBsZXQgcGxhbm5lckZpZWxkcyA9ICcnO1xuICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgcGxhbm5lckZpZWxkcyArPSBgJmZpZWxkc1ske2tleX1dPSR7KGZpZWxkc1trZXldIGFzIHN0cmluZ1tdKS5qb2luKCcsJyl9YDtcbiAgICB9KTtcbiAgICBsZXQgdXJsID0gTUlBTV9BUElfSE9TVCArICdyZWNpcGVzL3BsYW4nO1xuICAgIHVybCArPSBgP2J1ZGdldD0ke2J1ZGdldH0mZmlsdGVyW2d1ZXN0c109JHtndWVzdHN9JnJlY2lwZXNfY291bnQ9JHtyZWNpcGVzQ291bnR9JmZpbHRlcltyZWNpcGVfdHlwZV9pZF09bWFpbi1kaXNoYDtcbiAgICB1cmwgKz0gYCZpbmNsdWRlPSR7aW5jbHVkZXMuam9pbignLCcpfSR7cGxhbm5lckZpZWxkc30mZmlsdGVyW3JlY2lwZV90eXBlX2lkXT1tYWluLWRpc2gmZmlsdGVyW3ByaW1hcnlfY29tcGxldGlvbl9wZXJjXT0xMDAsMTAwJmZpbHRlcltmb3JjZWRfY29tcGxldGlvbl9wZXJjXT0xMDAsMTAwYDtcbiAgICB1cmwgKz0gaW5CYXNrZXQgPT09IHVuZGVmaW5lZCA/ICcnIDogYCZmaWx0ZXJbaW5fYmFza2V0XT0ke2luQmFza2V0fWA7XG4gICAgdXJsICs9IHRoaXMuYnVpbGRmaWx0ZXJVcmxGcm9tUHJlZmVyZW5jZXMoKTtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAocG9zID0+IHtcbiAgICAgICAgdXJsICs9IGAmZmlsdGVyW3BvaW50X29mX3NhbGVfaWRdPSR7cG9zLmlkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge30pLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXR1cm5lZFJlY2lwZXM6IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWNpcGVzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICByZWNpcGVzLmZpbGwocmV0dXJuZWRSZWNpcGVzKTtcbiAgICAgICAgICAgIHJldHVybiByZWNpcGVzLmRhdGE7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG1heFBsYW5uYWJsZVJlY2lwZXMoYnVkZ2V0OiBudW1iZXIsIGd1ZXN0czogbnVtYmVyLCBpbkJhc2tldD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGxldCB1cmwgPSBNSUFNX0FQSV9IT1NUICsgJ3JlY2lwZXMvcGxhbl9tYXhfcmVjaXBlcyc7XG4gICAgdXJsICs9IGA/YnVkZ2V0PSR7YnVkZ2V0fSZmaWx0ZXJbZ3Vlc3RzXT0ke2d1ZXN0c30mZmlsdGVyW3JlY2lwZV90eXBlX2lkXT1tYWluLWRpc2gmZmlsdGVyW3ByaW1hcnlfY29tcGxldGlvbl9wZXJjXT0xMDAsMTAwJmZpbHRlcltmb3JjZWRfY29tcGxldGlvbl9wZXJjXT0xMDAsMTAwYDtcbiAgICB1cmwgKz0gaW5CYXNrZXQgPT09IHVuZGVmaW5lZCA/ICcnIDogYCZmaWx0ZXJbaW5fYmFza2V0XT0ke2luQmFza2V0fWA7XG4gICAgdXJsICs9IHRoaXMuYnVpbGRmaWx0ZXJVcmxGcm9tUHJlZmVyZW5jZXMoKTtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAocG9zID0+IHRoaXMuaHR0cC5nZXQoXG4gICAgICAgIHVybCArPSBgJmZpbHRlcltwb2ludF9vZl9zYWxlX2lkXT0ke3Bvcy5pZH1gLFxuICAgICAgICB7fVxuICAgICAgKSksXG4gICAgICBtYXAoKHJlc3VsdDogeyBtYXhfcmVjaXBlczogbnVtYmVyIH0pID0+IHJlc3VsdC5tYXhfcmVjaXBlcylcbiAgICApO1xuICB9XG5cbiAgZ2V0SW5ncmVkaWVudHNCeVJlY2lwZUlkKHJlY2lwZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXM6IElQYXJhbXMgPSB7XG4gICAgICBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJ10sXG4gICAgICBmaWVsZHM6IHsgcmVjaXBlczogWydpbmdyZWRpZW50cyddIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmdldChyZWNpcGVJZCwgcGFyYW1zKTtcbiAgfVxuXG4gIHNlYXJjaChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyczoge1xuICAgICAgcGFydG5lcjogYm9vbGVhbjtcbiAgICAgIHN0YXR1c2VzPzogc3RyaW5nW107XG4gICAgICB0eXBlczogc3RyaW5nW107XG4gICAgICBwcm92aWRlcnM6IHN0cmluZ1tdO1xuICAgICAgcGFja2FnZXM6IHN0cmluZ1tdO1xuICAgIH0sXG4gICAgcGFnZTogeyBzaXplOiBudW1iZXI7IG51bWJlcjogbnVtYmVyIH0sXG4gICAgaW5jbHVkZTogc3RyaW5nW10sXG4gICAgc29ydDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8RG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4+IHtcbiAgICBsZXQgdXJsID0gTUlBTV9BUElfSE9TVCArIGByZWNpcGVzL3NlYXJjaD9uYW1lPSR7bmFtZX1gO1xuICAgIHVybCArPSBgJnBhZ2Vbc2l6ZV09JHtwYWdlLnNpemUgfHwgMjB9JnBhZ2VbbnVtYmVyXT0ke3BhZ2UubnVtYmVyIHx8IDF9JnBhcnRuZXI9JHtmaWx0ZXJzLnBhcnRuZXJ9YDtcbiAgICBmaWx0ZXJzLnN0YXR1c2VzLmZvckVhY2goc3RhdHVzID0+IHVybCArPSBgJnJlY2lwZV9zdGF0dXNfaWRzW109JHtzdGF0dXN9YCk7XG4gICAgdXJsICs9IGZpbHRlcnMudHlwZXMubGVuZ3RoID8gYCZmaWx0ZXJbcmVjaXBlX3R5cGVfaWRdPSR7ZmlsdGVycy50eXBlcy5qb2luKCcsJyl9YCA6ICcnO1xuICAgIHVybCArPSBmaWx0ZXJzLnByb3ZpZGVycy5sZW5ndGggPyBgJmZpbHRlcltyZWNpcGVfcHJvdmlkZXJfaWRdPSR7ZmlsdGVycy5wcm92aWRlcnMuam9pbignLCcpfWAgOiAnJztcbiAgICB1cmwgKz0gZmlsdGVycy5wYWNrYWdlcy5sZW5ndGggPyBgJmZpbHRlcltwYWNrYWdlc109JHtmaWx0ZXJzLnBhY2thZ2VzLmpvaW4oJywnKX1gIDogJyc7XG4gICAgdXJsICs9IGluY2x1ZGUubGVuZ3RoID8gYCZpbmNsdWRlPSR7aW5jbHVkZS5qb2luKCcsJyl9YCA6ICcnO1xuICAgIHVybCArPSBzb3J0ID8gYCZzb3J0PSR7c29ydH1gIDogJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7fSkucGlwZShcbiAgICAgIG1hcCgocmV0dXJuZWRSZWNpcGVzOiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJlY2lwZXMuZmlsbChyZXR1cm5lZFJlY2lwZXMpO1xuICAgICAgICByZXR1cm4gcmVjaXBlcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIERFUFJFQ0FURUQgLyB1c2UgVFRMIGluc3RlYWRcbiAgcHJpdmF0ZSBnZXRPckZldGNoKHJlY2lwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGNvbnN0IHJlY2lwZSA9IHRoaXMucmVjaXBlcy5maW5kKHIgPT4gci5pZCA9PT0gcmVjaXBlSWQpO1xuICAgIGlmIChyZWNpcGUpIHtcbiAgICAgIHJldHVybiBvZihyZWNpcGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQocmVjaXBlSWQsIHsgZmllbGRzOiB7IHJlY2lwZXM6IFsnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnXSB9IH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyID0+IHIuaXNfbG9hZGluZylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGhlbHAgdXMgdG8ga2VlcCBhIHRyYWNrIG9mIHJhbmRvbVxuICAgKiBhbmQgYXZvaWQgdG8gc2hvdyBzYW1lIHJlY2lwZSBtdXRpcGxlIHRpbWVzXG4gICAqL1xuICBwcml2YXRlIGluaXRSYW5kb21TZWVkKCk6IHZvaWQge1xuICAgIHRoaXMucmFuZG9tU2VlZCA9IERhdGUubm93KCk7XG4gIH1cblxuICBwcml2YXRlIHJlbG9hZEFsbFJlY2lwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWRSZWNpcGVzJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHN1Z2dlc3Rpb24gcmVxdWVzdCBib2R5IGJhc2VkIG9uIGNvbnRleHQgcGFzc2VkICYgY3VycmVudCByZXRhaWxlciBiYXNrZXRcbiAgICovXG4gIHByaXZhdGUgYnVpbGRTdWdnZXN0aW9uQm9keShjb250ZXh0OiB7IGlkOiBzdHJpbmc7IGhhc0hpZ2hXZWlnaHQ/OiBib29sZWFuIH1bXSk6IGFueSB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHNoZWxmX2luZ3JlZGllbnRzX2lkczogW10sIC8vIExvdyBwcmlvcml0eSBwcm9kdWN0c1xuICAgICAgY3VycmVudF9pbmdyZWRpZW50c19pZHM6IFtdLCAvLyBIaWdoIHByaW9yaXR5IHByb2R1Y3RzXG4gICAgICBiYXNrZXRfaW5ncmVkaWVudHNfaWRzOiBbXSxcbiAgICAgIGdyb3VwX2lkOiAnJ1xuICAgIH07XG4gICAgY29udGV4dC5mb3JFYWNoKHByb2R1Y3QgPT4ge1xuICAgICAgaWYgKHByb2R1Y3QuaGFzSGlnaFdlaWdodCkge1xuICAgICAgICBib2R5LmN1cnJlbnRfaW5ncmVkaWVudHNfaWRzLnB1c2gocHJvZHVjdC5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBib2R5LnNoZWxmX2luZ3JlZGllbnRzX2lkcy5wdXNoKHByb2R1Y3QuaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGJvZHkuYmFza2V0X2luZ3JlZGllbnRzX2lkcyA9IHRoaXMuc3VwcGxpZXJzU2VydmljZS5sYXN0U3VwcGxpZXJDYXJ0Lm1hcChwID0+IHAuaWQpO1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZGZpbHRlclVybEZyb21QcmVmZXJlbmNlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnByZWZlcmVuY2VzU2VydmljZS5hZGRQcmVmZXJlbmNlc1RvUmVtb3RlRmlsdGVycygpKS5tYXAoKFtrLCB2XSkgPT4gYCZmaWx0ZXJbJHtrfV09JHt2fWApLmpvaW4oJycpO1xuICB9XG59XG4iXX0=
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9yZWNpcGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBaUQsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBYyxFQUFFLEdBQVksTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBZSxNQUFNLEVBQU8sTUFBTSxZQUFZLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3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QUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7OzRFQXBqQlUsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uLCBEb2N1bWVudFJlc291cmNlLCBJUGFyYW1zLCBTZXJ2aWNlIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHNraXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZSwgUmVjaXBlLCBUYWcgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJbmdyZWRpZW50c1NlcnZpY2UgfSBmcm9tICcuL2luZ3JlZGllbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFja2FnZVNlcnZpY2UgfSBmcm9tICcuL3BhY2thZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1saWtlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlU3RhdHVzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVN0ZXBzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0ZXBzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZVNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS10eXBlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VvU2VydmljZSB9IGZyb20gJy4vc2VvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3BvbnNvclNlcnZpY2UgfSBmcm9tICcuL3Nwb25zb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZUxvY2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS1sb2NhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc1NlcnZpY2UgfSBmcm9tICcuL3RhZ3Muc2VydmljZSc7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuZXhwb3J0IGludGVyZmFjZSBSZWNpcGVEaXNwbGF5IHtcbiAgcHJldmlld0FsbG93ZWQ6IGJvb2xlYW47XG4gIHJlY2lwZTogUmVjaXBlO1xuICBwcmV2aWV3TW9kZTogYm9vbGVhbjtcbiAgd2FzQWRkZWQ6IGJvb2xlYW47XG4gIGZvcmNlPzogYm9vbGVhbjtcbiAgZGlzcGxheUd1ZXN0cz86IGJvb2xlYW47XG4gIGhlbHBCdXR0b25BbGxvd2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVjaXBlRGlzcGxheVBhcmFtcyB7XG4gIHByZXZpZXdBbGxvd2VkPzogYm9vbGVhbjtcbiAgZ3Vlc3RzPzogbnVtYmVyO1xuICBwcmV2aWV3TW9kZT86IGJvb2xlYW47XG4gIHdhc0FkZGVkPzogYm9vbGVhbjtcbiAgZGlzcGxheUd1ZXN0cz86IGJvb2xlYW47XG4gIGhlbHBCdXR0b25BbGxvd2VkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPFJlY2lwZT4ge1xuXG4gIHJlc291cmNlID0gUmVjaXBlO1xuICB0eXBlID0gJ3JlY2lwZXMnO1xuICBkaXNwbGF5ZWRSZWNpcGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNpcGVEaXNwbGF5PihudWxsKTtcbiAgZGlzcGxheUhlbHBlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzcGxheWVkUmVjaXBlQ2hhbmdlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuICByZWNpcGVEZXRhaWxzVGFiSW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KG51bGwpO1xuICBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXk6IHRydWUsIGFkZFRvQmFza2V0OiB0cnVlIH07XG4gIHJlY2lwZXNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheTogdHJ1ZSwgYWRkVG9CYXNrZXQ6IHRydWUgfTtcbiAgcmVsb2FkUmVjaXBlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlmZmljdWx0eUxldmVsczogeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtcbiAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ0ZhY2lsZScgfSxcbiAgICB7IHZhbHVlOiAyLCBsYWJlbDogJ01veWVuJyB9LFxuICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAnRGlmZmljaWxlJyB9XG4gIF07XG4gIGNvbmZpcm1hdGlvblRvYXN0ZXI6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSByYW5kb21TZWVkOiBudW1iZXI7XG4gIHByaXZhdGUgcmFuZG9tUmVjaXBlQ291bnQgPSAxO1xuICBwcml2YXRlIHJlY2lwZXM6IFJlY2lwZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHByb3ZpZGVyU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RhdHVzU2VydmljZTogUmVjaXBlU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHR5cGVTZXJ2aWNlOiBSZWNpcGVUeXBlU2VydmljZSxcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ncmVkaWVudHNTZXJ2aWNlOiBJbmdyZWRpZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVTdGVwc1NlcnZpY2U6IFJlY2lwZVN0ZXBzU2VydmljZSxcbiAgICBwcml2YXRlIHNwb25zb3JTZXJ2aWNlOiBTcG9uc29yU2VydmljZSxcbiAgICBwcml2YXRlIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRhZ3NTZXJ2aWNlOiBUYWdzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUxpa2VzU2VydmljZTogUmVjaXBlTGlrZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VvU2VydmljZTogU2VvU2VydmljZSxcbiAgICBwcml2YXRlIHByZWZlcmVuY2VzU2VydmljZTogUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmVMb2NhdG9yU2VydmljZTogU3RvcmVMb2NhdG9yU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmFwcGVuZERpc3BsYXllZFJlY2lwZVRvVXJsUXVlcnkoKTtcbiAgICB0aGlzLmluaXRSYW5kb21TZWVkKCk7XG4gIH1cblxuICBkaXNwbGF5UmVjaXBlSW5VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgcmVjaXBlSWQgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCdkaXNwbGF5UmVjaXBlJyk7XG4gICAgLy8gSWYgdGhlcmUgaXMgYSByZWNpcGUgaW4gVXJsLCBkaXNwbGF5IGl0IG9uIHN0YXJ0dXBcbiAgICBpZiAocmVjaXBlSWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheShyZWNpcGVJZCwgeyBwcmV2aWV3QWxsb3dlZDogdHJ1ZSwgcHJldmlld01vZGU6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRSZWNpcGVzKHJlY2lwZXNJbmZvczogeyBpZDogc3RyaW5nOyBndWVzdHM/OiBzdHJpbmcgfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAocmVjaXBlc0luZm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVjaXBlc0luZm9zLm1hcChpbmZvID0+IHRoaXMuZ2V0T3JGZXRjaChpbmZvLmlkKS5waXBlKFxuICAgICAgdGFwKHIgPT4ge1xuICAgICAgICBpZiAoaW5mby5ndWVzdHMpIHtcbiAgICAgICAgICByLm1vZGlmaWVkR3Vlc3RzID0gK2luZm8uZ3Vlc3RzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVjaXBlcy5wdXNoKHIpO1xuICAgICAgfSlcbiAgICApKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtYW5kYXRvcnkgZGF0YSAoZ3Vlc3QsIHBvcyBpZCkgY29tcGxldGlvbiB0byB0aGUgZ2l2ZW4gZmlsdGVycy5cbiAgICovXG4gIGFkZE1hbmRhdG9yeUNvbXBsZXRpb25Ub0ZpbHRlcihmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzKTogT2JzZXJ2YWJsZTxSZWNpcGVGaWx0ZXJzPiB7XG4gICAgY29uc3QgcmVxdWVzdEZpbHRlcnMgPSBmaWx0ZXJzLmNvcHkoKTtcbiAgICAvLyBvbmx5IHNldCBwcmltYXJ5X2NvbXBsZXRpb25fcGVyYyBpZiBub3Qgc2VhcmNoaW5nIGZhdm9yaXRlIHJlY2lwZXNcbiAgICBpZiAocmVxdWVzdEZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnMubGlrZWQpIHtcbiAgICAgIHJldHVybiBvZihyZXF1ZXN0RmlsdGVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucG9zU2VydmljZS5wb3NXYXNJbml0aWFsaXplZCgpLnBpcGUoXG4gICAgICBza2lwV2hpbGUod2FzSW5pdGlhbGl6ZWQgPT4gIXdhc0luaXRpYWxpemVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBvc1NlcnZpY2UucG9zJCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKChwb3M6IFBvaW50T2ZTYWxlKSA9PiB7XG4gICAgICAgIGlmIChwb3M/LmlkKSB7XG4gICAgICAgICAgLy8gbnVtYmVyIG9mIGd1ZXN0cyBhbmQgcG9pbnQgb2Ygc2FsZSBpZCBhcmUgbWFuZGF0b3J5IGluIG9yZGVyIHRvIHVzZSBwcmltYXJ5X2NvbXBsZXRpb25fcGVyYyBmaWx0ZXJcbiAgICAgICAgICByZXF1ZXN0RmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMsXG4gICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgIGd1ZXN0czogJzQnLFxuICAgICAgICAgICAgICBwb2ludF9vZl9zYWxlX2lkOiBwb3MuaWQsXG4gICAgICAgICAgICAgIHByaW1hcnlfY29tcGxldGlvbl9wZXJjOiAnMTAwLDEwMCcsXG4gICAgICAgICAgICAgIGZvcmNlZF9jb21wbGV0aW9uX3BlcmM6ICcxMDAsMTAwJyxcbiAgICAgICAgICAgICAgLi4uZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVyc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3RGaWx0ZXJzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cblxuICAvLyBSZXR1cm5zIGxpc3Qgb2YgZmlsdGVyZWQgcmVjaXBlcy5cbiAgLy8gRmlsdGVycyBhbmQgcGFnZSBwYXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuXG4gIC8vIE51bWJlciBvZiBndWVzdHMgYW5kIHJhbmRvbWl6YXRpb24gYXJlIG9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgZmlsdGVyKFxuICAgIGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMsXG4gICAgcGFnZTogeyBudW1iZXI6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0sXG4gICAgaW5jbHVkZXM6IHN0cmluZ1tdID0gW10sXG4gICAgZmllbGRzID0ge30sXG4gICAgZ3Vlc3RzOiBudW1iZXIgPSBudWxsLFxuICAgIHJhbmRvbTogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHNvcnQgPSAnJ1xuICApOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgbGV0IHJlY2lwZXM6IFJlY2lwZVtdO1xuICAgIGNvbnN0IGxpa2VkRmlsdGVyID0gZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycy5saWtlZCA/IHsgbGlrZWQ6ICd0cnVlJyB9IDogbnVsbDtcbiAgICBjb25zdCByZW1vdGVmaWx0ZXIgPSBsaWtlZEZpbHRlciB8fCB0aGlzLnByZWZlcmVuY2VzU2VydmljZS5hZGRQcmVmZXJlbmNlc1RvUmVtb3RlRmlsdGVycyh0aGlzLmJ1aWxkUmVtb3RlRmlsdGVycyhmaWx0ZXJzLCBndWVzdHMpKTtcblxuICAgIGlmIChyYW5kb20pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVtb3RlZmlsdGVyLCB7IHJhbmRvbTogdGhpcy5yYW5kb21TZWVkIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGwoeyBwYWdlLCByZW1vdGVmaWx0ZXIsIGluY2x1ZGU6IGluY2x1ZGVzLCBzb3J0OiBbc29ydF0sIGZpZWxkcyB9KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4pID0+IHtcbiAgICAgICAgcmVjaXBlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICBpZiAoZ3Vlc3RzICYmIGd1ZXN0cyA+IDApIHtcbiAgICAgICAgICByZWNpcGVzLmZvckVhY2gociA9PiByLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UuYWRkTGlrZXNUb1JlY2lwZXMocmVjaXBlcyk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiByZWNpcGVzKVxuICAgICk7XG4gIH1cblxuICBsb2FkUmVjaXBlc0Zyb21QYWNrYWdlSWQocGFja2FnZUlkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBndWVzdHM6IG51bWJlcik6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBjb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG4gICAgY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICAgICAgcmVjaXBlczogWyd0aXRsZScsXG4gICAgICAgICdudW1iZXItb2YtZ3Vlc3RzJyxcbiAgICAgICAgJ21lZGlhLXVybCcsXG4gICAgICAgICd2aWRlby1pZCcsXG4gICAgICAgICdmaWxpZ3JhbmUtbG9nby11cmwnLFxuICAgICAgICAnZGlmZmljdWx0eScsXG4gICAgICAgICdwcmVwYXJhdGlvbi10aW1lJyxcbiAgICAgICAgJ2Nvb2tpbmctdGltZScsXG4gICAgICAgICdyZXN0aW5nLXRpbWUnLCAuLi5yZWNpcGVJbmNsdWRlc10sXG4gICAgICBzcG9uc29yczogWydsb2dvLXVybCddLFxuICAgICAgWydyZWNpcGUtcHJvdmlkZXInXTogWyduYW1lJ11cbiAgICB9O1xuICAgIGNvbnN0IHBhY2thZ2VGaWx0ZXIgPSBuZXcgUmVjaXBlRmlsdGVycyh7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBwYWNrYWdlczogcGFja2FnZUlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1hbmRhdG9yeUNvbXBsZXRpb25Ub0ZpbHRlcihwYWNrYWdlRmlsdGVyKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKHJlcXVlc3RGaWx0ZXJzID0+IHRoaXMuZmlsdGVyKFxuICAgICAgICByZXF1ZXN0RmlsdGVycyxcbiAgICAgICAgeyBzaXplLCBudW1iZXI6IHBhZ2UgfSxcbiAgICAgICAgcmVjaXBlSW5jbHVkZXMsXG4gICAgICAgIHJlY2lwZVNwYXJzZUZpZWxkcyxcbiAgICAgICAgZ3Vlc3RzLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgJ3Bvc2l0aW9uJ1xuICAgICAgKSlcbiAgICApO1xuICB9XG5cbiAgLy8gRmV0Y2hlcyByZWNpcGVzIGNvcnJlc3BvbmRpbmcgdG8gZmlsdGVycywgYW5kIHJldHVybiB0b3RhbCByZWNpcGVzIGNvdW50XG4gIGZpbHRlckNvdW50KGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMsIGd1ZXN0czogbnVtYmVyID0gbnVsbCwgZXhjbHVkZWRSZWNpcGVzSWRzOiBzdHJpbmdbXSA9IFtdLCBmcm9tUHJlZmVyZW5jZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBjb25zdCBmID0gdGhpcy5wcmVmZXJlbmNlc1NlcnZpY2UuYWRkUHJlZmVyZW5jZXNUb1JlbW90ZUZpbHRlcnModGhpcy5idWlsZFJlbW90ZUZpbHRlcnMoZmlsdGVycywgZ3Vlc3RzKSwgZnJvbVByZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWxsKHsgcmVtb3RlZmlsdGVyOiBmLCBwYWdlOiB7IG51bWJlcjogMSwgc2l6ZTogMSB9LCBmaWVsZHM6IHsgcmVjaXBlczogWydpZCddIH0gfSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgbWFwKChyZXN1bHQ6IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+KSA9PiB7XG4gICAgICAgIC8vIEFwcGFyZW50bHkgdG90YWxfcmVzb3VyY2UgPSAxIGV2ZW4gaWYgbm8gcmVzdWx0IHdhcyBmb3VuZCBzbyB3ZSBoYXZlIHRvIGNoZWNrXG4gICAgICAgIGxldCByZWNpcGVzTnVtYmVyID0gcmVzdWx0LmRhdGEubGVuZ3RoID8gcmVzdWx0LnBhZ2U/LnRvdGFsX3Jlc291cmNlcyA6IDA7XG4gICAgICAgIHJlY2lwZXNOdW1iZXIgLT0gcmVzdWx0LmRhdGEuZmlsdGVyKHIgPT4gZXhjbHVkZWRSZWNpcGVzSWRzLmluY2x1ZGVzKHIuaWQpKS5sZW5ndGg7XG4gICAgICAgIHJldHVybiByZWNpcGVzTnVtYmVyO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlbW90ZUZpbHRlcnMoZmlsdGVyczogUmVjaXBlRmlsdGVycywgZ3Vlc3RzOiBudW1iZXIgPSBudWxsKToge1xuICAgIHNlYXJjaD86IHN0cmluZztcbiAgICAndG90YWwtdGltZSc/OiBzdHJpbmc7XG4gICAgcHJpY2U/OiBzdHJpbmc7XG4gICAgZGlmZmljdWx0eT86IHN0cmluZztcbiAgICBwb2ludF9vZl9zYWxlX2lkPzogc3RyaW5nO1xuICAgIGd1ZXN0cz86IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgZGlmZmljdWx0eSA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVycy5kaWZmaWN1bHR5LCAnLScpO1xuICAgIGNvbnN0IGNvc3QgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcnMuY29zdCwgJy0nKT8uc3BsaXQoJy0nKTtcbiAgICBjb25zdCB0b3RhbFRpbWUgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcnMudGltZSwgJywnKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4oZGlmZmljdWx0eT8ubGVuZ3RoID4gMCkgPyB7IGRpZmZpY3VsdHk6IGRpZmZpY3VsdHkgKyAnLGVxJyB9IDoge30sIC8vIGV4OiBmaWx0ZXJbZGlmZmljdWx0eV09MS0yLTMsZXEgPT4gYWxsIGNoZWNrZWRcbiAgICAgIC4uLihjb3N0Py5sZW5ndGggPT09IDIpID8geyBjb21wdXRlZF9jb3N0OiBjb3N0WzBdICsgJyxndCwnICsgY29zdFsxXSArICcsbHQnIH0gOiB7fSwgLy8gZXg6IGZpbHRlcltjb3N0XT01LGd0LDEwLGx0ID0+IDUgPCBjb3N0IDwgMTBcbiAgICAgIC4uLih0b3RhbFRpbWU/Lmxlbmd0aCA+IDApID8geyAndG90YWwtdGltZSc6IHRvdGFsVGltZSB9IDoge30sXG4gICAgICAuLi4oZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycykgPyBmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLmZpbHRlcnMgOiB7fSxcbiAgICAgIC4uLihmaWx0ZXJzLnNlYXJjaCkgPyB7IHNlYXJjaDogZmlsdGVycy5zZWFyY2ggfSA6IHt9LFxuICAgICAgLi4uKGZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnMucHJpY2UpID8geyBwb2ludF9vZl9zYWxlX2lkOiB0aGlzLnBvc1NlcnZpY2UucG9zJC52YWx1ZS5pZCB9IDoge30sXG4gICAgICAuLi4oZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycy5wcmljZSAmJiBndWVzdHMgIT09IG51bGwpID8geyBndWVzdHM6IGd1ZXN0cy50b1N0cmluZygpIH0gOiB7fVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZERpc3BsYXllZFJlY2lwZVRvVXJsUXVlcnkoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKChyZWNpcGVEaXNwbGF5OiBSZWNpcGVEaXNwbGF5KSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMucmVtb3ZlRGlzcGxheVJlY2lwZUZyb21VcmxRdWVyeSgpKTtcbiAgICAgIGlmIChyZWNpcGVEaXNwbGF5Py5yZWNpcGUpIHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2Rpc3BsYXlSZWNpcGUnLCByZWNpcGVEaXNwbGF5LnJlY2lwZS5pZCk7XG4gICAgICB9XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwudG9TdHJpbmcoKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURpc3BsYXlSZWNpcGVGcm9tVXJsUXVlcnkoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICBjb25zdCBmaWx0ZXJlZFNlYXJjaCA9IHVybC5zcGxpdCgnPycpWzFdO1xuICAgIGlmIChmaWx0ZXJlZFNlYXJjaCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmaWx0ZXJlZFNlYXJjaCk7XG4gICAgICBwYXJhbXMuZGVsZXRlKCdkaXNwbGF5UmVjaXBlJyk7XG4gICAgICBjb25zdCBmaWx0ZXJlZFF1ZXJ5U3RyaW5nID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICBpZiAoZmlsdGVyZWRRdWVyeVN0cmluZykge1xuICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoZmlsdGVyZWRTZWFyY2gsIGZpbHRlcmVkUXVlcnlTdHJpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgLy8gUmVhZHMgdGhlIHZhbHVlcyBvZiBhIGZpZWxkIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgc3RyaW5nIHRvIHBhc3MgaW4gdGhlIHJlbW90ZUZpbHRlcnNcbiAgLy8gZXg6IGJ1aWxkUmVtb3RlRmlsdGVyKHtcbiAgLy8gICB7bmFtZTogJzEnLCB2YWx1ZTogdHJ1ZSwgdGV4dDogJ0ZhY2lsZSd9LFxuICAvLyAgIHtuYW1lOiAnMicsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01veWVuJ30sXG4gIC8vICAge25hbWU6ICczJywgdmFsdWU6IHRydWUsIHRleHQ6ICdEaWZmaWNpbGUnfVxuICAvLyB9LCAnLScpICA9PT4gJzEtMydcbiAgcHJpdmF0ZSBidWlsZFJlbW90ZUZpbHRlcihmaWx0ZXI6IFJlY2lwZUZpbHRlcltdLCBzZXBhcmF0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcikge1xuICAgICAgaWYgKGYudmFsdWUpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gZi5uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gRmV0Y2ggb25lIHJhbmRvbSByZWNpcGVcbiAgZ2V0UmFuZG9tKGluY2x1ZGVzOiBzdHJpbmdbXSA9IFtdLCBmaWVsZHMgPSB7fSk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICB0aGlzLnJhbmRvbVJlY2lwZUNvdW50Kys7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKFxuICAgICAgeyByZXZpZXdlZDogdHJ1ZSwgZXhjbHVkZV9ub19waWN0dXJlOiB0cnVlIH0gYXMgUmVjaXBlRmlsdGVycyxcbiAgICAgIHsgbnVtYmVyOiB0aGlzLnJhbmRvbVJlY2lwZUNvdW50LCBzaXplOiAxIH0sXG4gICAgICBpbmNsdWRlcyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIG51bGwsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIC8vIERlYm91bmNlIHRvIGxldCBlbm91Z2ggdGltZSBmb3IgdGhlIHBvcyB0byBiZSBkZWZpbmVkXG4gIGdldFN1Z2dlc3Rpb24oXG4gICAgY29udGV4dDogeyBpZDogc3RyaW5nOyBoYXNIaWdoV2VpZ2h0PzogYm9vbGVhbiB9W10sXG4gICAgaW5jbHVkZXM6IHN0cmluZ1tdID0gW10sXG4gICAgZmllbGRzID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGxldCBzdWdnZXN0aW9uRmllbGRzID0gJyc7XG4gICAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBzdWdnZXN0aW9uRmllbGRzICs9IGAmZmllbGRzWyR7a2V5fV09JHsoZmllbGRzW2tleV0gYXMgc3RyaW5nW10pLmpvaW4oJywnKX1gO1xuICAgIH0pO1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5zdXBwbGllciQsXG4gICAgICB0aGlzLnBvc1NlcnZpY2UucG9zV2FzSW5pdGlhbGl6ZWQoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUod2FzSW5pdGlhbGl6ZWQgPT4gIXdhc0luaXRpYWxpemVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucG9zU2VydmljZS5wb3MkKVxuICAgICAgKVxuICAgIF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0c1swXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHN3aXRjaE1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5idWlsZFN1Z2dlc3Rpb25Cb2R5KGNvbnRleHQpO1xuICAgICAgICBsZXQgc3VwcGxpZXJGaWx0ZXIgPSBgc3VwcGxpZXJfaWQ9JHtyZXN1bHRzWzBdLmlkfWA7XG4gICAgICAgIGlmIChyZXN1bHRzWzFdKSB7XG4gICAgICAgICAgc3VwcGxpZXJGaWx0ZXIgPSBgc3VwcGxpZXJfaWQ9JHtyZXN1bHRzWzBdLmlkfSZwb3NfaWQ9JHtyZXN1bHRzWzFdLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gTUlBTV9BUElfSE9TVCArIGByZWNpcGVzL3N1Z2dlc3Rpb25zPyR7c3VwcGxpZXJGaWx0ZXJ9JmFsbG93LWVtcHR5PXRydWUkeyhpbmNsdWRlcy5sZW5ndGggPiAwKSA/ICgnJmluY2x1ZGU9JyArIGluY2x1ZGVzLmpvaW4oJywnKSkgOiAnJ30ke3N1Z2dlc3Rpb25GaWVsZHN9JHt0aGlzLmJ1aWxkZmlsdGVyVXJsRnJvbVByZWZlcmVuY2VzKCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmV0dXJuZWRSZWNpcGVzOiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJlY2lwZXMuZmlsbChyZXR1cm5lZFJlY2lwZXMpO1xuICAgICAgICByZXR1cm4gcmVjaXBlcy5kYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoUmVjaXBlQnlFeHRJZChyZWNpcGVFeHRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBjb25zdCB1cmwgPSBgJHtNSUFNX0FQSV9IT1NUfXJlY2lwZXMvZXh0ZXJuYWwvJHtyZWNpcGVFeHRJZH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IERvY3VtZW50UmVzb3VyY2U8UmVjaXBlPikgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YT8uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IHJlY2lwZUV4dElkKSB7XG4gICAgICAgICAgY29uc3QgcmVjaXBlID0gdGhpcy5uZXcoKTtcbiAgICAgICAgICByZWNpcGUuZmlsbChyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJlY2lwZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFByaWNpbmcocmVjaXBlSWQ6IHN0cmluZywgcG9zSWQ6IHN0cmluZywgcHJpY2Vib29rS2V5OiBzdHJpbmcsIHNlcnZlczogbnVtYmVyID0gbnVsbCk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4ge1xuICAgIGlmICghcmVjaXBlSWQpIHtcbiAgICAgIHJldHVybiAob2YobnVsbCkgYXMgT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPik7XG4gICAgfVxuICAgIGxldCB1cmwgPSBNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvJHtyZWNpcGVJZH0vcHJpY2luZz9wb2ludF9vZl9zYWxlX2lkPSR7cG9zSWR9JnByaWNlYm9va19rZXk9JHtwcmljZWJvb2tLZXl9YDtcbiAgICBpZiAoc2VydmVzKSB7XG4gICAgICB1cmwgKz0gYCZzZXJ2ZXM9JHtzZXJ2ZXN9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBuZXcgUmVjaXBlUHJpY2luZyhyZXN1bHQpKVxuICAgICk7XG4gIH1cblxuICBnZW5lcmF0ZUZyb21QaWN0dXJlKGltYWdlQmFzZTY0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyAncmVjaXBlcy9nZW5lcmF0ZV9mcm9tX3BpY3R1cmUnO1xuICAgIGNvbnN0IGJvZHkgPSB7IGJhc2U2NF9pbWFnZTogaW1hZ2VCYXNlNjQgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBib2R5KTtcbiAgfVxuXG4gIC8vIE9wZW4gbW9kYWwgc2hvd2luZyByZWNpcGUgZGV0YWlsc1xuICBkaXNwbGF5KFxuICAgIHJlY2lwZUlkOiBzdHJpbmcsXG4gICAge1xuICAgICAgcHJldmlld0FsbG93ZWQgPSB0cnVlLFxuICAgICAgZ3Vlc3RzID0gbnVsbCxcbiAgICAgIHByZXZpZXdNb2RlID0gZmFsc2UsXG4gICAgICBkaXNwbGF5R3Vlc3RzID0gdHJ1ZSxcbiAgICAgIGhlbHBCdXR0b25BbGxvd2VkID0gdHJ1ZVxuICAgIH06IElSZWNpcGVEaXNwbGF5UGFyYW1zXG4gICk6IHZvaWQge1xuICAgIGlmICghcmVjaXBlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdldChyZWNpcGVJZCwgeyBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtdHlwZScsICdzcG9uc29ycycsICd0YWdzJywgJ3JlY2lwZS1wcm92aWRlciddIH0pXG4gICAgICAucGlwZShza2lwV2hpbGUocmVjaXBlID0+IHJlY2lwZS5pc19sb2FkaW5nKSlcbiAgICAgIC5zdWJzY3JpYmUocmVjaXBlID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5T2JqZWN0KHJlY2lwZSwgeyBwcmV2aWV3QWxsb3dlZCwgZ3Vlc3RzLCBwcmV2aWV3TW9kZSwgZGlzcGxheUd1ZXN0cywgaGVscEJ1dHRvbkFsbG93ZWQgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRpc3BsYXlPYmplY3QoXG4gICAgcmVjaXBlOiBSZWNpcGUsXG4gICAge1xuICAgICAgcHJldmlld0FsbG93ZWQgPSB0cnVlLFxuICAgICAgZ3Vlc3RzID0gbnVsbCxcbiAgICAgIHByZXZpZXdNb2RlID0gZmFsc2UsXG4gICAgICB3YXNBZGRlZCA9IGZhbHNlLFxuICAgICAgZGlzcGxheUd1ZXN0cyA9IHRydWUsXG4gICAgICBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWVcbiAgICB9OiBJUmVjaXBlRGlzcGxheVBhcmFtc1xuICApOiB2b2lkIHtcbiAgICBpZiAoIXJlY2lwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IGd1ZXN0cyB8fCArcmVjaXBlLmd1ZXN0cztcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dCh7IHByZXZpZXdBbGxvd2VkLCByZWNpcGUsIHByZXZpZXdNb2RlLCB3YXNBZGRlZCwgZGlzcGxheUd1ZXN0cywgaGVscEJ1dHRvbkFsbG93ZWQgfSk7XG4gIH1cblxuICBvcGVuQmFza2V0KGFuYWx5dGljc1BhdGg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLm5leHQoeyBwcmV2aWV3QWxsb3dlZDogdHJ1ZSwgcmVjaXBlOiBudWxsLCBwcmV2aWV3TW9kZTogdHJ1ZSwgd2FzQWRkZWQ6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ2Jhc2tldC5kaXNwbGF5JywgYW5hbHl0aWNzUGF0aCwge30pO1xuICB9XG5cbiAgb3BlblJlY2lwZURldGFpbHMocmVjaXBlSWQ6IHN0cmluZywgZ3Vlc3RzOiBudW1iZXIsIGluaXRpYWxUYWJJbmRleDogbnVtYmVyLCBwYXRoOiBzdHJpbmcgPSAnJywgY2F0ZWdvcnlJZDogc3RyaW5nID0gbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheShyZWNpcGVJZCwgeyBwcmV2aWV3QWxsb3dlZDogdHJ1ZSwgcHJldmlld01vZGU6IGZhbHNlLCBndWVzdHMgfSk7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzVGFiSW5kZXgkLm5leHQoaW5pdGlhbFRhYkluZGV4KTtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdyZWNpcGUuZGlzcGxheScsIHBhdGgsIHsgcmVjaXBlX2lkOiByZWNpcGVJZCwgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQgfSk7XG4gIH1cblxuICBvcGVuU3RvcmVMb2NhdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVMb2NhdG9yU2VydmljZS5jbG9zZU1vZGFsT25TZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5zdG9yZUxvY2F0b3JTZXJ2aWNlLm9wZW5TdG9yZUxvY2F0b3IodHJ1ZSk7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLm5leHQoe1xuICAgICAgcHJldmlld0FsbG93ZWQ6IGZhbHNlLFxuICAgICAgcmVjaXBlOiBudWxsLFxuICAgICAgcHJldmlld01vZGU6IHRydWUsXG4gICAgICB3YXNBZGRlZDogZmFsc2UsXG4gICAgICBmb3JjZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlSGVscGVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICAgIHRoaXMuZGlzcGxheUhlbHBlciQubmV4dCghdGhpcy5kaXNwbGF5SGVscGVyJC52YWx1ZSk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkUmVjaXBlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuaGlkZGVuLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBhZGRUYWdUb1JlY2lwZShyZWNpcGU6IFJlY2lwZSwgdGFnOiBUYWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvJHtyZWNpcGUuaWR9L3RhZ3MvJHt0YWcuaWR9YCwge30pO1xuICB9XG5cbiAgc2V0UmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zKGRpc3BsYXkgPSB0cnVlLCBhZGRUb0Jhc2tldCA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZXNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXksIGFkZFRvQmFza2V0IH07XG4gICAgdGhpcy5yZWxvYWRBbGxSZWNpcGVzKCk7XG4gIH1cblxuICBzZXRTdWdnZXN0aW9uc1ByaW1hcnlCdXR0b25BY3Rpb25zKGRpc3BsYXkgPSB0cnVlLCBhZGRUb0Jhc2tldCA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXksIGFkZFRvQmFza2V0IH07XG4gICAgdGhpcy5yZWxvYWRBbGxSZWNpcGVzKCk7XG4gIH1cblxuICBwbGFuKFxuICAgIGJ1ZGdldDogbnVtYmVyLFxuICAgIGd1ZXN0czogbnVtYmVyLFxuICAgIHJlY2lwZXNDb3VudDogbnVtYmVyLFxuICAgIGluY2x1ZGVzOiBzdHJpbmdbXSA9IFtdLFxuICAgIGZpZWxkcyA9IHt9LFxuICAgIGluQmFza2V0PzogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgbGV0IHBsYW5uZXJGaWVsZHMgPSAnJztcbiAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHBsYW5uZXJGaWVsZHMgKz0gYCZmaWVsZHNbJHtrZXl9XT0keyhmaWVsZHNba2V5XSBhcyBzdHJpbmdbXSkuam9pbignLCcpfWA7XG4gICAgfSk7XG4gICAgbGV0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyAncmVjaXBlcy9wbGFuJztcbiAgICB1cmwgKz0gYD9idWRnZXQ9JHtidWRnZXR9JmZpbHRlcltndWVzdHNdPSR7Z3Vlc3RzfSZyZWNpcGVzX2NvdW50PSR7cmVjaXBlc0NvdW50fSZmaWx0ZXJbcmVjaXBlX3R5cGVfaWRdPW1haW4tZGlzaGA7XG4gICAgdXJsICs9IGAmaW5jbHVkZT0ke2luY2x1ZGVzLmpvaW4oJywnKX0ke3BsYW5uZXJGaWVsZHN9JmZpbHRlcltyZWNpcGVfdHlwZV9pZF09bWFpbi1kaXNoJmZpbHRlcltwcmltYXJ5X2NvbXBsZXRpb25fcGVyY109MTAwLDEwMCZmaWx0ZXJbZm9yY2VkX2NvbXBsZXRpb25fcGVyY109MTAwLDEwMGA7XG4gICAgdXJsICs9IGluQmFza2V0ID09PSB1bmRlZmluZWQgPyAnJyA6IGAmZmlsdGVyW2luX2Jhc2tldF09JHtpbkJhc2tldH1gO1xuICAgIHVybCArPSB0aGlzLmJ1aWxkZmlsdGVyVXJsRnJvbVByZWZlcmVuY2VzKCk7XG4gICAgcmV0dXJuIHRoaXMucG9zU2VydmljZS53YWl0Rm9yUG9zLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKHBvcyA9PiB7XG4gICAgICAgIHVybCArPSBgJmZpbHRlcltwb2ludF9vZl9zYWxlX2lkXT0ke3Bvcy5pZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHt9KS5waXBlKFxuICAgICAgICAgIG1hcCgocmV0dXJuZWRSZWNpcGVzOiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjaXBlcyA9IHRoaXMubmV3Q29sbGVjdGlvbigpO1xuICAgICAgICAgICAgcmVjaXBlcy5maWxsKHJldHVybmVkUmVjaXBlcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVjaXBlcy5kYXRhO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBtYXhQbGFubmFibGVSZWNpcGVzKGJ1ZGdldDogbnVtYmVyLCBndWVzdHM6IG51bWJlciwgaW5CYXNrZXQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBsZXQgdXJsID0gTUlBTV9BUElfSE9TVCArICdyZWNpcGVzL3BsYW5fbWF4X3JlY2lwZXMnO1xuICAgIHVybCArPSBgP2J1ZGdldD0ke2J1ZGdldH0mZmlsdGVyW2d1ZXN0c109JHtndWVzdHN9JmZpbHRlcltyZWNpcGVfdHlwZV9pZF09bWFpbi1kaXNoJmZpbHRlcltwcmltYXJ5X2NvbXBsZXRpb25fcGVyY109MTAwLDEwMCZmaWx0ZXJbZm9yY2VkX2NvbXBsZXRpb25fcGVyY109MTAwLDEwMGA7XG4gICAgdXJsICs9IGluQmFza2V0ID09PSB1bmRlZmluZWQgPyAnJyA6IGAmZmlsdGVyW2luX2Jhc2tldF09JHtpbkJhc2tldH1gO1xuICAgIHVybCArPSB0aGlzLmJ1aWxkZmlsdGVyVXJsRnJvbVByZWZlcmVuY2VzKCk7XG4gICAgcmV0dXJuIHRoaXMucG9zU2VydmljZS53YWl0Rm9yUG9zLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKHBvcyA9PiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgICB1cmwgKz0gYCZmaWx0ZXJbcG9pbnRfb2Zfc2FsZV9pZF09JHtwb3MuaWR9YCxcbiAgICAgICAge31cbiAgICAgICkpLFxuICAgICAgbWFwKChyZXN1bHQ6IHsgbWF4X3JlY2lwZXM6IG51bWJlciB9KSA9PiByZXN1bHQubWF4X3JlY2lwZXMpXG4gICAgKTtcbiAgfVxuXG4gIGdldEluZ3JlZGllbnRzQnlSZWNpcGVJZChyZWNpcGVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiBJUGFyYW1zID0ge1xuICAgICAgaW5jbHVkZTogWydpbmdyZWRpZW50cyddLFxuICAgICAgZmllbGRzOiB7IHJlY2lwZXM6IFsnaW5ncmVkaWVudHMnXSB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5nZXQocmVjaXBlSWQsIHBhcmFtcyk7XG4gIH1cblxuICBzZWFyY2goXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcnM6IHtcbiAgICAgIHBhcnRuZXI6IGJvb2xlYW47XG4gICAgICBzdGF0dXNlcz86IHN0cmluZ1tdO1xuICAgICAgdHlwZXM6IHN0cmluZ1tdO1xuICAgICAgcHJvdmlkZXJzOiBzdHJpbmdbXTtcbiAgICAgIHBhY2thZ2VzOiBzdHJpbmdbXTtcbiAgICB9LFxuICAgIHBhZ2U6IHsgc2l6ZTogbnVtYmVyOyBudW1iZXI6IG51bWJlciB9LFxuICAgIGluY2x1ZGU6IHN0cmluZ1tdLFxuICAgIHNvcnQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+PiB7XG4gICAgbGV0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy9zZWFyY2g/bmFtZT0ke25hbWV9YDtcbiAgICB1cmwgKz0gYCZwYWdlW3NpemVdPSR7cGFnZS5zaXplIHx8IDIwfSZwYWdlW251bWJlcl09JHtwYWdlLm51bWJlciB8fCAxfSZwYXJ0bmVyPSR7ZmlsdGVycy5wYXJ0bmVyfWA7XG4gICAgZmlsdGVycy5zdGF0dXNlcy5mb3JFYWNoKHN0YXR1cyA9PiB1cmwgKz0gYCZyZWNpcGVfc3RhdHVzX2lkc1tdPSR7c3RhdHVzfWApO1xuICAgIHVybCArPSBmaWx0ZXJzLnR5cGVzLmxlbmd0aCA/IGAmZmlsdGVyW3JlY2lwZV90eXBlX2lkXT0ke2ZpbHRlcnMudHlwZXMuam9pbignLCcpfWAgOiAnJztcbiAgICB1cmwgKz0gZmlsdGVycy5wcm92aWRlcnMubGVuZ3RoID8gYCZmaWx0ZXJbcmVjaXBlX3Byb3ZpZGVyX2lkXT0ke2ZpbHRlcnMucHJvdmlkZXJzLmpvaW4oJywnKX1gIDogJyc7XG4gICAgdXJsICs9IGZpbHRlcnMucGFja2FnZXMubGVuZ3RoID8gYCZmaWx0ZXJbcGFja2FnZXNdPSR7ZmlsdGVycy5wYWNrYWdlcy5qb2luKCcsJyl9YCA6ICcnO1xuICAgIHVybCArPSBpbmNsdWRlLmxlbmd0aCA/IGAmaW5jbHVkZT0ke2luY2x1ZGUuam9pbignLCcpfWAgOiAnJztcbiAgICB1cmwgKz0gc29ydCA/IGAmc29ydD0ke3NvcnR9YCA6ICcnO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge30pLnBpcGUoXG4gICAgICBtYXAoKHJldHVybmVkUmVjaXBlczogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4pID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBlcyA9IHRoaXMubmV3Q29sbGVjdGlvbigpO1xuICAgICAgICByZWNpcGVzLmZpbGwocmV0dXJuZWRSZWNpcGVzKTtcbiAgICAgICAgcmV0dXJuIHJlY2lwZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBERVBSRUNBVEVEIC8gdXNlIFRUTCBpbnN0ZWFkXG4gIHByaXZhdGUgZ2V0T3JGZXRjaChyZWNpcGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBjb25zdCByZWNpcGUgPSB0aGlzLnJlY2lwZXMuZmluZChyID0+IHIuaWQgPT09IHJlY2lwZUlkKTtcbiAgICBpZiAocmVjaXBlKSB7XG4gICAgICByZXR1cm4gb2YocmVjaXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KHJlY2lwZUlkLCB7IGZpZWxkczogeyByZWNpcGVzOiBbJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJ10gfSB9KS5waXBlKFxuICAgICAgICBza2lwV2hpbGUociA9PiByLmlzX2xvYWRpbmcpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBoZWxwIHVzIHRvIGtlZXAgYSB0cmFjayBvZiByYW5kb21cbiAgICogYW5kIGF2b2lkIHRvIHNob3cgc2FtZSByZWNpcGUgbXV0aXBsZSB0aW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0UmFuZG9tU2VlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJhbmRvbVNlZWQgPSBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWRBbGxSZWNpcGVzKCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkUmVjaXBlcyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBzdWdnZXN0aW9uIHJlcXVlc3QgYm9keSBiYXNlZCBvbiBjb250ZXh0IHBhc3NlZCAmIGN1cnJlbnQgcmV0YWlsZXIgYmFza2V0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkU3VnZ2VzdGlvbkJvZHkoY29udGV4dDogeyBpZDogc3RyaW5nOyBoYXNIaWdoV2VpZ2h0PzogYm9vbGVhbiB9W10pOiBhbnkge1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBzaGVsZl9pbmdyZWRpZW50c19pZHM6IFtdLCAvLyBMb3cgcHJpb3JpdHkgcHJvZHVjdHNcbiAgICAgIGN1cnJlbnRfaW5ncmVkaWVudHNfaWRzOiBbXSwgLy8gSGlnaCBwcmlvcml0eSBwcm9kdWN0c1xuICAgICAgYmFza2V0X2luZ3JlZGllbnRzX2lkczogW10sXG4gICAgICBncm91cF9pZDogJydcbiAgICB9O1xuICAgIGNvbnRleHQuZm9yRWFjaChwcm9kdWN0ID0+IHtcbiAgICAgIGlmIChwcm9kdWN0Lmhhc0hpZ2hXZWlnaHQpIHtcbiAgICAgICAgYm9keS5jdXJyZW50X2luZ3JlZGllbnRzX2lkcy5wdXNoKHByb2R1Y3QuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm9keS5zaGVsZl9pbmdyZWRpZW50c19pZHMucHVzaChwcm9kdWN0LmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBib2R5LmJhc2tldF9pbmdyZWRpZW50c19pZHMgPSB0aGlzLnN1cHBsaWVyc1NlcnZpY2UubGFzdFN1cHBsaWVyQ2FydC5tYXAocCA9PiBwLmlkKTtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRmaWx0ZXJVcmxGcm9tUHJlZmVyZW5jZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5wcmVmZXJlbmNlc1NlcnZpY2UuYWRkUHJlZmVyZW5jZXNUb1JlbW90ZUZpbHRlcnMoKSkubWFwKChbaywgdl0pID0+IGAmZmlsdGVyWyR7a31dPSR7dn1gKS5qb2luKCcnKTtcbiAgfVxufVxuIl19
|
|
@@ -14,6 +14,7 @@ export class StoreLocatorService {
|
|
|
14
14
|
this.storeLocatorOpened$ = new BehaviorSubject(false);
|
|
15
15
|
this.newStoreSelected$ = new Subject();
|
|
16
16
|
this.closeModalOnSelected = false;
|
|
17
|
+
this.closeModalOnCancel = false;
|
|
17
18
|
this.showStoreLocatorWarning = new BehaviorSubject(false);
|
|
18
19
|
this.showNoSupplierOnboarding = new BehaviorSubject(false);
|
|
19
20
|
this.changePosAfterWarnConfirm = true;
|
|
@@ -43,7 +44,8 @@ export class StoreLocatorService {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
isStoreLocatorWarningNeeded(supplierId) {
|
|
46
|
-
return /Mobi|Android|iPhone/i.test(navigator.userAgent) && supplierId === '7';
|
|
47
|
+
// return /Mobi|Android|iPhone/i.test(navigator.userAgent) && supplierId === '7';
|
|
48
|
+
return false; // deactivated for now
|
|
47
49
|
}
|
|
48
50
|
changePos() {
|
|
49
51
|
this.subscriptions.push(this.posService.loadPos(this.selectedPosId).pipe(skipWhile(pos => !pos || pos.id !== this.selectedPosId), switchMap((pos) => {
|
|
@@ -67,7 +69,12 @@ export class StoreLocatorService {
|
|
|
67
69
|
}
|
|
68
70
|
closeStoreLocator() {
|
|
69
71
|
if (this.storeLocatorOpened$.value) {
|
|
70
|
-
|
|
72
|
+
if (this.storeLocatorEventTrace) {
|
|
73
|
+
this.analyticsService.sendEvent('locator.close', `${this.storeLocatorEventTrace.originPath}/locator`, {});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.closeModalOnCancel = true;
|
|
77
|
+
}
|
|
71
78
|
this.storeLocatorOpenedTimestamp = 0;
|
|
72
79
|
}
|
|
73
80
|
this.storeLocatorOpened$.next(false);
|
|
@@ -98,4 +105,4 @@ StoreLocatorService.ɵprov = i0.ɵɵdefineInjectable({ token: StoreLocatorServic
|
|
|
98
105
|
providedIn: 'root'
|
|
99
106
|
}]
|
|
100
107
|
}], function () { return [{ type: i1.AnalyticsService }, { type: i2.PointOfSalesService }]; }, null); })();
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9zdG9yZS1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLL0QsTUFBTSxPQUFPLG1CQUFtQjtJQWM5QixZQUNVLGdCQUFrQyxFQUNsQyxVQUErQjtRQUQvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBZHpDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUk3Qiw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5RCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUUvRCw4QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFNL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssQ0FB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dWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGUgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlTG9jYXRvclNlcnZpY2Uge1xuXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHN0b3JlTG9jYXRvck9wZW5lZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbmV3U3RvcmVTZWxlY3RlZCQgPSBuZXcgU3ViamVjdCgpO1xuICBjbG9zZU1vZGFsT25TZWxlY3RlZCA9IGZhbHNlO1xuICBzZWxlY3RlZFBvc0lkOiBzdHJpbmc7XG4gIHNlbGVjdGVkU3VwcGxpZXJOYW1lOiBzdHJpbmc7XG4gIHN0b3JlTG9jYXRvckV2ZW50VHJhY2U6IEV2ZW50VHJhY2U7XG4gIHNob3dTdG9yZUxvY2F0b3JXYXJuaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHNob3dOb1N1cHBsaWVyT25ib2FyZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBzdG9yZUxvY2F0b3JPcGVuZWRUaW1lc3RhbXA6IG51bWJlcjtcbiAgY2hhbmdlUG9zQWZ0ZXJXYXJuQ29uZmlybSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN0b3JlTG9jYXRvck9wZW5lZCQuc3Vic2NyaWJlKG9wZW5lZCA9PiB7XG4gICAgICBpZiAob3BlbmVkICYmIHRoaXMuc3RvcmVMb2NhdG9yT3BlbmVkVGltZXN0YW1wICE9PSAwKSB7XG4gICAgICAgIHRoaXMuc3RvcmVMb2NhdG9yT3BlbmVkVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZVBvc0FuZFN1cHBsaWVyKGU6IEN1c3RvbUV2ZW50LCBldmVudFRyYWNlOiBFdmVudFRyYWNlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9zU2VydmljZS5wb3MkPy52YWx1ZT8uaWQgPT09IGUuZGV0YWlsLnBvc0lkKSB7XG4gICAgICB0aGlzLmNsb3NlU3RvcmVMb2NhdG9yKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQb3NJZCA9IGUuZGV0YWlsLnBvc0lkO1xuICAgIHRoaXMuc2VsZWN0ZWRTdXBwbGllck5hbWUgPSBlLmRldGFpbC5zdXBwbGllck5hbWVcbiAgICB0aGlzLnN0b3JlTG9jYXRvckV2ZW50VHJhY2UgPSBldmVudFRyYWNlO1xuICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2sgaXMgc3VwcG9zZWQgdG8gYmUgdGVtcG9yYXJ5IFRPRE8gcmVtb3ZlXG4gICAgaWYgKHRoaXMuaXNTdG9yZUxvY2F0b3JXYXJuaW5nTmVlZGVkKGUuZGV0YWlsLnN1cHBsaWVySWQgYXMgc3RyaW5nKSkge1xuICAgICAgdGhpcy5jaGFuZ2VQb3NBZnRlcldhcm5Db25maXJtID0gdHJ1ZTtcbiAgICAgIC8vIEN1cnJlbnQgZGV2aWNlIGlzIGEgbW9iaWxlIGRldmljZSBhbmQgdGhlIGNob3NlbiBzdXBwbGllciBoYXMgbm90IGRlYWN0aXZhdGVkIGRlZXAgbGlua3NcbiAgICAgIHRoaXMuc2hvd1N0b3JlTG9jYXRvcldhcm5pbmcubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmNoYW5nZVBvcygpO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RvcmVMb2NhdG9yV2FybmluZ05lZWRlZChzdXBwbGllcklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL01vYml8QW5kcm9pZHxpUGhvbmUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIHN1cHBsaWVySWQgPT09ICc3JztcbiAgfVxuXG4gIGNoYW5nZVBvcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucG9zU2VydmljZS5sb2FkUG9zKHRoaXMuc2VsZWN0ZWRQb3NJZCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHBvcyA9PiAhcG9zIHx8IHBvcy5pZCAhPT0gdGhpcy5zZWxlY3RlZFBvc0lkKSxcbiAgICAgICAgc3dpdGNoTWFwKChwb3M6IFBvaW50T2ZTYWxlKSA9PiB7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICAgICAgICdsb2NhdG9yLnNlbGVjdCcsXG4gICAgICAgICAgICBgJHt0aGlzLnN0b3JlTG9jYXRvckV2ZW50VHJhY2Uub3JpZ2luUGF0aH0vbG9jYXRvcmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBvc19uYW1lOiBwb3MuYXR0cmlidXRlcy5uYW1lLFxuICAgICAgICAgICAgICBwb3NfaWQ6IHBvcy5pZCxcbiAgICAgICAgICAgICAgc3VwcGxpZXJfbmFtZTogdGhpcy5zZWxlY3RlZFN1cHBsaWVyTmFtZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL25vU3VwcGxpZXIvcG9zSWQnLCBwb3MuaWQpO1xuICAgICAgICAgIHJldHVybiB0aGlzLnBvc1NlcnZpY2UuYmFza2V0TG9hZGVkRm9yTmV3UG9zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubmV3U3RvcmVTZWxlY3RlZCQubmV4dCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VTdG9yZUxvY2F0b3IoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgb3BlblN0b3JlTG9jYXRvcihza2lwT25ib2FyZGluZyA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS9ub1N1cHBsaWVyL3Bvc0lkJykgJiYgIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL25vU3VwcGxpZXIvb25ib2FyZGluZycpICYmICFza2lwT25ib2FyZGluZ1xuICAgICkge1xuICAgICAgdGhpcy5zaG93Tm9TdXBwbGllck9uYm9hcmRpbmcubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZUxvY2F0b3JPcGVuZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBjbG9zZVN0b3JlTG9jYXRvcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZUxvY2F0b3JPcGVuZWQkLnZhbHVlKSB7XG4gICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgICAnbG9jYXRvci5jbG9zZScsXG4gICAgICAgIGAke3RoaXMuc3RvcmVMb2NhdG9yRXZlbnRUcmFjZS5vcmlnaW5QYXRofS9sb2NhdG9yYCxcbiAgICAgICAge31cbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlTG9jYXRvck9wZW5lZFRpbWVzdGFtcCA9IDA7XG4gICAgfVxuICAgIHRoaXMuc3RvcmVMb2NhdG9yT3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNob3dDaGFuZ2UoZTogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZS5kZXRhaWwuc2hvdyBhcyBib29sZWFuKSB7XG4gICAgICB0aGlzLm9wZW5TdG9yZUxvY2F0b3IoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlU3RvcmVMb2NhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoQ2hhbmdlKGU6IEN1c3RvbUV2ZW50PHsgc2VhcmNoVGVybTogc3RyaW5nOyBzdG9yZXNGb3VuZENvdW50OiBudW1iZXIgfT4sIGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ2xvY2F0b3Iuc2VhcmNoJyxcbiAgICAgIGV2ZW50VHJhY2Uub3JpZ2luUGF0aCxcbiAgICAgIHtcbiAgICAgICAgc2VhcmNoX3Rlcm06IGUuZGV0YWlsLnNlYXJjaFRlcm0sXG4gICAgICAgIHN0b3Jlc19mb3VuZF9jb3VudDogZS5kZXRhaWwuc3RvcmVzRm91bmRDb3VudC50b1N0cmluZygpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9zdG9yZS1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLL0QsTUFBTSxPQUFPLG1CQUFtQjtJQWU5QixZQUNVLGdCQUFrQyxFQUNsQyxVQUErQjtRQUQvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBZnpDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFJM0IsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDOUQsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFL0QsOEJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBTS9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxNQUFNLElB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O2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlIH0gZnJvbSAnLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuL3BvaW50LW9mLXNhbGVzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdG9yZUxvY2F0b3JTZXJ2aWNlIHtcblxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBzdG9yZUxvY2F0b3JPcGVuZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIG5ld1N0b3JlU2VsZWN0ZWQkID0gbmV3IFN1YmplY3QoKTtcbiAgY2xvc2VNb2RhbE9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgY2xvc2VNb2RhbE9uQ2FuY2VsID0gZmFsc2U7XG4gIHNlbGVjdGVkUG9zSWQ6IHN0cmluZztcbiAgc2VsZWN0ZWRTdXBwbGllck5hbWU6IHN0cmluZztcbiAgc3RvcmVMb2NhdG9yRXZlbnRUcmFjZTogRXZlbnRUcmFjZTtcbiAgc2hvd1N0b3JlTG9jYXRvcldhcm5pbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgc2hvd05vU3VwcGxpZXJPbmJvYXJkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHN0b3JlTG9jYXRvck9wZW5lZFRpbWVzdGFtcDogbnVtYmVyO1xuICBjaGFuZ2VQb3NBZnRlcldhcm5Db25maXJtID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3RvcmVMb2NhdG9yT3BlbmVkJC5zdWJzY3JpYmUob3BlbmVkID0+IHtcbiAgICAgIGlmIChvcGVuZWQgJiYgdGhpcy5zdG9yZUxvY2F0b3JPcGVuZWRUaW1lc3RhbXAgIT09IDApIHtcbiAgICAgICAgdGhpcy5zdG9yZUxvY2F0b3JPcGVuZWRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlUG9zQW5kU3VwcGxpZXIoZTogQ3VzdG9tRXZlbnQsIGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wb3NTZXJ2aWNlLnBvcyQ/LnZhbHVlPy5pZCA9PT0gZS5kZXRhaWwucG9zSWQpIHtcbiAgICAgIHRoaXMuY2xvc2VTdG9yZUxvY2F0b3IoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFBvc0lkID0gZS5kZXRhaWwucG9zSWQ7XG4gICAgdGhpcy5zZWxlY3RlZFN1cHBsaWVyTmFtZSA9IGUuZGV0YWlsLnN1cHBsaWVyTmFtZVxuICAgIHRoaXMuc3RvcmVMb2NhdG9yRXZlbnRUcmFjZSA9IGV2ZW50VHJhY2U7XG4gICAgLy8gVGhlIGZvbGxvd2luZyBjaGVjayBpcyBzdXBwb3NlZCB0byBiZSB0ZW1wb3JhcnkgVE9ETyByZW1vdmVcbiAgICBpZiAodGhpcy5pc1N0b3JlTG9jYXRvcldhcm5pbmdOZWVkZWQoZS5kZXRhaWwuc3VwcGxpZXJJZCBhcyBzdHJpbmcpKSB7XG4gICAgICB0aGlzLmNoYW5nZVBvc0FmdGVyV2FybkNvbmZpcm0gPSB0cnVlO1xuICAgICAgLy8gQ3VycmVudCBkZXZpY2UgaXMgYSBtb2JpbGUgZGV2aWNlIGFuZCB0aGUgY2hvc2VuIHN1cHBsaWVyIGhhcyBub3QgZGVhY3RpdmF0ZWQgZGVlcCBsaW5rc1xuICAgICAgdGhpcy5zaG93U3RvcmVMb2NhdG9yV2FybmluZy5uZXh0KHRydWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuY2hhbmdlUG9zKCk7XG4gICAgfVxuICB9XG5cbiAgaXNTdG9yZUxvY2F0b3JXYXJuaW5nTmVlZGVkKHN1cHBsaWVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIHJldHVybiAvTW9iaXxBbmRyb2lkfGlQaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgc3VwcGxpZXJJZCA9PT0gJzcnO1xuICAgIHJldHVybiBmYWxzZTsgLy8gZGVhY3RpdmF0ZWQgZm9yIG5vd1xuICB9XG5cbiAgY2hhbmdlUG9zKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLmxvYWRQb3ModGhpcy5zZWxlY3RlZFBvc0lkKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUocG9zID0+ICFwb3MgfHwgcG9zLmlkICE9PSB0aGlzLnNlbGVjdGVkUG9zSWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHBvczogUG9pbnRPZlNhbGUpID0+IHtcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgICAgICAgJ2xvY2F0b3Iuc2VsZWN0JyxcbiAgICAgICAgICAgIGAke3RoaXMuc3RvcmVMb2NhdG9yRXZlbnRUcmFjZS5vcmlnaW5QYXRofS9sb2NhdG9yYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9zX25hbWU6IHBvcy5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgICAgIHBvc19pZDogcG9zLmlkLFxuICAgICAgICAgICAgICBzdXBwbGllcl9uYW1lOiB0aGlzLnNlbGVjdGVkU3VwcGxpZXJOYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vbm9TdXBwbGllci9wb3NJZCcsIHBvcy5pZCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucG9zU2VydmljZS5iYXNrZXRMb2FkZWRGb3JOZXdQb3MoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5uZXdTdG9yZVNlbGVjdGVkJC5uZXh0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZVN0b3JlTG9jYXRvcigpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBvcGVuU3RvcmVMb2NhdG9yKHNraXBPbmJvYXJkaW5nID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL25vU3VwcGxpZXIvcG9zSWQnKSAmJiAhc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vbm9TdXBwbGllci9vbmJvYXJkaW5nJykgJiYgIXNraXBPbmJvYXJkaW5nXG4gICAgKSB7XG4gICAgICB0aGlzLnNob3dOb1N1cHBsaWVyT25ib2FyZGluZy5uZXh0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlTG9jYXRvck9wZW5lZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlU3RvcmVMb2NhdG9yKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlTG9jYXRvck9wZW5lZCQudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnN0b3JlTG9jYXRvckV2ZW50VHJhY2UpIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICAgICAnbG9jYXRvci5jbG9zZScsXG4gICAgICAgICAgYCR7dGhpcy5zdG9yZUxvY2F0b3JFdmVudFRyYWNlLm9yaWdpblBhdGh9L2xvY2F0b3JgLFxuICAgICAgICAgIHt9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWxPbkNhbmNlbCA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTG9jYXRvck9wZW5lZFRpbWVzdGFtcCA9IDA7XG4gICAgfVxuICAgIHRoaXMuc3RvcmVMb2NhdG9yT3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNob3dDaGFuZ2UoZTogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZS5kZXRhaWwuc2hvdyBhcyBib29sZWFuKSB7XG4gICAgICB0aGlzLm9wZW5TdG9yZUxvY2F0b3IoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlU3RvcmVMb2NhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoQ2hhbmdlKGU6IEN1c3RvbUV2ZW50PHsgc2VhcmNoVGVybTogc3RyaW5nOyBzdG9yZXNGb3VuZENvdW50OiBudW1iZXIgfT4sIGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ2xvY2F0b3Iuc2VhcmNoJyxcbiAgICAgIGV2ZW50VHJhY2Uub3JpZ2luUGF0aCxcbiAgICAgIHtcbiAgICAgICAgc2VhcmNoX3Rlcm06IGUuZGV0YWlsLnNlYXJjaFRlcm0sXG4gICAgICAgIHN0b3Jlc19mb3VuZF9jb3VudDogZS5kZXRhaWwuc3RvcmVzRm91bmRDb3VudC50b1N0cmluZygpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class StoreOutOfStockService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.outOfStockEntries = [];
|
|
6
|
+
this.fetchCurrentOutOfStocks();
|
|
7
|
+
}
|
|
8
|
+
fetchCurrentOutOfStocks() {
|
|
9
|
+
const existingEntriesStr = sessionStorage.getItem('_miam/outOfStockEntry') || '[]';
|
|
10
|
+
try {
|
|
11
|
+
this.outOfStockEntries = JSON.parse(existingEntriesStr);
|
|
12
|
+
if (!Array.isArray(this.outOfStockEntries)) {
|
|
13
|
+
this.outOfStockEntries = [existingEntriesStr];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
this.outOfStockEntries = [];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
isOutOfStockFromStorage(entry) {
|
|
21
|
+
var _a;
|
|
22
|
+
if (entry.status === 'active') {
|
|
23
|
+
this.removeEntryFromStorage(entry);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if ((_a = entry === null || entry === void 0 ? void 0 : entry.selectedItem) === null || _a === void 0 ? void 0 : _a.id) {
|
|
27
|
+
return this.outOfStockEntries.includes(entry.selectedItem.id.toString());
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
removeEntryFromStorage(entry) {
|
|
32
|
+
var _a;
|
|
33
|
+
if ((_a = entry === null || entry === void 0 ? void 0 : entry.selectedItem) === null || _a === void 0 ? void 0 : _a.id) {
|
|
34
|
+
this.outOfStockEntries = this.outOfStockEntries.filter(id => id !== entry.selectedItem.id);
|
|
35
|
+
sessionStorage.setItem('_miam/outOfStockEntry', JSON.stringify(this.outOfStockEntries));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
addEntryToStorage(entry) {
|
|
39
|
+
var _a;
|
|
40
|
+
if ((_a = entry.selectedItem) === null || _a === void 0 ? void 0 : _a.id) {
|
|
41
|
+
this.fetchCurrentOutOfStocks();
|
|
42
|
+
if (!this.outOfStockEntries.includes(entry.selectedItem.id)) {
|
|
43
|
+
this.outOfStockEntries.push(entry.selectedItem.id);
|
|
44
|
+
}
|
|
45
|
+
sessionStorage.setItem('_miam/outOfStockEntry', JSON.stringify(this.outOfStockEntries));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
StoreOutOfStockService.ɵfac = function StoreOutOfStockService_Factory(t) { return new (t || StoreOutOfStockService)(); };
|
|
50
|
+
StoreOutOfStockService.ɵprov = i0.ɵɵdefineInjectable({ token: StoreOutOfStockService, factory: StoreOutOfStockService.ɵfac, providedIn: 'root' });
|
|
51
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StoreOutOfStockService, [{
|
|
52
|
+
type: Injectable,
|
|
53
|
+
args: [{
|
|
54
|
+
providedIn: 'root'
|
|
55
|
+
}]
|
|
56
|
+
}], function () { return []; }, null); })();
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtb3V0LW9mLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3NlcnZpY2VzL3N0b3JlLW91dC1vZi1zdG9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxzQkFBc0I7SUFJakM7UUFGQSxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFHL0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFbkYsSUFBSTtZQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDL0M7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFrQjs7UUFDeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsT0FBTztTQUNSO1FBQ0QsVUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsWUFBWSwwQ0FBRSxFQUFFLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDMUU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFrQjs7UUFDdkMsVUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsWUFBWSwwQ0FBRSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRixjQUFjLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUN6RjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFrQjs7UUFDbEMsVUFBSSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1lBRUQsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDekY7SUFDSCxDQUFDOzs0RkFqRFUsc0JBQXNCOzhEQUF0QixzQkFBc0IsV0FBdEIsc0JBQXNCLG1CQUZyQixNQUFNO3VGQUVQLHNCQUFzQjtjQUhsQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSB9IGZyb20gJy4uL19tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdG9yZU91dE9mU3RvY2tTZXJ2aWNlIHtcblxuICBvdXRPZlN0b2NrRW50cmllczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZldGNoQ3VycmVudE91dE9mU3RvY2tzKCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQ3VycmVudE91dE9mU3RvY2tzKCkge1xuICAgIGNvbnN0IGV4aXN0aW5nRW50cmllc1N0ciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL291dE9mU3RvY2tFbnRyeScpIHx8ICdbXSc7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5vdXRPZlN0b2NrRW50cmllcyA9IEpTT04ucGFyc2UoZXhpc3RpbmdFbnRyaWVzU3RyKTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLm91dE9mU3RvY2tFbnRyaWVzKSkge1xuICAgICAgICB0aGlzLm91dE9mU3RvY2tFbnRyaWVzID0gW2V4aXN0aW5nRW50cmllc1N0cl07XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5vdXRPZlN0b2NrRW50cmllcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGlzT3V0T2ZTdG9ja0Zyb21TdG9yYWdlKGVudHJ5OiBCYXNrZXRFbnRyeSk6IGJvb2xlYW4ge1xuICAgIGlmIChlbnRyeS5zdGF0dXMgPT09ICdhY3RpdmUnKSB7XG4gICAgICB0aGlzLnJlbW92ZUVudHJ5RnJvbVN0b3JhZ2UoZW50cnkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZW50cnk/LnNlbGVjdGVkSXRlbT8uaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm91dE9mU3RvY2tFbnRyaWVzLmluY2x1ZGVzKGVudHJ5LnNlbGVjdGVkSXRlbS5pZC50b1N0cmluZygpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVtb3ZlRW50cnlGcm9tU3RvcmFnZShlbnRyeTogQmFza2V0RW50cnkpIHtcbiAgICBpZiAoZW50cnk/LnNlbGVjdGVkSXRlbT8uaWQpIHtcbiAgICAgIHRoaXMub3V0T2ZTdG9ja0VudHJpZXMgPSB0aGlzLm91dE9mU3RvY2tFbnRyaWVzLmZpbHRlcihpZCA9PiBpZCAhPT0gZW50cnkuc2VsZWN0ZWRJdGVtLmlkKTtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19taWFtL291dE9mU3RvY2tFbnRyeScsIEpTT04uc3RyaW5naWZ5KHRoaXMub3V0T2ZTdG9ja0VudHJpZXMpKTtcbiAgICB9XG4gIH1cblxuICBhZGRFbnRyeVRvU3RvcmFnZShlbnRyeTogQmFza2V0RW50cnkpIHtcbiAgICBpZiAoZW50cnkuc2VsZWN0ZWRJdGVtPy5pZCkge1xuICAgICAgdGhpcy5mZXRjaEN1cnJlbnRPdXRPZlN0b2NrcygpO1xuXG4gICAgICBpZiAoIXRoaXMub3V0T2ZTdG9ja0VudHJpZXMuaW5jbHVkZXMoZW50cnkuc2VsZWN0ZWRJdGVtLmlkKSkge1xuICAgICAgICB0aGlzLm91dE9mU3RvY2tFbnRyaWVzLnB1c2goZW50cnkuc2VsZWN0ZWRJdGVtLmlkKTtcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vb3V0T2ZTdG9ja0VudHJ5JywgSlNPTi5zdHJpbmdpZnkodGhpcy5vdXRPZlN0b2NrRW50cmllcykpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -5,10 +5,10 @@ import { map, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
|
5
5
|
import { User } from '../_models';
|
|
6
6
|
import { MessageType } from '../_types/message-type.enum';
|
|
7
7
|
import { environment } from '../environments/environment';
|
|
8
|
+
import { IgnoredIngredientsService } from './ignored-ingredients.service';
|
|
8
9
|
import { RecipeProviderService } from './recipe-provider.service';
|
|
9
10
|
import { SuppliersService } from './suppliers.service';
|
|
10
11
|
import { ToasterService } from './toaster.service';
|
|
11
|
-
import { IgnoredIngredientsService } from './ignored-ingredients.service';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@angular/common/http";
|
|
14
14
|
import * as i2 from "./recipe-provider.service";
|
|
@@ -60,7 +60,7 @@ export class UserService {
|
|
|
60
60
|
this.ignoredBasketsService.resetIgnoredIngredients();
|
|
61
61
|
}
|
|
62
62
|
this.initRoles();
|
|
63
|
-
return combineLatest([this.initProvider(), this.initSupplier()]);
|
|
63
|
+
return combineLatest([this.initProvider(), this.initSupplier()]);
|
|
64
64
|
}), skipWhile(res => res[0] === undefined || res[1] === undefined), take(1));
|
|
65
65
|
}
|
|
66
66
|
resetUserInfo() {
|
|
@@ -140,4 +140,4 @@ UserService.ɵprov = i0.ɵɵdefineInjectable({ token: UserService, factory: User
|
|
|
140
140
|
providedIn: 'root'
|
|
141
141
|
}]
|
|
142
142
|
}], function () { return [{ type: i1.HttpClient }, { type: i2.RecipeProviderService }, { type: i3.SuppliersService }, { type: i4.ToasterService }, { type: i5.IgnoredIngredientsService }]; }, null); })();
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUE0QixJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFLMUUsTUFBTSxPQUFPLFdBQVc7SUFXdEIsWUFDVSxJQUFnQixFQUNoQix1QkFBOEMsRUFDOUMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLHFCQUFnRDtRQUpoRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBdUI7UUFDOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FB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QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUMvRCxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVM7O1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssMENBQUUsWUFBWSxDQUFDLEtBQUssS0FBSSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDOztzRUFsTFUsV0FBVzttREFBWCxXQUFXLFdBQVgsV0FBVyxtQkFGVixNQUFNO3VGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyLCBTdXBwbGllciwgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9fdHlwZXMvbWVzc2FnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwbGllcnNTZXJ2aWNlIH0gZnJvbSAnLi9zdXBwbGllcnMuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJy4vdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IElnbm9yZWRJbmdyZWRpZW50c1NlcnZpY2UgfSBmcm9tICcuL2lnbm9yZWQtaW5ncmVkaWVudHMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIHtcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgaXNMb2dnZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByZWZlcmVuY2VzQWN0aXZhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBnZW5lcmF0aW5nQXV0aGxlc3NJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgdXNlckNvb3JkaW5hdGVzJDogQmVoYXZpb3JTdWJqZWN0PEdlb2xvY2F0aW9uUG9zaXRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHZW9sb2NhdGlvblBvc2l0aW9uPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHVzZXJJbmZvJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlcj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSB1c2VyUHJvdmlkZXIkOiBCZWhhdmlvclN1YmplY3Q8UmVjaXBlUHJvdmlkZXI+O1xuICBwcml2YXRlIHVzZXJTdXBwbGllciQ6IEJlaGF2aW9yU3ViamVjdDxTdXBwbGllcj47XG4gIHByaXZhdGUgdXNlclJvbGVzJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWNpcGVzUHJvdmlkZXJzU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGlnbm9yZWRCYXNrZXRzU2VydmljZTogSWdub3JlZEluZ3JlZGllbnRzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnVzZXJSb2xlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG4gICAgdGhpcy51c2VyUHJvdmlkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNpcGVQcm92aWRlcj4odW5kZWZpbmVkKTtcbiAgICB0aGlzLnVzZXJTdXBwbGllciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBsaWVyPih1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0IHVzZXJQcm92aWRlcigpOiBPYnNlcnZhYmxlPFJlY2lwZVByb3ZpZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclByb3ZpZGVyJC5waXBlKHNraXBXaGlsZShwcm92aWRlciA9PiBwcm92aWRlciA9PT0gdW5kZWZpbmVkKSk7XG4gIH1cblxuICBnZXQgdXNlclN1cHBsaWVyKCk6IE9ic2VydmFibGU8U3VwcGxpZXI+IHtcbiAgICAvLyBJZiB1c2VyIGlzIGFkbWluLCBoZSBoYXMgbm8gc3VwcGxpZXJcbiAgICByZXR1cm4gdGhpcy5pc0FkbWluLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaXNBZG1pbiA9PlxuICAgICAgICBpc0FkbWluXG4gICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgIDogdGhpcy51c2VyU3VwcGxpZXIkLnBpcGUoc2tpcFdoaWxlKHN1cHBsaWVyID0+IHN1cHBsaWVyID09PSB1bmRlZmluZWQpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnZXQgdXNlclJvbGVzKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyUm9sZXMkO1xuICB9XG5cbiAgZ2V0IGlzQWRtaW4oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJvbGUgPT4gcm9sZS5sZW5ndGggPT09IDApLFxuICAgICAgc3dpdGNoTWFwKChyb2xlczogc3RyaW5nW10pID0+IG9mKHJvbGVzLmluY2x1ZGVzKCdBZG1pbicpKSlcbiAgICApO1xuICB9XG5cbiAgc2V0VXNlclByb3ZpZGVyTWFudWFsbHkocHJvdmlkZXI6IFJlY2lwZVByb3ZpZGVyKTogdm9pZCB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXIkLm5leHQocHJvdmlkZXIpO1xuICB9XG5cbiAgdG9nZ2xlSXNMb2dnZWQobG9nZ2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvZ2dlZCQubmV4dChsb2dnZWQpO1xuICB9XG5cbiAgc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxbUmVjaXBlUHJvdmlkZXIsIFN1cHBsaWVyXT4ge1xuICAgIGNvbnN0IHVzZXJJbmZvID0gbmV3IFVzZXIoeyBmb3JiaWRQcm9maWxpbmcgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vdXNlcl9pbmZvYCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy51c2VySW5mbyQubmV4dChPYmplY3QuYXNzaWduKHVzZXJJbmZvLCByZXN1bHQpKTtcbiAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnKSkge1xuICAgICAgICAgIHRoaXMuaWdub3JlZEJhc2tldHNTZXJ2aWNlLnJlc2V0SWdub3JlZEluZ3JlZGllbnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0Um9sZXMoKTtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuaW5pdFByb3ZpZGVyKCksIHRoaXMuaW5pdFN1cHBsaWVyKCldKTsgLy8gZm9ya0pvaW4gZG9lcyBub3Qgd29yayB3aXRoIEJlaGF2aW9yU3ViamVjdCBhcyBpdCBuZXZlciBjb21wbGV0ZXNcbiAgICAgIH0pLFxuICAgICAgc2tpcFdoaWxlKHJlcyA9PiByZXNbMF0gPT09IHVuZGVmaW5lZCB8fCByZXNbMV0gPT09IHVuZGVmaW5lZCksXG4gICAgICB0YWtlKDEpXG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0VXNlckluZm8oKTogdm9pZCB7XG4gICAgdGhpcy51c2VySW5mbyQubmV4dChudWxsKTtcbiAgICB0aGlzLnVzZXJSb2xlcyQubmV4dChbXSk7XG4gICAgdGhpcy51c2VyUHJvdmlkZXIkLm5leHQobnVsbCk7XG4gICAgdGhpcy51c2VyU3VwcGxpZXIkLm5leHQobnVsbCk7XG4gIH1cblxuICBnZW5lcmF0ZUFub255bW91c1VzZXJJZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IHVybCA9IGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L2FwaS92MS91c2Vycy9hdXRobGVzc2A7XG4gICAgdGhpcy5nZW5lcmF0aW5nQXV0aGxlc3NJZCQubmV4dCh0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCB7fSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0WydhdXRobGVzc19pZCddIGFzIHN0cmluZyksXG4gICAgICB0YXAoYW5vbnltb3VzVXNlcklkID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnLCBhbm9ueW1vdXNVc2VySWQpO1xuICAgICAgICB0aGlzLmdlbmVyYXRpbmdBdXRobGVzc0lkJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG5cbiAgc2V0UHJlZmVyZW5jZShwcmVmOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy51c2VySW5mbyQucGlwZShcbiAgICAgIHNraXBXaGlsZSgodXNlckluZm86IFVzZXIpID0+ICEodXNlckluZm8/LnVzZXJfbWV0YWRhdGEpKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKHVzZXJJbmZvOiBVc2VyKSA9PiB7XG4gICAgICAgIGlmICghdXNlckluZm8udXNlcl9tZXRhZGF0YS5wcmVmZXJlbmNlcykge1xuICAgICAgICAgIHVzZXJJbmZvLnVzZXJfbWV0YWRhdGEucHJlZmVyZW5jZXMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgcHJlZmVyZW5jZSBpcyBhbHJlYWR5IHNldCwgd2Ugc2ltcGx5IHJldHVybiB0aGUgdXNlclxuICAgICAgICBpZiAodXNlckluZm8udXNlcl9tZXRhZGF0YS5wcmVmZXJlbmNlc1twcmVmXSA9PT0gc3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodXNlckluZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRlIHRoZSB1c2VyIGluIGF1dGgwIHZpYSBtaWFtIEFQSVxuICAgICAgICB1c2VySW5mby51c2VyX21ldGFkYXRhLnByZWZlcmVuY2VzW3ByZWZdID0gc3RhdGU7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vdXNlcl9pbmZvYCwgeyBkYXRhOiB1c2VySW5mbyB9KS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB1c2VySW5mbylcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCh1c2VySW5mbzogVXNlcikgPT4ge1xuICAgICAgICB0aGlzLnNob3dSZWNpcGVUb2FzdGVyKCk7XG4gICAgICAgIHRoaXMudXNlckluZm8kLm5leHQodXNlckluZm8pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2hvd1JlY2lwZVRvYXN0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdGVyU2VydmljZS5zaG93KE1lc3NhZ2VUeXBlLlN1Y2Nlc3MsICcnLCAnVm9zIHByw6lmw6lyZW5jZXMgb250IGJpZW4gZcyBdGXMgSBtaXNlcyBhzIAgam91cicpO1xuICB9XG5cbiAgaGFzUHJlZmVyZW5jZShwcmVmOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51c2VySW5mbyQucGlwZShcbiAgICAgIHNraXBXaGlsZSgodXNlckluZm86IFVzZXIpID0+ICF1c2VySW5mbz8udXNlcl9tZXRhZGF0YSksXG4gICAgICBtYXAoKHVzZXJJbmZvOiBVc2VyKSA9PiAhISh1c2VySW5mbz8udXNlcl9tZXRhZGF0YT8ucHJlZmVyZW5jZXMgJiYgdXNlckluZm8/LnVzZXJfbWV0YWRhdGE/LnByZWZlcmVuY2VzW3ByZWZdICE9PSB1bmRlZmluZWQpKVxuICAgICk7XG4gIH1cblxuICBzZXRGYXZvcml0ZUl0ZW1zKGZhdm9yaXRlUHJvZHVjdElkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBsaWVyc1NlcnZpY2Uuc3VwcGxpZXIkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoc3VwcCA9PiAhc3VwcCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKHN1cHBsaWVyID0+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHsgaXRlbV9leHRfaWRzOiBmYXZvcml0ZVByb2R1Y3RJZHMsIHN1cHBsaWVyX2lkOiBzdXBwbGllci5pZCB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vc2V0X2Zhdm9yaXRlX2l0ZW1zYCwgYm9keSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm9maWxpbmdGb3JiaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnZhbHVlPy5mb3JiaWRQcm9maWxpbmc7XG4gIH1cblxuICBjYW4ocGVybWlzc2lvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnBpcGUoXG4gICAgICBtYXAoaW5mbyA9PiBpbmZvPy5hcHBfbWV0YWRhdGEucGVybWlzc2lvbnMuaW5jbHVkZXMocGVybWlzc2lvbikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByb3ZpZGVyKCk6IE9ic2VydmFibGU8UmVjaXBlUHJvdmlkZXI+IHtcbiAgICByZXR1cm4gdGhpcy51c2VySW5mbyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlckluZm86IFVzZXIpID0+IHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXJLZXkgPSB1c2VySW5mbz8uYXBwX21ldGFkYXRhLnJlY2lwZV9wcm92aWRlciB8fCAncGVyc29uYWwnO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWNpcGVzUHJvdmlkZXJzU2VydmljZS5nZXQocHJvdmlkZXJLZXkpO1xuICAgICAgfSksXG4gICAgICBza2lwV2hpbGUocmVzID0+IHJlcyA9PSBudWxsKSxcbiAgICAgIHRhcCgocHJvdmlkZXI6IFJlY2lwZVByb3ZpZGVyKSA9PiB0aGlzLnVzZXJQcm92aWRlciQubmV4dChwcm92aWRlcikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1cHBsaWVyKCk6IE9ic2VydmFibGU8U3VwcGxpZXI+IHtcbiAgICByZXR1cm4gdGhpcy51c2VySW5mbyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlckluZm86IFVzZXIpID0+IHtcbiAgICAgICAgaWYgKHVzZXJJbmZvPy5zdXBwbGllcklkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3VwcGxpZXJzU2VydmljZS5nZXQodXNlckluZm8uc3VwcGxpZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgICBza2lwV2hpbGUocmVzID0+IHJlcyA9PT0gdW5kZWZpbmVkKSxcbiAgICAgIHRhcCgoc3VwcGxpZXI6IFN1cHBsaWVyKSA9PiB0aGlzLnVzZXJTdXBwbGllciQubmV4dChzdXBwbGllcikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFJvbGVzKCk6IHZvaWQge1xuICAgIHRoaXMudXNlclJvbGVzJC5uZXh0KHRoaXMudXNlckluZm8kLnZhbHVlPy5hcHBfbWV0YWRhdGEucm9sZXMgfHwgW10pO1xuICB9XG59XG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUE0QixJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFLbkQsTUFBTSxPQUFPLFdBQVc7SUFXdEIsWUFDVSxJQUFnQixFQUNoQix1QkFBOEMsRUFDOUMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLHFCQUFnRDtRQUpoRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBdUI7UUFDOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FB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YUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUMvRCxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVM7O1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssMENBQUUsWUFBWSxDQUFDLEtBQUssS0FBSSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDOztzRUFsTFUsV0FBVzttREFBWCxXQUFXLFdBQVgsV0FBVyxtQkFGVixNQUFNO3VGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyLCBTdXBwbGllciwgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9fdHlwZXMvbWVzc2FnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSWdub3JlZEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4vaWdub3JlZC1pbmdyZWRpZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuL3RvYXN0ZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIHtcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgaXNMb2dnZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByZWZlcmVuY2VzQWN0aXZhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBnZW5lcmF0aW5nQXV0aGxlc3NJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgdXNlckNvb3JkaW5hdGVzJDogQmVoYXZpb3JTdWJqZWN0PEdlb2xvY2F0aW9uUG9zaXRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHZW9sb2NhdGlvblBvc2l0aW9uPih1bmRlZmluZWQpO1xuICB1c2VySW5mbyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXI+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgdXNlclByb3ZpZGVyJDogQmVoYXZpb3JTdWJqZWN0PFJlY2lwZVByb3ZpZGVyPjtcbiAgcHJpdmF0ZSB1c2VyU3VwcGxpZXIkOiBCZWhhdmlvclN1YmplY3Q8U3VwcGxpZXI+O1xuICBwcml2YXRlIHVzZXJSb2xlcyQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVjaXBlc1Byb3ZpZGVyc1NlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZ25vcmVkQmFza2V0c1NlcnZpY2U6IElnbm9yZWRJbmdyZWRpZW50c1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy51c2VyUm9sZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICAgIHRoaXMudXNlclByb3ZpZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjaXBlUHJvdmlkZXI+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy51c2VyU3VwcGxpZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdXBwbGllcj4odW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldCB1c2VyUHJvdmlkZXIoKTogT2JzZXJ2YWJsZTxSZWNpcGVQcm92aWRlcj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJQcm92aWRlciQucGlwZShza2lwV2hpbGUocHJvdmlkZXIgPT4gcHJvdmlkZXIgPT09IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZ2V0IHVzZXJTdXBwbGllcigpOiBPYnNlcnZhYmxlPFN1cHBsaWVyPiB7XG4gICAgLy8gSWYgdXNlciBpcyBhZG1pbiwgaGUgaGFzIG5vIHN1cHBsaWVyXG4gICAgcmV0dXJuIHRoaXMuaXNBZG1pbi5waXBlKFxuICAgICAgc3dpdGNoTWFwKGlzQWRtaW4gPT5cbiAgICAgICAgaXNBZG1pblxuICAgICAgICAgID8gb2YobnVsbClcbiAgICAgICAgICA6IHRoaXMudXNlclN1cHBsaWVyJC5waXBlKHNraXBXaGlsZShzdXBwbGllciA9PiBzdXBwbGllciA9PT0gdW5kZWZpbmVkKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0IHVzZXJSb2xlcygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJDtcbiAgfVxuXG4gIGdldCBpc0FkbWluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlcyQucGlwZShcbiAgICAgIHNraXBXaGlsZShyb2xlID0+IHJvbGUubGVuZ3RoID09PSAwKSxcbiAgICAgIHN3aXRjaE1hcCgocm9sZXM6IHN0cmluZ1tdKSA9PiBvZihyb2xlcy5pbmNsdWRlcygnQWRtaW4nKSkpXG4gICAgKTtcbiAgfVxuXG4gIHNldFVzZXJQcm92aWRlck1hbnVhbGx5KHByb3ZpZGVyOiBSZWNpcGVQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMudXNlclByb3ZpZGVyJC5uZXh0KHByb3ZpZGVyKTtcbiAgfVxuXG4gIHRvZ2dsZUlzTG9nZ2VkKGxvZ2dlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNMb2dnZWQkLm5leHQobG9nZ2VkKTtcbiAgfVxuXG4gIHNldFVzZXJJbmZvKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8W1JlY2lwZVByb3ZpZGVyLCBTdXBwbGllcl0+IHtcbiAgICBjb25zdCB1c2VySW5mbyA9IG5ldyBVc2VyKHsgZm9yYmlkUHJvZmlsaW5nIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L3VzZXJfaW5mb2ApLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMudXNlckluZm8kLm5leHQoT2JqZWN0LmFzc2lnbih1c2VySW5mbywgcmVzdWx0KSk7XG4gICAgICAgIGlmICghIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS9hdXRobGVzc0lkJykpIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZWRCYXNrZXRzU2VydmljZS5yZXNldElnbm9yZWRJbmdyZWRpZW50cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdFJvbGVzKCk7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmluaXRQcm92aWRlcigpLCB0aGlzLmluaXRTdXBwbGllcigpXSk7XG4gICAgICB9KSxcbiAgICAgIHNraXBXaGlsZShyZXMgPT4gcmVzWzBdID09PSB1bmRlZmluZWQgfHwgcmVzWzFdID09PSB1bmRlZmluZWQpLFxuICAgICAgdGFrZSgxKVxuICAgICk7XG4gIH1cblxuICByZXNldFVzZXJJbmZvKCk6IHZvaWQge1xuICAgIHRoaXMudXNlckluZm8kLm5leHQobnVsbCk7XG4gICAgdGhpcy51c2VyUm9sZXMkLm5leHQoW10pO1xuICAgIHRoaXMudXNlclByb3ZpZGVyJC5uZXh0KG51bGwpO1xuICAgIHRoaXMudXNlclN1cHBsaWVyJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgZ2VuZXJhdGVBbm9ueW1vdXNVc2VySWQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCB1cmwgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvdXNlcnMvYXV0aGxlc3NgO1xuICAgIHRoaXMuZ2VuZXJhdGluZ0F1dGhsZXNzSWQkLm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwge30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdFsnYXV0aGxlc3NfaWQnXSBhcyBzdHJpbmcpLFxuICAgICAgdGFwKGFub255bW91c1VzZXJJZCA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9hdXRobGVzc0lkJywgYW5vbnltb3VzVXNlcklkKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nQXV0aGxlc3NJZCQubmV4dChmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuXG4gIHNldFByZWZlcmVuY2UocHJlZjogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKHVzZXJJbmZvOiBVc2VyKSA9PiAhKHVzZXJJbmZvPy51c2VyX21ldGFkYXRhKSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCh1c2VySW5mbzogVXNlcikgPT4ge1xuICAgICAgICBpZiAoIXVzZXJJbmZvLnVzZXJfbWV0YWRhdGEucHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICB1c2VySW5mby51c2VyX21ldGFkYXRhLnByZWZlcmVuY2VzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHByZWZlcmVuY2UgaXMgYWxyZWFkeSBzZXQsIHdlIHNpbXBseSByZXR1cm4gdGhlIHVzZXJcbiAgICAgICAgaWYgKHVzZXJJbmZvLnVzZXJfbWV0YWRhdGEucHJlZmVyZW5jZXNbcHJlZl0gPT09IHN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVzZXJJbmZvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgdXNlciBpbiBhdXRoMCB2aWEgbWlhbSBBUElcbiAgICAgICAgdXNlckluZm8udXNlcl9tZXRhZGF0YS5wcmVmZXJlbmNlc1twcmVmXSA9IHN0YXRlO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L3VzZXJfaW5mb2AsIHsgZGF0YTogdXNlckluZm8gfSkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gdXNlckluZm8pXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgodXNlckluZm86IFVzZXIpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmVjaXBlVG9hc3RlcigpO1xuICAgICAgICB0aGlzLnVzZXJJbmZvJC5uZXh0KHVzZXJJbmZvKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNob3dSZWNpcGVUb2FzdGVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc2hvdyhNZXNzYWdlVHlwZS5TdWNjZXNzLCAnJywgJ1ZvcyBwcsOpZsOpcmVuY2VzIG9udCBiaWVuIGXMgXRlzIEgbWlzZXMgYcyAIGpvdXInKTtcbiAgfVxuXG4gIGhhc1ByZWZlcmVuY2UocHJlZjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKHVzZXJJbmZvOiBVc2VyKSA9PiAhdXNlckluZm8/LnVzZXJfbWV0YWRhdGEpLFxuICAgICAgbWFwKCh1c2VySW5mbzogVXNlcikgPT4gISEodXNlckluZm8/LnVzZXJfbWV0YWRhdGE/LnByZWZlcmVuY2VzICYmIHVzZXJJbmZvPy51c2VyX21ldGFkYXRhPy5wcmVmZXJlbmNlc1twcmVmXSAhPT0gdW5kZWZpbmVkKSlcbiAgICApO1xuICB9XG5cbiAgc2V0RmF2b3JpdGVJdGVtcyhmYXZvcml0ZVByb2R1Y3RJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnN1cHBsaWVyJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKHN1cHAgPT4gIXN1cHApLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcChzdXBwbGllciA9PiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7IGl0ZW1fZXh0X2lkczogZmF2b3JpdGVQcm9kdWN0SWRzLCBzdXBwbGllcl9pZDogc3VwcGxpZXIuaWQgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L3NldF9mYXZvcml0ZV9pdGVtc2AsIGJvZHkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvZmlsaW5nRm9yYmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJJbmZvJC52YWx1ZT8uZm9yYmlkUHJvZmlsaW5nO1xuICB9XG5cbiAgY2FuKHBlcm1pc3Npb246IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJJbmZvJC5waXBlKFxuICAgICAgbWFwKGluZm8gPT4gaW5mbz8uYXBwX21ldGFkYXRhLnBlcm1pc3Npb25zLmluY2x1ZGVzKHBlcm1pc3Npb24pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcm92aWRlcigpOiBPYnNlcnZhYmxlPFJlY2lwZVByb3ZpZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHVzZXJJbmZvOiBVc2VyKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyS2V5ID0gdXNlckluZm8/LmFwcF9tZXRhZGF0YS5yZWNpcGVfcHJvdmlkZXIgfHwgJ3BlcnNvbmFsJztcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1Byb3ZpZGVyc1NlcnZpY2UuZ2V0KHByb3ZpZGVyS2V5KTtcbiAgICAgIH0pLFxuICAgICAgc2tpcFdoaWxlKHJlcyA9PiByZXMgPT0gbnVsbCksXG4gICAgICB0YXAoKHByb3ZpZGVyOiBSZWNpcGVQcm92aWRlcikgPT4gdGhpcy51c2VyUHJvdmlkZXIkLm5leHQocHJvdmlkZXIpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdXBwbGllcigpOiBPYnNlcnZhYmxlPFN1cHBsaWVyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8kLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHVzZXJJbmZvOiBVc2VyKSA9PiB7XG4gICAgICAgIGlmICh1c2VySW5mbz8uc3VwcGxpZXJJZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1cHBsaWVyc1NlcnZpY2UuZ2V0KHVzZXJJbmZvLnN1cHBsaWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICAgc2tpcFdoaWxlKHJlcyA9PiByZXMgPT09IHVuZGVmaW5lZCksXG4gICAgICB0YXAoKHN1cHBsaWVyOiBTdXBwbGllcikgPT4gdGhpcy51c2VyU3VwcGxpZXIkLm5leHQoc3VwcGxpZXIpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRSb2xlcygpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJSb2xlcyQubmV4dCh0aGlzLnVzZXJJbmZvJC52YWx1ZT8uYXBwX21ldGFkYXRhLnJvbGVzIHx8IFtdKTtcbiAgfVxufVxuIl19
|