@wavemaker/app-ng-runtime 11.11.0-rc.6115 → 11.11.0-rc.6116
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/components/containers/wizard/bundles/index.umd.js +0 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +1 -4
- package/components/containers/wizard/fesm2022/index.mjs +0 -3
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/bundles/index.umd.js +5 -3
- package/components/input/color-picker/esm2022/color-picker.component.mjs +7 -5
- package/components/input/color-picker/fesm2022/index.mjs +6 -4
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/dynamic/app/app.config.d.ts +5 -0
- package/runtime/dynamic/bundles/index.umd.js +165 -56
- package/runtime/dynamic/esm2022/app/app.config.mjs +136 -0
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +2 -4
- package/runtime/dynamic/esm2022/main.mjs +10 -10
- package/runtime/dynamic/fesm2022/index.mjs +189 -78
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ApplicationConfig } from "@angular/core";
|
|
2
|
+
export declare const xsrfHeaderName = "X-WM-XSRF-TOKEN";
|
|
3
|
+
export declare function InitializeApp(I18nService: any, AppJSResolve: any): () => Promise<any>;
|
|
4
|
+
export declare function setAngularLocale(I18nService: any): any;
|
|
5
|
+
export declare const appConfig: ApplicationConfig;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/platform-browser
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global.ng.
|
|
5
|
-
})(this, (function (exports, i0,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('lodash-es'), require('@angular/platform-browser'), require('@wm/runtime/base'), require('@angular/router'), require('@angular/common/http'), require('@angular/platform-browser/animations'), require('@wm/components/base'), require('@wm/core'), require('@wm/variables'), require('@wm/security'), require('@wm/http'), require('@wm/oAuth'), require('ngx-bootstrap/modal'), require('ngx-toastr'), require('ngx-bootstrap/datepicker'), require('ng-circle-progress'), require('@angular/common'), require('tslib'), require('@wm/transpiler'), require('@wavemaker/custom-widgets-m3'), require('@wm/components/page'), require('@angular/forms'), require('ngx-bootstrap/typeahead'), require('ngx-bootstrap/timepicker'), require('ngx-bootstrap/progressbar'), require('ngx-bootstrap/pagination'), require('ngx-bootstrap/tooltip'), require('ngx-bootstrap/dropdown'), require('ngx-bootstrap/popover'), require('ngx-bootstrap/carousel'), require('@wm/components/basic'), require('@wm/components/basic/progress'), require('@wm/components/basic/rich-text-editor'), require('@wm/components/basic/search'), require('@wm/components/basic/tree'), require('@wm/components/input'), require('@wm/components/input/calendar'), require('@wm/components/input/chips'), require('@wm/components/input/color-picker'), require('@wm/components/input/currency'), require('@wm/components/input/epoch'), require('@wm/components/input/file-upload'), require('@wm/components/input/rating'), require('@wm/components/input/slider'), require('@wm/components/data/card'), require('@wm/components/data/form'), require('@wm/components/data/list'), require('@wm/components/data/live-table'), require('@wm/components/data/pagination'), require('@wm/components/data/table'), require('@wm/components/chart'), require('@wm/components/containers/accordion'), require('@wm/components/containers/linear-layout'), require('@wm/components/containers/layout-grid'), require('@wm/components/containers/panel'), require('@wm/components/containers/tabs'), require('@wm/components/containers/tile'), require('@wm/components/containers/wizard'), require('@wm/components/dialogs/alert-dialog'), require('@wm/components/dialogs/iframe-dialog'), require('@wm/components/dialogs/login-dialog'), require('@wm/components/dialogs/partial-dialog'), require('@wm/components/navigation/breadcrumb'), require('@wm/components/navigation/menu'), require('@wm/components/navigation/navbar'), require('@wm/components/navigation/popover'), require('@wm/components/advanced/carousel'), require('@wm/components/advanced/login'), require('@wm/components/advanced/marquee'), require('@wm/components/advanced/custom'), require('@wm/components/page/footer'), require('@wm/components/page/header'), require('@wm/components/page/left-panel'), require('@wm/components/page/right-panel'), require('@wm/components/page/top-nav'), require('@wm/components/prefab')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'lodash-es', '@angular/platform-browser', '@wm/runtime/base', '@angular/router', '@angular/common/http', '@angular/platform-browser/animations', '@wm/components/base', '@wm/core', '@wm/variables', '@wm/security', '@wm/http', '@wm/oAuth', 'ngx-bootstrap/modal', 'ngx-toastr', 'ngx-bootstrap/datepicker', 'ng-circle-progress', '@angular/common', 'tslib', '@wm/transpiler', '@wavemaker/custom-widgets-m3', '@wm/components/page', '@angular/forms', 'ngx-bootstrap/typeahead', 'ngx-bootstrap/timepicker', 'ngx-bootstrap/progressbar', 'ngx-bootstrap/pagination', 'ngx-bootstrap/tooltip', 'ngx-bootstrap/dropdown', 'ngx-bootstrap/popover', 'ngx-bootstrap/carousel', '@wm/components/basic', '@wm/components/basic/progress', '@wm/components/basic/rich-text-editor', '@wm/components/basic/search', '@wm/components/basic/tree', '@wm/components/input', '@wm/components/input/calendar', '@wm/components/input/chips', '@wm/components/input/color-picker', '@wm/components/input/currency', '@wm/components/input/epoch', '@wm/components/input/file-upload', '@wm/components/input/rating', '@wm/components/input/slider', '@wm/components/data/card', '@wm/components/data/form', '@wm/components/data/list', '@wm/components/data/live-table', '@wm/components/data/pagination', '@wm/components/data/table', '@wm/components/chart', '@wm/components/containers/accordion', '@wm/components/containers/linear-layout', '@wm/components/containers/layout-grid', '@wm/components/containers/panel', '@wm/components/containers/tabs', '@wm/components/containers/tile', '@wm/components/containers/wizard', '@wm/components/dialogs/alert-dialog', '@wm/components/dialogs/iframe-dialog', '@wm/components/dialogs/login-dialog', '@wm/components/dialogs/partial-dialog', '@wm/components/navigation/breadcrumb', '@wm/components/navigation/menu', '@wm/components/navigation/navbar', '@wm/components/navigation/popover', '@wm/components/advanced/carousel', '@wm/components/advanced/login', '@wm/components/advanced/marquee', '@wm/components/advanced/custom', '@wm/components/page/footer', '@wm/components/page/header', '@wm/components/page/left-panel', '@wm/components/page/right-panel', '@wm/components/page/top-nav', '@wm/components/prefab'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global._, global.ng.platformBrowser, global.wm.runtime.base, global.ng.router, global.ng.common.http, global.ng.platformBrowser.animations, global.wm.components.base, global.wm.core, global.wm.variables, global.wm.security, global.wm.http, global.wm.oAuth, global.modal, global.ngxToastr, global.datepicker, global.ngCircleProgress, global.ng.common, global.tslib, global.wm.transpiler, global.wm_custom_widgets, global.wm.components.page, global.ng.forms, global.typeahead, global.timepicker, global.progressbar, global.pagination, global.tooltip, global.dropdown, global.popover, global.carousel, global.wm.components.basic, global.wm.components.basic.progress, global.wm.components.basic.richtexteditor, global.wm.components.basic.search, global.wm.components.basic.tree, global.wm.components.input, global.wm.components.input.calendar, global.wm.components.input.chips, global.wm.components.input.colorpicker, global.wm.components.input.currency, global.wm.components.input.epoch, global.wm.components.input.fileupload, global.wm.components.input.rating, global.wm.components.input.slider, global.wm.components.data.card, global.wm.components.data.form, global.wm.components.data.list, global.wm.components.data.livetable, global.wm.components.data.pagination, global.wm.components.data.table, global.wm.components.chart, global.wm.components.containers.accordion, global.wm.components.containers.linearlayout, global.wm.components.containers.layoutgrid, global.wm.components.containers.panel, global.wm.components.containers.tabs, global.wm.components.containers.tile, global.wm.components.containers.wizard, global.wm.components.dialogs.alertdialog, global.wm.components.dialogs.iframedialog, global.wm.components.dialogs.logindialog, global.wm.components.dialogs.partialdialog, global.wm.components.navigation.breadcrumb, global.wm.components.navigation.menu, global.wm.components.navigation.navbar, global.wm.components.navigation.popover, global.wm.components.advanced.carousel, global.wm.components.advanced.login, global.wm.components.advanced.marquee, global.wm.components.advanced.custom, global.wm.components.page.footer, global.wm.components.page.header, global.wm.components.page.leftpanel, global.wm.components.page.rightpanel, global.wm.components.page.topnav, global.wm.components.prefab));
|
|
5
|
+
})(this, (function (exports, i0, lodashEs, platformBrowser, i4, i1, i1$1, animations, base, i5, i2, i3, http, oAuth, modal, ngxToastr, datepicker, ngCircleProgress, common, tslib, transpiler, customWidgets, page, forms, typeahead, timepicker, progressbar, pagination, tooltip, dropdown, popover, carousel, basic, progress, richTextEditor, search, tree, input, calendar, chips, colorPicker, currency, epoch, fileUpload, rating, slider, card, form, list, liveTable, pagination$1, table, chart, accordion, linearLayout, layoutGrid, panel, tabs, tile, wizard, alertDialog, iframeDialog, loginDialog, partialDialog, breadcrumb, menu, navbar, popover$1, carousel$1, login, marquee, custom, footer, header, leftPanel, rightPanel, topNav, prefab) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
var n = Object.create(null);
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
|
|
25
|
+
var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
|
|
25
26
|
var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
|
|
26
27
|
var i1$1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$1);
|
|
27
28
|
var i5__namespace = /*#__PURE__*/_interopNamespaceDefault(i5);
|
|
28
|
-
var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
|
|
29
29
|
var i2__namespace = /*#__PURE__*/_interopNamespaceDefault(i2);
|
|
30
30
|
var i3__namespace = /*#__PURE__*/_interopNamespaceDefault(i3);
|
|
31
31
|
var customWidgets__namespace = /*#__PURE__*/_interopNamespaceDefault(customWidgets);
|
|
@@ -149,6 +149,23 @@
|
|
|
149
149
|
canDeactivate: [i4.CanDeactivatePageGuard]
|
|
150
150
|
}
|
|
151
151
|
];
|
|
152
|
+
class CustomwidgetConfigProviderService extends i4.CustomwidgetConfigProvider {
|
|
153
|
+
constructor() {
|
|
154
|
+
super();
|
|
155
|
+
}
|
|
156
|
+
getConfig(widgetname) {
|
|
157
|
+
return new Promise((res, rej) => {
|
|
158
|
+
Promise.resolve(window['resourceCache'].get(`./custom-widgets/${widgetname}/page.min.json`)).then((pageInfo) => {
|
|
159
|
+
res(pageInfo.config);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = function CustomwidgetConfigProviderService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomwidgetConfigProviderService)(); }; }
|
|
164
|
+
static { this.ɵprov = /*@__PURE__*/ i0__namespace.ɵɵdefineInjectable({ token: CustomwidgetConfigProviderService, factory: CustomwidgetConfigProviderService.ɵfac }); }
|
|
165
|
+
}
|
|
166
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomwidgetConfigProviderService, [{
|
|
167
|
+
type: i0.Injectable
|
|
168
|
+
}], () => [], null); })();
|
|
152
169
|
|
|
153
170
|
class AppJSProviderService extends i4.AppJSProvider {
|
|
154
171
|
constructor($http) {
|
|
@@ -170,22 +187,22 @@
|
|
|
170
187
|
}]
|
|
171
188
|
}], () => [{ type: i1$1__namespace.HttpClient }], null); })();
|
|
172
189
|
|
|
173
|
-
const cache$
|
|
190
|
+
const cache$1 = new Map();
|
|
174
191
|
class AppResourceManagerService {
|
|
175
192
|
get(url, useCache) {
|
|
176
|
-
const cachedResponse = cache$
|
|
193
|
+
const cachedResponse = cache$1.get(url);
|
|
177
194
|
if (cachedResponse) {
|
|
178
195
|
return Promise.resolve(cachedResponse);
|
|
179
196
|
}
|
|
180
197
|
return this.$http.get(url).then(response => {
|
|
181
198
|
if (useCache) {
|
|
182
|
-
cache$
|
|
199
|
+
cache$1.set(url, response);
|
|
183
200
|
}
|
|
184
201
|
return response;
|
|
185
202
|
});
|
|
186
203
|
}
|
|
187
204
|
clearCache() {
|
|
188
|
-
cache$
|
|
205
|
+
cache$1.clear();
|
|
189
206
|
}
|
|
190
207
|
constructor($http) {
|
|
191
208
|
this.$http = $http;
|
|
@@ -352,8 +369,7 @@
|
|
|
352
369
|
{
|
|
353
370
|
provide: i5.UserDefinedExecutionContext,
|
|
354
371
|
useExisting: DynamicComponent
|
|
355
|
-
}
|
|
356
|
-
page.PageDirective,
|
|
372
|
+
}
|
|
357
373
|
]
|
|
358
374
|
})(DynamicComponent);
|
|
359
375
|
return component;
|
|
@@ -440,23 +456,6 @@
|
|
|
440
456
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(ComponentRefProviderService, [{
|
|
441
457
|
type: i0.Injectable
|
|
442
458
|
}], () => [{ type: AppResourceManagerService }, { type: i5__namespace.App }, { type: i4__namespace.AppManagerService }, { type: i0__namespace.Compiler }], null); })();
|
|
443
|
-
class CustomwidgetConfigProviderService extends i4.CustomwidgetConfigProvider {
|
|
444
|
-
constructor() {
|
|
445
|
-
super();
|
|
446
|
-
}
|
|
447
|
-
getConfig(widgetname) {
|
|
448
|
-
return new Promise((res, rej) => {
|
|
449
|
-
Promise.resolve(window['resourceCache'].get(`./custom-widgets/${widgetname}/page.min.json`)).then((pageInfo) => {
|
|
450
|
-
res(pageInfo.config);
|
|
451
|
-
});
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
static { this.ɵfac = function CustomwidgetConfigProviderService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomwidgetConfigProviderService)(); }; }
|
|
455
|
-
static { this.ɵprov = /*@__PURE__*/ i0__namespace.ɵɵdefineInjectable({ token: CustomwidgetConfigProviderService, factory: CustomwidgetConfigProviderService.ɵfac }); }
|
|
456
|
-
}
|
|
457
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomwidgetConfigProviderService, [{
|
|
458
|
-
type: i0.Injectable
|
|
459
|
-
}], () => [], null); })();
|
|
460
459
|
|
|
461
460
|
const cache = new Map();
|
|
462
461
|
class PrefabConfigProviderService extends i4.PrefabConfigProvider {
|
|
@@ -482,6 +481,144 @@
|
|
|
482
481
|
type: i0.Injectable
|
|
483
482
|
}], () => [{ type: AppResourceManagerService }], null); })();
|
|
484
483
|
|
|
484
|
+
const wmModules = [
|
|
485
|
+
i0.importProvidersFrom(modal.ModalModule.forRoot(), ngxToastr.ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true }), datepicker.BsDatepickerModule.forRoot(), ngCircleProgress.NgCircleProgressModule.forRoot())
|
|
486
|
+
];
|
|
487
|
+
const xsrfHeaderName$1 = "X-WM-XSRF-TOKEN";
|
|
488
|
+
const initializeProjectDetails = () => {
|
|
489
|
+
let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
|
|
490
|
+
i5._WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
|
|
491
|
+
const apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
|
|
492
|
+
//for preview
|
|
493
|
+
if (!cdnUrl) {
|
|
494
|
+
cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
|
|
495
|
+
}
|
|
496
|
+
i5._WM_APP_PROJECT.id = location.href.split('/')[3];
|
|
497
|
+
// Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
|
|
498
|
+
i5._WM_APP_PROJECT.apiUrl = apiUrl || './';
|
|
499
|
+
i5._WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
|
|
500
|
+
i5._WM_APP_PROJECT.ngDest = 'ng-bundle/';
|
|
501
|
+
try {
|
|
502
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
503
|
+
//@ts-ignore
|
|
504
|
+
__webpack_require__.p = __webpack_public_path__ = cdnUrl;
|
|
505
|
+
}
|
|
506
|
+
catch (e) {
|
|
507
|
+
//for app preview there is no webpack. Don't do anything.
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
function InitializeApp(I18nService, AppJSResolve) {
|
|
511
|
+
return async () => {
|
|
512
|
+
initializeProjectDetails();
|
|
513
|
+
await AppJSResolve.resolve();
|
|
514
|
+
return I18nService.loadDefaultLocale();
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
function setAngularLocale(I18nService) {
|
|
518
|
+
initializeProjectDetails();
|
|
519
|
+
return I18nService.deduceAppLocale();
|
|
520
|
+
}
|
|
521
|
+
const appConfig = {
|
|
522
|
+
providers: [
|
|
523
|
+
// Provide Angular core services
|
|
524
|
+
i1.provideRouter(routes, i1.withHashLocation(), i1.withComponentInputBinding()),
|
|
525
|
+
i1$1.provideHttpClient(i1$1.withInterceptorsFromDi(), i1$1.withXsrfConfiguration({
|
|
526
|
+
cookieName: "wm_xsrf_token",
|
|
527
|
+
headerName: xsrfHeaderName$1
|
|
528
|
+
})),
|
|
529
|
+
animations.provideAnimations(),
|
|
530
|
+
// Provide application-specific services
|
|
531
|
+
{
|
|
532
|
+
provide: i0.APP_INITIALIZER,
|
|
533
|
+
useFactory: InitializeApp,
|
|
534
|
+
deps: [i5.AbstractI18nService, i4.AppJSResolve],
|
|
535
|
+
multi: true
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
provide: i0.LOCALE_ID,
|
|
539
|
+
useFactory: setAngularLocale,
|
|
540
|
+
deps: [i5.AbstractI18nService]
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
provide: i1$1.HTTP_INTERCEPTORS,
|
|
544
|
+
useClass: i4.HttpCallInterceptor,
|
|
545
|
+
multi: true
|
|
546
|
+
},
|
|
547
|
+
{ provide: i5.App, useClass: i4.AppRef },
|
|
548
|
+
{ provide: i5.AbstractToasterService, useClass: i4.ToasterServiceImpl },
|
|
549
|
+
{ provide: i5.AbstractI18nService, useClass: i4.I18nServiceImpl },
|
|
550
|
+
{ provide: i5.AbstractSpinnerService, useClass: i4.SpinnerServiceImpl },
|
|
551
|
+
{ provide: i5.AbstractNavigationService, useClass: i4.NavigationServiceImpl },
|
|
552
|
+
{ provide: i5.AbstractDialogService, useClass: base.DialogServiceImpl },
|
|
553
|
+
{ provide: i5.AppDefaults, useClass: i4.AppDefaultsService },
|
|
554
|
+
{ provide: i5.DynamicComponentRefProvider, useClass: i4.DynamicComponentRefProviderService },
|
|
555
|
+
{ provide: i4.AppJSProvider, useClass: AppJSProviderService },
|
|
556
|
+
{ provide: i4.AppVariablesProvider, useClass: AppVariablesProviderService },
|
|
557
|
+
{ provide: i4.AppExtensionProvider, useClass: AppExtensionProviderService },
|
|
558
|
+
{ provide: i4.ComponentRefProvider, useClass: ComponentRefProviderService },
|
|
559
|
+
{ provide: i5.PartialRefProvider, useClass: ComponentRefProviderService },
|
|
560
|
+
{ provide: i5.CustomWidgetRefProvider, useClass: ComponentRefProviderService },
|
|
561
|
+
{ provide: i4.CustomwidgetConfigProvider, useClass: CustomwidgetConfigProviderService },
|
|
562
|
+
{ provide: i4.PrefabConfigProvider, useClass: PrefabConfigProviderService },
|
|
563
|
+
{ provide: i1.RouteReuseStrategy, useClass: i4.WmRouteReuseStrategy },
|
|
564
|
+
{ provide: i5.AbstractHttpService, useClass: http.HttpServiceImpl },
|
|
565
|
+
AppResourceManagerService,
|
|
566
|
+
i4.PipeService,
|
|
567
|
+
common.DecimalPipe,
|
|
568
|
+
base.SanitizePipe,
|
|
569
|
+
base.ToDatePipe,
|
|
570
|
+
base.FilterPipe,
|
|
571
|
+
base.TrailingZeroDecimalPipe,
|
|
572
|
+
base.TrustAsPipe,
|
|
573
|
+
base.ImagePipe,
|
|
574
|
+
base.CustomPipe,
|
|
575
|
+
Location,
|
|
576
|
+
common.DatePipe,
|
|
577
|
+
i4.AppManagerService,
|
|
578
|
+
i4.PrefabManagerService,
|
|
579
|
+
i4.AuthGuard,
|
|
580
|
+
i4.RoleGuard,
|
|
581
|
+
i4.PageNotFoundGuard,
|
|
582
|
+
i4.CanDeactivatePageGuard,
|
|
583
|
+
i4.AppJSResolve,
|
|
584
|
+
i4.AppExtensionJSResolve,
|
|
585
|
+
i4.I18nResolve,
|
|
586
|
+
i3.SecurityService,
|
|
587
|
+
oAuth.OAuthService,
|
|
588
|
+
i2.VariablesService,
|
|
589
|
+
i2.MetadataService,
|
|
590
|
+
...wmModules,
|
|
591
|
+
page.PageDirective
|
|
592
|
+
]
|
|
593
|
+
};
|
|
594
|
+
|
|
595
|
+
const DEBUG_MODE = 'debugMode';
|
|
596
|
+
if (sessionStorage.getItem(DEBUG_MODE) !== 'true') {
|
|
597
|
+
i0.enableProdMode();
|
|
598
|
+
}
|
|
599
|
+
console.time('bootstrap');
|
|
600
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
601
|
+
new Promise(resolve => {
|
|
602
|
+
resolve();
|
|
603
|
+
}).then(() => platformBrowser.bootstrapApplication(i4.AppComponent, appConfig))
|
|
604
|
+
.then((appRef) => {
|
|
605
|
+
window.addEventListener('unload', () => {
|
|
606
|
+
appRef.components.map(c => c?.destroy());
|
|
607
|
+
});
|
|
608
|
+
})
|
|
609
|
+
.catch(err => console.error('Error bootstrapping app:', err));
|
|
610
|
+
});
|
|
611
|
+
window.debugMode = function (on) {
|
|
612
|
+
if (lodashEs.isEmpty(on)) {
|
|
613
|
+
on = true;
|
|
614
|
+
}
|
|
615
|
+
const value = on ? 'true' : 'false';
|
|
616
|
+
if (sessionStorage.getItem(DEBUG_MODE) !== value) {
|
|
617
|
+
sessionStorage.setItem(DEBUG_MODE, value);
|
|
618
|
+
window.location.reload();
|
|
619
|
+
}
|
|
620
|
+
};
|
|
621
|
+
|
|
485
622
|
const routerModule = i1.RouterModule.forRoot(routes, { useHash: true, scrollPositionRestoration: 'top' });
|
|
486
623
|
const toastrModule = ngxToastr.ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true });
|
|
487
624
|
// In angular 15, xsrf headerName should not be null. Angular 15 is not using default header value like it used to send in calls
|
|
@@ -678,34 +815,6 @@
|
|
|
678
815
|
tslib.__metadata("design:paramtypes", [i5.App, i0.Injector, i4.ComponentRefProvider])
|
|
679
816
|
], exports.AppModule);
|
|
680
817
|
|
|
681
|
-
const DEBUG_MODE = 'debugMode';
|
|
682
|
-
if (sessionStorage.getItem(DEBUG_MODE) !== 'true') {
|
|
683
|
-
i0.enableProdMode();
|
|
684
|
-
}
|
|
685
|
-
console.time('bootstrap');
|
|
686
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
687
|
-
new Promise(resolve => {
|
|
688
|
-
resolve();
|
|
689
|
-
}).then(() => platformBrowserDynamic.platformBrowserDynamic().bootstrapModule(exports.AppModule))
|
|
690
|
-
.then((appModuleRef) => {
|
|
691
|
-
const applicationRef = appModuleRef.injector.get(i0.ApplicationRef);
|
|
692
|
-
window.addEventListener('unload', () => {
|
|
693
|
-
applicationRef.components.map(c => c && c.destroy());
|
|
694
|
-
});
|
|
695
|
-
console.timeEnd('bootstrap');
|
|
696
|
-
}, err => console.log(err));
|
|
697
|
-
});
|
|
698
|
-
window.debugMode = function (on) {
|
|
699
|
-
if (lodashEs.isEmpty(on)) {
|
|
700
|
-
on = true;
|
|
701
|
-
}
|
|
702
|
-
const value = on ? 'true' : 'false';
|
|
703
|
-
if (sessionStorage.getItem(DEBUG_MODE) !== value) {
|
|
704
|
-
sessionStorage.setItem(DEBUG_MODE, value);
|
|
705
|
-
window.location.reload();
|
|
706
|
-
}
|
|
707
|
-
};
|
|
708
|
-
|
|
709
818
|
exports.AppExtensionProviderService = AppExtensionProviderService;
|
|
710
819
|
exports.AppJSProviderService = AppJSProviderService;
|
|
711
820
|
exports.AppResourceManagerService = AppResourceManagerService;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { importProvidersFrom, APP_INITIALIZER, LOCALE_ID } from "@angular/core";
|
|
2
|
+
import { provideRouter, RouteReuseStrategy, withComponentInputBinding, withHashLocation } from "@angular/router";
|
|
3
|
+
import { provideHttpClient, withXsrfConfiguration, HTTP_INTERCEPTORS, withInterceptorsFromDi } from "@angular/common/http";
|
|
4
|
+
import { provideAnimations } from "@angular/platform-browser/animations";
|
|
5
|
+
import { routes } from "./app.routes";
|
|
6
|
+
import { HttpServiceImpl } from "@wm/http";
|
|
7
|
+
import { SecurityService } from "@wm/security";
|
|
8
|
+
import { VariablesService, MetadataService } from "@wm/variables";
|
|
9
|
+
import { OAuthService } from "@wm/oAuth";
|
|
10
|
+
import { AppJSProvider, AppVariablesProvider, ComponentRefProvider, PrefabConfigProvider, AppExtensionProvider, CustomwidgetConfigProvider, AppDefaultsService, AppExtensionJSResolve, AppJSResolve, AppManagerService, AppRef, I18nServiceImpl, NavigationServiceImpl, SpinnerServiceImpl, ToasterServiceImpl, DynamicComponentRefProviderService, HttpCallInterceptor, PrefabManagerService, CanDeactivatePageGuard, PageNotFoundGuard, I18nResolve, RoleGuard, PipeService, AuthGuard, WmRouteReuseStrategy } from "@wm/runtime/base";
|
|
11
|
+
import { AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppDefaults, CustomWidgetRefProvider, DynamicComponentRefProvider, PartialRefProvider, _WM_APP_PROJECT, } from "@wm/core";
|
|
12
|
+
import { ModalModule } from "ngx-bootstrap/modal";
|
|
13
|
+
import { ToastNoAnimationModule } from "ngx-toastr";
|
|
14
|
+
import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
|
|
15
|
+
import { NgCircleProgressModule } from "ng-circle-progress";
|
|
16
|
+
import { DatePipe, DecimalPipe } from "@angular/common";
|
|
17
|
+
import { CustomwidgetConfigProviderService } from "./services/customwidget-config-provider.service";
|
|
18
|
+
import { AppJSProviderService } from "./services/app-js-provider.service";
|
|
19
|
+
import { AppVariablesProviderService } from "./services/app-variables-provider.service";
|
|
20
|
+
import { AppExtensionProviderService } from "./services/app-extension.service";
|
|
21
|
+
import { ComponentRefProviderService } from "./services/component-ref-provider.service";
|
|
22
|
+
import { PrefabConfigProviderService } from "./services/prefab-config-provider.service";
|
|
23
|
+
import { AppResourceManagerService } from "./services/app-resource-manager.service";
|
|
24
|
+
import { CustomPipe, DialogServiceImpl, FilterPipe, ImagePipe, SanitizePipe, ToDatePipe, TrailingZeroDecimalPipe, TrustAsPipe } from "@wm/components/base";
|
|
25
|
+
import { PageDirective } from "@wm/components/page";
|
|
26
|
+
const wmModules = [
|
|
27
|
+
importProvidersFrom(ModalModule.forRoot(), ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true }), BsDatepickerModule.forRoot(), NgCircleProgressModule.forRoot())
|
|
28
|
+
];
|
|
29
|
+
export const xsrfHeaderName = "X-WM-XSRF-TOKEN";
|
|
30
|
+
const initializeProjectDetails = () => {
|
|
31
|
+
let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
|
|
32
|
+
_WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
|
|
33
|
+
const apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
|
|
34
|
+
//for preview
|
|
35
|
+
if (!cdnUrl) {
|
|
36
|
+
cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
|
|
37
|
+
}
|
|
38
|
+
_WM_APP_PROJECT.id = location.href.split('/')[3];
|
|
39
|
+
// Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
|
|
40
|
+
_WM_APP_PROJECT.apiUrl = apiUrl || './';
|
|
41
|
+
_WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
|
|
42
|
+
_WM_APP_PROJECT.ngDest = 'ng-bundle/';
|
|
43
|
+
try {
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
45
|
+
//@ts-ignore
|
|
46
|
+
__webpack_require__.p = __webpack_public_path__ = cdnUrl;
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
//for app preview there is no webpack. Don't do anything.
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
export function InitializeApp(I18nService, AppJSResolve) {
|
|
53
|
+
return async () => {
|
|
54
|
+
initializeProjectDetails();
|
|
55
|
+
await AppJSResolve.resolve();
|
|
56
|
+
return I18nService.loadDefaultLocale();
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function setAngularLocale(I18nService) {
|
|
60
|
+
initializeProjectDetails();
|
|
61
|
+
return I18nService.deduceAppLocale();
|
|
62
|
+
}
|
|
63
|
+
export const appConfig = {
|
|
64
|
+
providers: [
|
|
65
|
+
// Provide Angular core services
|
|
66
|
+
provideRouter(routes, withHashLocation(), withComponentInputBinding()),
|
|
67
|
+
provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({
|
|
68
|
+
cookieName: "wm_xsrf_token",
|
|
69
|
+
headerName: xsrfHeaderName
|
|
70
|
+
})),
|
|
71
|
+
provideAnimations(),
|
|
72
|
+
// Provide application-specific services
|
|
73
|
+
{
|
|
74
|
+
provide: APP_INITIALIZER,
|
|
75
|
+
useFactory: InitializeApp,
|
|
76
|
+
deps: [AbstractI18nService, AppJSResolve],
|
|
77
|
+
multi: true
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
provide: LOCALE_ID,
|
|
81
|
+
useFactory: setAngularLocale,
|
|
82
|
+
deps: [AbstractI18nService]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
provide: HTTP_INTERCEPTORS,
|
|
86
|
+
useClass: HttpCallInterceptor,
|
|
87
|
+
multi: true
|
|
88
|
+
},
|
|
89
|
+
{ provide: App, useClass: AppRef },
|
|
90
|
+
{ provide: AbstractToasterService, useClass: ToasterServiceImpl },
|
|
91
|
+
{ provide: AbstractI18nService, useClass: I18nServiceImpl },
|
|
92
|
+
{ provide: AbstractSpinnerService, useClass: SpinnerServiceImpl },
|
|
93
|
+
{ provide: AbstractNavigationService, useClass: NavigationServiceImpl },
|
|
94
|
+
{ provide: AbstractDialogService, useClass: DialogServiceImpl },
|
|
95
|
+
{ provide: AppDefaults, useClass: AppDefaultsService },
|
|
96
|
+
{ provide: DynamicComponentRefProvider, useClass: DynamicComponentRefProviderService },
|
|
97
|
+
{ provide: AppJSProvider, useClass: AppJSProviderService },
|
|
98
|
+
{ provide: AppVariablesProvider, useClass: AppVariablesProviderService },
|
|
99
|
+
{ provide: AppExtensionProvider, useClass: AppExtensionProviderService },
|
|
100
|
+
{ provide: ComponentRefProvider, useClass: ComponentRefProviderService },
|
|
101
|
+
{ provide: PartialRefProvider, useClass: ComponentRefProviderService },
|
|
102
|
+
{ provide: CustomWidgetRefProvider, useClass: ComponentRefProviderService },
|
|
103
|
+
{ provide: CustomwidgetConfigProvider, useClass: CustomwidgetConfigProviderService },
|
|
104
|
+
{ provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },
|
|
105
|
+
{ provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy },
|
|
106
|
+
{ provide: AbstractHttpService, useClass: HttpServiceImpl },
|
|
107
|
+
AppResourceManagerService,
|
|
108
|
+
PipeService,
|
|
109
|
+
DecimalPipe,
|
|
110
|
+
SanitizePipe,
|
|
111
|
+
ToDatePipe,
|
|
112
|
+
FilterPipe,
|
|
113
|
+
TrailingZeroDecimalPipe,
|
|
114
|
+
TrustAsPipe,
|
|
115
|
+
ImagePipe,
|
|
116
|
+
CustomPipe,
|
|
117
|
+
Location,
|
|
118
|
+
DatePipe,
|
|
119
|
+
AppManagerService,
|
|
120
|
+
PrefabManagerService,
|
|
121
|
+
AuthGuard,
|
|
122
|
+
RoleGuard,
|
|
123
|
+
PageNotFoundGuard,
|
|
124
|
+
CanDeactivatePageGuard,
|
|
125
|
+
AppJSResolve,
|
|
126
|
+
AppExtensionJSResolve,
|
|
127
|
+
I18nResolve,
|
|
128
|
+
SecurityService,
|
|
129
|
+
OAuthService,
|
|
130
|
+
VariablesService,
|
|
131
|
+
MetadataService,
|
|
132
|
+
...wmModules,
|
|
133
|
+
PageDirective
|
|
134
|
+
]
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUNILGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sZUFBZSxFQUNmLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGtDQUFrQyxFQUNsQyxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULG9CQUFvQixFQUN2QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixHQUFHLEVBQ0gsV0FBVyxFQUNYLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDM0Isa0JBQWtCLEVBQ2xCLGVBQWUsR0FDbEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNKLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLFNBQVMsR0FBRztJQUNkLG1CQUFtQixDQUNmLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFDckIsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDbkUsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQzVCLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUNuQztDQUNKLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUM7QUFLaEQsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7SUFDbEMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEksZUFBZSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlILGFBQWE7SUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDVixNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUNELGVBQWUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsMElBQTBJO0lBQzFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQztJQUN4QyxlQUFlLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxZQUFZLENBQUM7SUFDaEQsZUFBZSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDdEMsSUFBSSxDQUFDO1FBQ0QsNkRBQTZEO1FBQzdELFlBQVk7UUFDWixtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsdUJBQXVCLEdBQUcsTUFBTSxDQUFDO0lBQzdELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QseURBQXlEO0lBQzdELENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZO0lBQ25ELE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDZCx3QkFBd0IsRUFBRSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxXQUFXO0lBQ3hDLHdCQUF3QixFQUFFLENBQUM7SUFDM0IsT0FBTyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBc0I7SUFDeEMsU0FBUyxFQUFFO1FBQ1AsZ0NBQWdDO1FBQ2hDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RFLGlCQUFpQixDQUNiLHNCQUFzQixFQUFFLEVBQ3hCLHFCQUFxQixDQUFDO1lBQ2xCLFVBQVUsRUFBRSxlQUFlO1lBQzNCLFVBQVUsRUFBRSxjQUFjO1NBQzdCLENBQUMsQ0FDTDtRQUNELGlCQUFpQixFQUFFO1FBQ25CLHdDQUF3QztRQUN4QztZQUNJLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxhQUFhO1lBQ3pCLElBQUksRUFBRSxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQztZQUN6QyxLQUFLLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsU0FBUztZQUNsQixVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1NBQzlCO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNELEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1FBQ2xDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtRQUNqRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO1FBQzNELEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtRQUNqRSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7UUFDdkUsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1FBQy9ELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7UUFDdEQsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFO1FBQ3RGLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7UUFDMUQsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1FBQ3hFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtRQUN4RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUU7UUFDeEUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1FBQ3RFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtRQUMzRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxRQUFRLEVBQUUsaUNBQWlDLEVBQUU7UUFDcEYsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1FBQ3hFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtRQUMvRCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO1FBQzNELHlCQUF5QjtRQUN6QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO1FBQ1YsVUFBVTtRQUNWLHVCQUF1QjtRQUN2QixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixRQUFRO1FBQ1IsUUFBUTtRQUNSLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsU0FBUztRQUNULFNBQVM7UUFDVCxpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLFlBQVk7UUFDWixxQkFBcUI7UUFDckIsV0FBVztRQUNYLGVBQWU7UUFDZixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixHQUFHLFNBQVM7UUFDWixhQUFhO0tBQ2hCO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZmlnLCBpbXBvcnRQcm92aWRlcnNGcm9tLCBBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBwcm92aWRlUm91dGVyLCBSb3V0ZVJldXNlU3RyYXRlZ3ksIHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcsIHdpdGhIYXNoTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aFhzcmZDb25maWd1cmF0aW9uLCBIVFRQX0lOVEVSQ0VQVE9SUywgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgcHJvdmlkZUFuaW1hdGlvbnMgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zXCI7XG5pbXBvcnQgeyByb3V0ZXMgfSBmcm9tIFwiLi9hcHAucm91dGVzXCI7XG5pbXBvcnQgeyBIdHRwU2VydmljZUltcGwgfSBmcm9tIFwiQHdtL2h0dHBcIjtcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gXCJAd20vc2VjdXJpdHlcIjtcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UsIE1ldGFkYXRhU2VydmljZSB9IGZyb20gXCJAd20vdmFyaWFibGVzXCI7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tIFwiQHdtL29BdXRoXCI7XG5pbXBvcnQge1xuICAgIEFwcEpTUHJvdmlkZXIsXG4gICAgQXBwVmFyaWFibGVzUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgUHJlZmFiQ29uZmlnUHJvdmlkZXIsXG4gICAgQXBwRXh0ZW5zaW9uUHJvdmlkZXIsXG4gICAgQ3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIsXG4gICAgQXBwRGVmYXVsdHNTZXJ2aWNlLFxuICAgIEFwcEV4dGVuc2lvbkpTUmVzb2x2ZSxcbiAgICBBcHBKU1Jlc29sdmUsXG4gICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgQXBwUmVmLFxuICAgIEkxOG5TZXJ2aWNlSW1wbCxcbiAgICBOYXZpZ2F0aW9uU2VydmljZUltcGwsXG4gICAgU3Bpbm5lclNlcnZpY2VJbXBsLFxuICAgIFRvYXN0ZXJTZXJ2aWNlSW1wbCxcbiAgICBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlLFxuICAgIEh0dHBDYWxsSW50ZXJjZXB0b3IsXG4gICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCxcbiAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICBJMThuUmVzb2x2ZSxcbiAgICBSb2xlR3VhcmQsXG4gICAgUGlwZVNlcnZpY2UsXG4gICAgQXV0aEd1YXJkLFxuICAgIFdtUm91dGVSZXVzZVN0cmF0ZWd5XG59IGZyb20gXCJAd20vcnVudGltZS9iYXNlXCI7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIEN1c3RvbVdpZGdldFJlZlByb3ZpZGVyLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBQYXJ0aWFsUmVmUHJvdmlkZXIsXG4gICAgX1dNX0FQUF9QUk9KRUNULFxufSBmcm9tIFwiQHdtL2NvcmVcIjtcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvbW9kYWxcIjtcbmltcG9ydCB7IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgTmdDaXJjbGVQcm9ncmVzc01vZHVsZSB9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7IERhdGVQaXBlLCBEZWNpbWFsUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2N1c3RvbXdpZGdldC1jb25maWctcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQXBwSlNQcm92aWRlclNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9hcHAtanMtcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQXBwVmFyaWFibGVzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvYXBwLXZhcmlhYmxlcy1wcm92aWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25Qcm92aWRlclNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9hcHAtZXh0ZW5zaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2NvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvcHJlZmFiLWNvbmZpZy1wcm92aWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvYXBwLXJlc291cmNlLW1hbmFnZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tUGlwZSwgRGlhbG9nU2VydmljZUltcGwsIEZpbHRlclBpcGUsIEltYWdlUGlwZSwgU2FuaXRpemVQaXBlLCBUb0RhdGVQaXBlLCBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSwgVHJ1c3RBc1BpcGUgfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtQYWdlRGlyZWN0aXZlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZVwiO1xuXG5cbmNvbnN0IHdtTW9kdWxlcyA9IFtcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgICAgICBNb2RhbE1vZHVsZS5mb3JSb290KCksXG4gICAgICAgIFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUuZm9yUm9vdCh7IG1heE9wZW5lZDogMSwgYXV0b0Rpc21pc3M6IHRydWUgfSksXG4gICAgICAgIEJzRGF0ZXBpY2tlck1vZHVsZS5mb3JSb290KCksXG4gICAgICAgIE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUuZm9yUm9vdCgpLFxuICAgIClcbl07XG5leHBvcnQgY29uc3QgeHNyZkhlYWRlck5hbWUgPSBcIlgtV00tWFNSRi1UT0tFTlwiO1xuXG5cblxuXG5jb25zdCBpbml0aWFsaXplUHJvamVjdERldGFpbHMgPSAoKSA9PiB7XG4gICAgbGV0IGNkblVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJkZXBsb3lVcmxcIl0nKS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICBfV01fQVBQX1BST0pFQ1QuaXNQcmV2aWV3ID0gY2RuVXJsID8gZmFsc2UgOiB0cnVlO1xuICAgIGNvbnN0IGFwaVVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiYXBpVXJsXCJdJykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJhcGlVcmxcIl0nKS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICAvL2ZvciBwcmV2aWV3XG4gICAgaWYgKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmFwaVVybCA9IGFwaVVybCB8fCAnLi8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgPSBjZG5VcmwgfHwgJ25nLWJ1bmRsZS8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3QgPSAnbmctYnVuZGxlLyc7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvL2ZvciBhcHAgcHJldmlldyB0aGVyZSBpcyBubyB3ZWJwYWNrLiBEb24ndCBkbyBhbnl0aGluZy5cbiAgICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gSW5pdGlhbGl6ZUFwcChJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzKCk7XG4gICAgICAgIGF3YWl0IEFwcEpTUmVzb2x2ZS5yZXNvbHZlKCk7XG4gICAgICAgIHJldHVybiBJMThuU2VydmljZS5sb2FkRGVmYXVsdExvY2FsZSgpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBbmd1bGFyTG9jYWxlKEkxOG5TZXJ2aWNlKSB7XG4gICAgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzKCk7XG4gICAgcmV0dXJuIEkxOG5TZXJ2aWNlLmRlZHVjZUFwcExvY2FsZSgpO1xufVxuXG5leHBvcnQgY29uc3QgYXBwQ29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gUHJvdmlkZSBBbmd1bGFyIGNvcmUgc2VydmljZXNcbiAgICAgICAgcHJvdmlkZVJvdXRlcihyb3V0ZXMsIHdpdGhIYXNoTG9jYXRpb24oKSwgd2l0aENvbXBvbmVudElucHV0QmluZGluZygpKSxcbiAgICAgICAgcHJvdmlkZUh0dHBDbGllbnQoXG4gICAgICAgICAgICB3aXRoSW50ZXJjZXB0b3JzRnJvbURpKCksXG4gICAgICAgICAgICB3aXRoWHNyZkNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgICAgIGNvb2tpZU5hbWU6IFwid21feHNyZl90b2tlblwiLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IHhzcmZIZWFkZXJOYW1lXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBwcm92aWRlQW5pbWF0aW9ucygpLFxuICAgICAgICAvLyBQcm92aWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIHNlcnZpY2VzXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IEluaXRpYWxpemVBcHAsXG4gICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExPQ0FMRV9JRCxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNldEFuZ3VsYXJMb2NhbGUsXG4gICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICB1c2VDbGFzczogSHR0cENhbGxJbnRlcmNlcHRvcixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwLCB1c2VDbGFzczogQXBwUmVmIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RUb2FzdGVyU2VydmljZSwgdXNlQ2xhc3M6IFRvYXN0ZXJTZXJ2aWNlSW1wbCB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0STE4blNlcnZpY2UsIHVzZUNsYXNzOiBJMThuU2VydmljZUltcGwgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCB1c2VDbGFzczogU3Bpbm5lclNlcnZpY2VJbXBsIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdmlnYXRpb25TZXJ2aWNlSW1wbCB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0RGlhbG9nU2VydmljZSwgdXNlQ2xhc3M6IERpYWxvZ1NlcnZpY2VJbXBsIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwRGVmYXVsdHMsIHVzZUNsYXNzOiBBcHBEZWZhdWx0c1NlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXIsIHVzZUNsYXNzOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwSlNQcm92aWRlciwgdXNlQ2xhc3M6IEFwcEpTUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwVmFyaWFibGVzUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBWYXJpYWJsZXNQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBcHBFeHRlbnNpb25Qcm92aWRlciwgdXNlQ2xhc3M6IEFwcEV4dGVuc2lvblByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IENvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUGFydGlhbFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ3VzdG9tV2lkZ2V0UmVmUHJvdmlkZXIsIHVzZUNsYXNzOiBDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDdXN0b213aWRnZXRDb25maWdQcm92aWRlciwgdXNlQ2xhc3M6IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFByZWZhYkNvbmZpZ1Byb3ZpZGVyLCB1c2VDbGFzczogUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogV21Sb3V0ZVJldXNlU3RyYXRlZ3kgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBYnN0cmFjdEh0dHBTZXJ2aWNlLCB1c2VDbGFzczogSHR0cFNlcnZpY2VJbXBsIH0sXG4gICAgICAgIEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIFBpcGVTZXJ2aWNlLFxuICAgICAgICBEZWNpbWFsUGlwZSxcbiAgICAgICAgU2FuaXRpemVQaXBlLFxuICAgICAgICBUb0RhdGVQaXBlLFxuICAgICAgICBGaWx0ZXJQaXBlLFxuICAgICAgICBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSxcbiAgICAgICAgVHJ1c3RBc1BpcGUsXG4gICAgICAgIEltYWdlUGlwZSxcbiAgICAgICAgQ3VzdG9tUGlwZSxcbiAgICAgICAgTG9jYXRpb24sXG4gICAgICAgIERhdGVQaXBlLFxuICAgICAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIEF1dGhHdWFyZCxcbiAgICAgICAgUm9sZUd1YXJkLFxuICAgICAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICAgICAgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCxcbiAgICAgICAgQXBwSlNSZXNvbHZlLFxuICAgICAgICBBcHBFeHRlbnNpb25KU1Jlc29sdmUsXG4gICAgICAgIEkxOG5SZXNvbHZlLFxuICAgICAgICBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIE9BdXRoU2VydmljZSxcbiAgICAgICAgVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgTWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICAuLi53bU1vZHVsZXMsXG4gICAgICAgIFBhZ2VEaXJlY3RpdmVcbiAgICBdXG59O1xuIl19
|