@quadrel-enterprise-ui/framework 18.32.0 → 18.32.1

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.
@@ -51,6 +51,7 @@ export class QdPageObjectHeaderComponent {
51
51
  _pageObjectDataSubject = new BehaviorSubject({});
52
52
  _isLoadingSubject = new BehaviorSubject(false);
53
53
  _customActionsSubject = new BehaviorSubject({ actions: [] });
54
+ _customActionsSub;
54
55
  _destroyed$ = new Subject();
55
56
  pageObjectData$ = this._pageObjectDataSubject.asObservable();
56
57
  isLoading$ = this._isLoadingSubject.asObservable().pipe(debounceTime(400));
@@ -242,17 +243,32 @@ export class QdPageObjectHeaderComponent {
242
243
  }))));
243
244
  }
244
245
  updateCustomActions() {
245
- if (this.config.pageType === 'inspect') {
246
- const operationMode = this.config.pageTypeConfig?.operationMode;
247
- if (operationMode)
248
- this.pageStoreService.toggleViewonly(operationMode === 'view');
249
- this.pageStoreService.isViewonly$.pipe(takeUntil(this._destroyed$)).subscribe(isViewonly => {
250
- const customActions = this.config.pageTypeConfig?.customActions ?? [];
251
- this._customActionsSubject.next(this.getCustomActionsByMode(customActions, isViewonly ? 'view' : 'edit'));
252
- });
246
+ // 1. Handle non-inspect pages early
247
+ if (this.config.pageType !== 'inspect') {
248
+ const actions = this.config.pageTypeConfig?.customActions ?? [];
249
+ this._customActionsSubject.next({ actions });
250
+ return;
251
+ }
252
+ // 2. Setup Inspect-specific logic
253
+ const config = this.config.pageTypeConfig;
254
+ if (config?.operationMode) {
255
+ this.pageStoreService.toggleViewonly(config.operationMode === 'view');
253
256
  }
254
- if (this.config.pageType !== 'inspect')
255
- this._customActionsSubject.next({ actions: this.config.pageTypeConfig?.customActions ?? [] });
257
+ this.subscribeToViewOnlyMode();
258
+ }
259
+ subscribeToViewOnlyMode() {
260
+ this._customActionsSub?.unsubscribe();
261
+ this._customActionsSub = this.pageStoreService.isViewonly$
262
+ .pipe(takeUntil(this._destroyed$))
263
+ .subscribe(isViewonly => {
264
+ const mode = isViewonly ? 'view' : 'edit';
265
+ const config = this.config.pageTypeConfig;
266
+ if (config) {
267
+ config.operationMode = mode;
268
+ }
269
+ const actions = config?.customActions ?? [];
270
+ this._customActionsSubject.next(this.getCustomActionsByMode(actions, mode));
271
+ });
256
272
  }
257
273
  getCustomActionsByMode(customActions, mode) {
258
274
  const actions = customActions
@@ -310,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
310
326
  type: HostListener,
311
327
  args: ['click']
312
328
  }] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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USxFQUFFLElBQUksRUFBRTtnQkFJekIsYUFBYTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFHRixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBR2pCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTTlCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZywgUWRNZW51QnV0dG9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9uL21vZGVsL2J1dHRvbi1jb25maWcnO1xuaW1wb3J0IHsgUWREaWFsb2dDb21wb25lbnQsIFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VDb25maWdDcmVhdGUsXG4gIFFkUGFnZUNvbmZpZ0N1c3RvbSxcbiAgUWRQYWdlQ29uZmlnSW5zcGVjdCxcbiAgUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgUWRQYWdlU2VsZWN0ZWRDb250ZXh0LFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0LFxuICBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0LFxuICBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sIFFkUGFnZU9iamVjdFJlc29sdmVyIH0gZnJvbSAnLi4vbW9kZWwvcGFnZS1vYmplY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXNlbGVjdC1kaWFsb2cvY29udGV4dC1zZWxlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2Utb2JqZWN0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgJ1tzdHlsZS5ib3JkZXJCb3R0b21dJzogJ2JvcmRlckJvdHRvbVN0eWxlJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZU9iamVjdEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaGFzTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2Utb2JqZWN0LWhlYWRlcic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbi1kaWFsb2cnKVxuICBnZXQgaXNJbkRpYWxvZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ0NvbXBvbmVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdG9nZ2xlRmFjZXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGFwdGl2ZU1vZGUgfHwgKHRoaXMuaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgPj0gMikgcmV0dXJuO1xuXG4gICAgdGhpcy5mYWNldHNDb2xsYXBzZWQgPSAhdGhpcy5mYWNldHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgUWRQYWdlQ29uZmlnSW5zcGVjdCB8IFFkUGFnZUNvbmZpZ0N1c3RvbSkuYWRhcHRpdmVNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFnZU9iamVjdERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPih7fSBhcyBUKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jdXN0b21BY3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UWRNZW51QnV0dG9uQ29uZmlnPih7IGFjdGlvbnM6IFtdIH0pO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT2JqZWN0RGF0YSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDQwMCkpO1xuICBjdXN0b21BY3Rpb25zJDogT2JzZXJ2YWJsZTxRZE1lbnVCdXR0b25Db25maWc+ID0gdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmFjZXRzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICBjb250ZXh0cyQhOiBPYnNlcnZhYmxlPFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICB2YWx1ZTogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnO1xuICAgICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICB9W11cbiAgPjtcblxuICBnZXQgYm9yZGVyQm90dG9tU3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWdlVHlwZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnY3VzdG9tJyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdvdmVydmlldycgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKVxuICAgICAgPyAnbm9uZSAhaW1wb3J0YW50J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBzaG93RWRpdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhdGhpcy5oaWRlRWRpdCkpO1xuICB9XG5cbiAgZ2V0IHNob3dEZWxldGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmRlbGV0ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dBcmNoaXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5hcmNoaXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0NhbmNlbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLmNhbmNlbEJ1dHRvbiAmJiAhdGhpcy5pc0NyZWF0ZSkpO1xuICB9XG5cbiAgZ2V0IHNob3dTYXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuc2F2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IGhlYWRlckZhY2V0cygpOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNIZWFkZXJGYWNldHModGhpcy5jb25maWcpKSByZXR1cm4gdGhpcy5jb25maWcuaGVhZGVyRmFjZXRzO1xuICB9XG5cbiAgZ2V0IGlzSW5zcGVjdEFuZFZpZXdNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICBtYXAoaXNWaWV3ID0+IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgaXNWaWV3KVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNDcmVhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJztcbiAgfVxuXG4gIGdldCBpc092ZXJ2aWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JztcbiAgfVxuXG4gIGdldCBpc0NvbnRleHRTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSc7XG4gIH1cblxuICBnZXQgZWRpdEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZWRpdCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZWRpdDtcbiAgfVxuXG4gIGdldCBkZWxldGVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2RlbGV0ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZGVsZXRlO1xuICB9XG5cbiAgZ2V0IGFyY2hpdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2FyY2hpdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmFyY2hpdmU7XG4gIH1cblxuICBnZXQgY2FuY2VsQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydjYW5jZWwnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmNhbmNlbDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydzYXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlO1xuICB9XG5cbiAgZ2V0IGhpZGVFZGl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY29uZmlnLm9wZXJhdGlvbk1vZGUgIT09ICdlZGl0JykgcmV0dXJuIGNvbmZpZy5oaWRlRWRpdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZXNDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgZ2V0ICRjYW5TYXZlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICgodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlPy5oYXNWYWxpZGF0aW9uID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRhcmVGb3JtR3JvdXBzVmFsaWQoKSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgIF0pLnBpcGUobWFwKChbaXNWYWxpZCwgaGFzQ2hhbmdlc10pID0+IGlzVmFsaWQgJiYgaGFzQ2hhbmdlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBwYWdlT2JqZWN0UmVzb2x2ZXI6IFFkUGFnZU9iamVjdFJlc29sdmVyPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb21wb25lbnQ6IFFkRGlhbG9nQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogUWRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJlc29sdmVyVHJpZ2dlclNlcnZpY2U6IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPlxuICApIHtcbiAgICBpZiAocGFnZU9iamVjdFJlc29sdmVyKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhID0gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGE/LmJpbmQodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEgPSAocHJvcHM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKSBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRDb250ZXh0cygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKSB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gJiYgIWNoYW5nZXNbJ2NvbmZpZyddLmZpcnN0Q2hhbmdlKSB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHsgLi4udGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LnZhbHVlLCAuLi5tZXRhZGF0YSB9O1xuICAgIHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KHVwZGF0ZWRNZXRhZGF0YSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oZmFjZXQ6IFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QgfCBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QpOiB2b2lkIHtcbiAgICBmYWNldD8uYWN0aW9uPy5oYW5kbGVyKCk7XG4gIH1cblxuICBoYXNIZWFkZXJGYWNldHMoXG4gICAgY29uZmlnOiBRZFBhZ2VDb25maWc8VD5cbiAgKTogY29uZmlnIGlzIFFkUGFnZUNvbmZpZ0NyZWF0ZTxUPiB8IFFkUGFnZUNvbmZpZ0luc3BlY3Q8VD4gfCBRZFBhZ2VDb25maWdDdXN0b208VD4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgeyBoZWFkZXJGYWNldHM6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfSkuaGVhZGVyRmFjZXRzICE9IG51bGw7XG4gIH1cblxuICBlZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG4gICAgaWYgKHRoaXMuZWRpdEJ1dHRvbj8uaGFuZGxlcikgdGhpcy5lZGl0QnV0dG9uLmhhbmRsZXIoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5vcGVuQ2FuY2VsRGlhbG9nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5jYW5jZWxQZW5kaW5nQXN5bmNWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuY2FuY2VsUGVuZGluZ0FzeW5jVmFsaWRhdGlvbigpO1xuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2F2ZUJ1dHRvbj8uaGFuZGxlcj8uKHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkpO1xuXG4gICAgaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyByZXN1bHQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG9rOiBib29sZWFuKSA9PiBvayAmJiBoYW5kbGVTdWNjZXNzKCkpIDogaGFuZGxlU3VjY2VzcygpO1xuICB9XG5cbiAgY2hhbmdlQ29udGV4dChcbiAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnLFxuICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10sXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoY29udGV4dC50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29udGV4dC5vcGVuKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBjb25maWc6IGNvbnRleHQsIHNlbGVjdGlvbiB9LFxuICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGVcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jbG9zZWQuc3Vic2NyaWJlKChkYXRhOiB7IHNlbGVjdGVkOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSB9KSA9PiB7XG4gICAgICBpZiAoZGF0YSkgdGhpcy5jb250ZXh0U2VydmljZS5zZXRWYWx1ZShjb250ZXh0LmlkLCBkYXRhLnNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyQ29udGV4dChjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5jbGVhcihjb250ZXh0LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBSZXNvbHZlclRyaWdnZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlclRyaWdnZXJTZXJ2aWNlXG4gICAgICAuc2hvdWxkVHJpZ2dlclJlc29sdmVyKHRoaXMucGFnZU9iamVjdFJlc29sdmVyLmNvbmZpZz8udHJpZ2dlck9uID8/ICdwYXRoUGFyYW1zQ2hhbmdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICAgIGZpbHRlcihzaG91bGRUcmlnZ2VyID0+IHNob3VsZFRyaWdnZXIpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnJlc29sdmUoKSksXG4gICAgICAgIHRhcChvYmplY3REYXRhID0+IHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KG9iamVjdERhdGEpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRzJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dHMkLnBpcGUoXG4gICAgICBtYXAoY29udGV4dHMgPT4gY29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gY29udGV4dC5zZWxlY3Rpb24gfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycpKSxcbiAgICAgIG1hcChjb250ZXh0cyA9PlxuICAgICAgICBjb250ZXh0cz8ubWFwKCh7IHNlbGVjdGlvbiwgY29udGV4dCB9KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmxhYmVsLmkxOG4sXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmlzQXJyYXkoc2VsZWN0aW9uPy52YWx1ZSlcbiAgICAgICAgICAgID8gc2VsZWN0aW9uPy52YWx1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogc2VsZWN0aW9uPy52YWx1ZSAhPT0gbnVsbCAmJiBzZWxlY3Rpb24/LnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gW3NlbGVjdGlvbj8udmFsdWVdXG4gICAgICAgICAgICA6IChbXSBhcyBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSksXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBzZWxlY3Rpb246IHNlbGVjdGlvbj8udmFsdWUgPz8gW11cbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VzdG9tQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTW9kZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5vcGVyYXRpb25Nb2RlO1xuXG4gICAgICBpZiAob3BlcmF0aW9uTW9kZSkgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KG9wZXJhdGlvbk1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGlzVmlld29ubHkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zID0gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh0aGlzLmdldEN1c3RvbUFjdGlvbnNCeU1vZGUoY3VzdG9tQWN0aW9ucywgaXNWaWV3b25seSA/ICd2aWV3JyA6ICdlZGl0JykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlICE9PSAnaW5zcGVjdCcpXG4gICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5uZXh0KHsgYWN0aW9uczogdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW10gfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbUFjdGlvbnNCeU1vZGUoXG4gICAgY3VzdG9tQWN0aW9uczogKFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZyAmIHsgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUgfSlbXSxcbiAgICBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlXG4gICk6IFFkTWVudUJ1dHRvbkNvbmZpZyB7XG4gICAgY29uc3QgYWN0aW9ucyA9IGN1c3RvbUFjdGlvbnNcbiAgICAgIC5maWx0ZXIoYWN0aW9uID0+ICFhY3Rpb24ub3BlcmF0aW9uTW9kZSB8fCBhY3Rpb24ub3BlcmF0aW9uTW9kZSA9PT0gbW9kZSlcbiAgICAgIC5tYXAoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgbWVudUJ1dHRvbkFjdGlvbiA9IHsgLi4uYWN0aW9uIH07XG4gICAgICAgIGRlbGV0ZSBtZW51QnV0dG9uQWN0aW9uLm9wZXJhdGlvbk1vZGU7XG4gICAgICAgIHJldHVybiBtZW51QnV0dG9uQWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4geyBhY3Rpb25zIH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYW5jZWxEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29uZmlybSA9PiB7XG4gICAgICAgIGlmIChjb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5yZXN0b3JlRm9ybUdyb3Vwc0Zyb21TbmFwc2hvdCgpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZyQgfCBhc3luY1wiPjxxZC1zcGlubmVyPjwvcWQtc3Bpbm5lcj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9wXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRpdGxlXCI+e3sgY29uZmlnLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2hlYWRlcj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9vbGJhclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImFyY2hpdmUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICAqbmdJZj1cInNob3dBcmNoaXZlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImFyY2hpdmVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgW2ljb25dPVwiJ3Jlc3VsdE5ldydcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImRlbGV0ZS1idXR0b25cIj5cbiAgICAgIDxxZC1pY29uXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgKm5nSWY9XCJzaG93RGVsZXRlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUJ1dHRvbj8uaGFuZGxlcigpXCJcbiAgICAgICAgW2ljb25dPVwiJ3RyYXNoJ1wiXG4gICAgICA+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dFZGl0JCB8IGFzeW5jXCIgcWRCdXR0b24gKGNsaWNrKT1cImVkaXQoKVwiIGRhdGEtdGVzdC1pZD1cImVkaXQtYnV0dG9uXCI+XG4gICAgICB7eyBlZGl0QnV0dG9uPy5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuZWRpdFwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0NhbmNlbCQgfCBhc3luY1wiIHFkQnV0dG9uIHFkQnV0dG9uR2hvc3QgKGNsaWNrKT1cImNhbmNlbCgpXCIgZGF0YS10ZXN0LWlkPVwiY2FuY2VsLWJ1dHRvblwiPlxuICAgICAge3sgY2FuY2VsQnV0dG9uLmxhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5jYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93U2F2ZSQgfCBhc3luY1wiXG4gICAgICBxZEJ1dHRvblxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiKCRjYW5TYXZlIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgPlxuICAgICAge3sgc2F2ZUJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuc2F2ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQWN0aW9ucyQgfCBhc3luYyBhcyBjdXN0b21BY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFkYXB0aXZlTW9kZTsgZWxzZSBhZGFwdGl2ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW3FkTWVudUJ1dHRvbl09XCJjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICBbYXV0b1NpemVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ3BhZ2UtJ1wiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21BY3Rpb25zLmFjdGlvbnMubGVuZ3RoID4gMTsgZWxzZSBzaW5nbGVCdXR0b25cIlxuICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29uZmlnPy5jdXN0b21BY3Rpb25zTGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmFjdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUJ1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpLmFjdGlvbnNbMF0gYXMgc2luZ2xlQWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHFkQnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIgJiYgIXNpbmdsZUFjdGlvbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaW5nbGVBY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVBY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0LWlkPVwiY3VzdG9tLWJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNpbmdsZUFjdGlvbi5sYWJlbD8uaTE4biB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNhZGFwdGl2ZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpPy5hY3Rpb25zLmxlbmd0aCA+PSAxXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgICBbcWRQb3BvdmVyT25DbGlja109XCJtZW51XCJcbiAgICAgICAgICBbcWRQb3BvdmVyQ2xvc2VTdHJhdGVneV09XCInb25FdmVyeUNsaWNrJ1wiXG4gICAgICAgICAgW3FkUG9wb3ZlclN0b3BQcm9wYWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcWRQb3BvdmVyTWluV2lkdGhdPVwiMTYwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxxZC1pY29uIGljb249XCJvdmVyZmxvd01lbnVWZXJ0aWNhbFwiPjwvcWQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY3VzdG9tQWN0aW9ucy5hY3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRhcHRpdmUtbWVudS1lbnRyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0c1wiIFtuZ0NsYXNzXT1cInsgYW1vbmdUaGVtc2VsdmVzOiBhZGFwdGl2ZU1vZGUgJiYgIWZhY2V0c0NvbGxhcHNlZCB9XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlT2JqZWN0RGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cImxldCBmYWNldCBvZiBoZWFkZXJGYWNldHMgfCBzbGljZSA6IDAgOiAoYWRhcHRpdmVNb2RlICYmIGZhY2V0c0NvbGxhcHNlZCA/IDIgOiBoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1mYWNldC0nICsgZmFjZXQubmFtZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgZmFjZXQubGFiZWwuaTE4biB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPHFkLWR5bmFtaWMtZmFjZXQgY2xhc3M9XCJkeW5hbWljLWZhY2V0XCIgW2ZhY2V0XT1cImZhY2V0XCIgW2RhdGFdPVwiZGF0YVwiPjwvcWQtZHluYW1pYy1mYWNldD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25maWcuaGlkZUNvbnRleHRzICYmIGNvbnRleHRzJCB8IGFzeW5jIGFzIGNvbnRleHRzXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgY29udGV4dCBvZiBjb250ZXh0c1xuICAgICAgICAgIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIC0gKGhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApIDogY29udGV4dHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgIGxldCBmaXJzdCA9IGZpcnN0XG4gICAgICBcIlxuICAgICAgW25nQ2xhc3NdPVwieyBoYXNEaXZpZGVyOiBoZWFkZXJGYWNldHMgJiYgZmlyc3QgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgY29udGV4dC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1zZWxlY3RlZC1jb250ZXh0XCI+e3tcbiAgICAgICAgXCJpMThuLnFkLnBhZ2UuY29udGV4dC5ub1NlbGVjdGlvblBsYWNlaG9sZGVyXCIgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgIDxxZC1jaGlwIHN0YXRlPVwibm9uZVwiIFtjbG9zZV09XCJpc0NvbnRleHRTZWxlY3RhYmxlXCIgKGNsb3NlQ2xpY2tFbWl0dGVyKT1cImNsZWFyQ29udGV4dChjb250ZXh0LmNvbnRleHQpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsIG9mIGNvbnRleHQudmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAge3sgdmFsLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08c3BhbiAqbmdJZj1cIiFsYXN0XCI+LCA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcWQtY2hpcD5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvbnRleHRTZWxlY3RhYmxlICYmICghZmFjZXRzQ29sbGFwc2VkIHx8ICFhZGFwdGl2ZU1vZGUpXCIgY2xhc3M9XCJzZWxlY3QtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgIHFkQnV0dG9uTGlua1xuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VDb250ZXh0KGNvbnRleHQuY29udGV4dCwgY29udGV4dC5zZWxlY3Rpb24sICRldmVudClcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ29iamVjdC1oZWFkZXItc2VsZWN0LWNvbnRleHQtJyArIGNvbnRleHQuY29udGV4dC5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgY29udGV4dC52YWx1ZS5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgPyAoXCJpMThuLnFkLnBhZ2UuY29udGV4dC5idXR0b24uY2hhbmdlXCIgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLnNlbGVjdFwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3BhbiBjbGFzcz1cImZhY2V0cy10b2dnbGVyXCIgKm5nSWY9XCJhZGFwdGl2ZU1vZGUgJiYgaGVhZGVyRmFjZXRzLmxlbmd0aCArIChjb250ZXh0cyQgfCBhc3luYykubGVuZ3RoID4gMlwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZmFjZXRzQ29sbGFwc2VkXCI+K3t7IGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCAtIDIgfX08L3NwYW4+XG4gICAgPGJ1dHRvbiBxZEljb25CdXR0b24+XG4gICAgICA8cWQtaWNvbiBbaWNvbl09XCJmYWNldHNDb2xsYXBzZWQgPyAnY3RybERvd24nIDogJ2N0cmxUb3AnXCI+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFnQmxJLE9BQU8sRUFBRSw2QkFBNkIsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FB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LElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7dUdBbldVLDJCQUEyQixrQkFnSmhCLDZCQUE2QjsyRkFoSnhDLDJCQUEyQix5VUMvQ3hDLGloTUErSkE7OzJGRGhIYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUU7OzBCQWtKbEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFDUixRQUFROzhLQWhKWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixhQUFhO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUdGLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFHakIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLGlCQUFpQjtnQkFNOUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcsIFFkTWVudUJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbi9tb2RlbC9idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFFkRGlhbG9nQ29tcG9uZW50LCBRZERpYWxvZ1NlcnZpY2UsIFFkRGlhbG9nU2l6ZSB9IGZyb20gJy4uLy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nL3BhZ2UtY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUsXG4gIFFkUGFnZUNvbmZpZyxcbiAgUWRQYWdlQ29uZmlnQ3JlYXRlLFxuICBRZFBhZ2VDb25maWdDdXN0b20sXG4gIFFkUGFnZUNvbmZpZ0luc3BlY3QsXG4gIFFkUGFnZUNvbnRleHRDb25maWcsXG4gIFFkUGFnZVNlbGVjdGVkQ29udGV4dCxcbiAgUWRQYWdlVHlwZUluc3BlY3RDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIFFkRmFjZXRPcHRpb25NdWx0aVNlbGVjdCxcbiAgUWRGYWNldE9wdGlvblNpbmdsZVNlbGVjdCxcbiAgUWRQYWdlSGVhZGVyRmFjZXRDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLCBRZFBhZ2VPYmplY3RSZXNvbHZlciB9IGZyb20gJy4uL21vZGVsL3BhZ2Utb2JqZWN0LXJlc29sdmVyJztcbmltcG9ydCB7IFFkQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcmVzb2x2ZXItdHJpZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1zZWxlY3QtZGlhbG9nL2NvbnRleHQtc2VsZWN0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlLW9iamVjdC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7ICdbc3R5bGUuYm9yZGVyQm90dG9tXSc6ICdib3JkZXJCb3R0b21TdHlsZScgfVxufSlcbmV4cG9ydCBjbGFzcyBRZFBhZ2VPYmplY3RIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGhhc05hdmlnYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdwYWdlLW9iamVjdC1oZWFkZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW4tZGlhbG9nJylcbiAgZ2V0IGlzSW5EaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaWFsb2dDb21wb25lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZUZhY2V0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRhcHRpdmVNb2RlIHx8ICh0aGlzLmhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApID49IDIpIHJldHVybjtcblxuICAgIHRoaXMuZmFjZXRzQ29sbGFwc2VkID0gIXRoaXMuZmFjZXRzQ29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGFkYXB0aXZlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIFFkUGFnZUNvbmZpZ0luc3BlY3QgfCBRZFBhZ2VDb25maWdDdXN0b20pLmFkYXB0aXZlTW9kZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhZ2VPYmplY3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oe30gYXMgVCk7XG4gIHByaXZhdGUgX2lzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFkTWVudUJ1dHRvbkNvbmZpZz4oeyBhY3Rpb25zOiBbXSB9KTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGFnZU9iamVjdERhdGEkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSg0MDApKTtcbiAgY3VzdG9tQWN0aW9ucyQ6IE9ic2VydmFibGU8UWRNZW51QnV0dG9uQ29uZmlnPiA9IHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZhY2V0c0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgY29udGV4dHMkITogT2JzZXJ2YWJsZTxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgdmFsdWU6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuICAgICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZztcbiAgICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgfVtdXG4gID47XG5cbiAgZ2V0IGJvcmRlckJvdHRvbVN0eWxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFnZVR5cGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZTtcblxuICAgIHJldHVybiBwYWdlVHlwZSA9PT0gJ2NyZWF0ZScgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIHRoaXMuaGFzTmF2aWdhdGlvbikgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2N1c3RvbScgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnICYmIHRoaXMuaGFzTmF2aWdhdGlvbilcbiAgICAgID8gJ25vbmUgIWltcG9ydGFudCdcbiAgICAgIDogJyc7XG4gIH1cblxuICBnZXQgc2hvd0VkaXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgIXRoaXMuaGlkZUVkaXQpKTtcbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5kZWxldGVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBzaG93QXJjaGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhIXRoaXMuYXJjaGl2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dDYW5jZWwkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+ICF2ICYmICEhdGhpcy5jYW5jZWxCdXR0b24gJiYgIXRoaXMuaXNDcmVhdGUpKTtcbiAgfVxuXG4gIGdldCBzaG93U2F2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLnNhdmVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBoZWFkZXJGYWNldHMoKTogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyRmFjZXRzKHRoaXMuY29uZmlnKSkgcmV0dXJuIHRoaXMuY29uZmlnLmhlYWRlckZhY2V0cztcbiAgfVxuXG4gIGdldCBpc0luc3BlY3RBbmRWaWV3TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgbWFwKGlzVmlldyA9PiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIGlzVmlldylcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzQ3JlYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZSc7XG4gIH1cblxuICBnZXQgaXNPdmVydmlldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldyc7XG4gIH1cblxuICBnZXQgaXNDb250ZXh0U2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nO1xuICB9XG5cbiAgZ2V0IGVkaXRCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2VkaXQnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmVkaXQ7XG4gIH1cblxuICBnZXQgZGVsZXRlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydkZWxldGUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmRlbGV0ZTtcbiAgfVxuXG4gIGdldCBhcmNoaXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydhcmNoaXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5hcmNoaXZlO1xuICB9XG5cbiAgZ2V0IGNhbmNlbEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snY2FuY2VsJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5jYW5jZWw7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snc2F2ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZTtcbiAgfVxuXG4gIGdldCBoaWRlRWRpdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbmZpZy5vcGVyYXRpb25Nb2RlICE9PSAnZWRpdCcpIHJldHVybiBjb25maWcuaGlkZUVkaXQgPT09IHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmFsdWVzQ2hhbmdlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCAkY2FuU2F2ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZT8uaGFzVmFsaWRhdGlvbiA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kYXJlRm9ybUdyb3Vwc1ZhbGlkKCksXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICBdKS5waXBlKG1hcCgoW2lzVmFsaWQsIGhhc0NoYW5nZXNdKSA9PiBpc1ZhbGlkICYmIGhhc0NoYW5nZXMpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4pIHByaXZhdGUgcGFnZU9iamVjdFJlc29sdmVyOiBRZFBhZ2VPYmplY3RSZXNvbHZlcjxUPixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlOiBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29tcG9uZW50OiBRZERpYWxvZ0NvbXBvbmVudCxcbiAgICBwcml2YXRlIGRpYWxvZzogUWREaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFFkQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNvbHZlclRyaWdnZXJTZXJ2aWNlOiBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlU3RvcmVTZXJ2aWNlOiBRZFBhZ2VTdG9yZVNlcnZpY2U8VD5cbiAgKSB7XG4gICAgaWYgKHBhZ2VPYmplY3RSZXNvbHZlcikge1xuICAgICAgY29uc3Qgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YSA9IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhPy5iaW5kKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKTtcbiAgICAgIHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhID0gKHByb3BzOiBQYXJ0aWFsPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YWRhdGEocHJvcHMpO1xuICAgICAgICBpZiAob3JpZ2luYWxVcGRhdGVNZXRhZGF0YSkgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q29udGV4dHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VPYmplY3RSZXNvbHZlcikgdGhpcy5zZXR1cFJlc29sdmVyVHJpZ2dlcigpO1xuXG4gICAgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuXG4gICAgdGhpcy5fZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXBkYXRlTWV0YWRhdGEobWV0YWRhdGE6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkTWV0YWRhdGEgPSB7IC4uLnRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC52YWx1ZSwgLi4ubWV0YWRhdGEgfTtcbiAgICB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dCh1cGRhdGVkTWV0YWRhdGEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uKGZhY2V0OiBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0IHwgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0KTogdm9pZCB7XG4gICAgZmFjZXQ/LmFjdGlvbj8uaGFuZGxlcigpO1xuICB9XG5cbiAgaGFzSGVhZGVyRmFjZXRzKFxuICAgIGNvbmZpZzogUWRQYWdlQ29uZmlnPFQ+XG4gICk6IGNvbmZpZyBpcyBRZFBhZ2VDb25maWdDcmVhdGU8VD4gfCBRZFBhZ2VDb25maWdJbnNwZWN0PFQ+IHwgUWRQYWdlQ29uZmlnQ3VzdG9tPFQ+IHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIHsgaGVhZGVyRmFjZXRzOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIH0pLmhlYWRlckZhY2V0cyAhPSBudWxsO1xuICB9XG5cbiAgZWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICAgIGlmICh0aGlzLmVkaXRCdXR0b24/LmhhbmRsZXIpIHRoaXMuZWRpdEJ1dHRvbi5oYW5kbGVyKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGhhc0NoYW5nZWQgPT4ge1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMub3BlbkNhbmNlbERpYWxvZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuY2FuY2VsUGVuZGluZ0FzeW5jVmFsaWRhdGlvbigpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmNhbmNlbFBlbmRpbmdBc3luY1ZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gMS4gSGFuZGxlIG5vbi1pbnNwZWN0IHBhZ2VzIGVhcmx5XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlICE9PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8uY3VzdG9tQWN0aW9ucyA/PyBbXTtcbiAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQoeyBhY3Rpb25zIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIDIuIFNldHVwIEluc3BlY3Qtc3BlY2lmaWMgbG9naWNcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZztcbiAgICBpZiAoY29uZmlnPy5vcGVyYXRpb25Nb2RlKSB7XG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoY29uZmlnLm9wZXJhdGlvbk1vZGUgPT09ICd2aWV3Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVUb1ZpZXdPbmx5TW9kZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZpZXdPbmx5TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YiA9IHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+IHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCc7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnO1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAoY29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKS5vcGVyYXRpb25Nb2RlID0gbW9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBjb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW107XG4gICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRDdXN0b21BY3Rpb25zQnlNb2RlKGFjdGlvbnMsIG1vZGUpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -16,7 +16,13 @@ export class QdPageStoreService {
16
16
  }
17
17
  initPageState(config) {
18
18
  this.config = config;
19
- this.config?.pageType === 'inspect' ? this.toggleViewonly(true) : this.toggleViewonly(false);
19
+ if (this.config?.pageType === 'inspect') {
20
+ const operationMode = this.config.pageTypeConfig?.operationMode;
21
+ this.toggleViewonly(operationMode !== 'edit');
22
+ }
23
+ else {
24
+ this.toggleViewonly(false);
25
+ }
20
26
  }
21
27
  getConfig() {
22
28
  return this.config;
@@ -30,4 +36,4 @@ export class QdPageStoreService {
30
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPageStoreService, decorators: [{
31
37
  type: Injectable
32
38
  }], ctorParameters: () => [{ type: i1.QdEventBrokerService }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2Uvc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUFTVDtJQVJaLE1BQU0sQ0FBOEI7SUFFNUMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCO2FBQzNCLE9BQU8sQ0FBeUIsd0JBQXdCLENBQUM7YUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsWUFBb0Isa0JBQXdDO1FBQXhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7SUFBRyxDQUFDO0lBRWhFLGFBQWEsQ0FBQyxNQUF1QjtRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUF5Qix3QkFBd0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7dUdBdkJVLGtCQUFrQjsyR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUWRQYWdlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBRZE9wZXJhdGlvbk1vZGVNZXNzYWdlIHtcbiAgaXNWaWV3b25seTogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFFkUGFnZVN0b3JlU2VydmljZTxUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByaXZhdGUgY29uZmlnOiBRZFBhZ2VDb25maWc8VD4gfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGlzVmlld29ubHkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZVxuICAgICAgLmNvbnN1bWU8UWRPcGVyYXRpb25Nb2RlTWVzc2FnZT4oJ29wZXJhdGlvbl9tb2RlX2NoYW5nZWQnKVxuICAgICAgLnBpcGUobWFwKHRvcGljID0+IHRvcGljLnBheWxvYWQuaXNWaWV3b25seSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudEJyb2tlclNlcnZpY2U6IFFkRXZlbnRCcm9rZXJTZXJ2aWNlKSB7fVxuXG4gIGluaXRQYWdlU3RhdGUoY29uZmlnOiBRZFBhZ2VDb25maWc8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIHRoaXMuY29uZmlnPy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnID8gdGhpcy50b2dnbGVWaWV3b25seSh0cnVlKSA6IHRoaXMudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICB9XG5cbiAgZ2V0Q29uZmlnKCk6IFFkUGFnZUNvbmZpZzxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xuICB9XG5cbiAgdG9nZ2xlVmlld29ubHkoaXNWaWV3b25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLnByb2R1Y2U8UWRPcGVyYXRpb25Nb2RlTWVzc2FnZT4oJ29wZXJhdGlvbl9tb2RlX2NoYW5nZWQnLCB7IGlzVmlld29ubHk6IGlzVmlld29ubHkgfSk7XG4gIH1cbn1cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2Uvc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUFTVDtJQVJaLE1BQU0sQ0FBOEI7SUFFNUMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCO2FBQzNCLE9BQU8sQ0FBeUIsd0JBQXdCLENBQUM7YUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsWUFBb0Isa0JBQXdDO1FBQXhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7SUFBRyxDQUFDO0lBRWhFLGFBQWEsQ0FBQyxNQUF1QjtRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sYUFBYSxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBMEMsRUFBRSxhQUFhLENBQUM7WUFDN0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQXlCLHdCQUF3QixFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDaEgsQ0FBQzt1R0E1QlUsa0JBQWtCOzJHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRZFBhZ2VDb25maWcsIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBRZE9wZXJhdGlvbk1vZGVNZXNzYWdlIHtcbiAgaXNWaWV3b25seTogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFFkUGFnZVN0b3JlU2VydmljZTxUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByaXZhdGUgY29uZmlnOiBRZFBhZ2VDb25maWc8VD4gfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGlzVmlld29ubHkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZVxuICAgICAgLmNvbnN1bWU8UWRPcGVyYXRpb25Nb2RlTWVzc2FnZT4oJ29wZXJhdGlvbl9tb2RlX2NoYW5nZWQnKVxuICAgICAgLnBpcGUobWFwKHRvcGljID0+IHRvcGljLnBheWxvYWQuaXNWaWV3b25seSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudEJyb2tlclNlcnZpY2U6IFFkRXZlbnRCcm9rZXJTZXJ2aWNlKSB7fVxuXG4gIGluaXRQYWdlU3RhdGUoY29uZmlnOiBRZFBhZ2VDb25maWc8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICh0aGlzLmNvbmZpZz8ucGFnZVR5cGUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTW9kZSA9ICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/Lm9wZXJhdGlvbk1vZGU7XG4gICAgICB0aGlzLnRvZ2dsZVZpZXdvbmx5KG9wZXJhdGlvbk1vZGUgIT09ICdlZGl0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpZygpOiBRZFBhZ2VDb25maWc8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxuXG4gIHRvZ2dsZVZpZXdvbmx5KGlzVmlld29ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5wcm9kdWNlPFFkT3BlcmF0aW9uTW9kZU1lc3NhZ2U+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJywgeyBpc1ZpZXdvbmx5OiBpc1ZpZXdvbmx5IH0pO1xuICB9XG59XG4iXX0=
@@ -19155,7 +19155,13 @@ class QdPageStoreService {
19155
19155
  }
19156
19156
  initPageState(config) {
19157
19157
  this.config = config;
19158
- this.config?.pageType === 'inspect' ? this.toggleViewonly(true) : this.toggleViewonly(false);
19158
+ if (this.config?.pageType === 'inspect') {
19159
+ const operationMode = this.config.pageTypeConfig?.operationMode;
19160
+ this.toggleViewonly(operationMode !== 'edit');
19161
+ }
19162
+ else {
19163
+ this.toggleViewonly(false);
19164
+ }
19159
19165
  }
19160
19166
  getConfig() {
19161
19167
  return this.config;
@@ -33542,6 +33548,7 @@ class QdPageObjectHeaderComponent {
33542
33548
  _pageObjectDataSubject = new BehaviorSubject({});
33543
33549
  _isLoadingSubject = new BehaviorSubject(false);
33544
33550
  _customActionsSubject = new BehaviorSubject({ actions: [] });
33551
+ _customActionsSub;
33545
33552
  _destroyed$ = new Subject();
33546
33553
  pageObjectData$ = this._pageObjectDataSubject.asObservable();
33547
33554
  isLoading$ = this._isLoadingSubject.asObservable().pipe(debounceTime(400));
@@ -33733,17 +33740,32 @@ class QdPageObjectHeaderComponent {
33733
33740
  }))));
33734
33741
  }
33735
33742
  updateCustomActions() {
33736
- if (this.config.pageType === 'inspect') {
33737
- const operationMode = this.config.pageTypeConfig?.operationMode;
33738
- if (operationMode)
33739
- this.pageStoreService.toggleViewonly(operationMode === 'view');
33740
- this.pageStoreService.isViewonly$.pipe(takeUntil(this._destroyed$)).subscribe(isViewonly => {
33741
- const customActions = this.config.pageTypeConfig?.customActions ?? [];
33742
- this._customActionsSubject.next(this.getCustomActionsByMode(customActions, isViewonly ? 'view' : 'edit'));
33743
- });
33743
+ // 1. Handle non-inspect pages early
33744
+ if (this.config.pageType !== 'inspect') {
33745
+ const actions = this.config.pageTypeConfig?.customActions ?? [];
33746
+ this._customActionsSubject.next({ actions });
33747
+ return;
33744
33748
  }
33745
- if (this.config.pageType !== 'inspect')
33746
- this._customActionsSubject.next({ actions: this.config.pageTypeConfig?.customActions ?? [] });
33749
+ // 2. Setup Inspect-specific logic
33750
+ const config = this.config.pageTypeConfig;
33751
+ if (config?.operationMode) {
33752
+ this.pageStoreService.toggleViewonly(config.operationMode === 'view');
33753
+ }
33754
+ this.subscribeToViewOnlyMode();
33755
+ }
33756
+ subscribeToViewOnlyMode() {
33757
+ this._customActionsSub?.unsubscribe();
33758
+ this._customActionsSub = this.pageStoreService.isViewonly$
33759
+ .pipe(takeUntil(this._destroyed$))
33760
+ .subscribe(isViewonly => {
33761
+ const mode = isViewonly ? 'view' : 'edit';
33762
+ const config = this.config.pageTypeConfig;
33763
+ if (config) {
33764
+ config.operationMode = mode;
33765
+ }
33766
+ const actions = config?.customActions ?? [];
33767
+ this._customActionsSubject.next(this.getCustomActionsByMode(actions, mode));
33768
+ });
33747
33769
  }
33748
33770
  getCustomActionsByMode(customActions, mode) {
33749
33771
  const actions = customActions