@bnsights/bbsf-utilities 1.0.26 → 1.0.28

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.
@@ -1,18 +1,20 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { Injectable, Injector } from '@angular/core';
3
3
  import { HttpClient, HttpHeaders } from '@angular/common/http';
4
- import { UserManager, WebStorageStateStore } from 'oidc-client';
4
+ import { UserManager, WebStorageStateStore, } from 'oidc-client';
5
5
  import { BehaviorSubject, Subject } from 'rxjs';
6
6
  import { EnvironmentService } from '../services/environment.service';
7
7
  import { BBSFTranslateService } from '../services/translate.service';
8
8
  import { Router } from '@angular/router';
9
+ import { MasterLayoutService } from '../services/masterlayout.service';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/common/http";
11
12
  import * as i2 from "../services/environment.service";
12
13
  import * as i3 from "../services/translate.service";
13
14
  import * as i4 from "@angular/router";
14
15
  export class AuthService {
15
- constructor(http, environmentService, translateService, router) {
16
+ constructor(injector, http, environmentService, translateService, router) {
17
+ this.injector = injector;
16
18
  this.http = http;
17
19
  this.environmentService = environmentService;
18
20
  this.translateService = translateService;
@@ -24,36 +26,61 @@ export class AuthService {
24
26
  // Observable navItem source
25
27
  this._userSource = new Subject();
26
28
  this.UserStatus$ = this._userSource.asObservable();
27
- this.manager = new UserManager({
28
- authority: this.environmentService.getIdentityServerUrl(),
29
- client_id: 'angular_spa',
30
- redirect_uri: this.environmentService.getIdentityServerUrl() + '/Admin/authentication/auth-callback',
31
- post_logout_redirect_uri: this.environmentService.getBaseUrl(),
32
- response_type: "id_token token",
33
- scope: "openid profile email IdentityServerApi",
34
- filterProtocolClaims: true,
35
- loadUserInfo: true,
36
- automaticSilentRenew: true,
37
- silent_redirect_uri: this.environmentService.getIdentityServerUrl() + '/assets/silent-callback.html',
38
- userStore: new WebStorageStateStore({ store: window.localStorage })
39
- });
40
- this.redirectUrl = "";
29
+ this.manager = this.getUserManager();
30
+ this.redirectUrl = '';
41
31
  this.manager.getUser().then((user) => __awaiter(this, void 0, void 0, function* () {
42
32
  this.manager.storeUser(user);
43
33
  AuthService.user = user;
44
34
  this.user = user;
45
35
  this._authNavStatusSource.next(yield this.isAuthenticated());
46
36
  }));
47
- this.manager.events.addAccessTokenExpired(_ => {
37
+ this.manager.events.addAccessTokenExpired((_) => {
48
38
  this._authNavStatusSource.next(false);
49
39
  });
50
40
  }
41
+ getUserManager() {
42
+ let user = null;
43
+ let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() == "true";
44
+ if (isExternal) {
45
+ user = new UserManager({
46
+ authority: this.environmentService.getIdentityServerUrl(),
47
+ client_id: this.environmentService.getIsIdentityServerClientId(),
48
+ client_secret: this.environmentService.getIsIdentityServerClientSecret(),
49
+ redirect_uri: this.environmentService.getBaseUrl() +
50
+ '/Admin/authentication/auth-callback',
51
+ post_logout_redirect_uri: this.environmentService.getBaseUrl(),
52
+ response_type: 'code',
53
+ scope: 'openid profile email',
54
+ filterProtocolClaims: true,
55
+ loadUserInfo: true,
56
+ automaticSilentRenew: true,
57
+ silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
58
+ userStore: new WebStorageStateStore({ store: window.localStorage }),
59
+ });
60
+ }
61
+ else {
62
+ user = new UserManager({
63
+ authority: this.environmentService.getIdentityServerUrl(),
64
+ client_id: 'angular_spa',
65
+ redirect_uri: this.environmentService.getBaseUrl() +
66
+ '/Admin/authentication/auth-callback',
67
+ post_logout_redirect_uri: this.environmentService.getBaseUrl(),
68
+ response_type: 'id_token token',
69
+ scope: 'openid profile email IdentityServerApi',
70
+ filterProtocolClaims: true,
71
+ loadUserInfo: true,
72
+ automaticSilentRenew: true,
73
+ silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
74
+ userStore: new WebStorageStateStore({ store: window.localStorage }),
75
+ });
76
+ }
77
+ return user;
78
+ }
51
79
  login() {
52
80
  return this.manager.signinRedirect();
53
81
  }
54
82
  getUser() {
55
83
  this.manager.getUser().then((user) => __awaiter(this, void 0, void 0, function* () {
56
- ;
57
84
  AuthService.user = user;
58
85
  this.user = user;
59
86
  this._authNavStatusSource.next(yield this.isAuthenticated());
@@ -67,7 +94,7 @@ export class AuthService {
67
94
  }
68
95
  signinSilent() {
69
96
  let x = this.manager.signinSilentCallback();
70
- x.then(s => {
97
+ x.then((s) => {
71
98
  //console.log(s)
72
99
  });
73
100
  }
@@ -75,16 +102,34 @@ export class AuthService {
75
102
  return __awaiter(this, void 0, void 0, function* () {
76
103
  this.user = yield this.manager.signinRedirectCallback();
77
104
  AuthService.user = this.user;
78
- if (!localStorage.getItem("language") || localStorage.getItem("language") == this.user.profile.locale)
79
- localStorage.setItem("language", this.user.profile.locale);
80
- if (this.translateService.currentLang != localStorage.getItem("language")) {
105
+ this._userSource.next(AuthService.user);
106
+ this._authNavStatusSource.next(yield this.isAuthenticated());
107
+ let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() == "true";
108
+ if (isExternal) {
109
+ const masterLayoutService = this.injector.get(MasterLayoutService);
110
+ let userClaims = yield masterLayoutService
111
+ .getUserClaims()
112
+ .toPromise()
113
+ .then((e) => {
114
+ AuthService.UserClaims = e;
115
+ });
116
+ AuthService.user.profile = Object.assign(AuthService.user.profile, AuthService.UserClaims);
117
+ }
118
+ this.storUser(AuthService.user);
119
+ if (!localStorage.getItem('language') ||
120
+ localStorage.getItem('language') == this.user.profile.locale)
121
+ localStorage.setItem('language', this.user.profile.locale);
122
+ if (this.translateService.currentLang != localStorage.getItem('language')) {
81
123
  this.translateService.resetLang(this.translateService.currentLang);
82
- yield this.translateService.reloadLang(localStorage.getItem("language")).subscribe((res) => {
124
+ yield this.translateService
125
+ .reloadLang(localStorage.getItem('language'))
126
+ .subscribe((res) => {
83
127
  console.log(res);
84
128
  });
85
129
  }
86
130
  this._userSource.next(AuthService.user);
87
131
  this._authNavStatusSource.next(yield this.isAuthenticated());
132
+ this.user = AuthService.user;
88
133
  });
89
134
  }
90
135
  refreshToken(token) {
@@ -92,11 +137,13 @@ export class AuthService {
92
137
  const httpOptions = {
93
138
  headers: new HttpHeaders({
94
139
  'Content-Type': 'application/json',
95
- 'Authorization': token
96
- })
140
+ Authorization: token,
141
+ }),
97
142
  };
98
143
  this.manager.revokeAccessToken();
99
- return yield this.http.post(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true }).subscribe((user) => {
144
+ return yield this.http
145
+ .post(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true })
146
+ .subscribe((user) => {
100
147
  this._userSource.next(user);
101
148
  AuthService.user = user;
102
149
  this.user = user;
@@ -108,57 +155,60 @@ export class AuthService {
108
155
  }
109
156
  isAuthenticated() {
110
157
  return __awaiter(this, void 0, void 0, function* () {
111
- let user = yield this.manager.getUser().then(user => {
158
+ let user = yield this.manager.getUser().then((user) => {
112
159
  return user;
113
160
  });
114
161
  return this.user != null && !this.user.expired;
115
162
  });
116
163
  }
117
164
  isUserInRole(allowedPermission) {
118
- let selectedPermissionSetID = Number.parseInt(this.user.profile["selectedpermissionsetid"]);
165
+ let selectedPermissionSetID = Number.parseInt(this.user.profile['selectedpermissionsetid']);
119
166
  return allowedPermission.includes(selectedPermissionSetID);
120
167
  }
121
168
  authorizationHeaderValue() {
122
- return AuthService.user ? `${AuthService.user.token_type} ${AuthService.user.access_token}` : "";
169
+ return AuthService.user
170
+ ? `${AuthService.user.token_type} ${AuthService.user.access_token}`
171
+ : '';
123
172
  }
124
173
  name() {
125
174
  return AuthService.user != null ? AuthService.user.profile.given_name : '';
126
175
  }
127
176
  setUrl(url) {
128
- localStorage.setItem("redirectUrl", url);
177
+ localStorage.setItem('redirectUrl', url);
129
178
  }
130
179
  getUrl() {
131
- return localStorage.getItem("redirectUrl");
180
+ return localStorage.getItem('redirectUrl');
132
181
  }
133
182
  signinSilentCallback() {
134
183
  return __awaiter(this, void 0, void 0, function* () {
135
184
  let user = yield this.manager.signinSilentCallback();
136
185
  //await this.manager.storeUser(user);
137
186
  AuthService.user = user;
138
- console.log("Token from signinSilentCallback :" + AuthService.user);
187
+ console.log('Token from signinSilentCallback :' + AuthService.user);
139
188
  this.user = user;
140
189
  });
141
190
  }
142
191
  signout() {
143
192
  return __awaiter(this, void 0, void 0, function* () {
144
193
  if (yield !this.isAuthenticated())
145
- this.router.navigate(['/Admin/account/login']),
146
- localStorage.clear();
194
+ this.router.navigate(['/Admin/account/login']), localStorage.clear();
147
195
  yield this.manager.signoutRedirect();
148
196
  });
149
197
  }
150
198
  }
151
199
  AuthService.user = null;
152
- AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.EnvironmentService), i0.ɵɵinject(i3.BBSFTranslateService), i0.ɵɵinject(i4.Router)); }, token: AuthService, providedIn: "root" });
200
+ AuthService.UserClaims = null;
201
+ AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.EnvironmentService), i0.ɵɵinject(i3.BBSFTranslateService), i0.ɵɵinject(i4.Router)); }, token: AuthService, providedIn: "root" });
153
202
  AuthService.decorators = [
154
203
  { type: Injectable, args: [{
155
- providedIn: 'root'
204
+ providedIn: 'root',
156
205
  },] }
157
206
  ];
158
207
  AuthService.ctorParameters = () => [
208
+ { type: Injector },
159
209
  { type: HttpClient },
160
210
  { type: EnvironmentService },
161
211
  { type: BBSFTranslateService },
162
212
  { type: Router }
163
213
  ];
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFdBQVcsRUFBNkIsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFNekMsTUFBTSxPQUFPLFdBQVc7SUE0QnRCLFlBQW9CLElBQWdCLEVBQVUsa0JBQXNDLEVBQVMsZ0JBQXFDLEVBQVMsTUFBYztRQUFySSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBMUJ6Siw0QkFBNEI7UUFDcEIseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkUsNEJBQTRCO1FBQzVCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELDRCQUE0QjtRQUNwQixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pELGdCQUFXLEdBQUcs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VyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRztRQUNSLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBRTFDLENBQUM7SUFDRCxNQUFNO1FBQ0osT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDSyxvQkFBb0I7O1lBQ3hCLElBQUksSUFBSSxHQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1lBQ3JELHFDQUFxQztZQUNyQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxHQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO0tBQUE7SUFDSyxPQUFPOztZQUNYLElBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDOUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QyxDQUFDO0tBQUE7O0FBMUhNLGdCQUFJLEdBQWdCLElBQUksQ0FBQzs7O1lBN0JqQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVZRLFVBQVU7WUFJVixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVc2VyTWFuYWdlciwgVXNlck1hbmFnZXJTZXR0aW5ncywgVXNlciwgV2ViU3RvcmFnZVN0YXRlU3RvcmUgfSBmcm9tICdvaWRjLWNsaWVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2UgIHtcclxuXHJcbiAgLy8gT2JzZXJ2YWJsZSBuYXZJdGVtIHNvdXJjZVxyXG4gIHByaXZhdGUgX2F1dGhOYXZTdGF0dXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAvLyBPYnNlcnZhYmxlIG5hdkl0ZW0gc3RyZWFtXHJcbiAgYXV0aE5hdlN0YXR1cyQgPSB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vIE9ic2VydmFibGUgbmF2SXRlbSBzb3VyY2VcclxuICBwcml2YXRlIF91c2VyU291cmNlOiBTdWJqZWN0PFVzZXI+ID0gbmV3IFN1YmplY3Q8VXNlcj4oKTtcclxuICBVc2VyU3RhdHVzJCA9IHRoaXMuX3VzZXJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSBtYW5hZ2VyID0gbmV3IFVzZXJNYW5hZ2VyKFxyXG4gICAge1xyXG4gICAgICBhdXRob3JpdHk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElkZW50aXR5U2VydmVyVXJsKCksXHJcbiAgICAgIGNsaWVudF9pZDogJ2FuZ3VsYXJfc3BhJyxcclxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJZGVudGl0eVNlcnZlclVybCgpICsnL0FkbWluL2F1dGhlbnRpY2F0aW9uL2F1dGgtY2FsbGJhY2snLFxyXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSxcclxuICAgICAgcmVzcG9uc2VfdHlwZTogXCJpZF90b2tlbiB0b2tlblwiLFxyXG4gICAgICBzY29wZTogXCJvcGVuaWQgcHJvZmlsZSBlbWFpbCBJZGVudGl0eVNlcnZlckFwaVwiLFxyXG4gICAgICBmaWx0ZXJQcm90b2NvbENsYWltczogdHJ1ZSxcclxuICAgICAgbG9hZFVzZXJJbmZvOiB0cnVlLFxyXG4gICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogdHJ1ZSxcclxuICAgICAgc2lsZW50X3JlZGlyZWN0X3VyaTogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwoKSArICcvYXNzZXRzL3NpbGVudC1jYWxsYmFjay5odG1sJyxcclxuICAgICAgdXNlclN0b3JlOiBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoeyBzdG9yZTogd2luZG93LmxvY2FsU3RvcmFnZSB9KVxyXG4gIH1cclxuICApO1xyXG4gIHB1YmxpYyByZWRpcmVjdFVybDogc3RyaW5nID0gXCJcIlxyXG4gIHN0YXRpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgdXNlcjogVXNlciB8IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6QkJTRlRyYW5zbGF0ZVNlcnZpY2UscHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgdGhpcy5tYW5hZ2VyLmdldFVzZXIoKS50aGVuKGFzeW5jIHVzZXIgPT4ge1xyXG4gICAgICB0aGlzLm1hbmFnZXIuc3RvcmVVc2VyKHVzZXIpO1xyXG4gICAgICBBdXRoU2VydmljZS51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1hbmFnZXIuZXZlbnRzLmFkZEFjY2Vzc1Rva2VuRXhwaXJlZChfID0+IHtcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2dpbigpIHtcclxuICAgIHJldHVybiB0aGlzLm1hbmFnZXIuc2lnbmluUmVkaXJlY3QoKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKSB7XHJcbiAgICB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpLnRoZW4oYXN5bmMgdXNlciA9PiB7XHJcbiAgICAgIDtcclxuICAgICAgQXV0aFNlcnZpY2UudXNlciA9IHVzZXI7XHJcbiAgICAgIHRoaXMudXNlciA9IHVzZXJcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHN0b3JVc2VyKFVzZXI6IGFueSkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLnN0b3JlVXNlcihVc2VyKTtcclxuICB9XHJcblxyXG4gIHJldm9rZUFjY2Vzc1Rva2VuKCkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuKCk7XHJcbiAgfVxyXG5cclxuICBzaWduaW5TaWxlbnQoKSB7XHJcblxyXG4gICAgbGV0IHggPSB0aGlzLm1hbmFnZXIuc2lnbmluU2lsZW50Q2FsbGJhY2soKVxyXG4gICAgeC50aGVuKHMgPT4ge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKHMpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29tcGxldGVBdXRoZW50aWNhdGlvbigpIHtcclxuICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMubWFuYWdlci5zaWduaW5SZWRpcmVjdENhbGxiYWNrKCk7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gdGhpcy51c2VyXHJcbiAgICBpZighbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKXx8bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKT09dGhpcy51c2VyLnByb2ZpbGUubG9jYWxlKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibGFuZ3VhZ2VcIix0aGlzLnVzZXIucHJvZmlsZS5sb2NhbGUpXHJcbiAgICAgIFxyXG4gICAgIGlmKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyE9bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSlcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5yZXNldExhbmcodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxyXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS5yZWxvYWRMYW5nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpLnN1YnNjcmliZSgocmVzKT0+e1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dChBdXRoU2VydmljZS51c2VyKVxyXG4gICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gIH1cclxuXHJcbiBcclxuXHJcblxyXG4gIGFzeW5jIHJlZnJlc2hUb2tlbih0b2tlbikge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRva2VuXHJcbiAgICAgIH0pXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0aGlzLm1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW4oKVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwoKX0vdXNlcnMvcmVmcmVzaC10b2tlbmAsIGh0dHBPcHRpb25zLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcclxuICAgICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHVzZXIpXHJcbiAgICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyXHJcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFVzZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFVzZXIoKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHVzZXIgPSBhd2FpdCB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0aGlzLnVzZXIgIT0gbnVsbCAmJiAhdGhpcy51c2VyLmV4cGlyZWQgO1xyXG5cclxuICB9XHJcbiAgaXNVc2VySW5Sb2xlKGFsbG93ZWRQZXJtaXNzaW9uOiBudW1iZXJbXSkge1xyXG4gICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldElEOm51bWJlciA9IE51bWJlci5wYXJzZUludCggdGhpcy51c2VyLnByb2ZpbGVbXCJzZWxlY3RlZHBlcm1pc3Npb25zZXRpZFwiXSlcclxuICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbi5pbmNsdWRlcyhzZWxlY3RlZFBlcm1pc3Npb25TZXRJRCk7XHJcbiAgfVxyXG5cclxuICBhdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyPyBgJHtBdXRoU2VydmljZS51c2VyLnRva2VuX3R5cGV9ICR7QXV0aFNlcnZpY2UudXNlci5hY2Nlc3NfdG9rZW59YDpcIlwiO1xyXG4gIH1cclxuXHJcbiAgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXIgIT0gbnVsbCA/IEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5naXZlbl9uYW1lIDogJyc7XHJcbiAgfVxyXG4gIHNldFVybCh1cmwpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicmVkaXJlY3RVcmxcIiwgdXJsKVxyXG5cclxuICB9XHJcbiAgZ2V0VXJsKCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicmVkaXJlY3RVcmxcIik7XHJcbiAgfVxyXG4gIGFzeW5jIHNpZ25pblNpbGVudENhbGxiYWNrKCkge1xyXG4gICAgbGV0IHVzZXIgPSAgYXdhaXQgdGhpcy5tYW5hZ2VyLnNpZ25pblNpbGVudENhbGxiYWNrKClcclxuICAgIC8vYXdhaXQgdGhpcy5tYW5hZ2VyLnN0b3JlVXNlcih1c2VyKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyO1xyXG4gICAgY29uc29sZS5sb2coXCJUb2tlbiBmcm9tICBzaWduaW5TaWxlbnRDYWxsYmFjayA6XCIrQXV0aFNlcnZpY2UudXNlcilcclxuICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgfVxyXG4gIGFzeW5jIHNpZ25vdXQoKSB7XHJcbiAgICBpZihhd2FpdCAhdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSlcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL2FjY291bnQvbG9naW4nXSksXHJcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIGF3YWl0IHRoaXMubWFuYWdlci5zaWdub3V0UmVkaXJlY3QoKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELE9BQU8sRUFDTCxXQUFXLEVBR1gsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBS3ZFLE1BQU0sT0FBTyxXQUFXO0lBY3RCLFlBQ1UsUUFBa0IsRUFDbEIsSUFBZ0IsRUFDaEIsa0JBQXNDLEVBQ3RDLGdCQUFzQyxFQUN0QyxNQUFjO1FBSmQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEJ4Qiw0QkFBNEI7UUFDcEIseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkUsNEJBQTRCO1FBQzVCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELDRCQUE0QjtRQUNwQixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxZQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBWTlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQU8sSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUVWLElBQUksSUFBSSxHQUFFLElBQUksQ0FBQztRQUNmLElBQUksVUFBVSxHQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFFLE1BQU0sQ0FBQztRQUM1RixJQUFHLFVBQVUsRUFDYjtZQUNFLElBQUksR0FBRSxJQUFJLFdBQVcsQ0FBQztnQkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDekQsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRTtnQkFDaEUsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsRUFBRTtnQkFDeEUsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7b0JBQzlDLHFDQUFxQztnQkFDekMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRTtnQkFDOUQsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLEtBQUssRUFBRSxzQkFBc0I7Z0JBQzdCLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLEdBQUcsOEJBQThCO2dCQUMxRixTQUFTLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdEUsQ0FBQyxDQUFBO1NBQ0Q7YUFFRDtZQUNFLElBQUksR0FBRSxJQUFJLFdBQVcsQ0FBQztnQkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDekQsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFO29CQUM5QyxxQ0FBcUM7Z0JBQ3pDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQzlELGFBQWEsRUFBRSxnQkFBZ0I7Z0JBQy9CLEtBQUssRUFBRSx3Q0FBd0M7Z0JBQy9DLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLEdBQUcsOEJBQThCO2dCQUMxRixTQUFTLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdEUsQ0FBQyxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBTyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNYLGdCQUFnQjtRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFSyxzQkFBc0I7O1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDeEQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxVQUFVLEdBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUUsTUFBTSxDQUFDO1lBQzVGLElBQUksVUFBVSxFQUFFO2dCQUNkLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxVQUFVLEdBQUcsTUFBTSxtQkFBbUI7cUJBQ3ZDLGFBQWEsRUFBRTtxQkFDZixTQUFTLEVBQUU7cUJBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1YsV0FBVyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3RDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUN4QixXQUFXLENBQUMsVUFBVSxDQUN2QixDQUFDO2FBQ0g7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUNFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFFNUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFN0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLElBQUksQ0FBQyxnQkFBZ0I7cUJBQ3hCLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUM1QyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUM7S0FBQTtJQUVLLFlBQVksQ0FBQyxLQUFLOztZQUN0QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO29CQUN2QixjQUFjLEVBQUUsa0JBQWtCO29CQUNsQyxhQUFhLEVBQUUsS0FBSztpQkFDckIsQ0FBQzthQUNILENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJO2lCQUNuQixJQUFJLENBQ0gsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQ3ZFLFdBQVcsRUFDWCxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFSyxlQUFlOztZQUNuQixJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBQ0QsWUFBWSxDQUFDLGlCQUEyQjtRQUN0QyxJQUFJLHVCQUF1QixHQUFXLE1BQU0sQ0FBQyxRQUFRLENBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQzdDLENBQUM7UUFDRixPQUFPLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxXQUFXLENBQUMsSUFBSTtZQUNyQixDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUc7UUFDUixZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0ssb0JBQW9COztZQUN4QixJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNyRCxxQ0FBcUM7WUFDckMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQztLQUFBO0lBQ0ssT0FBTzs7WUFDWCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7S0FBQTs7QUFwTU0sZ0JBQUksR0FBZ0IsSUFBSSxDQUFDO0FBRXpCLHNCQUFVLEdBQVEsSUFBSSxDQUFDOzs7WUFmL0IsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFqQm9CLFFBQVE7WUFDcEIsVUFBVTtZQVNWLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIFVzZXJNYW5hZ2VyLFxyXG4gIFVzZXJNYW5hZ2VyU2V0dGluZ3MsXHJcbiAgVXNlcixcclxuICBXZWJTdG9yYWdlU3RhdGVTdG9yZSxcclxufSBmcm9tICdvaWRjLWNsaWVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hc3RlckxheW91dFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXJsYXlvdXQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIC8vIE9ic2VydmFibGUgbmF2SXRlbSBzb3VyY2VcclxuICBwcml2YXRlIF9hdXRoTmF2U3RhdHVzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgLy8gT2JzZXJ2YWJsZSBuYXZJdGVtIHN0cmVhbVxyXG4gIGF1dGhOYXZTdGF0dXMkID0gdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAvLyBPYnNlcnZhYmxlIG5hdkl0ZW0gc291cmNlXHJcbiAgcHJpdmF0ZSBfdXNlclNvdXJjZTogU3ViamVjdDxVc2VyPiA9IG5ldyBTdWJqZWN0PFVzZXI+KCk7XHJcbiAgVXNlclN0YXR1cyQgPSB0aGlzLl91c2VyU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHByaXZhdGUgbWFuYWdlciA9IHRoaXMuZ2V0VXNlck1hbmFnZXIoKTtcclxuICBwdWJsaWMgcmVkaXJlY3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIHN0YXRpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgdXNlcjogVXNlciB8IG51bGw7XHJcbiAgc3RhdGljIFVzZXJDbGFpbXM6IGFueSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHRoaXMubWFuYWdlci5nZXRVc2VyKCkudGhlbihhc3luYyAodXNlcikgPT4ge1xyXG4gICAgICB0aGlzLm1hbmFnZXIuc3RvcmVVc2VyKHVzZXIpO1xyXG4gICAgICBBdXRoU2VydmljZS51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1hbmFnZXIuZXZlbnRzLmFkZEFjY2Vzc1Rva2VuRXhwaXJlZCgoXykgPT4ge1xyXG4gICAgICB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTWFuYWdlcigpXHJcbiAgICB7XHJcbiAgICAgIGxldCB1c2VyPSBudWxsO1xyXG4gICAgICBsZXQgaXNFeHRlcm5hbD0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkudG9Mb3dlckNhc2UoKT09XCJ0cnVlXCI7XHJcbiAgICAgIGlmKGlzRXh0ZXJuYWwpXHJcbiAgICAgIHtcclxuICAgICAgICB1c2VyPSBuZXcgVXNlck1hbmFnZXIoe1xyXG4gICAgICAgICAgYXV0aG9yaXR5OiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJZGVudGl0eVNlcnZlclVybCgpLFxyXG4gICAgICAgICAgY2xpZW50X2lkOiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJc0lkZW50aXR5U2VydmVyQ2xpZW50SWQoKSxcclxuICAgICAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJDbGllbnRTZWNyZXQoKSxcclxuICAgICAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpICtcclxuICAgICAgICAgICAgICAnL0FkbWluL2F1dGhlbnRpY2F0aW9uL2F1dGgtY2FsbGJhY2snLFxyXG4gICAgICAgICAgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpOiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCksXHJcbiAgICAgICAgICByZXNwb25zZV90eXBlOiAnY29kZScsXHJcbiAgICAgICAgICBzY29wZTogJ29wZW5pZCBwcm9maWxlIGVtYWlsJyxcclxuICAgICAgICAgIGZpbHRlclByb3RvY29sQ2xhaW1zOiB0cnVlLFxyXG4gICAgICAgICAgbG9hZFVzZXJJbmZvOiB0cnVlLFxyXG4gICAgICAgICAgYXV0b21hdGljU2lsZW50UmVuZXc6IHRydWUsXHJcbiAgICAgICAgICBzaWxlbnRfcmVkaXJlY3RfdXJpOiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyAnL2Fzc2V0cy9zaWxlbnQtY2FsbGJhY2suaHRtbCcsXHJcbiAgICAgICAgICB1c2VyU3RvcmU6IG5ldyBXZWJTdG9yYWdlU3RhdGVTdG9yZSh7IHN0b3JlOiB3aW5kb3cubG9jYWxTdG9yYWdlIH0pLFxyXG4gICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIHVzZXI9IG5ldyBVc2VyTWFuYWdlcih7XHJcbiAgICAgICAgICBhdXRob3JpdHk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElkZW50aXR5U2VydmVyVXJsKCksXHJcbiAgICAgICAgICBjbGllbnRfaWQ6ICdhbmd1bGFyX3NwYScsXHJcbiAgICAgICAgICByZWRpcmVjdF91cmk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSArXHJcbiAgICAgICAgICAgICAgJy9BZG1pbi9hdXRoZW50aWNhdGlvbi9hdXRoLWNhbGxiYWNrJyxcclxuICAgICAgICAgIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpLFxyXG4gICAgICAgICAgcmVzcG9uc2VfdHlwZTogJ2lkX3Rva2VuIHRva2VuJyxcclxuICAgICAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwgSWRlbnRpdHlTZXJ2ZXJBcGknLFxyXG4gICAgICAgICAgZmlsdGVyUHJvdG9jb2xDbGFpbXM6IHRydWUsXHJcbiAgICAgICAgICBsb2FkVXNlckluZm86IHRydWUsXHJcbiAgICAgICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogdHJ1ZSxcclxuICAgICAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSArICcvYXNzZXRzL3NpbGVudC1jYWxsYmFjay5odG1sJyxcclxuICAgICAgICAgIHVzZXJTdG9yZTogbmV3IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlKHsgc3RvcmU6IHdpbmRvdy5sb2NhbFN0b3JhZ2UgfSksXHJcbiAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgbG9naW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLnNpZ25pblJlZGlyZWN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyKCkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLmdldFVzZXIoKS50aGVuKGFzeW5jICh1c2VyKSA9PiB7XHJcbiAgICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyO1xyXG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLm5leHQoYXdhaXQgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc3RvclVzZXIoVXNlcjogYW55KSB7XHJcbiAgICB0aGlzLm1hbmFnZXIuc3RvcmVVc2VyKFVzZXIpO1xyXG4gIH1cclxuXHJcbiAgcmV2b2tlQWNjZXNzVG9rZW4oKSB7XHJcbiAgICB0aGlzLm1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIHNpZ25pblNpbGVudCgpIHtcclxuICAgIGxldCB4ID0gdGhpcy5tYW5hZ2VyLnNpZ25pblNpbGVudENhbGxiYWNrKCk7XHJcbiAgICB4LnRoZW4oKHMpID0+IHtcclxuICAgICAgLy9jb25zb2xlLmxvZyhzKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uKCkge1xyXG4gICAgdGhpcy51c2VyID0gYXdhaXQgdGhpcy5tYW5hZ2VyLnNpZ25pblJlZGlyZWN0Q2FsbGJhY2soKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICB0aGlzLl91c2VyU291cmNlLm5leHQoQXV0aFNlcnZpY2UudXNlcik7XHJcbiAgICB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLm5leHQoYXdhaXQgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSk7XHJcbiAgICBsZXQgaXNFeHRlcm5hbD0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkudG9Mb3dlckNhc2UoKT09XCJ0cnVlXCI7XHJcbiAgICBpZiAoaXNFeHRlcm5hbCkge1xyXG4gICAgICBjb25zdCBtYXN0ZXJMYXlvdXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTWFzdGVyTGF5b3V0U2VydmljZSk7XHJcbiAgICAgIGxldCB1c2VyQ2xhaW1zID0gYXdhaXQgbWFzdGVyTGF5b3V0U2VydmljZVxyXG4gICAgICAgIC5nZXRVc2VyQ2xhaW1zKClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbigoZSkgPT4ge1xyXG4gICAgICAgICAgQXV0aFNlcnZpY2UuVXNlckNsYWltcyA9IGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZSA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgQXV0aFNlcnZpY2UudXNlci5wcm9maWxlLFxyXG4gICAgICAgIEF1dGhTZXJ2aWNlLlVzZXJDbGFpbXNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b3JVc2VyKEF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgfHxcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gdGhpcy51c2VyLnByb2ZpbGUubG9jYWxlXHJcbiAgICApXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIHRoaXMudXNlci5wcm9maWxlLmxvY2FsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyAhPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSkge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UucmVzZXRMYW5nKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyk7XHJcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZVxyXG4gICAgICAgIC5yZWxvYWRMYW5nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dChBdXRoU2VydmljZS51c2VyKTtcclxuICAgIHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UubmV4dChhd2FpdCB0aGlzLmlzQXV0aGVudGljYXRlZCgpKTtcclxuICAgIHRoaXMudXNlciA9IEF1dGhTZXJ2aWNlLnVzZXI7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZWZyZXNoVG9rZW4odG9rZW4pIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLm1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW4oKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihcclxuICAgICAgICBgJHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJZGVudGl0eVNlcnZlclVybCgpfS91c2Vycy9yZWZyZXNoLXRva2VuYCxcclxuICAgICAgICBodHRwT3B0aW9ucyxcclxuICAgICAgICB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9XHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgodXNlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dCh1c2VyKTtcclxuICAgICAgICBBdXRoU2VydmljZS51c2VyID0gdXNlcjtcclxuICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbnRVc2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5nZXRVc2VyKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpc0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgdXNlciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRVc2VyKCkudGhlbigodXNlcikgPT4ge1xyXG4gICAgICByZXR1cm4gdXNlcjtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMudXNlciAhPSBudWxsICYmICF0aGlzLnVzZXIuZXhwaXJlZDtcclxuICB9XHJcbiAgaXNVc2VySW5Sb2xlKGFsbG93ZWRQZXJtaXNzaW9uOiBudW1iZXJbXSkge1xyXG4gICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldElEOiBudW1iZXIgPSBOdW1iZXIucGFyc2VJbnQoXHJcbiAgICAgIHRoaXMudXNlci5wcm9maWxlWydzZWxlY3RlZHBlcm1pc3Npb25zZXRpZCddXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsbG93ZWRQZXJtaXNzaW9uLmluY2x1ZGVzKHNlbGVjdGVkUGVybWlzc2lvblNldElEKTtcclxuICB9XHJcblxyXG4gIGF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXJcclxuICAgICAgPyBgJHtBdXRoU2VydmljZS51c2VyLnRva2VuX3R5cGV9ICR7QXV0aFNlcnZpY2UudXNlci5hY2Nlc3NfdG9rZW59YFxyXG4gICAgICA6ICcnO1xyXG4gIH1cclxuXHJcbiAgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXIgIT0gbnVsbCA/IEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5naXZlbl9uYW1lIDogJyc7XHJcbiAgfVxyXG4gIHNldFVybCh1cmwpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWRpcmVjdFVybCcsIHVybCk7XHJcbiAgfVxyXG4gIGdldFVybCgpIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVkaXJlY3RVcmwnKTtcclxuICB9XHJcbiAgYXN5bmMgc2lnbmluU2lsZW50Q2FsbGJhY2soKSB7XHJcbiAgICBsZXQgdXNlciA9IGF3YWl0IHRoaXMubWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjaygpO1xyXG4gICAgLy9hd2FpdCB0aGlzLm1hbmFnZXIuc3RvcmVVc2VyKHVzZXIpO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IHVzZXI7XHJcbiAgICBjb25zb2xlLmxvZygnVG9rZW4gZnJvbSAgc2lnbmluU2lsZW50Q2FsbGJhY2sgOicgKyBBdXRoU2VydmljZS51c2VyKTtcclxuICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgfVxyXG4gIGFzeW5jIHNpZ25vdXQoKSB7XHJcbiAgICBpZiAoYXdhaXQgIXRoaXMuaXNBdXRoZW50aWNhdGVkKCkpXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL2FjY291bnQvbG9naW4nXSksIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgYXdhaXQgdGhpcy5tYW5hZ2VyLnNpZ25vdXRSZWRpcmVjdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -5,16 +5,15 @@ import * as i1 from "@angular/common/http";
5
5
  export class ConfigurationService {
6
6
  constructor(httpClient) {
7
7
  this.httpClient = httpClient;
8
- this.jsonData = [];
9
8
  this.httpClient.get("./assets/config/configurations.json").subscribe(data => {
10
- console.log(data);
11
- this.jsonData = data;
9
+ ConfigurationService.JsonData = data;
12
10
  });
13
11
  }
14
12
  getConfigurationValue(key) {
15
- return this.jsonData[key];
13
+ return ConfigurationService.JsonData[key];
16
14
  }
17
15
  }
16
+ ConfigurationService.JsonData = [];
18
17
  ConfigurationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigurationService_Factory() { return new ConfigurationService(i0.ɵɵinject(i1.HttpClient)); }, token: ConfigurationService, providedIn: "root" });
19
18
  ConfigurationService.decorators = [
20
19
  { type: Injectable, args: [{
@@ -24,4 +23,4 @@ ConfigurationService.decorators = [
24
23
  ConfigurationService.ctorParameters = () => [
25
24
  { type: HttpClient }
26
25
  ];
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRG5DLGFBQVEsR0FBTyxFQUFFLENBQUE7UUFFcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQWEsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNSLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxHQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O1lBYkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFOUSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcclxuICAgcHJpdmF0ZSBqc29uRGF0YTphbnlbXT1bXVxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KXtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KFwiLi9hc3NldHMvY29uZmlnL2NvbmZpZ3VyYXRpb25zLmpzb25cIikuc3Vic2NyaWJlKGRhdGEgPT57XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25EYXRhID0gZGF0YSBhcyBhbnlbXTtcclxuICAgICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBnZXRDb25maWd1cmF0aW9uVmFsdWUoa2V5OnN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmpzb25EYXRhW2tleV07XHJcbiAgICB9XHJcbiAgXHJcbn0iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hFLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxJQUFhLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDUixDQUFDO0lBQ0QscUJBQXFCLENBQUMsR0FBVTtRQUM1QixPQUFRLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxDQUFDOztBQVJLLDZCQUFRLEdBQU8sRUFBRSxDQUFBOzs7WUFKMUIsVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFOUSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcclxuICAgc3RhdGljIEpzb25EYXRhOmFueVtdPVtdXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpe1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoXCIuL2Fzc2V0cy9jb25maWcvY29uZmlndXJhdGlvbnMuanNvblwiKS5zdWJzY3JpYmUoZGF0YSA9PntcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvblNlcnZpY2UuSnNvbkRhdGEgPSBkYXRhIGFzIGFueVtdO1xyXG4gICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGdldENvbmZpZ3VyYXRpb25WYWx1ZShrZXk6c3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuICBDb25maWd1cmF0aW9uU2VydmljZS5Kc29uRGF0YVtrZXldO1xyXG4gICAgfVxyXG59Il19
@@ -25,6 +25,18 @@ export class EnvironmentService {
25
25
  let Url = environment["BBSF_IdentityServerUrl"];
26
26
  return Url;
27
27
  }
28
+ getIsIdentityServerExternal() {
29
+ let Mode = environment["BBSF_IsExternalIdentityServer"];
30
+ return Mode;
31
+ }
32
+ getIsIdentityServerClientId() {
33
+ let Mode = environment["BBSF_IdentityServer_Client_Id"];
34
+ return Mode;
35
+ }
36
+ getIsIdentityServerClientSecret() {
37
+ let Mode = environment["BBSF_IdentityServer_Client_Secret"];
38
+ return Mode;
39
+ }
28
40
  }
29
41
  EnvironmentService.AreaList = [];
30
42
  EnvironmentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EnvironmentService_Factory() { return new EnvironmentService(); }, token: EnvironmentService, providedIn: "root" });
@@ -33,4 +45,4 @@ EnvironmentService.decorators = [
33
45
  providedIn: 'root'
34
46
  },] }
35
47
  ];
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTXBELE1BQU0sT0FBTyxrQkFBa0I7SUFLN0Isb0JBQW9CO1FBQ2xCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBR0QsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFZLENBQUE7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBVyxDQUFBO1FBQ3hELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUMvQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBNUJLLDJCQUFRLEdBQWdCLEVBQUUsQ0FBQTs7O1lBTmpDLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9jb25maWcvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBBcmVhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvQXJlYU1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50U2VydmljZSB7XHJcblxyXG4gICBcclxuIHN0YXRpYyBBcmVhTGlzdDogQXJlYU1vZGVsW10gPSBbXVxyXG4gIFxyXG4gIGdldEVudmlyb25tZW50T2JqZWN0KCkge1xyXG4gICAgcmV0dXJuIGVudmlyb25tZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFzZVVybCgpIHtcclxuICAgIGxldCBVcmwgPSBlbnZpcm9ubWVudFtcIkJCU0ZfQmFzZVVSTFwiXVxyXG4gICAgcmV0dXJuIFVybDtcclxuICB9XHJcbiAgZ2V0QXBpVXJsKCkge1xyXG4gICAgbGV0IFVybCA9IGVudmlyb25tZW50W1wiQkJTRl9BcGlVcmxcIl1cclxuICAgIHJldHVybiBVcmw7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UHJvZHVjdGlvbk1vZGUoKSB7XHJcbiAgICBsZXQgTW9kZSA9IGVudmlyb25tZW50W1wiQkJTRl9Jc1Byb2R1Y3Rpb25cIl0gYXMgYm9vbGVhblxyXG4gICAgcmV0dXJuIE1vZGU7XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0TGFuZ3VhZ2UoKSB7XHJcbiAgICBsZXQgTW9kZSA9IGVudmlyb25tZW50W1wiQkJTRl9EZWZhdWx0TGFuZ3VhZ2VcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcbiAgZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwoKSB7XHJcbiAgICBsZXQgVXJsID0gZW52aXJvbm1lbnRbXCJCQlNGX0lkZW50aXR5U2VydmVyVXJsXCJdXHJcbiAgICByZXR1cm4gVXJsO1xyXG4gIH1cclxufSJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTXBELE1BQU0sT0FBTyxrQkFBa0I7SUFLN0Isb0JBQW9CO1FBQ2xCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFZLENBQUE7UUFFdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBVyxDQUFBO1FBQ3hELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUMvQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCwyQkFBMkI7UUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLCtCQUErQixDQUFXLENBQUE7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsMkJBQTJCO1FBQ3pCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQywrQkFBK0IsQ0FBVyxDQUFBO1FBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELCtCQUErQjtRQUM3QixJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsbUNBQW1DLENBQVcsQ0FBQTtRQUNyRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBekNLLDJCQUFRLEdBQWdCLEVBQUUsQ0FBQTs7O1lBTmpDLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9jb25maWcvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBBcmVhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvQXJlYU1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50U2VydmljZSB7XHJcblxyXG5cclxuIHN0YXRpYyBBcmVhTGlzdDogQXJlYU1vZGVsW10gPSBbXVxyXG5cclxuICBnZXRFbnZpcm9ubWVudE9iamVjdCgpIHtcclxuICAgIHJldHVybiBlbnZpcm9ubWVudDtcclxuICB9XHJcblxyXG4gIGdldEJhc2VVcmwoKSB7XHJcbiAgICBsZXQgVXJsID0gZW52aXJvbm1lbnRbXCJCQlNGX0Jhc2VVUkxcIl1cclxuICAgIHJldHVybiBVcmw7XHJcbiAgfVxyXG4gIGdldEFwaVVybCgpIHtcclxuICAgIGxldCBVcmwgPSBlbnZpcm9ubWVudFtcIkJCU0ZfQXBpVXJsXCJdXHJcbiAgICByZXR1cm4gVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdGlvbk1vZGUoKSB7XHJcbiAgICBsZXQgTW9kZSA9IGVudmlyb25tZW50W1wiQkJTRl9Jc1Byb2R1Y3Rpb25cIl0gYXMgYm9vbGVhblxyXG5cclxuICAgIHJldHVybiBNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdExhbmd1YWdlKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIkJCU0ZfRGVmYXVsdExhbmd1YWdlXCJdIGFzIHN0cmluZ1xyXG4gICAgcmV0dXJuIE1vZGU7XHJcbiAgfVxyXG4gIGdldElkZW50aXR5U2VydmVyVXJsKCkge1xyXG4gICAgbGV0IFVybCA9IGVudmlyb25tZW50W1wiQkJTRl9JZGVudGl0eVNlcnZlclVybFwiXVxyXG4gICAgcmV0dXJuIFVybDtcclxuICB9XHJcbiAgZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIkJCU0ZfSXNFeHRlcm5hbElkZW50aXR5U2VydmVyXCJdIGFzIHN0cmluZ1xyXG4gICAgcmV0dXJuIE1vZGU7XHJcbiAgfVxyXG4gIGdldElzSWRlbnRpdHlTZXJ2ZXJDbGllbnRJZCgpIHtcclxuICAgIGxldCBNb2RlID0gZW52aXJvbm1lbnRbXCJCQlNGX0lkZW50aXR5U2VydmVyX0NsaWVudF9JZFwiXSBhcyBzdHJpbmdcclxuICAgIHJldHVybiBNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNJZGVudGl0eVNlcnZlckNsaWVudFNlY3JldCgpIHtcclxuICAgIGxldCBNb2RlID0gZW52aXJvbm1lbnRbXCJCQlNGX0lkZW50aXR5U2VydmVyX0NsaWVudF9TZWNyZXRcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIl19
@@ -1,24 +1,27 @@
1
- import { HttpParams } from "@angular/common/http";
2
- import { Injectable } from "@angular/core";
3
- import { Router } from "@angular/router";
4
- import { TranslateService } from "@ngx-translate/core";
5
- import { AuthService } from "../authentication/auth.service";
6
- import { RequestHandlerService } from "./requesthandler.service";
7
- import { StylesBundleService } from "./stylesbundle.service";
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { Router } from '@angular/router';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import { AuthService } from '../authentication/auth.service';
6
+ import { EnvironmentService } from './environment.service';
7
+ import { RequestHandlerService } from './requesthandler.service';
8
+ import { StylesBundleService } from './stylesbundle.service';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/router";
10
11
  import * as i2 from "./requesthandler.service";
11
12
  import * as i3 from "../authentication/auth.service";
12
13
  import * as i4 from "./stylesbundle.service";
13
14
  import * as i5 from "@ngx-translate/core";
15
+ import * as i6 from "./environment.service";
14
16
  export class MasterLayoutService {
15
- constructor(router, http, authService, stylesBundleService, translate) {
17
+ constructor(router, http, authService, stylesBundleService, translate, environmentService) {
16
18
  this.router = router;
17
19
  this.http = http;
18
20
  this.authService = authService;
19
21
  this.stylesBundleService = stylesBundleService;
20
22
  this.translate = translate;
21
- this.ApiUrl = "/api/Home/";
23
+ this.environmentService = environmentService;
24
+ this.ApiUrl = '/api/Home/';
22
25
  }
23
26
  switchLang(lang, bundleEnglishName, bundleArabicName) {
24
27
  this.changeLanguage(lang).subscribe((result) => {
@@ -41,16 +44,21 @@ export class MasterLayoutService {
41
44
  }
42
45
  changeLanguage(key) {
43
46
  let params = new HttpParams();
44
- params = params.append("UserId", this.authService.user.profile.id);
45
- params = params.append("LanguageKey", key);
47
+ params = params.append('UserId', this.authService.user.profile.id);
48
+ params = params.append('LanguageKey', key);
46
49
  return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);
47
50
  }
51
+ getUserClaims() {
52
+ return this.http.get(this.ApiUrl + 'GetUserClaims', null, null);
53
+ }
48
54
  logError(error) {
49
55
  let params = new HttpParams();
50
- params = params.append("error", error);
56
+ params = params.append('error', error);
51
57
  return this.http.post(this.ApiUrl + 'LogError', null, null, params);
52
58
  }
53
59
  updateUserInfo() {
60
+ if (this.environmentService.getIsIdentityServerExternal())
61
+ return this.getUserClaims();
54
62
  return this.http.get('/connect/userinfo');
55
63
  }
56
64
  switchRole(permissionSetID) {
@@ -65,15 +73,15 @@ export class MasterLayoutService {
65
73
  }
66
74
  updateRole(permissionSetID) {
67
75
  let params = new HttpParams();
68
- params = params.append("UserId", this.authService.user.profile.id);
69
- params = params.append("RoleID", permissionSetID);
76
+ params = params.append('UserId', this.authService.user.profile.id);
77
+ params = params.append('RoleID', permissionSetID);
70
78
  return this.http.post(this.ApiUrl + 'SwitchRole', null, null, params);
71
79
  }
72
80
  }
73
- MasterLayoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MasterLayoutService_Factory() { return new MasterLayoutService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.RequestHandlerService), i0.ɵɵinject(i3.AuthService), i0.ɵɵinject(i4.StylesBundleService), i0.ɵɵinject(i5.TranslateService)); }, token: MasterLayoutService, providedIn: "root" });
81
+ MasterLayoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MasterLayoutService_Factory() { return new MasterLayoutService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.RequestHandlerService), i0.ɵɵinject(i3.AuthService), i0.ɵɵinject(i4.StylesBundleService), i0.ɵɵinject(i5.TranslateService), i0.ɵɵinject(i6.EnvironmentService)); }, token: MasterLayoutService, providedIn: "root" });
74
82
  MasterLayoutService.decorators = [
75
83
  { type: Injectable, args: [{
76
- providedIn: 'root'
84
+ providedIn: 'root',
77
85
  },] }
78
86
  ];
79
87
  MasterLayoutService.ctorParameters = () => [
@@ -81,6 +89,7 @@ MasterLayoutService.ctorParameters = () => [
81
89
  { type: RequestHandlerService },
82
90
  { type: AuthService },
83
91
  { type: StylesBundleService },
84
- { type: TranslateService }
92
+ { type: TranslateService },
93
+ { type: EnvironmentService }
85
94
  ];
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVybGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9tYXN0ZXJsYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBSzdELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsTUFBYyxFQUFVLElBQTJCLEVBQVUsV0FBd0IsRUFBVSxtQkFBd0MsRUFBVSxTQUEyQjtRQUE1SyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBdUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQURoTSxXQUFNLEdBQUcsWUFBWSxDQUFBO0lBRXJCLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBWSxFQUFFLGlCQUF5QixFQUFFLGdCQUF3QjtRQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FB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QzdGLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHTyxVQUFVLENBQUMsZUFBdUI7UUFDeEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdkUsQ0FBQzs7OztZQTlERixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVJRLE1BQU07WUFHTixxQkFBcUI7WUFEckIsV0FBVztZQUVYLG1CQUFtQjtZQUhuQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi9hdXRoZW50aWNhdGlvbi9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSBcIi4vcmVxdWVzdGhhbmRsZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdHlsZXNCdW5kbGVTZXJ2aWNlIH0gZnJvbSBcIi4vc3R5bGVzYnVuZGxlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hc3RlckxheW91dFNlcnZpY2Uge1xyXG4gIEFwaVVybCA9IFwiL2FwaS9Ib21lL1wiXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBodHRwOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHN0eWxlc0J1bmRsZVNlcnZpY2U6IFN0eWxlc0J1bmRsZVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIHN3aXRjaExhbmcobGFuZzogc3RyaW5nLCBidW5kbGVFbmdsaXNoTmFtZTogc3RyaW5nLCBidW5kbGVBcmFiaWNOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UobGFuZykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVVc2VySW5mbygpLnN1YnNjcmliZSgoVmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgVXNlckluZm9PYmplY3QgPSBWYWx1ZTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZSA9IE9iamVjdC5hc3NpZ24odGhpcy5hdXRoU2VydmljZS51c2VyLnByb2ZpbGUsIFVzZXJJbmZvT2JqZWN0KTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnN0b3JVc2VyKHRoaXMuYXV0aFNlcnZpY2UudXNlcik7XHJcbiAgICAgICAgdGhpcy5zdHlsZXNCdW5kbGVTZXJ2aWNlLmxvYWRUaGVtZXMobGFuZywgYnVuZGxlRW5nbGlzaE5hbWUsIGJ1bmRsZUFyYWJpY05hbWUpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmcpO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZENvbXBvbmVudCgpIHtcclxuICAgIGxldCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgdGhpcy5yb3V0ZXIucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZFJldXNlUm91dGUgPSAoKSA9PiBmYWxzZTtcclxuICAgIHRoaXMucm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtjdXJyZW50VXJsXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZUxhbmd1YWdlKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXCJVc2VySWRcIiwgdGhpcy5hdXRoU2VydmljZS51c2VyLnByb2ZpbGUuaWQpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChcIkxhbmd1YWdlS2V5XCIsIGtleSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BcGlVcmwgKyAnVXBkYXRlTGFuZ3VhZ2UnLCBudWxsLCBudWxsLCBwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBsb2dFcnJvcihlcnJvcjogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BcGlVcmwgKyAnTG9nRXJyb3InLCBudWxsLCBudWxsLCBwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVVzZXJJbmZvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJy9jb25uZWN0L3VzZXJpbmZvJylcclxuICB9XHJcblxyXG4gIHN3aXRjaFJvbGUocGVybWlzc2lvblNldElEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXBkYXRlUm9sZShwZXJtaXNzaW9uU2V0SUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVXNlckluZm8oKS5zdWJzY3JpYmUoKFZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IFVzZXJJbmZvT2JqZWN0ID0gVmFsdWU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyLnByb2ZpbGUgPSBPYmplY3QuYXNzaWduKHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlLCBVc2VySW5mb09iamVjdCk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zdG9yVXNlcih0aGlzLmF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUm9sZShwZXJtaXNzaW9uU2V0SUQ6IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwiVXNlcklkXCIsIHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmlkKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXCJSb2xlSURcIiwgcGVybWlzc2lvblNldElEKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFwaVVybCArICdTd2l0Y2hSb2xlJywgbnVsbCwgbnVsbCwgcGFyYW1zKVxyXG4gIH1cclxufVxyXG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVybGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9tYXN0ZXJsYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUs3RCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQ1UsTUFBYyxFQUNkLElBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxTQUEyQixFQUMzQixrQkFBc0M7UUFMdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVBoRCxXQUFNLEdBQUcsWUFBWSxDQUFDO0lBUW5CLENBQUM7SUFDSixVQUFVLENBQ1IsSUFBWSxFQUNaLGlCQUF5QixFQUN6QixnQkFBd0I7UUFF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cG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGhlbnRpY2F0aW9uL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vcmVxdWVzdGhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0eWxlc0J1bmRsZVNlcnZpY2UgfSBmcm9tICcuL3N0eWxlc2J1bmRsZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIHtcclxuICBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgc3R5bGVzQnVuZGxlU2VydmljZTogU3R5bGVzQnVuZGxlU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICkge31cclxuICBzd2l0Y2hMYW5nKFxyXG4gICAgbGFuZzogc3RyaW5nLFxyXG4gICAgYnVuZGxlRW5nbGlzaE5hbWU6IHN0cmluZyxcclxuICAgIGJ1bmRsZUFyYWJpY05hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShsYW5nKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvKCkuc3Vic2NyaWJlKChWYWx1ZSkgPT4ge1xyXG4gICAgICAgIGxldCBVc2VySW5mb09iamVjdCA9IFZhbHVlO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlLFxyXG4gICAgICAgICAgVXNlckluZm9PYmplY3RcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc3RvclVzZXIodGhpcy5hdXRoU2VydmljZS51c2VyKTtcclxuICAgICAgICB0aGlzLnN0eWxlc0J1bmRsZVNlcnZpY2UubG9hZFRoZW1lcyhcclxuICAgICAgICAgIGxhbmcsXHJcbiAgICAgICAgICBidW5kbGVFbmdsaXNoTmFtZSxcclxuICAgICAgICAgIGJ1bmRsZUFyYWJpY05hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmcpO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZENvbXBvbmVudCgpIHtcclxuICAgIGxldCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgdGhpcy5yb3V0ZXIucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZFJldXNlUm91dGUgPSAoKSA9PiBmYWxzZTtcclxuICAgIHRoaXMucm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtjdXJyZW50VXJsXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZUxhbmd1YWdlKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ1VzZXJJZCcsIHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmlkKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ0xhbmd1YWdlS2V5Jywga2V5KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFwaVVybCArICdVcGRhdGVMYW5ndWFnZScsIG51bGwsIG51bGwsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyQ2xhaW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5BcGlVcmwgKyAnR2V0VXNlckNsYWltcycsIG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgbG9nRXJyb3IoZXJyb3I6IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdlcnJvcicsIGVycm9yKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFwaVVybCArICdMb2dFcnJvcicsIG51bGwsIG51bGwsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVVzZXJJbmZvKCkge1xyXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJFeHRlcm5hbCgpKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRVc2VyQ2xhaW1zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCgnL2Nvbm5lY3QvdXNlcmluZm8nKTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFJvbGUocGVybWlzc2lvblNldElEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXBkYXRlUm9sZShwZXJtaXNzaW9uU2V0SUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVXNlckluZm8oKS5zdWJzY3JpYmUoKFZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IFVzZXJJbmZvT2JqZWN0ID0gVmFsdWU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyLnByb2ZpbGUgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyLnByb2ZpbGUsXHJcbiAgICAgICAgICBVc2VySW5mb09iamVjdFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zdG9yVXNlcih0aGlzLmF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVSb2xlKHBlcm1pc3Npb25TZXRJRDogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ1VzZXJJZCcsIHRoaXMuYXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmlkKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ1JvbGVJRCcsIHBlcm1pc3Npb25TZXRJRCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BcGlVcmwgKyAnU3dpdGNoUm9sZScsIG51bGwsIG51bGwsIHBhcmFtcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==