@c8y/ngx-components 1017.0.76 → 1017.0.77

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.
@@ -41,12 +41,17 @@ export class TenantUiService {
41
41
  * @returns True, if current tenant is an enterprise tenant.
42
42
  */
43
43
  async isEnterpriseTenant() {
44
- const hasBranding = (await this.hasApp({ name: 'branding' })) ||
45
- (await this.hasApp({ name: 'feature-branding' }));
46
- const hasSslManagement = await this.hasApp({ name: 'sslmanagement' });
47
- const hasUserHierarchy = await this.hasApp({ name: 'feature-user-hierarchy' });
48
- const hasDataBroker = await this.hasApp({ name: 'feature-broker' });
49
- return hasBranding && hasSslManagement && hasUserHierarchy && hasDataBroker;
44
+ const { data: availableAppsOfUser } = await this.applicationService.listByUser(this.appStateService.currentUser.value, {
45
+ dropOverwrittenApps: true,
46
+ noPaging: true
47
+ });
48
+ const brandingAvailable = this.hasApp(availableAppsOfUser, 'branding') ||
49
+ this.hasApp(availableAppsOfUser, 'feature-branding');
50
+ const requiredAppsAndFeaturesAvailable = brandingAvailable &&
51
+ this.hasApp(availableAppsOfUser, 'sslmanagement') &&
52
+ this.hasApp(availableAppsOfUser, 'feature-user-hierarchy') &&
53
+ this.hasApp(availableAppsOfUser, 'feature-broker');
54
+ return requiredAppsAndFeaturesAvailable;
50
55
  }
51
56
  /**
52
57
  * Checks whether the current user has read access to tenants, i.e.:
@@ -217,8 +222,11 @@ export class TenantUiService {
217
222
  .map(appRef => appRef.application)
218
223
  .filter(app => app.type === ApplicationType.MICROSERVICE);
219
224
  }
220
- async hasApp(app) {
221
- return (await this.applicationService.isAvailable(app)).data;
225
+ hasApp(apps, requiredAppName) {
226
+ if (!apps?.length) {
227
+ return false;
228
+ }
229
+ return apps.some(app => app.name === requiredAppName);
222
230
  }
223
231
  isManagement(currentTenant) {
224
232
  return currentTenant.name === this.MANAGEMENT;
@@ -229,4 +237,4 @@ TenantUiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
229
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TenantUiService, decorators: [{
230
238
  type: Injectable
231
239
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.AppStateService }, { type: i1.ApplicationService }]; } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFNBQVMsRUFLVCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUVyRCxtRkFBbUY7QUFFbkYsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFOdkMsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUMxQixnQ0FBMkIsR0FBRyw2QkFBNkIsQ0FBQztJQU1sRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxXQUFXLEdBQ2Ys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SUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQ2xDLCtCQUErQixFQUMvQixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sVUFBVTthQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBMEI7UUFDN0MsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRCxDQUFDO0lBRU8sWUFBWSxDQUFDLGFBQTZCO1FBQ2hELE9BQU8sYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7OzRHQXpQVSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgQXBwbGljYXRpb25UeXBlLFxuICBHcmFudFR5cGUsXG4gIElBcHBsaWNhdGlvbixcbiAgSUFwcGxpY2F0aW9uUmVmZXJlbmNlLFxuICBJQ3VycmVudFRlbmFudCxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBUZW5hbnRMb2dpbk9wdGlvblR5cGUsXG4gIFVzZXJNYW5hZ2VtZW50U291cmNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi91aS1zdGF0ZS5zZXJ2aWNlJztcblxuLyoqIFRoZSBoZWxwZXIgVUkgc2VydmljZSBmb3IgdGVuYW50IHJlbGF0ZWQgbWV0aG9kcyBidWlsdCB1cG9uIGNsaWVudCBzZXJ2aWNlcy4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZW5hbnRVaVNlcnZpY2Uge1xuICByZWFkb25seSBNQU5BR0VNRU5UID0gJ21hbmFnZW1lbnQnO1xuICByZWFkb25seSBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnQgdGVuYW50XG4gICAqL1xuICBnZXQgY3VycmVudFRlbmFudCgpOiBJQ3VycmVudFRlbmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgdGhlIG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGN1cnJlbnQgdGVuYW50IGlzIHRoZSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICovXG4gIGFzeW5jIGlzTWFuYWdlbWVudFRlbmFudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5pc01hbmFnZW1lbnQoY3VycmVudFRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgYW4gZW50ZXJwcmlzZSB0ZW5hbnQuXG4gICAqIEFuIGVudGVycHJpc2UgdGVuYW50IGlzIGEgdGVuYW50IHdoaWNoIGhhcyBzdWJzY3JpYmVkOlxuICAgKiAtIGBicmFuZGluZ2AgbWljcm9zZXJ2aWNlIG9yIGBmZWF0dXJlLWJyYW5kaW5nYCBmZWF0dXJlIGFwcCxcbiAgICogLSBgc3NsbWFuYWdlbWVudGAgbWljcm9zZXJ2aWNlLFxuICAgKiAtIGBmZWF0dXJlLXVzZXItaGllcmFyY2h5YCBmZWF0dXJlIGFwcCxcbiAgICogLSBgZmVhdHVyZS1icm9rZXJgIGZlYXR1cmUgYXBwLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZW50ZXJwcmlzZS1lZGl0aW9uLyBmb3IgZGV0YWlscyBhYm91dCBzdWNoIHRlbmFudHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRydWUsIGlmIGN1cnJlbnQgdGVuYW50IGlzIGFuIGVudGVycHJpc2UgdGVuYW50LlxuICAgKi9cbiAgYXN5bmMgaXNFbnRlcnByaXNlVGVuYW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGhhc0JyYW5kaW5nID1cbiAgICAgIChhd2FpdCB0aGlzLmhhc0FwcCh7IG5hbWU6ICdicmFuZGluZycgfSkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy5oYXNBcHAoeyBuYW1lOiAnZmVhdHVyZS1icmFuZGluZycgfSkpO1xuICAgIGNvbnN0IGhhc1NzbE1hbmFnZW1lbnQgPSBhd2FpdCB0aGlzLmhhc0FwcCh7IG5hbWU6ICdzc2xtYW5hZ2VtZW50JyB9KTtcbiAgICBjb25zdCBoYXNVc2VySGllcmFyY2h5ID0gYXdhaXQgdGhpcy5oYXNBcHAoeyBuYW1lOiAnZmVhdHVyZS11c2VyLWhpZXJhcmNoeScgfSk7XG4gICAgY29uc3QgaGFzRGF0YUJyb2tlciA9IGF3YWl0IHRoaXMuaGFzQXBwKHsgbmFtZTogJ2ZlYXR1cmUtYnJva2VyJyB9KTtcblxuICAgIHJldHVybiBoYXNCcmFuZGluZyAmJiBoYXNTc2xNYW5hZ2VtZW50ICYmIGhhc1VzZXJIaWVyYXJjaHkgJiYgaGFzRGF0YUJyb2tlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyByZWFkIGFjY2VzcyB0byB0ZW5hbnRzLCBpLmUuOlxuICAgKiAtIHRoZSBjdXJyZW50IHRlbmFudCBjYW4gY3JlYXRlIHN1YnRlbmFudHMgb3IgaXQncyB0aGUgbWFuYWdlbWVudCB0ZW5hbnQsXG4gICAqIC0gdGhlIGN1cnJlbnQgdXNlciBoYXMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEIHJvbGUuXG4gICAqIEByZXR1cm5zIFRydWUsIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHJlYWQgYWNjZXNzIHRvIHRlbmFudHMuXG4gICAqL1xuICBjYW5SZWFkVGVuYW50cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5pc01hbmFnZW1lbnQoY3VycmVudFRlbmFudCkgfHwgY3VycmVudFRlbmFudC5hbGxvd0NyZWF0ZVRlbmFudHMpICYmXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmhhc1JvbGUoY3VycmVudFVzZXIsIHRoaXMuUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjdXJyZW50IHRlbmFudCBwcmVmZXJyZWQgbG9naW4gbW9kZS5cbiAgICovXG4gIGdldEN1cnJlbnRUZW5hbnRQcmVmZXJyZWRMb2dpbk9wdGlvbigpOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmxvZ2luT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjdXJyZW50IHVzZXIgbG9naW4gbW9kZS5cbiAgICovXG4gIGdldEN1cnJlbnRVc2VyTG9naW5Nb2RlKCk6IFRlbmFudExvZ2luT3B0aW9uVHlwZSB7XG4gICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb24gPSB0aGlzLmdldEN1cnJlbnRUZW5hbnRQcmVmZXJyZWRMb2dpbk9wdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKGN1cnJlbnRVc2VyLmN1c3RvbVByb3BlcnRpZXMudXNlck9yaWdpbiA9PT0gJ09BVVRIMicpIHtcbiAgICAgIHJldHVybiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0Jhc2ljKHByZWZlcnJlZExvZ2luT3B0aW9uKVxuICAgICAgPyBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUNcbiAgICAgIDogVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRlbmFudCBsb2dpbiBvcHRpb24gd2hpY2ggaXMgcHJlZmVycmVkLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb25zIFRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdGVuYW50J3MgbG9naW4gb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgUmV0dXJucyBJVGVuYW50TG9naW5PcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBwcmVmZXJyZWRMb2dpbk9wdGlvbiA9IHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuZ2V0UHJlZmVycmVkTG9naW5PcHRpb24obG9naW5PcHRpb25zKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9uczogSVRlbmFudExvZ2luT3B0aW9uW10pOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIGNvbnN0IGRlZmF1bHRGYWxsYmFjayA9IHtcbiAgICAgIHR5cGU6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQyxcbiAgICAgIHVzZXJNYW5hZ2VtZW50U291cmNlOiBVc2VyTWFuYWdlbWVudFNvdXJjZS5JTlRFUk5BTFxuICAgIH07XG4gICAgaWYgKCFsb2dpbk9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0RmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpc2libGVMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRoaXMuaXNWaXNpYmxlT25Mb2dpblBhZ2UpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc09hdXRoSW50ZXJuYWwpIHx8XG4gICAgICAgIHZpc2libGVMb2dpbk9wdGlvbnMuZmluZCh0aGlzLmlzQmFzaWMpIHx8XG4gICAgICAgIHZpc2libGVMb2dpbk9wdGlvbnMuZmluZCh0aGlzLmlzT2F1dGgyKSB8fFxuICAgICAgICBkZWZhdWx0RmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgT2F1dGgyIGxvZ2luIG9wdGlvbiBpZiBpdCBjYW4gYmUgdXNlZCBieSBVSS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9ucyBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHRlbmFudCdzIGxvZ2luIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFJldHVybnMgSVRlbmFudExvZ2luT3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3Qgb2F1dGgyID0gdGVuYW50TG9naW5PcHRpb25zU2VydmljZS5nZXRPYXV0aDJPcHRpb24obG9naW5PcHRpb25zKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbltdKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb25zLmZpbmQoXG4gICAgICBsb2dpbk9wdGlvbiA9PiB0aGlzLmlzVmlzaWJsZU9uTG9naW5QYWdlKGxvZ2luT3B0aW9uKSAmJiB0aGlzLmlzT2F1dGgyKGxvZ2luT3B0aW9uKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiBpcyB2aXNpYmxlIG9uIGxvZ2luIHBhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IGxvZ2luT3B0aW9uc1Zpc2libGVPbkxvZ2luUGFnZSA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc1Zpc2libGVPbkxvZ2luUGFnZSk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc1Zpc2libGVPbkxvZ2luUGFnZShsb2dpbk9wdGlvbjogSVRlbmFudExvZ2luT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9uLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ09BVVRIMl9JTlRFUk5BTCcuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMkludGVybmFsTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmlzT2F1dGhJbnRlcm5hbCk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc09hdXRoSW50ZXJuYWwobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnQkFTSUMnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBiYXNpY0xvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc0Jhc2ljKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzQmFzaWMobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdPQVVUSDInIGFuZCBncmFudFR5cGUgaXMgJ0FVVEhPUklaQVRJT05fQ09ERScuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMkxvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5PQVVUSDIpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNPYXV0aDIobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyICYmXG4gICAgICBsb2dpbk9wdGlvbi5ncmFudFR5cGUgPT09IEdyYW50VHlwZS5BVVRIT1JJWkFUSU9OX0NPREVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhcHBsaWNhdGlvbiBvZiB0eXBlIE1JQ1JPU0VSVklDRSBpcyBzdWJzY3JpYmVkIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogSXQgY2hlY2tzIHRoZSBhcHBsaWNhdGlvbiByZWZlcmVuY2VzIG9mIHRoZSBjdXJyZW50VGVuYW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKiBObyBhZGRpdGlvbmFsIHJlcXVlc3QuXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyIGFwcGxpY2F0aW9uIG5hbWUgb3IgY29udGV4dFBhdGhcbiAgICovXG4gIGlzTWljcm9zZXJ2aWNlU3Vic2NyaWJlZEluQ3VycmVudFRlbmFudChpZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaWRlbnRpZmllcj8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbWljcm9zZXJ2aWNlcyA9IHRoaXMuZ2V0U3Vic2NyaWJlZE1pY3Jvc2VydmljZXNJbkN1cnJlbnRUZW5hbnQoKTtcbiAgICAgIHJldHVybiBtaWNyb3NlcnZpY2VzLnNvbWUoKHsgbmFtZSwgY29udGV4dFBhdGggfSkgPT5cbiAgICAgICAgW25hbWUsIGNvbnRleHRQYXRoXS5pbmNsdWRlcyhpZGVudGlmaWVyKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGFwcGxpY2F0aW9uIG9mIHR5cGUgTUlDUk9TRVJWSUNFIHN1YnNjcmliZWQgdG8gdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBJdCBjaGVja3MgdGhlIGFwcGxpY2F0aW9uIHJlZmVyZW5jZXMgb2YgdGhlIGN1cnJlbnRUZW5hbnQgZnJvbSB0aGUgYXBwbGljYXRpb24gc3RhdGUuXG4gICAqIE5vIGFkZGl0aW9uYWwgcmVxdWVzdC5cbiAgICovXG4gIGdldFN1YnNjcmliZWRNaWNyb3NlcnZpY2VzSW5DdXJyZW50VGVuYW50KCk6IElBcHBsaWNhdGlvbltdIHtcbiAgICBjb25zdCByZWZlcmVuY2VzOiBJQXBwbGljYXRpb25SZWZlcmVuY2VbXSA9IGdldChcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQsXG4gICAgICAndmFsdWUuYXBwbGljYXRpb25zLnJlZmVyZW5jZXMnLFxuICAgICAgW11cbiAgICApO1xuICAgIHJldHVybiByZWZlcmVuY2VzXG4gICAgICAubWFwKGFwcFJlZiA9PiBhcHBSZWYuYXBwbGljYXRpb24pXG4gICAgICAuZmlsdGVyKGFwcCA9PiBhcHAudHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhc0FwcChhcHA6IFBhcnRpYWw8SUFwcGxpY2F0aW9uPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuaXNBdmFpbGFibGUoYXBwKSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQ6IElDdXJyZW50VGVuYW50KSB7XG4gICAgcmV0dXJuIGN1cnJlbnRUZW5hbnQubmFtZSA9PT0gdGhpcy5NQU5BR0VNRU5UO1xuICB9XG59XG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFNBQVMsRUFLVCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUVyRCxtRkFBbUY7QUFFbkYsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFOdkMsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUMxQixnQ0FBMkIsR0FBRyw2QkFBNkIsQ0FBQztJQU1sRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FDNUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUN0QztZQUNFLG1CQUFtQixFQUFFLElBQUk7WUFDekIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUNGLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFdkQsTUFBTSxnQ0FBZ0MsR0FDcEMsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJELE9BQU8sZ0NBQWdDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYztRQUNaLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDM0QsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0NBQW9DO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO1FBQ3pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUMzRCxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ3hELE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLO1lBQzdCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsdUJBQXVCLENBQUMsWUFBa0M7UUFDeEQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxFQUFFLHFCQUFxQixDQUFDLEtBQUs7WUFDakMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsUUFBUTtTQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixPQUFPLGVBQWUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRTNFLE9BQU8sQ0FDTCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN2QyxlQUFlLENBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILGVBQWUsQ0FBQyxZQUFrQztRQUNoRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQ3RCLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsb0JBQW9CLENBQUMsV0FBK0I7UUFDbEQsT0FBTyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWUsQ0FBQyxXQUErQjtRQUM3QyxPQUFPLFdBQVcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsZUFBZSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxPQUFPLENBQUMsV0FBK0I7UUFDckMsT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsUUFBUSxDQUFDLFdBQStCO1FBQ3RDLE9BQU8sQ0FDTCxXQUFXLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLE1BQU07WUFDakQsV0FBVyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsa0JBQWtCLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1Q0FBdUMsQ0FBQyxVQUFrQjtRQUN4RCxJQUFJLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FDbEQsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUN6QyxDQUFDO1NBQ0g7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gseUNBQXlDO1FBQ3ZDLE1BQU0sVUFBVSxHQUE0QixHQUFHLENBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUNsQywrQkFBK0IsRUFDL0IsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLFVBQVU7YUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2FBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxNQUFNLENBQUMsSUFBb0IsRUFBRSxlQUF1QjtRQUMxRCxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sWUFBWSxDQUFDLGFBQTZCO1FBQ2hELE9BQU8sYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7OzRHQXRRVSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgQXBwbGljYXRpb25UeXBlLFxuICBHcmFudFR5cGUsXG4gIElBcHBsaWNhdGlvbixcbiAgSUFwcGxpY2F0aW9uUmVmZXJlbmNlLFxuICBJQ3VycmVudFRlbmFudCxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBUZW5hbnRMb2dpbk9wdGlvblR5cGUsXG4gIFVzZXJNYW5hZ2VtZW50U291cmNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi91aS1zdGF0ZS5zZXJ2aWNlJztcblxuLyoqIFRoZSBoZWxwZXIgVUkgc2VydmljZSBmb3IgdGVuYW50IHJlbGF0ZWQgbWV0aG9kcyBidWlsdCB1cG9uIGNsaWVudCBzZXJ2aWNlcy4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZW5hbnRVaVNlcnZpY2Uge1xuICByZWFkb25seSBNQU5BR0VNRU5UID0gJ21hbmFnZW1lbnQnO1xuICByZWFkb25seSBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnQgdGVuYW50XG4gICAqL1xuICBnZXQgY3VycmVudFRlbmFudCgpOiBJQ3VycmVudFRlbmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgdGhlIG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGN1cnJlbnQgdGVuYW50IGlzIHRoZSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICovXG4gIGFzeW5jIGlzTWFuYWdlbWVudFRlbmFudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5pc01hbmFnZW1lbnQoY3VycmVudFRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgYW4gZW50ZXJwcmlzZSB0ZW5hbnQuXG4gICAqIEFuIGVudGVycHJpc2UgdGVuYW50IGlzIGEgdGVuYW50IHdoaWNoIGhhcyBzdWJzY3JpYmVkOlxuICAgKiAtIGBicmFuZGluZ2AgbWljcm9zZXJ2aWNlIG9yIGBmZWF0dXJlLWJyYW5kaW5nYCBmZWF0dXJlIGFwcCxcbiAgICogLSBgc3NsbWFuYWdlbWVudGAgbWljcm9zZXJ2aWNlLFxuICAgKiAtIGBmZWF0dXJlLXVzZXItaGllcmFyY2h5YCBmZWF0dXJlIGFwcCxcbiAgICogLSBgZmVhdHVyZS1icm9rZXJgIGZlYXR1cmUgYXBwLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZW50ZXJwcmlzZS1lZGl0aW9uLyBmb3IgZGV0YWlscyBhYm91dCBzdWNoIHRlbmFudHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRydWUsIGlmIGN1cnJlbnQgdGVuYW50IGlzIGFuIGVudGVycHJpc2UgdGVuYW50LlxuICAgKi9cbiAgYXN5bmMgaXNFbnRlcnByaXNlVGVuYW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGF0YTogYXZhaWxhYmxlQXBwc09mVXNlciB9ID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5VXNlcihcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlLFxuICAgICAge1xuICAgICAgICBkcm9wT3ZlcndyaXR0ZW5BcHBzOiB0cnVlLFxuICAgICAgICBub1BhZ2luZzogdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgY29uc3QgYnJhbmRpbmdBdmFpbGFibGUgPVxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2JyYW5kaW5nJykgfHxcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdmZWF0dXJlLWJyYW5kaW5nJyk7XG5cbiAgICBjb25zdCByZXF1aXJlZEFwcHNBbmRGZWF0dXJlc0F2YWlsYWJsZSA9XG4gICAgICBicmFuZGluZ0F2YWlsYWJsZSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ3NzbG1hbmFnZW1lbnQnKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtdXNlci1oaWVyYXJjaHknKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtYnJva2VyJyk7XG5cbiAgICByZXR1cm4gcmVxdWlyZWRBcHBzQW5kRmVhdHVyZXNBdmFpbGFibGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcmVhZCBhY2Nlc3MgdG8gdGVuYW50cywgaS5lLjpcbiAgICogLSB0aGUgY3VycmVudCB0ZW5hbnQgY2FuIGNyZWF0ZSBzdWJ0ZW5hbnRzIG9yIGl0J3MgdGhlIG1hbmFnZW1lbnQgdGVuYW50LFxuICAgKiAtIHRoZSBjdXJyZW50IHVzZXIgaGFzIFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCByb2xlLlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyByZWFkIGFjY2VzcyB0byB0ZW5hbnRzLlxuICAgKi9cbiAgY2FuUmVhZFRlbmFudHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQpIHx8IGN1cnJlbnRUZW5hbnQuYWxsb3dDcmVhdGVUZW5hbnRzKSAmJlxuICAgICAgdGhpcy51c2VyU2VydmljZS5oYXNSb2xlKGN1cnJlbnRVc2VyLCB0aGlzLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB0ZW5hbnQgcHJlZmVycmVkIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbih0aGlzLmFwcFN0YXRlU2VydmljZS5zdGF0ZS5sb2dpbk9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB1c2VyIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VXNlckxvZ2luTW9kZSgpOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUge1xuICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uID0gdGhpcy5nZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmIChjdXJyZW50VXNlci5jdXN0b21Qcm9wZXJ0aWVzLnVzZXJPcmlnaW4gPT09ICdPQVVUSDInKSB7XG4gICAgICByZXR1cm4gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNCYXNpYyhwcmVmZXJyZWRMb2dpbk9wdGlvbilcbiAgICAgID8gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDXG4gICAgICA6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0ZW5hbnQgbG9naW4gb3B0aW9uIHdoaWNoIGlzIHByZWZlcnJlZC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9ucyBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHRlbmFudCdzIGxvZ2luIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFJldHVybnMgSVRlbmFudExvZ2luT3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb24gPSB0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbltdKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICBjb25zdCBkZWZhdWx0RmFsbGJhY2sgPSB7XG4gICAgICB0eXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUMsXG4gICAgICB1c2VyTWFuYWdlbWVudFNvdXJjZTogVXNlck1hbmFnZW1lbnRTb3VyY2UuSU5URVJOQUxcbiAgICB9O1xuICAgIGlmICghbG9naW5PcHRpb25zKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdEZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aXNpYmxlTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0aGlzLmlzVmlzaWJsZU9uTG9naW5QYWdlKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZUxvZ2luT3B0aW9ucy5maW5kKHRoaXMuaXNPYXV0aEludGVybmFsKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc0Jhc2ljKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc09hdXRoMikgfHxcbiAgICAgICAgZGVmYXVsdEZhbGxiYWNrXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIE9hdXRoMiBsb2dpbiBvcHRpb24gaWYgaXQgY2FuIGJlIHVzZWQgYnkgVUkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbnMgVGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB0ZW5hbnQncyBsb2dpbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIElUZW5hbnRMb2dpbk9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMiA9IHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuZ2V0T2F1dGgyT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRPYXV0aDJPcHRpb24obG9naW5PcHRpb25zOiBJVGVuYW50TG9naW5PcHRpb25bXSk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9ucy5maW5kKFxuICAgICAgbG9naW5PcHRpb24gPT4gdGhpcy5pc1Zpc2libGVPbkxvZ2luUGFnZShsb2dpbk9wdGlvbikgJiYgdGhpcy5pc09hdXRoMihsb2dpbk9wdGlvbilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gaXMgdmlzaWJsZSBvbiBsb2dpbiBwYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBsb2dpbk9wdGlvbnNWaXNpYmxlT25Mb2dpblBhZ2UgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNWaXNpYmxlT25Mb2dpblBhZ2UpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNWaXNpYmxlT25Mb2dpblBhZ2UobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi52aXNpYmxlT25Mb2dpblBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdPQVVUSDJfSU5URVJOQUwnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJJbnRlcm5hbExvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc09hdXRoSW50ZXJuYWwpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNPYXV0aEludGVybmFsKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ0JBU0lDJy5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgYmFzaWNMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNCYXNpYyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc0Jhc2ljKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnT0FVVEgyJyBhbmQgZ3JhbnRUeXBlIGlzICdBVVRIT1JJWkFUSU9OX0NPREUnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuT0FVVEgyKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzT2F1dGgyKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMiAmJlxuICAgICAgbG9naW5PcHRpb24uZ3JhbnRUeXBlID09PSBHcmFudFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYXBwbGljYXRpb24gb2YgdHlwZSBNSUNST1NFUlZJQ0UgaXMgc3Vic2NyaWJlZCB0byB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEl0IGNoZWNrcyB0aGUgYXBwbGljYXRpb24gcmVmZXJlbmNlcyBvZiB0aGUgY3VycmVudFRlbmFudCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZS5cbiAgICogTm8gYWRkaXRpb25hbCByZXF1ZXN0LlxuICAgKiBAcGFyYW0gaWRlbnRpZmllciBhcHBsaWNhdGlvbiBuYW1lIG9yIGNvbnRleHRQYXRoXG4gICAqL1xuICBpc01pY3Jvc2VydmljZVN1YnNjcmliZWRJbkN1cnJlbnRUZW5hbnQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlkZW50aWZpZXI/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1pY3Jvc2VydmljZXMgPSB0aGlzLmdldFN1YnNjcmliZWRNaWNyb3NlcnZpY2VzSW5DdXJyZW50VGVuYW50KCk7XG4gICAgICByZXR1cm4gbWljcm9zZXJ2aWNlcy5zb21lKCh7IG5hbWUsIGNvbnRleHRQYXRoIH0pID0+XG4gICAgICAgIFtuYW1lLCBjb250ZXh0UGF0aF0uaW5jbHVkZXMoaWRlbnRpZmllcilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBhcHBsaWNhdGlvbiBvZiB0eXBlIE1JQ1JPU0VSVklDRSBzdWJzY3JpYmVkIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogSXQgY2hlY2tzIHRoZSBhcHBsaWNhdGlvbiByZWZlcmVuY2VzIG9mIHRoZSBjdXJyZW50VGVuYW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKiBObyBhZGRpdGlvbmFsIHJlcXVlc3QuXG4gICAqL1xuICBnZXRTdWJzY3JpYmVkTWljcm9zZXJ2aWNlc0luQ3VycmVudFRlbmFudCgpOiBJQXBwbGljYXRpb25bXSB7XG4gICAgY29uc3QgcmVmZXJlbmNlczogSUFwcGxpY2F0aW9uUmVmZXJlbmNlW10gPSBnZXQoXG4gICAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LFxuICAgICAgJ3ZhbHVlLmFwcGxpY2F0aW9ucy5yZWZlcmVuY2VzJyxcbiAgICAgIFtdXG4gICAgKTtcbiAgICByZXR1cm4gcmVmZXJlbmNlc1xuICAgICAgLm1hcChhcHBSZWYgPT4gYXBwUmVmLmFwcGxpY2F0aW9uKVxuICAgICAgLmZpbHRlcihhcHAgPT4gYXBwLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBcHAoYXBwczogSUFwcGxpY2F0aW9uW10sIHJlcXVpcmVkQXBwTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcHBzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcHMuc29tZShhcHAgPT4gYXBwLm5hbWUgPT09IHJlcXVpcmVkQXBwTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTWFuYWdlbWVudChjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCkge1xuICAgIHJldHVybiBjdXJyZW50VGVuYW50Lm5hbWUgPT09IHRoaXMuTUFOQUdFTUVOVDtcbiAgfVxufVxuIl19
@@ -6149,12 +6149,17 @@ class TenantUiService {
6149
6149
  */
6150
6150
  isEnterpriseTenant() {
6151
6151
  return __awaiter(this, void 0, void 0, function* () {
6152
- const hasBranding = (yield this.hasApp({ name: 'branding' })) ||
6153
- (yield this.hasApp({ name: 'feature-branding' }));
6154
- const hasSslManagement = yield this.hasApp({ name: 'sslmanagement' });
6155
- const hasUserHierarchy = yield this.hasApp({ name: 'feature-user-hierarchy' });
6156
- const hasDataBroker = yield this.hasApp({ name: 'feature-broker' });
6157
- return hasBranding && hasSslManagement && hasUserHierarchy && hasDataBroker;
6152
+ const { data: availableAppsOfUser } = yield this.applicationService.listByUser(this.appStateService.currentUser.value, {
6153
+ dropOverwrittenApps: true,
6154
+ noPaging: true
6155
+ });
6156
+ const brandingAvailable = this.hasApp(availableAppsOfUser, 'branding') ||
6157
+ this.hasApp(availableAppsOfUser, 'feature-branding');
6158
+ const requiredAppsAndFeaturesAvailable = brandingAvailable &&
6159
+ this.hasApp(availableAppsOfUser, 'sslmanagement') &&
6160
+ this.hasApp(availableAppsOfUser, 'feature-user-hierarchy') &&
6161
+ this.hasApp(availableAppsOfUser, 'feature-broker');
6162
+ return requiredAppsAndFeaturesAvailable;
6158
6163
  });
6159
6164
  }
6160
6165
  /**
@@ -6326,10 +6331,11 @@ class TenantUiService {
6326
6331
  .map(appRef => appRef.application)
6327
6332
  .filter(app => app.type === ApplicationType.MICROSERVICE);
6328
6333
  }
6329
- hasApp(app) {
6330
- return __awaiter(this, void 0, void 0, function* () {
6331
- return (yield this.applicationService.isAvailable(app)).data;
6332
- });
6334
+ hasApp(apps, requiredAppName) {
6335
+ if (!(apps === null || apps === void 0 ? void 0 : apps.length)) {
6336
+ return false;
6337
+ }
6338
+ return apps.some(app => app.name === requiredAppName);
6333
6339
  }
6334
6340
  isManagement(currentTenant) {
6335
6341
  return currentTenant.name === this.MANAGEMENT;