@esfaenza/core 15.2.256 → 15.2.258

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.
@@ -28,7 +28,7 @@ import { TAB_DEBUG_MODE } from "@esfaenza/tabber";
28
28
  // Core
29
29
  import { APPErrorHandler, HTTPServiceExtensions, ApplicationPreferencesPersistor, ApplicationCachePersistor, SessionRetriever, OutZoneEventPlugin, TokenService, GlobalSearchService, CompletedJobRedirectionService, MenuFilteringService, UserPreferencesService } from "@esfaenza/core/services";
30
30
  import { PageNotFoundComponent, ServerErrorComponent, AngularErrorComponent, ExternalPagesComponent, JaceLoginComponent, PagesComponent, RedirecterComponent, ComponentsModule, UserInfosComponent } from "@esfaenza/core/components";
31
- import { MENU, MENU_LOCALIZATION, REDIRECT_MAP, USE_FAKE_ACCESS_TOKEN, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, ALLOW_ANONYMOUS } from "@esfaenza/core/domain";
31
+ import { MENU, MENU_LOCALIZATION, REDIRECT_MAP, USE_FAKE_ACCESS_TOKEN, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, ANONYMOUS_MODE } from "@esfaenza/core/domain";
32
32
  import { ROUTE, EMBEDDED_ROUTE } from "@esfaenza/core/domain";
33
33
  import { TemplateCommon } from "@esfaenza/core/modules";
34
34
  // RxJs
@@ -149,12 +149,21 @@ export class EsFaenzaCoreModule {
149
149
  config.debugMode = (!isDevMode() && !config.forceDebugModeForProdBuilds) ? DebugFlags.None : (config.debugMode || DebugFlags.All);
150
150
  let mergedAppInitializer = (http, bts, aac, loc) => {
151
151
  return () => {
152
- if (config.allowAnonymous) {
153
- if (!config.initializerFunction)
154
- return of();
155
- console.log("%c[APP_INITIALIZER] Loading custom application initialization", "background-color: yellow");
156
- return config.initializerFunction(http, bts, aac)().pipe(tap(_ => {
157
- console.log("%c[APP_INITIALIZER] Initialization is over", "background-color: yellow");
152
+ if (config.anonymousMode) {
153
+ console.log("%c[APP_INITIALIZER] Loading AppConfig...", "background-color: yellow");
154
+ return http.get(GET_AppConfig_GetAppConfig, null, null, false).pipe(catchError(_ => of({}))).pipe(tap((appConfig) => {
155
+ myconfig = appConfig;
156
+ console.log("%c[APP_INITIALIZER] appConfig registered", "background-color: yellow");
157
+ var identtity = bts.getJaceIdentity();
158
+ if (bts.accountScope && identtity)
159
+ aac.initializeIdentity(identtity);
160
+ }), switchMap(_ => {
161
+ if (!config.initializerFunction)
162
+ return of();
163
+ console.log("%c[APP_INITIALIZER] Loading custom application initialization", "background-color: yellow");
164
+ return config.initializerFunction(http, bts, aac)().pipe(tap(_ => {
165
+ console.log("%c[APP_INITIALIZER] Initialization is over", "background-color: yellow");
166
+ }));
158
167
  }));
159
168
  }
160
169
  console.log("%c[APP_INITIALIZER] Loading AppConfig and Account Scope...", "background-color: yellow");
@@ -203,7 +212,7 @@ export class EsFaenzaCoreModule {
203
212
  { provide: ESC_DEBUG_MODE, useValue: config.debugMode ? (config.debugMode & DebugFlags.Charts) == DebugFlags.Charts : false },
204
213
  { provide: LOGIN_URL_LEGACY, useValue: config.legacyLogin !== null && config.legacyLogin !== undefined ? config.legacyLogin : false },
205
214
  { provide: NAVBAR_EXTENSIONS, useValue: config.navbarExtensions ? config.navbarExtensions : [] },
206
- { provide: ALLOW_ANONYMOUS, useValue: config.allowAnonymous ? config.allowAnonymous : false },
215
+ { provide: ANONYMOUS_MODE, useValue: config.anonymousMode ? config.anonymousMode : false },
207
216
  { provide: BaseAdapter, useClass: config?.chartsAdapter || BaseAdapter },
208
217
  { provide: BaseMessageService, useClass: config?.messageService || BaseMessageService },
209
218
  { provide: GlobalSearchService, useClass: config?.globalSearchService || GlobalSearchService },
@@ -247,4 +256,4 @@ export var DebugFlags;
247
256
  DebugFlags[DebugFlags["Tabber"] = 128] = "Tabber";
248
257
  DebugFlags[DebugFlags["All"] = 255] = "All";
249
258
  })(DebugFlags || (DebugFlags = {}));
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQTZCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQVUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxtQ0FBbUMsQ0FBQztBQUUzQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxzQkFBc0IsQ0FBQztBQUU5QixLQUFLO0FBQ0wsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxnQ0FBZ0MsRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvSyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGdC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Q0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDckksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDM0ksRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDMUgsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRTtnQkFDdkUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDN0gsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDL0gsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFD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QUFtQixDQUFBO0lBQ25CLDZEQUFzQixDQUFBO0lBQ3RCLDJDQUFhLENBQUE7SUFDYixrREFBZ0IsQ0FBQTtJQUNoQiwwREFBb0IsQ0FBQTtJQUNwQixnREFBZSxDQUFBO0lBQ2YsaURBQWUsQ0FBQTtJQUNmLDJDQUFnQixDQUFBO0FBQ3BCLENBQUMsRUFYVyxVQUFVLEtBQVYsVUFBVSxRQVdyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIEVycm9ySGFuZGxlciwgTE9DQUxFX0lELCBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFR5cGUsIGlzRGV2TW9kZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUsIE5vUHJlbG9hZGluZywgUk9VVEVTIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBFVkVOVF9NQU5BR0VSX1BMVUdJTlMgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3NlcnZpY2Utd29ya2VyXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZ2xvYmFsL2l0XCI7XHJcblxyXG4vLyBQbHVnaW5zXHJcbmltcG9ydCB7IE5neE1hdERhdGVBZGFwdGVyLCBOR1hfTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gXCJAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlclwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdHJNb2R1bGUgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgXCJ3aWRnc3Rlci93aWRnc3Rlci5qc1wiO1xyXG5cclxuLy8gRVNcclxuaW1wb3J0IHsgUHJlZmVyZW5jZXNNb2R1bGUsIFBSRUZfREVCVUdfTU9ERSwgUHJlZmVyZW5jZXNQZXJzaXN0b3IsIExvY2FsU3RvcmFnZVByZWZlcmVuY2VzUGVyc2lzdG9yLCBDYWNoZVBlcnNpc3RvciwgTG9jYWxTdG9yYWdlQ2FjaGVQZXJzaXN0b3IgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSwgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeSwgTE9DX0RFQlVHX01PREUsIEJhc2VMb2NhbGl6YXRpb24gfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgSHR0cHNlcnZpY2VNb2R1bGUsIEh0dHBTZXJ2aWNlRXh0ZW5zaW9ucywgSFRUUFNlcnZpY2UsIEhUVFBfREVCVUdfTU9ERSwgSFRUUF9JTlZBTElEQVRJT04gfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlLCBTR1JfREVCVUdfTU9ERSwgQmFzZU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSwgTmd4RXhwYW5kZWREYXlKc0RhdGVBZGFwdGVyIH0gZnJvbSBcIkBlc2ZhZW56YS9mb3Jtcy1hbmQtdmFsaWRhdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbE1vZHVsZSwgQWNjZXNzQ29udHJvbFNlcnZpY2UsIEFDQ19ERUJVR19NT0RFIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciwgRXNDaGFydHNNb2R1bGUsIEVTQ19ERUJVR19NT0RFIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy1jaGFydHNcIjtcclxuaW1wb3J0IHsgRXh0ZW5zaW9uc01vZHVsZSwgRVhUX0RFQlVHX01PREUgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL25neC1jb250ZXh0bWVudVwiO1xyXG5pbXBvcnQgeyBEcmFndWxhTW9kdWxlIH0gZnJvbSAnQGVzZmFlbnphL25neC1kcmFndWxhJztcclxuaW1wb3J0IHsgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgVEFCX0RFQlVHX01PREUgfSBmcm9tIFwiQGVzZmFlbnphL3RhYmJlclwiO1xyXG5cclxuLy8gQ29yZVxyXG5pbXBvcnQgeyBBUFBFcnJvckhhbmRsZXIsIEhUVFBTZXJ2aWNlRXh0ZW5zaW9ucywgQXBwbGljYXRpb25QcmVmZXJlbmNlc1BlcnNpc3RvciwgQXBwbGljYXRpb25DYWNoZVBlcnNpc3RvciwgU2Vzc2lvblJldHJpZXZlciwgT3V0Wm9uZUV2ZW50UGx1Z2luLCBUb2tlblNlcnZpY2UsIEdsb2JhbFNlYXJjaFNlcnZpY2UsIENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgTWVudUZpbHRlcmluZ1NlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuaW1wb3J0IHsgUGFnZU5vdEZvdW5kQ29tcG9uZW50LCBTZXJ2ZXJFcnJvckNvbXBvbmVudCwgQW5ndWxhckVycm9yQ29tcG9uZW50LCBFeHRlcm5hbFBhZ2VzQ29tcG9uZW50LCBKYWNlTG9naW5Db21wb25lbnQsIFBhZ2VzQ29tcG9uZW50LCBSZWRpcmVjdGVyQ29tcG9uZW50LCBDb21wb25lbnRzTW9kdWxlLCBVc2VySW5mb3NDb21wb25lbnQgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvY29tcG9uZW50c1wiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1lbnUsIEVudk9wdGlvbnMsIEFjY291bnRTY29wZSwgTUVOVSwgTUVOVV9MT0NBTElaQVRJT04sIFJFRElSRUNUX01BUCwgVVNFX0ZBS0VfQUNDRVNTX1RPS0VOLCBOQVZCQVJfRVhURU5TSU9OUywgTE9HSU5fVVJMX0xFR0FDWSwgQUxMT1dfQU5PTllNT1VTIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiXHJcbmltcG9ydCB7IFJPVVRFLCBFTUJFRERFRF9ST1VURSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIlxyXG5pbXBvcnQgeyBUZW1wbGF0ZUNvbW1vbiB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9tb2R1bGVzXCI7XHJcblxyXG4vLyBSeEpzXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vLyBCb290c3RyYXBcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBUaW1lcGlja2VyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvdGltZXBpY2tlclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gXCIuL2FwcC5jb21wb25lbnRcIjtcclxuXHJcbi8vIFJlcG9zaXRvcmllc1xyXG5jb25zdCBHRVRfSmFjZV9HZXRBY2NvdW50U2NvcGU6IHN0cmluZyA9IFwiL2FwaS9KYWNlL0dldEFjY291bnRTY29wZVwiO1xyXG5jb25zdCBHRVRfQXBwQ29uZmlnX0dldEFwcENvbmZpZzogc3RyaW5nID0gXCIvYXBpL0FwcENvbmZpZy9HZXRBcHBDb25maWdcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5cclxuY29uc3QgYmFzZUFwcFJvdXRlczogUm91dGVzID0gW1xyXG4gICAgeyBwYXRoOiBcIlwiLCByZWRpcmVjdFRvOiBcInBhZ2VzL3tlbXB0eVJvdXRlUmVkaXJlY3R9XCIsIHBhdGhNYXRjaDogXCJmdWxsXCIgfSxcclxuICAgIHsgcGF0aDogRU1CRURERURfUk9VVEUsIGNvbXBvbmVudDogRXh0ZXJuYWxQYWdlc0NvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBST1VURSwgY29tcG9uZW50OiBQYWdlc0NvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBcInJkXCIsIGNvbXBvbmVudDogUmVkaXJlY3RlckNvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBcInJkLzp0ZW5hbnRcIiwgY29tcG9uZW50OiBSZWRpcmVjdGVyQ29tcG9uZW50IH0sXHJcbiAgICB7IHBhdGg6IFwibG9naW5cIiwgY29tcG9uZW50OiBKYWNlTG9naW5Db21wb25lbnQgfSxcclxuICAgIHsgcGF0aDogXCJpc2VyclwiLCBjb21wb25lbnQ6IFNlcnZlckVycm9yQ29tcG9uZW50IH0sXHJcbiAgICB7IHBhdGg6IFwiYW5lcnJcIiwgY29tcG9uZW50OiBBbmd1bGFyRXJyb3JDb21wb25lbnQgfSxcclxuICAgIHsgcGF0aDogXCIqKlwiLCBjb21wb25lbnQ6IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9LFxyXG4gICAgXHJcbl07XHJcblxyXG5jb25zdCBNT0RVTEVTID0gW1xyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgVGVtcGxhdGVDb21tb24sXHJcbiAgICBDb21wb25lbnRzTW9kdWxlLFxyXG5cclxuICAgIC8vIEF0dGVuemlvbmUgYSBsYXNjaWFybG8gYXR0aXZvIGluIG5nIHNlcnZlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NzQ1NVxyXG4gICAgU2VydmljZVdvcmtlck1vZHVsZS5yZWdpc3Rlcignbmdzdy13b3JrZXIuanMnLCB7IGVuYWJsZWQ6ICFpc0Rldk1vZGUoKSB9KSxcclxuICAgIFJvdXRlck1vZHVsZS5mb3JSb290KFtdLCB7IHVzZUhhc2g6IHRydWUsIHByZWxvYWRpbmdTdHJhdGVneTogTm9QcmVsb2FkaW5nLCBvblNhbWVVcmxOYXZpZ2F0aW9uOiBcInJlbG9hZFwiIH0pLFxyXG5cclxuICAgIC8vIEVTXHJcbiAgICBFc1RhYmxlTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUuZm9yUm9vdCh7IGFjb2N1c3RvbTogXCJPXCIsIHNsaWRlck1vZGU6IHRydWUgfSksXHJcbiAgICBFeHRlbnNpb25zTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIExvY2FsaXphdGlvbk1vZHVsZS5mb3JSb290KHsgbG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeTogTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5QcmludFNvdXJjZSwgZGVmYXVsdExvY2FsZTogJ2l0LUlUJyB9KSxcclxuICAgIEFjY2Vzc0NvbnRyb2xNb2R1bGUuZm9yUm9vdCh7IGNvbnRleHRBd2FyZUtleTogXCJPXCIsIGRlZmF1bHRDb25kaXRpb246ICcoUjpKYWNlIEFkbWluIHx8IFI6SmFjZSBTdXBwb3J0KScgfSksXHJcbiAgICBIdHRwc2VydmljZU1vZHVsZS5mb3JSb290KCksXHJcbiAgICBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZS5mb3JSb290KHsgZW5kcG9pbnRVcmw6ICdub3RpZnknLCB1c2VNZXNzYWdlUGFjazogdHJ1ZSB9KSxcclxuICAgIFByZWZlcmVuY2VzTW9kdWxlLmZvclJvb3QoeyByZXRyaWV2ZUFsbEF0U3RhcnQ6IHRydWUsIHNlc3Npb25SZXRyaWV2ZXI6IFNlc3Npb25SZXRyaWV2ZXIsIHByZWZlcmVuY2VQZXJzaXN0b3I6IEFwcGxpY2F0aW9uUHJlZmVyZW5jZXNQZXJzaXN0b3IsIGNhY2hlUGVyc2lzdG9yOiBBcHBsaWNhdGlvbkNhY2hlUGVyc2lzdG9yIH0pLFxyXG4gICAgRXNDaGFydHNNb2R1bGUuZm9yUm9vdCgpLFxyXG5cclxuICAgIC8vIEJvb3RzdHJhcFxyXG4gICAgVG9vbHRpcE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBNb2RhbE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBQcm9ncmVzc2Jhck1vZHVsZS5mb3JSb290KCksXHJcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIFRvYXN0ck1vZHVsZS5mb3JSb290KCksXHJcbiAgICBUaW1lcGlja2VyTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIENvbnRleHRNZW51TW9kdWxlLmZvclJvb3QoKSxcclxuICAgIERyYWd1bGFNb2R1bGUuZm9yUm9vdCgpXHJcbl07XHJcblxyXG4vLyBHZW5lcmF0b3JlIGRlaSBmb3JtYXRpIGRhdGFcclxudmFyIGZvcm1hdHMgPSAoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcpID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFyc2U6IHsgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScgKyAoc3R5bGUgPT09ICdsb25nJyA/ICcgSEg6bW06c3MnIDogJycpIH0sXHJcbiAgICAgICAgZGlzcGxheToge1xyXG4gICAgICAgICAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyArIChzdHlsZSA9PT0gJ2xvbmcnID8gJyBISDptbTpzcycgOiAnJyksXHJcbiAgICAgICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTU0gWVlZWScsXHJcbiAgICAgICAgICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZJyArIChzdHlsZSA9PT0gJ2xvbmcnID8gJyBISDptbTpzcycgOiAnJyksXHJcbiAgICAgICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NIFlZWVknLFxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmNvbnN0IGxvY2FsZUZhY3RvcnkgPSAobG9jOiBMb2NhbGl6YXRpb25TZXJ2aWNlKSA9PiBsb2MuU21hbGxMb2NhbGU7XHJcblxyXG5jb25zdCBQUk9WSURFUlMgPSBbXHJcbiAgICBDb29raWVTZXJ2aWNlLFxyXG5cclxuICAgIC8vIFByb3ZpZGVycyBhcHBsaWNhdGl2aVxyXG4gICAgeyBwcm92aWRlOiBFcnJvckhhbmRsZXIsIHVzZUNsYXNzOiBBUFBFcnJvckhhbmRsZXIgfSxcclxuICAgIHsgcHJvdmlkZTogRVZFTlRfTUFOQUdFUl9QTFVHSU5TLCB1c2VFeGlzdGluZzogT3V0Wm9uZUV2ZW50UGx1Z2luLCBtdWx0aTogdHJ1ZSB9LFxyXG4gICAgeyBwcm92aWRlOiBIdHRwU2VydmljZUV4dGVuc2lvbnMsIHVzZUNsYXNzOiBIVFRQU2VydmljZUV4dGVuc2lvbnMgfSxcclxuXHJcbiAgICAvLyBMb2NhbGUgZSBnZXN0aW9uaSBkZWxsZSBkYXRlXHJcbiAgICB7IHByb3ZpZGU6IExPQ0FMRV9JRCwgdXNlRmFjdG9yeTogbG9jYWxlRmFjdG9yeSwgZGVwczogW0xvY2FsaXphdGlvblNlcnZpY2VdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlRmFjdG9yeTogbG9jYWxlRmFjdG9yeSwgZGVwczogW0xvY2FsaXphdGlvblNlcnZpY2VdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzKCdzaG9ydCcpIH0sXHJcblxyXG4gICAgLy8gUXVlc3RpIGR1ZSBzb25vIHByb3ZpZGF0aSBkYWwgRm9ybXNBbmRWYWxpZGF0aW9uTW9kdWxlIHN0ZXNzbywgcGVyw7IgcXVlc3QndWx0aW1vIMOoIGRlZmluaXRvIGluIGZvclJvb3Qgc29sbyBsYXRvIGNvbXBvbmVudGkgc2hhcmVkLCBcclxuICAgIC8vIHF1aW5kaSBwZXIgcmVuZGVyZSBxdWVzdGkgcHJvdmlkZXIgZGlzcG9uaWJpbGkgYW5jaGUgYSBtb2R1bGkgZXN0ZXJuaSBkZXZvIHJpcHJvdmlkYXJsaSBhbmNoZSBxdWlcclxuICAgIHsgcHJvdmlkZTogTkdYX01BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzKCdsb25nJykgfSxcclxuICAgIHsgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBOZ3hFeHBhbmRlZERheUpzRGF0ZUFkYXB0ZXIgfVxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW0FwcENvbXBvbmVudF0sXHJcbiAgICBpbXBvcnRzOiBbLi4uTU9EVUxFU11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVzRmFlbnphQ29yZU1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFc0ZhZW56YUNvcmVNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEVzRmFlbnphQ29yZU1vZHVsZT4ge1xyXG4gICAgICAgIGlmIChjb25maWcucm91dGVzKSB7XHJcbiAgICAgICAgICAgIC8vIEFnZ2l1bnRhIGRlbGxhIHJvdXRlIGRpIGVtYmVkZGluZyBzZSBub24gZGljaGlhcmF0YSwgbGF0byBhZ2dpdW50YSBmYWNjaW8gaW4gbW9kbyBjaGUgbCdlbWJlZGRpbmcgc2lhIGRpc3BvbmliaWxlIHNvbG8gZGEgcm91dGUgaW50ZXJuZSAocGFnZXMgT0ssIHBhZ2VzX2V4dCBOT04gT0spXHJcbiAgICAgICAgICAgIGlmICghY29uZmlnLnJvdXRlcy5maW5kKHQgPT4gdC5wYXRoLnN0YXJ0c1dpdGgoXCJlbWJlZFwiKSkpXHJcbiAgICAgICAgICAgICAgICBjb25maWcucm91dGVzID0gWy4uLmNvbmZpZy5yb3V0ZXMsIHsgcGF0aDogXCJlbWJlZC86bW9kdWxlXCIsIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCdAZXNmYWVuemEvY29yZS9tb2R1bGVzJykudGhlbihtID0+IG0uRW1iZWRkaW5nTW9kdWxlKSB9XVxyXG5cclxuICAgICAgICAgICAgYmFzZUFwcFJvdXRlc1swXS5yZWRpcmVjdFRvID0gYHBhZ2VzLyR7Y29uZmlnLmVtcHR5Um91dGVSZWRpcmVjdCB8fCAnZGFzaGJvYXJkJ31gO1xyXG4gICAgICAgICAgICBiYXNlQXBwUm91dGVzLmZpbHRlcih0ID0+IFtcInBhZ2VzXCIsIFwicGFnZXNfZXh0XCJdLmluY2x1ZGVzKHQucGF0aCkpLmZvckVhY2gocGF0aCA9PiB7IFxyXG4gICAgICAgICAgICAgICAgcGF0aC5jaGlsZHJlbiA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHBhdGg6IFwicHJvZmlsZVwiLCBjb21wb25lbnQ6IFVzZXJJbmZvc0NvbXBvbmVudCwgZGF0YTogeyBJbnRlcm5hbE5hdmlnYXRpb246IHRydWUsIHRpdGxlOiBcInByb2ZpbG9cIiB9IH0sIFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbmZpZy5yb3V0ZXMuZmlsdGVyKHIgPT4gIXBhdGgucGF0aC5pbmNsdWRlcyhcInBhZ2VzX2V4dFwiKSB8fCAhci5wYXRoLnN0YXJ0c1dpdGgoXCJlbWJlZFwiKSlcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25maWcuZGVidWdNb2RlID0gKCFpc0Rldk1vZGUoKSAmJiAhY29uZmlnLmZvcmNlRGVidWdNb2RlRm9yUHJvZEJ1aWxkcykgPyBEZWJ1Z0ZsYWdzLk5vbmUgOiAoY29uZmlnLmRlYnVnTW9kZSB8fCBEZWJ1Z0ZsYWdzLkFsbCk7XHJcblxyXG4gICAgICAgIGxldCBtZXJnZWRBcHBJbml0aWFsaXplciA9IChodHRwOiBIVFRQU2VydmljZSwgYnRzOiBUb2tlblNlcnZpY2UsIGFhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIGxvYzogQmFzZUxvY2FsaXphdGlvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hbGxvd0Fub255bW91cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmluaXRpYWxpemVyRnVuY3Rpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiVjW0FQUF9JTklUSUFMSVpFUl0gTG9hZGluZyBjdXN0b20gYXBwbGljYXRpb24gaW5pdGlhbGl6YXRpb25cIiwgXCJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5pbml0aWFsaXplckZ1bmN0aW9uKGh0dHAsIGJ0cywgYWFjKSgpLnBpcGUodGFwKF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiVjW0FQUF9JTklUSUFMSVpFUl0gSW5pdGlhbGl6YXRpb24gaXMgb3ZlclwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIlY1tBUFBfSU5JVElBTElaRVJdIExvYWRpbmcgQXBwQ29uZmlnIGFuZCBBY2NvdW50IFNjb3BlLi4uXCIsIFwiYmFja2dyb3VuZC1jb2xvcjogeWVsbG93XCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlYWxPYnNlcnZhYmxlID0gZm9ya0pvaW4oXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBDb25maWc6IGh0dHAuZ2V0PEVudk9wdGlvbnM+KEdFVF9BcHBDb25maWdfR2V0QXBwQ29uZmlnLCBudWxsLCBudWxsLCBmYWxzZSkucGlwZShjYXRjaEVycm9yKF8gPT4gb2Yoe30pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBodHRwLmdldDxBY2NvdW50U2NvcGU+KEdFVF9KYWNlX0dldEFjY291bnRTY29wZSwgbnVsbCwgbnVsbCwgZmFsc2UpLnBpcGUoY2F0Y2hFcnJvcihfID0+IG9mKG51bGwpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jLkxvY2FsZS5waXBlKHRha2UoMSksIGNhdGNoRXJyb3IoXyA9PiBvZignaXQtSVQnKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB1c2VkT2JzZXJ2YWJsZSA9IGNvbmZpZy5vcHRpb25zQW5kU2NvcGVQcm92aWRlciB8fCByZWFsT2JzZXJ2YWJsZTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlZE9ic2VydmFibGUucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YXAoKHJlczogeyBhcHBDb25maWc6IEVudk9wdGlvbnMsIHNjb3BlOiBBY2NvdW50U2NvcGUsIGxvY2FsZTogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbXljb25maWcgPSByZXMuYXBwQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMJ2FjY291bnQgc2NvcGUgbG8gcHJlbmRvIGRhbGxhIFF1ZXJ5IGEgYmFja2VuZCBzb2xvIHNlIG5vbiB1c28gaWwgRmFrZSB0b2tlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ0cy5VU0VfRkFLRV9BQ0NFU1NfVE9LRU4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidHMuYWNjb3VudFNjb3BlID0gcmVzLnNjb3BlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIlY1tBUFBfSU5JVElBTElaRVJdIGFwcENvbmZpZyBhbmQgc2NvcGUgcmVnaXN0ZXJlZFwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZGVudHRpdHkgPSBidHMuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidHMuYWNjb3VudFNjb3BlICYmIGlkZW50dGl0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFhYy5pbml0aWFsaXplSWRlbnRpdHkoaWRlbnR0aXR5KTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmluaXRpYWxpemVyRnVuY3Rpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiJWNbQVBQX0lOSVRJQUxJWkVSXSBMb2FkaW5nIGN1c3RvbSBhcHBsaWNhdGlvbiBpbml0aWFsaXphdGlvblwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5pbml0aWFsaXplckZ1bmN0aW9uKGh0dHAsIGJ0cywgYWFjKSgpLnBpcGUodGFwKF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIlY1tBUFBfSU5JVElBTElaRVJdIEluaXRpYWxpemF0aW9uIGlzIG92ZXJcIiwgXCJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBFc0ZhZW56YUNvcmVNb2R1bGUsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICAgICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqIFByb3ZpZGVyIHN0YXRpY2kgKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgICAgICAgICAgICAgLi4uUFJPVklERVJTLFxyXG5cclxuICAgICAgICAgICAgICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKiBQcm92aWRlciBjdXN0b21penphYmlsaSAqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgIC4uLighY29uZmlnLnJlZGlyZWN0aW9uTWFwID8gW10gOiBbeyBwcm92aWRlOiBSRURJUkVDVF9NQVAsIHVzZVZhbHVlOiBjb25maWcucmVkaXJlY3Rpb25NYXAgfV0pLFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IG1lcmdlZEFwcEluaXRpYWxpemVyLCBkZXBzOiBbSFRUUFNlcnZpY2UsIFRva2VuU2VydmljZSwgQWNjZXNzQ29udHJvbFNlcnZpY2UsIEJhc2VMb2NhbGl6YXRpb25dLCBtdWx0aTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBST1VURVMsIHVzZVZhbHVlOiBiYXNlQXBwUm91dGVzLCBtdWx0aTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMT0NfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5kZWJ1Z01vZGUgPyAoY29uZmlnLmRlYnVnTW9kZSAmIERlYnVnRmxhZ3MuTG9jYWxpemF0aW9ucykgPT0gRGVidWdGbGFncy5Mb2NhbGl6YXRpb25zIDogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogRVhUX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWcuZGVidWdNb2RlID8gKGNvbmZpZy5kZWJ1Z01vZGUgJiBEZWJ1Z0ZsYWdzLkV4dGVuc2lvbnMpID09IERlYnVnRmxhZ3MuRXh0ZW5zaW9ucyA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEFDQ19ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5BY2Nlc3NDb250cm9sKSA9PSBEZWJ1Z0ZsYWdzLkFjY2Vzc0NvbnRyb2wgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBIVFRQX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWcuZGVidWdNb2RlID8gKGNvbmZpZy5kZWJ1Z01vZGUgJiBEZWJ1Z0ZsYWdzLkh0dHApID09IERlYnVnRmxhZ3MuSHR0cCA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEhUVFBfSU5WQUxJREFUSU9OLCB1c2VWYWx1ZTogY29uZmlnPy5odHRwSW52YWxpZGF0aW9uQ2FjaGUgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogVEFCX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWcuZGVidWdNb2RlID8gKGNvbmZpZy5kZWJ1Z01vZGUgJiBEZWJ1Z0ZsYWdzLlRhYmJlcikgPT0gRGVidWdGbGFncy5UYWJiZXIgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBTR1JfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5kZWJ1Z01vZGUgPyAoY29uZmlnLmRlYnVnTW9kZSAmIERlYnVnRmxhZ3MuU2lnbmFsUikgPT0gRGVidWdGbGFncy5TaWduYWxSIDogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogUFJFRl9ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5QcmVmZXJlbmNlcykgPT0gRGVidWdGbGFncy5QcmVmZXJlbmNlcyA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEVTQ19ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5DaGFydHMpID09IERlYnVnRmxhZ3MuQ2hhcnRzIDogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTE9HSU5fVVJMX0xFR0FDWSwgdXNlVmFsdWU6IGNvbmZpZy5sZWdhY3lMb2dpbiAhPT0gbnVsbCAmJiBjb25maWcubGVnYWN5TG9naW4gIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5sZWdhY3lMb2dpbiA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE5BVkJBUl9FWFRFTlNJT05TLCB1c2VWYWx1ZTogY29uZmlnLm5hdmJhckV4dGVuc2lvbnMgPyBjb25maWcubmF2YmFyRXh0ZW5zaW9ucyA6IFtdIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEFMTE9XX0FOT05ZTU9VUywgdXNlVmFsdWU6IGNvbmZpZy5hbGxvd0Fub255bW91cyA/IGNvbmZpZy5hbGxvd0Fub255bW91cyA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEJhc2VBZGFwdGVyLCB1c2VDbGFzczogY29uZmlnPy5jaGFydHNBZGFwdGVyIHx8IEJhc2VBZGFwdGVyIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEJhc2VNZXNzYWdlU2VydmljZSwgdXNlQ2xhc3M6IGNvbmZpZz8ubWVzc2FnZVNlcnZpY2UgfHwgQmFzZU1lc3NhZ2VTZXJ2aWNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEdsb2JhbFNlYXJjaFNlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/Lmdsb2JhbFNlYXJjaFNlcnZpY2UgfHwgR2xvYmFsU2VhcmNoU2VydmljZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/LmNvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSB8fCBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTWVudUZpbHRlcmluZ1NlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/Lm1lbnVGaWx0ZXJpbmdTZXJ2aWNlIHx8IE1lbnVGaWx0ZXJpbmdTZXJ2aWNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/LnVzZXJQcmVmZXJlbmNlc1Byb3ZpZGVyIHx8IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTUVOVV9MT0NBTElaQVRJT04sIHVzZVZhbHVlOiBjb25maWcubWVudUxvYyB8fCBudWxsIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1FTlUsIHVzZVZhbHVlOiBjb25maWcubWVudSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBVU0VfRkFLRV9BQ0NFU1NfVE9LRU4sIHVzZVZhbHVlOiAhIWNvbmZpZy5mYWtlQWNjZXNzVG9rZW4gfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogUHJlZmVyZW5jZXNQZXJzaXN0b3IsIHVzZUNsYXNzOiBjb25maWcuZmFrZUFjY2Vzc1Rva2VuID8gTG9jYWxTdG9yYWdlUHJlZmVyZW5jZXNQZXJzaXN0b3IgOiBBcHBsaWNhdGlvblByZWZlcmVuY2VzUGVyc2lzdG9yIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IENhY2hlUGVyc2lzdG9yLCB1c2VDbGFzczogY29uZmlnLmZha2VBY2Nlc3NUb2tlbiA/IExvY2FsU3RvcmFnZUNhY2hlUGVyc2lzdG9yIDogQXBwbGljYXRpb25DYWNoZVBlcnNpc3RvciB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXNGYWVuemFDb3JlTW9kdWxlQ29uZmlnIHtcclxuICAgIC8qIFJvdXRlIGFwcGxpY2F0aXZlLCBzb2xvIHF1ZWxsZSBkZW50cm8gYSAqKnBhZ2VzKiogKi9cclxuICAgIHJvdXRlcyE6IFJvdXRlcztcclxuICAgIC8qIE1lbsO5IGRlbGxhIHNpZGViYXIgZGVsbCdhcHBsaWNhemlvbmUgKi9cclxuICAgIG1lbnU6IEFwcGxpY2F0aW9uTWVudVtdO1xyXG4gICAgLyogSW5kaWNhIHNlIHV0aWxpenphcmUgbCdhY2Nlc3MgdG9rZW4gZmludG8gKi9cclxuICAgIGZha2VBY2Nlc3NUb2tlbj86IGJvb2xlYW47XHJcbiAgICAvKiBUaXBvIGRhIHVzYXJlIHBlciBnZW5lcmFyZSBsZSBsb2NhbGl6emFpem9uaSBkZWwgbWVuw7kgKi9cclxuICAgIG1lbnVMb2M/OiBUeXBlPExvY2FsaXphdGlvblNlcnZpY2U+O1xyXG4gICAgLyogUmVkaXJlY3QgcGVyIGxhIHJvb3QgZGVsbCdhcHBsaWNhemlvbmUsIGRpIGRlZmF1bHQgw6ggaW1wb3N0YXRvIGEgKipkYXNoYm9hcmQqKi4gU2UgYWxsJ2ludGVybm8gZGVsbGUgKipyb3V0ZXMqKiBub24gZXNpc3RlIGxhIHJvdXRlICoqZGFzaGJvYXJkKiogw6ggZGEgaW1wb3N0YXJlIGFkZWd1YXRhbWVudGUgKi9cclxuICAgIGVtcHR5Um91dGVSZWRpcmVjdD86IHN0cmluZztcclxuICAgIC8qIFNlIG5vbiBzcGVjaWZpY2F0YSB2aWVuZSBpbXBvc3RhdGEgYXV0b21hdGljYW1lbnRlIGFkIFwiQWxsXCIgaW4gZmFzZSBkaSBkZWJ1ZywgXCJOb25lXCIgaW4gcHJvZHV6aW9uZSAocXVlc3QndWx0aW1vIGEgcHJlc2NpbmRlcmUsIGEgbWVubyBjaGUgKipmb3JjZURlYnVnTW9kZUZvclByb2RCdWlsZHMqKiBub24gc2lhIHRydWUpKi9cclxuICAgIGRlYnVnTW9kZT86IERlYnVnRmxhZ3M7XHJcbiAgICAvKiBQZXJtZXR0ZSBkaSBmb3J6YXJlIGxhIG1vZGFsaXTDoCBkaSBkZWJ1ZyBzcGVjaWZpY2F0YSBhbmNoZSBwZXIgbGUgYnVpbGQgZGkgcHJvZHV6aW9uZSwgKipOT04gSU1QT1NUQVJFIEEgVFJVRSoqIGEgbWVubyBkaSByYXJpc3NpbWlzc2ltaXNzaW1pIGNhc2kgKi9cclxuICAgIGZvcmNlRGVidWdNb2RlRm9yUHJvZEJ1aWxkcz86IGJvb2xlYW47XHJcbiAgICAvKiBDYWNoZSBkaSBpbnZhbGlkYXppb25lIHBlciBsZSBjaGlhbWF0ZSBodHRwICovXHJcbiAgICBodHRwSW52YWxpZGF0aW9uQ2FjaGU/OiBhbnk7XHJcbiAgICAvKiBGdW56aW9uZSBkaSBpbml6aWFsaXp6YXppb25lIEFQUF9JTklUSUFMSVpFUi1saWtlIGNoZSB2aWVuZSByaWNoaWFtYXRhIGRvcG8gYWxsYSBmdW56aW9uZSBkaSBpbml6aWFsaXp6YXppb25lIGRpIGRlZmF1bHQgKi9cclxuICAgIGluaXRpYWxpemVyRnVuY3Rpb24/OiAoaHR0cDogSFRUUFNlcnZpY2UsIGJ0czogVG9rZW5TZXJ2aWNlLCBhYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlKSA9PiAoKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICAvKiBNYXBwYSBkaSByZWRpcmVjdCBwZXIgcGVybWV0dGVyZSBhbCAqKlJlZGlyZWN0ZXJDb21wb25lbnQqKiBkaSBzYXBlcmUgZG92ZSBuYXZpZ2FyZSBpbiBiYXNlIGEgT2dnZXR0by1QYXJhbWV0cmkgKi9cclxuICAgIHJlZGlyZWN0aW9uTWFwPzogeyBbaW5kZXg6IHN0cmluZ106IHsgdXJsOiBzdHJpbmcsIHBhcmFtczogc3RyaW5nW10gfSB9O1xyXG4gICAgLyogQWRhdHRhdG9yZSBkZWkgZ3JhZmljaSBuZWwgY2FzbyB1biBwcm9nZXR0byBmb3NzZSB2ZWNjaGlvIChSaW11b3ZpYmlsZSBxdWFuZG8gdHV0dGkgaSBwcm9nZXR0aSB1c2FubyBuYXRpdmFtZW50ZSBlcy1jaGFydHMpICovXHJcbiAgICBjaGFydHNBZGFwdGVyPzogVHlwZTxCYXNlQWRhcHRlcj47XHJcbiAgICAvKiBTZXJ2aXppbyBjaGUgZXNwb25lIGkgbWVzc2FnZ2kgZGlzcG9uaWJpbGkgc3UgU2lnbmFsciAqL1xyXG4gICAgbWVzc2FnZVNlcnZpY2U/OiBUeXBlPEJhc2VNZXNzYWdlU2VydmljZT47XHJcbiAgICAvKiBTZXJ2aXppbyBwZXIgbGEgc2VhcmNoIGdsb2JhbGUgZGVsIG1vZHVsbyAqL1xyXG4gICAgZ2xvYmFsU2VhcmNoU2VydmljZT86IFR5cGU8R2xvYmFsU2VhcmNoU2VydmljZT47XHJcbiAgICAvKiBTZXJ2aXppbyBwZXIgZmlsdHJhcmUgbGUgdm9jaSBkaSBtZW7DuSAqL1xyXG4gICAgbWVudUZpbHRlcmluZ1NlcnZpY2U/OiBUeXBlPE1lbnVGaWx0ZXJpbmdTZXJ2aWNlPjtcclxuICAgIC8qIFNlcnZpemlvIGRpIHJpZGlyZXppb25lIHBlciBqb2IgY29tcGxldGF0aSAqL1xyXG4gICAgY29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlPzogVHlwZTxDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2U+O1xyXG4gICAgLyogRnVuemlvbmUgZGkgb3ZlcnJpZGUgcGVyIHJlY3VwZXJhcmUgYWNjb3VudCBzY29wZSBlIGVudm9wdGlvbnMuIFB1w7IgYW5jaGUgZXNzZXJlIHV0aWxpenphdGEgcGVyIGZvcm5pcmUgbW9kZWxsaSBmaW50aSBmaW5vIGFkIGltcGxlbWVudGF6aW9uZSAqL1xyXG4gICAgb3B0aW9uc0FuZFNjb3BlUHJvdmlkZXI/OiBPYnNlcnZhYmxlPHsgYXBwQ29uZmlnOiBFbnZPcHRpb25zLCBzY29wZTogQWNjb3VudFNjb3BlLCBsb2NhbGU6IHN0cmluZyB9PjtcclxuICAgIC8qIExpc3RhIGRlaSBjb21wb25lbnRpIGNvbiBjdWkgZXNwYW5kZXJlIGxhIG5hdmJhciAqL1xyXG4gICAgbmF2YmFyRXh0ZW5zaW9ucz86IFR5cGU8YW55PltdO1xyXG4gICAgLyogU2Vydml6aW8gZGkgcmVjdXBlcm8vbW9kaWZpY2EgcHJlZmVyZW56ZSB1dGVudGUgKi9cclxuICAgIHVzZXJQcmVmZXJlbmNlc1Byb3ZpZGVyPzogVHlwZTxVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlPjtcclxuICAgIC8qIGlkZW50aWZpY2Egc2UgdXRpbGl6emFyZSBsYSB2ZXJzaW9uZSB2ZWNjaGlhIGRlbGwndXJsIGRpIGF1dGggKCR7bXljb25maWcuQVVUSF9VUkx9L2xvZ2luL2Zvcm0/Y2xpZW50PSR7bXljb25maWcuQ0xJRU5UX05BTUV9KSBpbnZlY2UgY2hlIGxhIG51b3ZhICgke215Y29uZmlnLkFVVEhfVVJMfS9sb2dpbjtjbGllbnQ9JHtteWNvbmZpZy5DTElFTlRfTkFNRX0pICovXHJcbiAgICBsZWdhY3lMb2dpbj86IGJvb2xlYW47XHJcbiAgICAvKiBJbmRpY2Egc2UgaWwgc2Vydml6aW8gZGkgYXV0ZW50aWNhemlvbmUgZGV2ZSBmdW56aW9uYXJlIGluIGFub25pbW8gbGF0byBGcm9udGVuZC4gRGV2J2Vzc2VyZSB1dGlsaXp6YXRvIGluc2llbWUgYWwgdGFnIFwiQXV0aFwiIGluIGNvZGUgYmVoaW5kICovXHJcbiAgICBhbGxvd0Fub255bW91cz86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERlYnVnRmxhZ3Mge1xyXG4gICAgTm9uZSA9IDAsXHJcbiAgICBMb2NhbGl6YXRpb25zID0gMSA8PCAwLFxyXG4gICAgRXh0ZW5zaW9ucyA9IDEgPDwgMSxcclxuICAgIEFjY2Vzc0NvbnRyb2wgPSAxIDw8IDIsXHJcbiAgICBIdHRwID0gMSA8PCAzLFxyXG4gICAgU2lnbmFsUiA9IDEgPDwgNCxcclxuICAgIFByZWZlcmVuY2VzID0gMSA8PCA1LFxyXG4gICAgQ2hhcnRzID0gMSA8PCA2LFxyXG4gICAgVGFiYmVyID0gMSA8PCA3LFxyXG4gICAgQWxsID0gfih+MCA8PCA4KVxyXG59Il19
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQTZCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQVUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxtQ0FBbUMsQ0FBQztBQUUzQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxzQkFBc0IsQ0FBQztBQUU5QixLQUFLO0FBQ0wsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxnQ0FBZ0MsRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvSyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGdC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LEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQy9GLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3RKLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3pELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzNJLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JJLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzNJLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFI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LEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLCtCQUErQixFQUFFO2dCQUN4SSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsRUFBRTthQUN6SDtTQUNKLENBQUM7SUFDTixDQUFDOzsrR0FuSFEsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBSFosWUFBWSxhQWxFM0IsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsZ0JBQWdCO2dIQWtFUCxrQkFBa0IsWUFGZCxPQUFPOzJGQUVYLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2lCQUN4Qjs7QUF1SEQsTUFBTSxPQUFPLHdCQUF3QjtDQXlDcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxVQVdYO0FBWEQsV0FBWSxVQUFVO0lBQ2xCLDJDQUFRLENBQUE7SUFDUiw2REFBc0IsQ0FBQTtJQUN0Qix1REFBbUIsQ0FBQTtJQUNuQiw2REFBc0IsQ0FBQTtJQUN0QiwyQ0FBYSxDQUFBO0lBQ2Isa0RBQWdCLENBQUE7SUFDaEIsMERBQW9CLENBQUE7SUFDcEIsZ0RBQWUsQ0FBQTtJQUNmLGlEQUFlLENBQUE7SUFDZiwyQ0FBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBWFcsVUFBVSxLQUFWLFVBQVUsUUFXckIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBFcnJvckhhbmRsZXIsIExPQ0FMRV9JRCwgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBUeXBlLCBpc0Rldk1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlLCBOb1ByZWxvYWRpbmcsIFJPVVRFUyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgRVZFTlRfTUFOQUdFUl9QTFVHSU5TIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgU2VydmljZVdvcmtlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9zZXJ2aWNlLXdvcmtlclwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2dsb2JhbC9pdFwiO1xyXG5cclxuLy8gUGx1Z2luc1xyXG5pbXBvcnQgeyBOZ3hNYXREYXRlQWRhcHRlciwgTkdYX01BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RyTW9kdWxlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IFwid2lkZ3N0ZXIvd2lkZ3N0ZXIuanNcIjtcclxuXHJcbi8vIEVTXHJcbmltcG9ydCB7IFByZWZlcmVuY2VzTW9kdWxlLCBQUkVGX0RFQlVHX01PREUsIFByZWZlcmVuY2VzUGVyc2lzdG9yLCBMb2NhbFN0b3JhZ2VQcmVmZXJlbmNlc1BlcnNpc3RvciwgQ2FjaGVQZXJzaXN0b3IsIExvY2FsU3RvcmFnZUNhY2hlUGVyc2lzdG9yIH0gZnJvbSBcIkBlc2ZhZW56YS9wcmVmZXJlbmNlc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Nb2R1bGUsIExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3ksIExPQ19ERUJVR19NT0RFLCBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IEh0dHBzZXJ2aWNlTW9kdWxlLCBIdHRwU2VydmljZUV4dGVuc2lvbnMsIEhUVFBTZXJ2aWNlLCBIVFRQX0RFQlVHX01PREUsIEhUVFBfSU5WQUxJREFUSU9OIH0gZnJvbSBcIkBlc2ZhZW56YS9odHRwc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZSwgU0dSX0RFQlVHX01PREUsIEJhc2VNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvc2lnbmFsci1ub3RpZmljYXRpb25zXCI7XHJcbmltcG9ydCB7IEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUsIE5neEV4cGFuZGVkRGF5SnNEYXRlQWRhcHRlciB9IGZyb20gXCJAZXNmYWVuemEvZm9ybXMtYW5kLXZhbGlkYXRpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xNb2R1bGUsIEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBBQ0NfREVCVUdfTU9ERSB9IGZyb20gXCJAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIsIEVzQ2hhcnRzTW9kdWxlLCBFU0NfREVCVUdfTU9ERSB9IGZyb20gXCJAZXNmYWVuemEvZXMtY2hhcnRzXCI7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNNb2R1bGUsIEVYVF9ERUJVR19NT0RFIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IENvbnRleHRNZW51TW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9uZ3gtY29udGV4dG1lbnVcIjtcclxuaW1wb3J0IHsgRHJhZ3VsYU1vZHVsZSB9IGZyb20gJ0Blc2ZhZW56YS9uZ3gtZHJhZ3VsYSc7XHJcbmltcG9ydCB7IEVzVGFibGVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2VzLXRhYmxlXCI7XHJcbmltcG9ydCB7IFRBQl9ERUJVR19NT0RFIH0gZnJvbSBcIkBlc2ZhZW56YS90YWJiZXJcIjtcclxuXHJcbi8vIENvcmVcclxuaW1wb3J0IHsgQVBQRXJyb3JIYW5kbGVyLCBIVFRQU2VydmljZUV4dGVuc2lvbnMsIEFwcGxpY2F0aW9uUHJlZmVyZW5jZXNQZXJzaXN0b3IsIEFwcGxpY2F0aW9uQ2FjaGVQZXJzaXN0b3IsIFNlc3Npb25SZXRyaWV2ZXIsIE91dFpvbmVFdmVudFBsdWdpbiwgVG9rZW5TZXJ2aWNlLCBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIE1lbnVGaWx0ZXJpbmdTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZENvbXBvbmVudCwgU2VydmVyRXJyb3JDb21wb25lbnQsIEFuZ3VsYXJFcnJvckNvbXBvbmVudCwgRXh0ZXJuYWxQYWdlc0NvbXBvbmVudCwgSmFjZUxvZ2luQ29tcG9uZW50LCBQYWdlc0NvbXBvbmVudCwgUmVkaXJlY3RlckNvbXBvbmVudCwgQ29tcG9uZW50c01vZHVsZSwgVXNlckluZm9zQ29tcG9uZW50IH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2NvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb25NZW51LCBFbnZPcHRpb25zLCBBY2NvdW50U2NvcGUsIE1FTlUsIE1FTlVfTE9DQUxJWkFUSU9OLCBSRURJUkVDVF9NQVAsIFVTRV9GQUtFX0FDQ0VTU19UT0tFTiwgTkFWQkFSX0VYVEVOU0lPTlMsIExPR0lOX1VSTF9MRUdBQ1ksIEFOT05ZTU9VU19NT0RFIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiXHJcbmltcG9ydCB7IFJPVVRFLCBFTUJFRERFRF9ST1VURSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIlxyXG5pbXBvcnQgeyBUZW1wbGF0ZUNvbW1vbiB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9tb2R1bGVzXCI7XHJcblxyXG4vLyBSeEpzXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vLyBCb290c3RyYXBcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBUaW1lcGlja2VyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvdGltZXBpY2tlclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gXCIuL2FwcC5jb21wb25lbnRcIjtcclxuXHJcbi8vIFJlcG9zaXRvcmllc1xyXG5jb25zdCBHRVRfSmFjZV9HZXRBY2NvdW50U2NvcGU6IHN0cmluZyA9IFwiL2FwaS9KYWNlL0dldEFjY291bnRTY29wZVwiO1xyXG5jb25zdCBHRVRfQXBwQ29uZmlnX0dldEFwcENvbmZpZzogc3RyaW5nID0gXCIvYXBpL0FwcENvbmZpZy9HZXRBcHBDb25maWdcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5cclxuY29uc3QgYmFzZUFwcFJvdXRlczogUm91dGVzID0gW1xyXG4gICAgeyBwYXRoOiBcIlwiLCByZWRpcmVjdFRvOiBcInBhZ2VzL3tlbXB0eVJvdXRlUmVkaXJlY3R9XCIsIHBhdGhNYXRjaDogXCJmdWxsXCIgfSxcclxuICAgIHsgcGF0aDogRU1CRURERURfUk9VVEUsIGNvbXBvbmVudDogRXh0ZXJuYWxQYWdlc0NvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBST1VURSwgY29tcG9uZW50OiBQYWdlc0NvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBcInJkXCIsIGNvbXBvbmVudDogUmVkaXJlY3RlckNvbXBvbmVudCB9LFxyXG4gICAgeyBwYXRoOiBcInJkLzp0ZW5hbnRcIiwgY29tcG9uZW50OiBSZWRpcmVjdGVyQ29tcG9uZW50IH0sXHJcbiAgICB7IHBhdGg6IFwibG9naW5cIiwgY29tcG9uZW50OiBKYWNlTG9naW5Db21wb25lbnQgfSxcclxuICAgIHsgcGF0aDogXCJpc2VyclwiLCBjb21wb25lbnQ6IFNlcnZlckVycm9yQ29tcG9uZW50IH0sXHJcbiAgICB7IHBhdGg6IFwiYW5lcnJcIiwgY29tcG9uZW50OiBBbmd1bGFyRXJyb3JDb21wb25lbnQgfSxcclxuICAgIHsgcGF0aDogXCIqKlwiLCBjb21wb25lbnQ6IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9LFxyXG4gICAgXHJcbl07XHJcblxyXG5jb25zdCBNT0RVTEVTID0gW1xyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgVGVtcGxhdGVDb21tb24sXHJcbiAgICBDb21wb25lbnRzTW9kdWxlLFxyXG5cclxuICAgIC8vIEF0dGVuemlvbmUgYSBsYXNjaWFybG8gYXR0aXZvIGluIG5nIHNlcnZlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NzQ1NVxyXG4gICAgU2VydmljZVdvcmtlck1vZHVsZS5yZWdpc3Rlcignbmdzdy13b3JrZXIuanMnLCB7IGVuYWJsZWQ6ICFpc0Rldk1vZGUoKSB9KSxcclxuICAgIFJvdXRlck1vZHVsZS5mb3JSb290KFtdLCB7IHVzZUhhc2g6IHRydWUsIHByZWxvYWRpbmdTdHJhdGVneTogTm9QcmVsb2FkaW5nLCBvblNhbWVVcmxOYXZpZ2F0aW9uOiBcInJlbG9hZFwiIH0pLFxyXG5cclxuICAgIC8vIEVTXHJcbiAgICBFc1RhYmxlTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUuZm9yUm9vdCh7IGFjb2N1c3RvbTogXCJPXCIsIHNsaWRlck1vZGU6IHRydWUgfSksXHJcbiAgICBFeHRlbnNpb25zTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIExvY2FsaXphdGlvbk1vZHVsZS5mb3JSb290KHsgbG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeTogTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5QcmludFNvdXJjZSwgZGVmYXVsdExvY2FsZTogJ2l0LUlUJyB9KSxcclxuICAgIEFjY2Vzc0NvbnRyb2xNb2R1bGUuZm9yUm9vdCh7IGNvbnRleHRBd2FyZUtleTogXCJPXCIsIGRlZmF1bHRDb25kaXRpb246ICcoUjpKYWNlIEFkbWluIHx8IFI6SmFjZSBTdXBwb3J0KScgfSksXHJcbiAgICBIdHRwc2VydmljZU1vZHVsZS5mb3JSb290KCksXHJcbiAgICBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZS5mb3JSb290KHsgZW5kcG9pbnRVcmw6ICdub3RpZnknLCB1c2VNZXNzYWdlUGFjazogdHJ1ZSB9KSxcclxuICAgIFByZWZlcmVuY2VzTW9kdWxlLmZvclJvb3QoeyByZXRyaWV2ZUFsbEF0U3RhcnQ6IHRydWUsIHNlc3Npb25SZXRyaWV2ZXI6IFNlc3Npb25SZXRyaWV2ZXIsIHByZWZlcmVuY2VQZXJzaXN0b3I6IEFwcGxpY2F0aW9uUHJlZmVyZW5jZXNQZXJzaXN0b3IsIGNhY2hlUGVyc2lzdG9yOiBBcHBsaWNhdGlvbkNhY2hlUGVyc2lzdG9yIH0pLFxyXG4gICAgRXNDaGFydHNNb2R1bGUuZm9yUm9vdCgpLFxyXG5cclxuICAgIC8vIEJvb3RzdHJhcFxyXG4gICAgVG9vbHRpcE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBNb2RhbE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBQcm9ncmVzc2Jhck1vZHVsZS5mb3JSb290KCksXHJcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIFRvYXN0ck1vZHVsZS5mb3JSb290KCksXHJcbiAgICBUaW1lcGlja2VyTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIENvbnRleHRNZW51TW9kdWxlLmZvclJvb3QoKSxcclxuICAgIERyYWd1bGFNb2R1bGUuZm9yUm9vdCgpXHJcbl07XHJcblxyXG4vLyBHZW5lcmF0b3JlIGRlaSBmb3JtYXRpIGRhdGFcclxudmFyIGZvcm1hdHMgPSAoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcpID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFyc2U6IHsgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScgKyAoc3R5bGUgPT09ICdsb25nJyA/ICcgSEg6bW06c3MnIDogJycpIH0sXHJcbiAgICAgICAgZGlzcGxheToge1xyXG4gICAgICAgICAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyArIChzdHlsZSA9PT0gJ2xvbmcnID8gJyBISDptbTpzcycgOiAnJyksXHJcbiAgICAgICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTU0gWVlZWScsXHJcbiAgICAgICAgICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZJyArIChzdHlsZSA9PT0gJ2xvbmcnID8gJyBISDptbTpzcycgOiAnJyksXHJcbiAgICAgICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NIFlZWVknLFxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmNvbnN0IGxvY2FsZUZhY3RvcnkgPSAobG9jOiBMb2NhbGl6YXRpb25TZXJ2aWNlKSA9PiBsb2MuU21hbGxMb2NhbGU7XHJcblxyXG5jb25zdCBQUk9WSURFUlMgPSBbXHJcbiAgICBDb29raWVTZXJ2aWNlLFxyXG5cclxuICAgIC8vIFByb3ZpZGVycyBhcHBsaWNhdGl2aVxyXG4gICAgeyBwcm92aWRlOiBFcnJvckhhbmRsZXIsIHVzZUNsYXNzOiBBUFBFcnJvckhhbmRsZXIgfSxcclxuICAgIHsgcHJvdmlkZTogRVZFTlRfTUFOQUdFUl9QTFVHSU5TLCB1c2VFeGlzdGluZzogT3V0Wm9uZUV2ZW50UGx1Z2luLCBtdWx0aTogdHJ1ZSB9LFxyXG4gICAgeyBwcm92aWRlOiBIdHRwU2VydmljZUV4dGVuc2lvbnMsIHVzZUNsYXNzOiBIVFRQU2VydmljZUV4dGVuc2lvbnMgfSxcclxuXHJcbiAgICAvLyBMb2NhbGUgZSBnZXN0aW9uaSBkZWxsZSBkYXRlXHJcbiAgICB7IHByb3ZpZGU6IExPQ0FMRV9JRCwgdXNlRmFjdG9yeTogbG9jYWxlRmFjdG9yeSwgZGVwczogW0xvY2FsaXphdGlvblNlcnZpY2VdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlRmFjdG9yeTogbG9jYWxlRmFjdG9yeSwgZGVwczogW0xvY2FsaXphdGlvblNlcnZpY2VdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzKCdzaG9ydCcpIH0sXHJcblxyXG4gICAgLy8gUXVlc3RpIGR1ZSBzb25vIHByb3ZpZGF0aSBkYWwgRm9ybXNBbmRWYWxpZGF0aW9uTW9kdWxlIHN0ZXNzbywgcGVyw7IgcXVlc3QndWx0aW1vIMOoIGRlZmluaXRvIGluIGZvclJvb3Qgc29sbyBsYXRvIGNvbXBvbmVudGkgc2hhcmVkLCBcclxuICAgIC8vIHF1aW5kaSBwZXIgcmVuZGVyZSBxdWVzdGkgcHJvdmlkZXIgZGlzcG9uaWJpbGkgYW5jaGUgYSBtb2R1bGkgZXN0ZXJuaSBkZXZvIHJpcHJvdmlkYXJsaSBhbmNoZSBxdWlcclxuICAgIHsgcHJvdmlkZTogTkdYX01BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzKCdsb25nJykgfSxcclxuICAgIHsgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBOZ3hFeHBhbmRlZERheUpzRGF0ZUFkYXB0ZXIgfVxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW0FwcENvbXBvbmVudF0sXHJcbiAgICBpbXBvcnRzOiBbLi4uTU9EVUxFU11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVzRmFlbnphQ29yZU1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFc0ZhZW56YUNvcmVNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEVzRmFlbnphQ29yZU1vZHVsZT4ge1xyXG4gICAgICAgIGlmIChjb25maWcucm91dGVzKSB7XHJcbiAgICAgICAgICAgIC8vIEFnZ2l1bnRhIGRlbGxhIHJvdXRlIGRpIGVtYmVkZGluZyBzZSBub24gZGljaGlhcmF0YSwgbGF0byBhZ2dpdW50YSBmYWNjaW8gaW4gbW9kbyBjaGUgbCdlbWJlZGRpbmcgc2lhIGRpc3BvbmliaWxlIHNvbG8gZGEgcm91dGUgaW50ZXJuZSAocGFnZXMgT0ssIHBhZ2VzX2V4dCBOT04gT0spXHJcbiAgICAgICAgICAgIGlmICghY29uZmlnLnJvdXRlcy5maW5kKHQgPT4gdC5wYXRoLnN0YXJ0c1dpdGgoXCJlbWJlZFwiKSkpXHJcbiAgICAgICAgICAgICAgICBjb25maWcucm91dGVzID0gWy4uLmNvbmZpZy5yb3V0ZXMsIHsgcGF0aDogXCJlbWJlZC86bW9kdWxlXCIsIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCdAZXNmYWVuemEvY29yZS9tb2R1bGVzJykudGhlbihtID0+IG0uRW1iZWRkaW5nTW9kdWxlKSB9XVxyXG5cclxuICAgICAgICAgICAgYmFzZUFwcFJvdXRlc1swXS5yZWRpcmVjdFRvID0gYHBhZ2VzLyR7Y29uZmlnLmVtcHR5Um91dGVSZWRpcmVjdCB8fCAnZGFzaGJvYXJkJ31gO1xyXG4gICAgICAgICAgICBiYXNlQXBwUm91dGVzLmZpbHRlcih0ID0+IFtcInBhZ2VzXCIsIFwicGFnZXNfZXh0XCJdLmluY2x1ZGVzKHQucGF0aCkpLmZvckVhY2gocGF0aCA9PiB7IFxyXG4gICAgICAgICAgICAgICAgcGF0aC5jaGlsZHJlbiA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHBhdGg6IFwicHJvZmlsZVwiLCBjb21wb25lbnQ6IFVzZXJJbmZvc0NvbXBvbmVudCwgZGF0YTogeyBJbnRlcm5hbE5hdmlnYXRpb246IHRydWUsIHRpdGxlOiBcInByb2ZpbG9cIiB9IH0sIFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbmZpZy5yb3V0ZXMuZmlsdGVyKHIgPT4gIXBhdGgucGF0aC5pbmNsdWRlcyhcInBhZ2VzX2V4dFwiKSB8fCAhci5wYXRoLnN0YXJ0c1dpdGgoXCJlbWJlZFwiKSlcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25maWcuZGVidWdNb2RlID0gKCFpc0Rldk1vZGUoKSAmJiAhY29uZmlnLmZvcmNlRGVidWdNb2RlRm9yUHJvZEJ1aWxkcykgPyBEZWJ1Z0ZsYWdzLk5vbmUgOiAoY29uZmlnLmRlYnVnTW9kZSB8fCBEZWJ1Z0ZsYWdzLkFsbCk7XHJcblxyXG4gICAgICAgIGxldCBtZXJnZWRBcHBJbml0aWFsaXplciA9IChodHRwOiBIVFRQU2VydmljZSwgYnRzOiBUb2tlblNlcnZpY2UsIGFhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIGxvYzogQmFzZUxvY2FsaXphdGlvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hbm9ueW1vdXNNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIlY1tBUFBfSU5JVElBTElaRVJdIExvYWRpbmcgQXBwQ29uZmlnLi4uXCIsIFwiYmFja2dyb3VuZC1jb2xvcjogeWVsbG93XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBodHRwLmdldDxFbnZPcHRpb25zPihHRVRfQXBwQ29uZmlnX0dldEFwcENvbmZpZywgbnVsbCwgbnVsbCwgZmFsc2UpLnBpcGUoY2F0Y2hFcnJvcihfID0+IG9mKHt9KSkpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoYXBwQ29uZmlnOiBFbnZPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteWNvbmZpZyA9IGFwcENvbmZpZztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiVjW0FQUF9JTklUSUFMSVpFUl0gYXBwQ29uZmlnIHJlZ2lzdGVyZWRcIiwgXCJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkZW50dGl0eSA9IGJ0cy5nZXRKYWNlSWRlbnRpdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidHMuYWNjb3VudFNjb3BlICYmIGlkZW50dGl0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYWMuaW5pdGlhbGl6ZUlkZW50aXR5KGlkZW50dGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZy5pbml0aWFsaXplckZ1bmN0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiJWNbQVBQX0lOSVRJQUxJWkVSXSBMb2FkaW5nIGN1c3RvbSBhcHBsaWNhdGlvbiBpbml0aWFsaXphdGlvblwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcuaW5pdGlhbGl6ZXJGdW5jdGlvbihodHRwLCBidHMsIGFhYykoKS5waXBlKHRhcChfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiVjW0FQUF9JTklUSUFMSVpFUl0gSW5pdGlhbGl6YXRpb24gaXMgb3ZlclwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiJWNbQVBQX0lOSVRJQUxJWkVSXSBMb2FkaW5nIEFwcENvbmZpZyBhbmQgQWNjb3VudCBTY29wZS4uLlwiLCBcImJhY2tncm91bmQtY29sb3I6IHllbGxvd1wiKTtcclxuICAgICAgICAgICAgICAgIGxldCByZWFsT2JzZXJ2YWJsZSA9IGZvcmtKb2luKFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwQ29uZmlnOiBodHRwLmdldDxFbnZPcHRpb25zPihHRVRfQXBwQ29uZmlnX0dldEFwcENvbmZpZywgbnVsbCwgbnVsbCwgZmFsc2UpLnBpcGUoY2F0Y2hFcnJvcihfID0+IG9mKHt9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogaHR0cC5nZXQ8QWNjb3VudFNjb3BlPihHRVRfSmFjZV9HZXRBY2NvdW50U2NvcGUsIG51bGwsIG51bGwsIGZhbHNlKS5waXBlKGNhdGNoRXJyb3IoXyA9PiBvZihudWxsKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGxvYy5Mb2NhbGUucGlwZSh0YWtlKDEpLCBjYXRjaEVycm9yKF8gPT4gb2YoJ2l0LUlUJykpKSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdXNlZE9ic2VydmFibGUgPSBjb25maWcub3B0aW9uc0FuZFNjb3BlUHJvdmlkZXIgfHwgcmVhbE9ic2VydmFibGU7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZWRPYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXM6IHsgYXBwQ29uZmlnOiBFbnZPcHRpb25zLCBzY29wZTogQWNjb3VudFNjb3BlLCBsb2NhbGU6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG15Y29uZmlnID0gcmVzLmFwcENvbmZpZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTCdhY2NvdW50IHNjb3BlIGxvIHByZW5kbyBkYWxsYSBRdWVyeSBhIGJhY2tlbmQgc29sbyBzZSBub24gdXNvIGlsIEZha2UgdG9rZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidHMuVVNFX0ZBS0VfQUNDRVNTX1RPS0VOKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRzLmFjY291bnRTY29wZSA9IHJlcy5zY29wZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiJWNbQVBQX0lOSVRJQUxJWkVSXSBhcHBDb25maWcgYW5kIHNjb3BlIHJlZ2lzdGVyZWRcIiwgXCJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWRlbnR0aXR5ID0gYnRzLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnRzLmFjY291bnRTY29wZSAmJiBpZGVudHRpdHkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYWMuaW5pdGlhbGl6ZUlkZW50aXR5KGlkZW50dGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZy5pbml0aWFsaXplckZ1bmN0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiVjW0FQUF9JTklUSUFMSVpFUl0gTG9hZGluZyBjdXN0b20gYXBwbGljYXRpb24gaW5pdGlhbGl6YXRpb25cIiwgXCJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcuaW5pdGlhbGl6ZXJGdW5jdGlvbihodHRwLCBidHMsIGFhYykoKS5waXBlKHRhcChfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiJWNbQVBQX0lOSVRJQUxJWkVSXSBJbml0aWFsaXphdGlvbiBpcyBvdmVyXCIsIFwiYmFja2dyb3VuZC1jb2xvcjogeWVsbG93XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuZ01vZHVsZTogRXNGYWVuemFDb3JlTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKiBQcm92aWRlciBzdGF0aWNpICoqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICAgICAgICAgIC4uLlBST1ZJREVSUyxcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKiogUHJvdmlkZXIgY3VzdG9taXp6YWJpbGkgKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAgICAgICAuLi4oIWNvbmZpZy5yZWRpcmVjdGlvbk1hcCA/IFtdIDogW3sgcHJvdmlkZTogUkVESVJFQ1RfTUFQLCB1c2VWYWx1ZTogY29uZmlnLnJlZGlyZWN0aW9uTWFwIH1dKSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBtZXJnZWRBcHBJbml0aWFsaXplciwgZGVwczogW0hUVFBTZXJ2aWNlLCBUb2tlblNlcnZpY2UsIEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBCYXNlTG9jYWxpemF0aW9uXSwgbXVsdGk6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogUk9VVEVTLCB1c2VWYWx1ZTogYmFzZUFwcFJvdXRlcywgbXVsdGk6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTE9DX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWcuZGVidWdNb2RlID8gKGNvbmZpZy5kZWJ1Z01vZGUgJiBEZWJ1Z0ZsYWdzLkxvY2FsaXphdGlvbnMpID09IERlYnVnRmxhZ3MuTG9jYWxpemF0aW9ucyA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEVYVF9ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5FeHRlbnNpb25zKSA9PSBEZWJ1Z0ZsYWdzLkV4dGVuc2lvbnMgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBBQ0NfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5kZWJ1Z01vZGUgPyAoY29uZmlnLmRlYnVnTW9kZSAmIERlYnVnRmxhZ3MuQWNjZXNzQ29udHJvbCkgPT0gRGVidWdGbGFncy5BY2Nlc3NDb250cm9sIDogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogSFRUUF9ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5IdHRwKSA9PSBEZWJ1Z0ZsYWdzLkh0dHAgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBIVFRQX0lOVkFMSURBVElPTiwgdXNlVmFsdWU6IGNvbmZpZz8uaHR0cEludmFsaWRhdGlvbkNhY2hlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFRBQl9ERUJVR19NT0RFLCB1c2VWYWx1ZTogY29uZmlnLmRlYnVnTW9kZSA/IChjb25maWcuZGVidWdNb2RlICYgRGVidWdGbGFncy5UYWJiZXIpID09IERlYnVnRmxhZ3MuVGFiYmVyIDogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogU0dSX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWcuZGVidWdNb2RlID8gKGNvbmZpZy5kZWJ1Z01vZGUgJiBEZWJ1Z0ZsYWdzLlNpZ25hbFIpID09IERlYnVnRmxhZ3MuU2lnbmFsUiA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFBSRUZfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5kZWJ1Z01vZGUgPyAoY29uZmlnLmRlYnVnTW9kZSAmIERlYnVnRmxhZ3MuUHJlZmVyZW5jZXMpID09IERlYnVnRmxhZ3MuUHJlZmVyZW5jZXMgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBFU0NfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5kZWJ1Z01vZGUgPyAoY29uZmlnLmRlYnVnTW9kZSAmIERlYnVnRmxhZ3MuQ2hhcnRzKSA9PSBEZWJ1Z0ZsYWdzLkNoYXJ0cyA6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR0lOX1VSTF9MRUdBQ1ksIHVzZVZhbHVlOiBjb25maWcubGVnYWN5TG9naW4gIT09IG51bGwgJiYgY29uZmlnLmxlZ2FjeUxvZ2luICE9PSB1bmRlZmluZWQgPyBjb25maWcubGVnYWN5TG9naW4gOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBOQVZCQVJfRVhURU5TSU9OUywgdXNlVmFsdWU6IGNvbmZpZy5uYXZiYXJFeHRlbnNpb25zID8gY29uZmlnLm5hdmJhckV4dGVuc2lvbnMgOiBbXSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBBTk9OWU1PVVNfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZy5hbm9ueW1vdXNNb2RlID8gY29uZmlnLmFub255bW91c01vZGUgOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBCYXNlQWRhcHRlciwgdXNlQ2xhc3M6IGNvbmZpZz8uY2hhcnRzQWRhcHRlciB8fCBCYXNlQWRhcHRlciB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBCYXNlTWVzc2FnZVNlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/Lm1lc3NhZ2VTZXJ2aWNlIHx8IEJhc2VNZXNzYWdlU2VydmljZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBHbG9iYWxTZWFyY2hTZXJ2aWNlLCB1c2VDbGFzczogY29uZmlnPy5nbG9iYWxTZWFyY2hTZXJ2aWNlIHx8IEdsb2JhbFNlYXJjaFNlcnZpY2UgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQ29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlLCB1c2VDbGFzczogY29uZmlnPy5jb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UgfHwgQ29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1lbnVGaWx0ZXJpbmdTZXJ2aWNlLCB1c2VDbGFzczogY29uZmlnPy5tZW51RmlsdGVyaW5nU2VydmljZSB8fCBNZW51RmlsdGVyaW5nU2VydmljZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCB1c2VDbGFzczogY29uZmlnPy51c2VyUHJlZmVyZW5jZXNQcm92aWRlciB8fCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1FTlVfTE9DQUxJWkFUSU9OLCB1c2VWYWx1ZTogY29uZmlnLm1lbnVMb2MgfHwgbnVsbCB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBNRU5VLCB1c2VWYWx1ZTogY29uZmlnLm1lbnUgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogVVNFX0ZBS0VfQUNDRVNTX1RPS0VOLCB1c2VWYWx1ZTogISFjb25maWcuZmFrZUFjY2Vzc1Rva2VuIH0sXHJcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFByZWZlcmVuY2VzUGVyc2lzdG9yLCB1c2VDbGFzczogY29uZmlnLmZha2VBY2Nlc3NUb2tlbiA/IExvY2FsU3RvcmFnZVByZWZlcmVuY2VzUGVyc2lzdG9yIDogQXBwbGljYXRpb25QcmVmZXJlbmNlc1BlcnNpc3RvciB9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBDYWNoZVBlcnNpc3RvciwgdXNlQ2xhc3M6IGNvbmZpZy5mYWtlQWNjZXNzVG9rZW4gPyBMb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3RvciA6IEFwcGxpY2F0aW9uQ2FjaGVQZXJzaXN0b3IgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVzRmFlbnphQ29yZU1vZHVsZUNvbmZpZyB7XHJcbiAgICAvKiBSb3V0ZSBhcHBsaWNhdGl2ZSwgc29sbyBxdWVsbGUgZGVudHJvIGEgKipwYWdlcyoqICovXHJcbiAgICByb3V0ZXMhOiBSb3V0ZXM7XHJcbiAgICAvKiBNZW7DuSBkZWxsYSBzaWRlYmFyIGRlbGwnYXBwbGljYXppb25lICovXHJcbiAgICBtZW51OiBBcHBsaWNhdGlvbk1lbnVbXTtcclxuICAgIC8qIEluZGljYSBzZSB1dGlsaXp6YXJlIGwnYWNjZXNzIHRva2VuIGZpbnRvICovXHJcbiAgICBmYWtlQWNjZXNzVG9rZW4/OiBib29sZWFuO1xyXG4gICAgLyogVGlwbyBkYSB1c2FyZSBwZXIgZ2VuZXJhcmUgbGUgbG9jYWxpenphaXpvbmkgZGVsIG1lbsO5ICovXHJcbiAgICBtZW51TG9jPzogVHlwZTxMb2NhbGl6YXRpb25TZXJ2aWNlPjtcclxuICAgIC8qIFJlZGlyZWN0IHBlciBsYSByb290IGRlbGwnYXBwbGljYXppb25lLCBkaSBkZWZhdWx0IMOoIGltcG9zdGF0byBhICoqZGFzaGJvYXJkKiouIFNlIGFsbCdpbnRlcm5vIGRlbGxlICoqcm91dGVzKiogbm9uIGVzaXN0ZSBsYSByb3V0ZSAqKmRhc2hib2FyZCoqIMOoIGRhIGltcG9zdGFyZSBhZGVndWF0YW1lbnRlICovXHJcbiAgICBlbXB0eVJvdXRlUmVkaXJlY3Q/OiBzdHJpbmc7XHJcbiAgICAvKiBTZSBub24gc3BlY2lmaWNhdGEgdmllbmUgaW1wb3N0YXRhIGF1dG9tYXRpY2FtZW50ZSBhZCBcIkFsbFwiIGluIGZhc2UgZGkgZGVidWcsIFwiTm9uZVwiIGluIHByb2R1emlvbmUgKHF1ZXN0J3VsdGltbyBhIHByZXNjaW5kZXJlLCBhIG1lbm8gY2hlICoqZm9yY2VEZWJ1Z01vZGVGb3JQcm9kQnVpbGRzKiogbm9uIHNpYSB0cnVlKSovXHJcbiAgICBkZWJ1Z01vZGU/OiBEZWJ1Z0ZsYWdzO1xyXG4gICAgLyogUGVybWV0dGUgZGkgZm9yemFyZSBsYSBtb2RhbGl0w6AgZGkgZGVidWcgc3BlY2lmaWNhdGEgYW5jaGUgcGVyIGxlIGJ1aWxkIGRpIHByb2R1emlvbmUsICoqTk9OIElNUE9TVEFSRSBBIFRSVUUqKiBhIG1lbm8gZGkgcmFyaXNzaW1pc3NpbWlzc2ltaSBjYXNpICovXHJcbiAgICBmb3JjZURlYnVnTW9kZUZvclByb2RCdWlsZHM/OiBib29sZWFuO1xyXG4gICAgLyogQ2FjaGUgZGkgaW52YWxpZGF6aW9uZSBwZXIgbGUgY2hpYW1hdGUgaHR0cCAqL1xyXG4gICAgaHR0cEludmFsaWRhdGlvbkNhY2hlPzogYW55O1xyXG4gICAgLyogRnVuemlvbmUgZGkgaW5pemlhbGl6emF6aW9uZSBBUFBfSU5JVElBTElaRVItbGlrZSBjaGUgdmllbmUgcmljaGlhbWF0YSBkb3BvIGFsbGEgZnVuemlvbmUgZGkgaW5pemlhbGl6emF6aW9uZSBkaSBkZWZhdWx0ICovXHJcbiAgICBpbml0aWFsaXplckZ1bmN0aW9uPzogKGh0dHA6IEhUVFBTZXJ2aWNlLCBidHM6IFRva2VuU2VydmljZSwgYWFjOiBBY2Nlc3NDb250cm9sU2VydmljZSkgPT4gKCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgLyogTWFwcGEgZGkgcmVkaXJlY3QgcGVyIHBlcm1ldHRlcmUgYWwgKipSZWRpcmVjdGVyQ29tcG9uZW50KiogZGkgc2FwZXJlIGRvdmUgbmF2aWdhcmUgaW4gYmFzZSBhIE9nZ2V0dG8tUGFyYW1ldHJpICovXHJcbiAgICByZWRpcmVjdGlvbk1hcD86IHsgW2luZGV4OiBzdHJpbmddOiB7IHVybDogc3RyaW5nLCBwYXJhbXM6IHN0cmluZ1tdIH0gfTtcclxuICAgIC8qIEFkYXR0YXRvcmUgZGVpIGdyYWZpY2kgbmVsIGNhc28gdW4gcHJvZ2V0dG8gZm9zc2UgdmVjY2hpbyAoUmltdW92aWJpbGUgcXVhbmRvIHR1dHRpIGkgcHJvZ2V0dGkgdXNhbm8gbmF0aXZhbWVudGUgZXMtY2hhcnRzKSAqL1xyXG4gICAgY2hhcnRzQWRhcHRlcj86IFR5cGU8QmFzZUFkYXB0ZXI+O1xyXG4gICAgLyogU2Vydml6aW8gY2hlIGVzcG9uZSBpIG1lc3NhZ2dpIGRpc3BvbmliaWxpIHN1IFNpZ25hbHIgKi9cclxuICAgIG1lc3NhZ2VTZXJ2aWNlPzogVHlwZTxCYXNlTWVzc2FnZVNlcnZpY2U+O1xyXG4gICAgLyogU2Vydml6aW8gcGVyIGxhIHNlYXJjaCBnbG9iYWxlIGRlbCBtb2R1bG8gKi9cclxuICAgIGdsb2JhbFNlYXJjaFNlcnZpY2U/OiBUeXBlPEdsb2JhbFNlYXJjaFNlcnZpY2U+O1xyXG4gICAgLyogU2Vydml6aW8gcGVyIGZpbHRyYXJlIGxlIHZvY2kgZGkgbWVuw7kgKi9cclxuICAgIG1lbnVGaWx0ZXJpbmdTZXJ2aWNlPzogVHlwZTxNZW51RmlsdGVyaW5nU2VydmljZT47XHJcbiAgICAvKiBTZXJ2aXppbyBkaSByaWRpcmV6aW9uZSBwZXIgam9iIGNvbXBsZXRhdGkgKi9cclxuICAgIGNvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZT86IFR5cGU8Q29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlPjtcclxuICAgIC8qIEZ1bnppb25lIGRpIG92ZXJyaWRlIHBlciByZWN1cGVyYXJlIGFjY291bnQgc2NvcGUgZSBlbnZvcHRpb25zLiBQdcOyIGFuY2hlIGVzc2VyZSB1dGlsaXp6YXRhIHBlciBmb3JuaXJlIG1vZGVsbGkgZmludGkgZmlubyBhZCBpbXBsZW1lbnRhemlvbmUgKi9cclxuICAgIG9wdGlvbnNBbmRTY29wZVByb3ZpZGVyPzogT2JzZXJ2YWJsZTx7IGFwcENvbmZpZzogRW52T3B0aW9ucywgc2NvcGU6IEFjY291bnRTY29wZSwgbG9jYWxlOiBzdHJpbmcgfT47XHJcbiAgICAvKiBMaXN0YSBkZWkgY29tcG9uZW50aSBjb24gY3VpIGVzcGFuZGVyZSBsYSBuYXZiYXIgKi9cclxuICAgIG5hdmJhckV4dGVuc2lvbnM/OiBUeXBlPGFueT5bXTtcclxuICAgIC8qIFNlcnZpemlvIGRpIHJlY3VwZXJvL21vZGlmaWNhIHByZWZlcmVuemUgdXRlbnRlICovXHJcbiAgICB1c2VyUHJlZmVyZW5jZXNQcm92aWRlcj86IFR5cGU8VXNlclByZWZlcmVuY2VzU2VydmljZT47XHJcbiAgICAvKiBpZGVudGlmaWNhIHNlIHV0aWxpenphcmUgbGEgdmVyc2lvbmUgdmVjY2hpYSBkZWxsJ3VybCBkaSBhdXRoICgke215Y29uZmlnLkFVVEhfVVJMfS9sb2dpbi9mb3JtP2NsaWVudD0ke215Y29uZmlnLkNMSUVOVF9OQU1FfSkgaW52ZWNlIGNoZSBsYSBudW92YSAoJHtteWNvbmZpZy5BVVRIX1VSTH0vbG9naW47Y2xpZW50PSR7bXljb25maWcuQ0xJRU5UX05BTUV9KSAqL1xyXG4gICAgbGVnYWN5TG9naW4/OiBib29sZWFuO1xyXG4gICAgLyogSW5kaWNhIHNlIGlsIHNlcnZpemlvIGRpIGF1dGVudGljYXppb25lIGRldmUgZnVuemlvbmFyZSBpbiBhbm9uaW1vIGxhdG8gRnJvbnRlbmQuIERldidlc3NlcmUgdXRpbGl6emF0byBpbnNpZW1lIGFsIHRhZyBcIkF1dGhcIiBpbiBjb2RlIGJlaGluZCAqL1xyXG4gICAgYW5vbnltb3VzTW9kZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERlYnVnRmxhZ3Mge1xyXG4gICAgTm9uZSA9IDAsXHJcbiAgICBMb2NhbGl6YXRpb25zID0gMSA8PCAwLFxyXG4gICAgRXh0ZW5zaW9ucyA9IDEgPDwgMSxcclxuICAgIEFjY2Vzc0NvbnRyb2wgPSAxIDw8IDIsXHJcbiAgICBIdHRwID0gMSA8PCAzLFxyXG4gICAgU2lnbmFsUiA9IDEgPDwgNCxcclxuICAgIFByZWZlcmVuY2VzID0gMSA8PCA1LFxyXG4gICAgQ2hhcnRzID0gMSA8PCA2LFxyXG4gICAgVGFiYmVyID0gMSA8PCA3LFxyXG4gICAgQWxsID0gfih+MCA8PCA4KVxyXG59Il19