keycloak-angular 12.2.0 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,6 @@
6
6
  [![Known Vulnerabilities][vulnerabilities-badge]][vulnerabilities]
7
7
  [![npm version][npm-version-badge]][npm]
8
8
  [![npm][npm-badge]][npm]
9
- [![All Contributors][contributors-badge]](#contributors)
10
9
  [![Discord][discord-badge]][discord]
11
10
  <!-- prettier-ignore-end -->
12
11
 
@@ -53,20 +52,17 @@ Note that `keycloak-js` is a peer dependency of Keycloak Angular. This change al
53
52
 
54
53
  | Angular | keycloak-js | keycloak-angular | Support |
55
54
  | :-----: | :---------: | :--------------: | :-----------------: |
56
- | 14.x | 18 - 20 | 12.x.x | New Features / Bugs |
57
- | 14.x | 10 - 17 | 11.x.x | New Features / Bugs |
58
- | 13.x | 18 | 10.x.x | Bugs |
59
- | 13.x | 10 - 17 | 9.x.x | Bugs |
55
+ | 15.x | 18 - 21 | 13.x.x | New Features / Bugs |
56
+ | 14.x | 18 - 19 | 12.x.x | Bugs |
57
+ | 14.x | 10 - 17 | 11.x.x | - |
58
+ | 13.x | 18 | 10.x.x | - |
59
+ | 13.x | 10 - 17 | 9.x.x | - |
60
60
 
61
- Only the latest version of Angular in the table above is actively supported. This is due to the fact that compilation of Angular libraries is [incompatible between major versions](https://angular.io/guide/creating-libraries#ensuring-library-version-compatibility).
62
-
63
- _Note_: Only for keycloak-angular **v.9**, there is the need to add `allowSyntheticDefaultImports: true` in the tsconfig.json file in your project. This is related to this [issue in the keycloak project](https://github.com/keycloak/keycloak/issues/9045). From keycloak-angular v.10 on, there is no need to set this configuration.
61
+ Only the latest version of Angular in the table above is actively supported. This is due to the fact that compilation of Angular libraries might be [incompatible between major versions](https://angular.io/guide/creating-libraries#ensuring-library-version-compatibility).
64
62
 
65
63
  #### Choosing the right keycloak-js version
66
64
 
67
- The Keycloak client documentation recommends to use the same version of your Keycloak installation.
68
-
69
- > A best practice is to load the JavaScript adapter directly from Keycloak Server as it will automatically be updated when you upgrade the server. If you copy the adapter to your web application instead, make sure you upgrade the adapter only after you have upgraded the server.
65
+ The Keycloak client documentation recommends to use the same version of your Keycloak server installation.
70
66
 
71
67
  ## Setup
72
68
 
@@ -133,7 +129,7 @@ If you want to know more about these options and various other capabilities of t
133
129
 
134
130
  ## Example project
135
131
 
136
- If you want to see an complete overview a pre-configured client together with a working Keycloak server make sure to check out the [example project](example/README.md) in this repository.
132
+ If you want to see a complete overview a pre-configured client together with a working Keycloak server make sure to check out the [example project](projects/example/README.md) in this repository.
137
133
 
138
134
  ## AuthGuard
139
135
 
@@ -176,7 +172,7 @@ export class AuthGuard extends KeycloakAuthGuard {
176
172
  const requiredRoles = route.data.roles;
177
173
 
178
174
  // Allow the user to proceed if no additional roles are required to access the route.
179
- if (!(requiredRoles instanceof Array) || requiredRoles.length === 0) {
175
+ if (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {
180
176
  return true;
181
177
  }
182
178
 
@@ -209,7 +205,9 @@ await keycloak.init({
209
205
 
210
206
  const isGetRequest = 'GET' === method.toUpperCase();
211
207
  const acceptablePaths = ['/assets', '/clients/public'];
212
- const isAcceptablePathMatch = urls.some((path) => url.includes(path));
208
+ const isAcceptablePathMatch = acceptablePaths.some((path) =>
209
+ url.includes(path)
210
+ );
213
211
 
214
212
  return !(isGetRequest && isAcceptablePathMatch);
215
213
  }
@@ -233,7 +231,7 @@ await keycloak.init({
233
231
  window.location.origin + '/assets/silent-check-sso.html'
234
232
  },
235
233
  bearerExcludedUrls: ['/assets', '/clients/public'],
236
- shouldUpdateToken: (request) => {
234
+ shouldUpdateToken(request) {
237
235
  return !request.headers.get('token-update') === 'false';
238
236
  }
239
237
  });
@@ -247,8 +245,8 @@ For example you make keycloak-angular auto refreshing your access token when exp
247
245
 
248
246
  ```ts
249
247
  keycloakService.keycloakEvents$.subscribe({
250
- next: (e) => {
251
- if (e.type == KeycloakEventType.OnTokenExpired) {
248
+ next(event) {
249
+ if (event.type == KeycloakEventType.OnTokenExpired) {
252
250
  keycloakService.updateToken(20);
253
251
  }
254
252
  }
@@ -275,12 +273,12 @@ document.
275
273
  <!-- prettier-ignore-start -->
276
274
  [license-mit-badge]: https://img.shields.io/badge/License-MIT-yellow
277
275
  [license-mit]: https://opensource.org/licenses/MIT
278
- [build-badge]: https://img.shields.io/github/workflow/status/mauriciovigolo/keycloak-angular/CI?label=CI&logo=github
279
- [build]: https://github.com/mauriciovigolo/keycloak-angular/actions/workflows/main.yml
276
+ [build-badge]: https://img.shields.io/github/actions/workflow/status/mauriciovigolo/keycloak-angular/main.yml?branch=main&label=CI&logo=github
277
+ [build]: https://github.com/mauriciovigolo/keycloak-angular/actions/workflows/main.yml?query=branch%3Amain
280
278
  [vulnerabilities-badge]: https://img.shields.io/snyk/vulnerabilities/github/mauriciovigolo/keycloak-angular?logo=snyk
281
279
  [vulnerabilities]: https://snyk.io/test/github/mauriciovigolo/keycloak-angular
282
- [npm-version-badge]: https://img.shields.io/npm/v/keycloak-angular
283
- [npm-badge]: https://img.shields.io/npm/dm/keycloak-angular
280
+ [npm-version-badge]: https://img.shields.io/npm/v/keycloak-angular?logo=npm&logoColor=fff
281
+ [npm-badge]: https://img.shields.io/npm/dm/keycloak-angular?logo=npm&logoColor=fff
284
282
  [npm]: https://www.npmjs.com/package/keycloak-angular
285
283
  [contributors-badge]: https://img.shields.io/badge/all_contributors-5-orange
286
284
  [discord-badge]: https://img.shields.io/discord/790617227853692958?color=7389d8&labelColor=6a7ec2&logo=discord&logoColor=fff
@@ -6,9 +6,9 @@ import { KeycloakBearerInterceptor } from './interceptors/keycloak-bearer.interc
6
6
  import * as i0 from "@angular/core";
7
7
  export class CoreModule {
8
8
  }
9
- CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, imports: [CommonModule] });
11
- CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, providers: [
9
+ CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, imports: [CommonModule] });
11
+ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, providers: [
12
12
  KeycloakService,
13
13
  {
14
14
  provide: HTTP_INTERCEPTORS,
@@ -16,7 +16,7 @@ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14
16
16
  multi: true
17
17
  }
18
18
  ], imports: [CommonModule] });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [CommonModule],
@@ -43,9 +43,9 @@ export class KeycloakBearerInterceptor {
43
43
  }));
44
44
  }
45
45
  }
46
- KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
47
- KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
46
+ KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
47
+ KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
49
49
  type: Injectable
50
50
  }], ctorParameters: function () { return [{ type: i1.KeycloakService }]; } });
51
51
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstYmVhcmVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWstYW5ndWxhci9zcmMvbGliL2NvcmUvaW50ZXJjZXB0b3JzL2tleWNsb2FrLWJlYXJlci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUTNDLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFZMUMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUFHLENBQUM7SUFTekMsS0FBSyxDQUFDLHdCQUF3QixDQUNwQyxHQUF5QjtRQUV6QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFXTyxhQUFhLENBQ25CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBd0IsRUFDckMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFvQjtRQUU3QyxNQUFNLFFBQVEsR0FDWixXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDeEIsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV4RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sUUFBUSxJQUFJLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBU00sU0FBUyxDQUNkLEdBQXlCLEVBQ3pCLElBQWlCO1FBRWpCLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxNQUFNLFNBQVMsR0FDYixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztZQUNsQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDLENBQUMsSUFBSSxDQUNMLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FDM0IsVUFBVTtZQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FDckIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQVFPLDRCQUE0QixDQUNsQyxHQUF5QixFQUN6QixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDckQsUUFBUSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O3NIQTdGVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE1hdXJpY2lvIEdlbWVsbGkgVmlnb2xvIGFuZCBjb250cmlidXRvcnMuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vbWF1cmljaW92aWdvbG8va2V5Y2xvYWstYW5ndWxhci9ibG9iL21haW4vTElDRU5TRS5tZFxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnRcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMva2V5Y2xvYWsuc2VydmljZSc7XG5pbXBvcnQgeyBFeGNsdWRlZFVybFJlZ2V4IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rZXljbG9hay1vcHRpb25zJztcblxuLyoqXG4gKiBUaGlzIGludGVyY2VwdG9yIGluY2x1ZGVzIHRoZSBiZWFyZXIgYnkgZGVmYXVsdCBpbiBhbGwgSHR0cENsaWVudCByZXF1ZXN0cy5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBleGNsdWRlIHNvbWUgVVJMcyBmcm9tIGFkZGluZyB0aGUgYmVhcmVyLCBwbGVhc2UsIHRha2UgYSBsb29rXG4gKiBhdCB0aGUge0BsaW5rIEtleWNsb2FrT3B0aW9uc30gYmVhcmVyRXhjbHVkZWRVcmxzIHByb3BlcnR5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSkge31cblxuICAvKipcbiAgICogQ2FsbHMgdG8gdXBkYXRlIHRoZSBrZXljbG9hayB0b2tlbiBpZiB0aGUgcmVxdWVzdCBzaG91bGQgdXBkYXRlIHRoZSB0b2tlbi5cbiAgICpcbiAgICogQHBhcmFtIHJlcSBodHRwIHJlcXVlc3QgZnJvbSBAYW5ndWxhciBodHRwIG1vZHVsZS5cbiAgICogQHJldHVybnNcbiAgICogQSBwcm9taXNlIGJvb2xlYW4gZm9yIHRoZSB0b2tlbiB1cGRhdGUgb3Igbm9vcCByZXN1bHQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNvbmRpdGlvbmFsbHlVcGRhdGVUb2tlbihcbiAgICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmtleWNsb2FrLnNob3VsZFVwZGF0ZVRva2VuKHJlcSkpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmtleWNsb2FrLnVwZGF0ZVRva2VuKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQ2hlY2tzIGlmIHRoZSB1cmwgaXMgZXhjbHVkZWQgZnJvbSBoYXZpbmcgdGhlIEJlYXJlciBBdXRob3JpemF0aW9uXG4gICAqIGhlYWRlciBhZGRlZC5cbiAgICpcbiAgICogQHBhcmFtIHJlcSBodHRwIHJlcXVlc3QgZnJvbSBAYW5ndWxhciBodHRwIG1vZHVsZS5cbiAgICogQHBhcmFtIGV4Y2x1ZGVkVXJsUmVnZXggY29udGFpbnMgdGhlIHVybCBwYXR0ZXJuIGFuZCB0aGUgaHR0cCBtZXRob2RzLFxuICAgKiBleGNsdWRlZCBmcm9tIGFkZGluZyB0aGUgYmVhcmVyIGF0IHRoZSBIdHRwIFJlcXVlc3QuXG4gICAqL1xuICBwcml2YXRlIGlzVXJsRXhjbHVkZWQoXG4gICAgeyBtZXRob2QsIHVybCB9OiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgICB7IHVybFBhdHRlcm4sIGh0dHBNZXRob2RzIH06IEV4Y2x1ZGVkVXJsUmVnZXhcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaHR0cFRlc3QgPVxuICAgICAgaHR0cE1ldGhvZHMubGVuZ3RoID09PSAwIHx8XG4gICAgICBodHRwTWV0aG9kcy5qb2luKCkuaW5kZXhPZihtZXRob2QudG9VcHBlckNhc2UoKSkgPiAtMTtcblxuICAgIGNvbnN0IHVybFRlc3QgPSB1cmxQYXR0ZXJuLnRlc3QodXJsKTtcblxuICAgIHJldHVybiBodHRwVGVzdCAmJiB1cmxUZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyY2VwdCBpbXBsZW1lbnRhdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgcmVxdWVzdCB1cmwgbWF0Y2hlcyB0aGUgZXhjbHVkZWRVcmxzLlxuICAgKiBJZiBub3QsIGFkZHMgdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIHRvIHRoZSByZXF1ZXN0IGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi5cbiAgICpcbiAgICogQHBhcmFtIHJlcVxuICAgKiBAcGFyYW0gbmV4dFxuICAgKi9cbiAgcHVibGljIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XG4gICAgY29uc3QgeyBlbmFibGVCZWFyZXJJbnRlcmNlcHRvciwgZXhjbHVkZWRVcmxzIH0gPSB0aGlzLmtleWNsb2FrO1xuICAgIGlmICghZW5hYmxlQmVhcmVySW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYWxsUGFzczogYm9vbGVhbiA9XG4gICAgICAhdGhpcy5rZXljbG9hay5zaG91bGRBZGRUb2tlbihyZXEpIHx8XG4gICAgICBleGNsdWRlZFVybHMuZmluZEluZGV4KChpdGVtKSA9PiB0aGlzLmlzVXJsRXhjbHVkZWQocmVxLCBpdGVtKSkgPiAtMTtcbiAgICBpZiAoc2hhbGxQYXNzKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbmRpdGlvbmFsbHlVcGRhdGVUb2tlbihyZXEpLFxuICAgICAgdGhpcy5rZXljbG9hay5pc0xvZ2dlZEluKClcbiAgICBdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKFtfLCBpc0xvZ2dlZEluXSkgPT5cbiAgICAgICAgaXNMb2dnZWRJblxuICAgICAgICAgID8gdGhpcy5oYW5kbGVSZXF1ZXN0V2l0aFRva2VuSGVhZGVyKHJlcSwgbmV4dClcbiAgICAgICAgICA6IG5leHQuaGFuZGxlKHJlcSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIHRva2VuIG9mIHRoZSBjdXJyZW50IHVzZXIgdG8gdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyXG4gICAqXG4gICAqIEBwYXJhbSByZXFcbiAgICogQHBhcmFtIG5leHRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVxdWVzdFdpdGhUb2tlbkhlYWRlcihcbiAgICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XG4gICAgcmV0dXJuIHRoaXMua2V5Y2xvYWsuYWRkVG9rZW5Ub0hlYWRlcihyZXEuaGVhZGVycykucGlwZShcbiAgICAgIG1lcmdlTWFwKChoZWFkZXJzV2l0aEJlYXJlcikgPT4ge1xuICAgICAgICBjb25zdCBrY1JlcSA9IHJlcS5jbG9uZSh7IGhlYWRlcnM6IGhlYWRlcnNXaXRoQmVhcmVyIH0pO1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoa2NSZXEpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -195,9 +195,9 @@ export class KeycloakService {
195
195
  return this._keycloakEvents$;
196
196
  }
197
197
  }
198
- KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
199
- KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService });
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, decorators: [{
198
+ KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
199
+ KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService });
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, decorators: [{
201
201
  type: Injectable
202
202
  }] });
203
203
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FrLWFuZ3VsYXIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2tleWNsb2FrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLGFBQWEsQ0FBQztBQU9uQyxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBVWhGLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBd0NVLHFCQUFnQixHQUN0QixJQUFJLE9BQU8sRUFBaUIsQ0FBQztLQXFlaEM7SUFoZFMsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztnQkFDekIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFdBQVc7YUFDcEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtZQUN6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eEIsQ0FBQztJQVVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQXFCRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7NEdBNWdCVSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBNYXVyaWNpbyBHZW1lbGxpIFZpZ29sbyBhbmQgY29udHJpYnV0b3JzLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL21hdXJpY2lvdmlnb2xvL2tleWNsb2FrLWFuZ3VsYXIvYmxvYi9tYWluL0xJQ0VOU0UubWRcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBLZXljbG9hayBmcm9tICdrZXljbG9hay1qcyc7XG5cbmltcG9ydCB7XG4gIEV4Y2x1ZGVkVXJsLFxuICBFeGNsdWRlZFVybFJlZ2V4LFxuICBLZXljbG9ha09wdGlvbnNcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rZXljbG9hay1vcHRpb25zJztcbmltcG9ydCB7IEtleWNsb2FrRXZlbnQsIEtleWNsb2FrRXZlbnRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rZXljbG9hay1ldmVudCc7XG5cbi8qKlxuICogU2VydmljZSB0byBleHBvc2UgZXhpc3RlbnQgbWV0aG9kcyBmcm9tIHRoZSBLZXljbG9hayBKUyBhZGFwdGVyLCBhZGRpbmcgbmV3XG4gKiBmdW5jdGlvbmFsaXRpZXMgdG8gaW1wcm92ZSB0aGUgdXNlIG9mIGtleWNsb2FrIGluIEFuZ3VsYXIgdiA+IDQuMyBhcHBsaWNhdGlvbnMuXG4gKlxuICogVGhpcyBjbGFzcyBzaG91bGQgYmUgaW5qZWN0ZWQgaW4gdGhlIGFwcGxpY2F0aW9uIGJvb3RzdHJhcCwgc28gdGhlIHNhbWUgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkXG4gKiBhbG9uZyB0aGUgd2ViIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEtleWNsb2FrLWpzIGluc3RhbmNlLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IEtleWNsb2FrLktleWNsb2FrSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBVc2VyIHByb2ZpbGUgYXMgS2V5Y2xvYWtQcm9maWxlIGludGVyZmFjZS5cbiAgICovXG4gIHByaXZhdGUgX3VzZXJQcm9maWxlOiBLZXljbG9hay5LZXljbG9ha1Byb2ZpbGU7XG4gIC8qKlxuICAgKiBGbGFnIHRvIGluZGljYXRlIGlmIHRoZSBiZWFyZXIgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfZW5hYmxlQmVhcmVySW50ZXJjZXB0b3I6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGVuIHRoZSBpbXBsaWNpdCBmbG93IGlzIGNob29zZW4gdGhlcmUgbXVzdCBleGlzdCBhIHNpbGVudFJlZnJlc2gsIGFzIHRoZXJlIGlzXG4gICAqIG5vIHJlZnJlc2ggdG9rZW4uXG4gICAqL1xuICBwcml2YXRlIF9zaWxlbnRSZWZyZXNoOiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgcHJvZmlsZSBzaG91bGQgYmUgbG9hZGVkIGF0IHRoZSBrZXljbG9hayBpbml0aWFsaXphdGlvbixcbiAgICoganVzdCBhZnRlciB0aGUgbG9naW4uXG4gICAqL1xuICBwcml2YXRlIF9sb2FkVXNlclByb2ZpbGVBdFN0YXJ0VXA6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYmVhcmVyIHByZWZpeCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIEF1dGhvcml6YXRpb24gSGVhZGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfYmVhcmVyUHJlZml4OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWYWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgQXV0aG9yaXphdGlvbiBIdHRwIEhlYWRlciBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXV0aG9yaXphdGlvbkhlYWRlck5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIFRoZSBleGNsdWRlZCB1cmxzIHBhdHRlcm5zIHRoYXQgbXVzdCBza2lwIHRoZSBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBfZXhjbHVkZWRVcmxzOiBFeGNsdWRlZFVybFJlZ2V4W107XG4gIC8qKlxuICAgKiBPYnNlcnZlciBmb3IgdGhlIGtleWNsb2FrIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBfa2V5Y2xvYWtFdmVudHMkOiBTdWJqZWN0PEtleWNsb2FrRXZlbnQ+ID1cbiAgICBuZXcgU3ViamVjdDxLZXljbG9ha0V2ZW50PigpO1xuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiByZXF1aXJlZCB0aW1lIHJlbWFpbmluZyBiZWZvcmUgZXhwaXJ5IG9mIHRoZSB0b2tlbiBiZWZvcmUgdGhlIHRva2VuIHdpbGwgYmUgcmVmcmVzaGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlTWluVmFsaWRpdHk6IG51bWJlcjtcbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVxdWVzdCBzaG91bGQgaGF2ZSB0aGUgdG9rZW4gYWRkZWQgdG8gdGhlIGhlYWRlcnMgYnkgdGhlIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IuXG4gICAqL1xuICBzaG91bGRBZGRUb2tlbjogKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGJlaW5nIG1hZGUgc2hvdWxkIHBvdGVudGlhbGx5IHVwZGF0ZSB0aGUgdG9rZW4uXG4gICAqL1xuICBzaG91bGRVcGRhdGVUb2tlbjogKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGUga2V5Y2xvYWstanMgZXZlbnRzIHRvIHRoZSBrZXljbG9ha0V2ZW50cyBTdWJqZWN0XG4gICAqIHdoaWNoIGlzIGEgZ29vZCB3YXkgdG8gbW9uaXRvciBmb3IgY2hhbmdlcywgaWYgbmVlZGVkLlxuICAgKlxuICAgKiBUaGUga2V5Y2xvYWtFdmVudHMgcmV0dXJucyB0aGUga2V5Y2xvYWstanMgZXZlbnQgdHlwZSBhbmQgYW55XG4gICAqIGFyZ3VtZW50IGlmIHRoZSBzb3VyY2UgZnVuY3Rpb24gcHJvdmlkZXMgYW55LlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kc0tleWNsb2FrRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aEVycm9yID0gKGVycm9yRGF0YSkgPT4ge1xuICAgICAgdGhpcy5fa2V5Y2xvYWtFdmVudHMkLm5leHQoe1xuICAgICAgICBhcmdzOiBlcnJvckRhdGEsXG4gICAgICAgIHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aEVycm9yXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdGFuY2Uub25BdXRoTG9nb3V0ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fa2V5Y2xvYWtFdmVudHMkLm5leHQoeyB0eXBlOiBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhMb2dvdXQgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aFJlZnJlc2hTdWNjZXNzID0gKCkgPT4ge1xuICAgICAgdGhpcy5fa2V5Y2xvYWtFdmVudHMkLm5leHQoe1xuICAgICAgICB0eXBlOiBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhSZWZyZXNoU3VjY2Vzc1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aFJlZnJlc2hFcnJvciA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHtcbiAgICAgICAgdHlwZTogS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoUmVmcmVzaEVycm9yXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdGFuY2Uub25BdXRoU3VjY2VzcyA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHsgdHlwZTogS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoU3VjY2VzcyB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdGFuY2Uub25Ub2tlbkV4cGlyZWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9rZXljbG9ha0V2ZW50cyQubmV4dCh7XG4gICAgICAgIHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uVG9rZW5FeHBpcmVkXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdGFuY2Uub25BY3Rpb25VcGRhdGUgPSAoc3RhdGUpID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHtcbiAgICAgICAgYXJnczogc3RhdGUsXG4gICAgICAgIHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uQWN0aW9uVXBkYXRlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdGFuY2Uub25SZWFkeSA9IChhdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICB0aGlzLl9rZXljbG9ha0V2ZW50cyQubmV4dCh7XG4gICAgICAgIGFyZ3M6IGF1dGhlbnRpY2F0ZWQsXG4gICAgICAgIHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uUmVhZHlcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYWxsIGJlYXJlckV4Y2x1ZGVkVXJsIGNvbnRlbnQgaW4gYSB1bmlmb3JtIHR5cGU6IEV4Y2x1ZGVkVXJsLFxuICAgKiBzbyBpdCBiZWNvbWVzIGVhc2llciB0byBoYW5kbGUuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJFeGNsdWRlZFVybHMgYXJyYXkgb2Ygc3RyaW5ncyBvciBFeGNsdWRlZFVybCB0aGF0IGluY2x1ZGVzXG4gICAqIHRoZSB1cmwgYW5kIEh0dHBNZXRob2QuXG4gICAqL1xuICBwcml2YXRlIGxvYWRFeGNsdWRlZFVybHMoXG4gICAgYmVhcmVyRXhjbHVkZWRVcmxzOiAoc3RyaW5nIHwgRXhjbHVkZWRVcmwpW11cbiAgKTogRXhjbHVkZWRVcmxSZWdleFtdIHtcbiAgICBjb25zdCBleGNsdWRlZFVybHM6IEV4Y2x1ZGVkVXJsUmVnZXhbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBiZWFyZXJFeGNsdWRlZFVybHMpIHtcbiAgICAgIGxldCBleGNsdWRlZFVybDogRXhjbHVkZWRVcmxSZWdleDtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZXhjbHVkZWRVcmwgPSB7IHVybFBhdHRlcm46IG5ldyBSZWdFeHAoaXRlbSwgJ2knKSwgaHR0cE1ldGhvZHM6IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGNsdWRlZFVybCA9IHtcbiAgICAgICAgICB1cmxQYXR0ZXJuOiBuZXcgUmVnRXhwKGl0ZW0udXJsLCAnaScpLFxuICAgICAgICAgIGh0dHBNZXRob2RzOiBpdGVtLmh0dHBNZXRob2RzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBleGNsdWRlZFVybHMucHVzaChleGNsdWRlZFVybCk7XG4gICAgfVxuICAgIHJldHVybiBleGNsdWRlZFVybHM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2xhc3MgdmFsdWVzIGluaXRpYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0U2VydmljZVZhbHVlcyh7XG4gICAgZW5hYmxlQmVhcmVySW50ZXJjZXB0b3IgPSB0cnVlLFxuICAgIGxvYWRVc2VyUHJvZmlsZUF0U3RhcnRVcCA9IGZhbHNlLFxuICAgIGJlYXJlckV4Y2x1ZGVkVXJscyA9IFtdLFxuICAgIGF1dGhvcml6YXRpb25IZWFkZXJOYW1lID0gJ0F1dGhvcml6YXRpb24nLFxuICAgIGJlYXJlclByZWZpeCA9ICdCZWFyZXInLFxuICAgIGluaXRPcHRpb25zLFxuICAgIHVwZGF0ZU1pblZhbGlkaXR5ID0gMjAsXG4gICAgc2hvdWxkQWRkVG9rZW4gPSAoKSA9PiB0cnVlLFxuICAgIHNob3VsZFVwZGF0ZVRva2VuID0gKCkgPT4gdHJ1ZVxuICB9OiBLZXljbG9ha09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmFibGVCZWFyZXJJbnRlcmNlcHRvciA9IGVuYWJsZUJlYXJlckludGVyY2VwdG9yO1xuICAgIHRoaXMuX2xvYWRVc2VyUHJvZmlsZUF0U3RhcnRVcCA9IGxvYWRVc2VyUHJvZmlsZUF0U3RhcnRVcDtcbiAgICB0aGlzLl9hdXRob3JpemF0aW9uSGVhZGVyTmFtZSA9IGF1dGhvcml6YXRpb25IZWFkZXJOYW1lO1xuICAgIHRoaXMuX2JlYXJlclByZWZpeCA9IGJlYXJlclByZWZpeC50cmltKCkuY29uY2F0KCcgJyk7XG4gICAgdGhpcy5fZXhjbHVkZWRVcmxzID0gdGhpcy5sb2FkRXhjbHVkZWRVcmxzKGJlYXJlckV4Y2x1ZGVkVXJscyk7XG4gICAgdGhpcy5fc2lsZW50UmVmcmVzaCA9IGluaXRPcHRpb25zID8gaW5pdE9wdGlvbnMuZmxvdyA9PT0gJ2ltcGxpY2l0JyA6IGZhbHNlO1xuICAgIHRoaXMuX3VwZGF0ZU1pblZhbGlkaXR5ID0gdXBkYXRlTWluVmFsaWRpdHk7XG4gICAgdGhpcy5zaG91bGRBZGRUb2tlbiA9IHNob3VsZEFkZFRva2VuO1xuICAgIHRoaXMuc2hvdWxkVXBkYXRlVG9rZW4gPSBzaG91bGRVcGRhdGVUb2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZXljbG9hayBpbml0aWFsaXphdGlvbi4gSXQgc2hvdWxkIGJlIGNhbGxlZCB0byBpbml0aWFsaXplIHRoZSBhZGFwdGVyLlxuICAgKiBPcHRpb25zIGlzIGEgb2JqZWN0IHdpdGggMiBtYWluIHBhcmFtZXRlcnM6IGNvbmZpZyBhbmQgaW5pdE9wdGlvbnMuIFRoZSBmaXJzdCBvbmVcbiAgICogd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgS2V5Y2xvYWsgaW5zdGFuY2UuIFRoZSBzZWNvbmQgb25lIGFyZSBvcHRpb25zIHRvIGluaXRpYWxpemUgdGhlXG4gICAqIGtleWNsb2FrIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBDb25maWc6IG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGtleWNsb2FrIFVSSSBvciBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICogZm9sbG93aW5nIGNvbnRlbnQ6XG4gICAqIC0gdXJsOiBLZXljbG9hayBqc29uIFVSTFxuICAgKiAtIHJlYWxtOiByZWFsbSBuYW1lXG4gICAqIC0gY2xpZW50SWQ6IGNsaWVudCBpZFxuICAgKlxuICAgKiBpbml0T3B0aW9uczpcbiAgICogT3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBLZXljbG9hayBhZGFwdGVyLCBtYXRjaGVzIHRoZSBvcHRpb25zIGFzIHByb3ZpZGVkIGJ5IEtleWNsb2FrIGl0c2VsZi5cbiAgICpcbiAgICogZW5hYmxlQmVhcmVySW50ZXJjZXB0b3I6XG4gICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGJlYXJlciB3aWxsIGFkZGVkIHRvIHRoZSBhdXRob3JpemF0aW9uIGhlYWRlci5cbiAgICpcbiAgICogbG9hZFVzZXJQcm9maWxlSW5TdGFydFVwOlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBwcm9maWxlIHNob3VsZCBiZSBsb2FkZWQgYXQgdGhlIGtleWNsb2FrIGluaXRpYWxpemF0aW9uLFxuICAgKiBqdXN0IGFmdGVyIHRoZSBsb2dpbi5cbiAgICpcbiAgICogYmVhcmVyRXhjbHVkZWRVcmxzOlxuICAgKiBTdHJpbmcgQXJyYXkgdG8gZXhjbHVkZSB0aGUgdXJscyB0aGF0IHNob3VsZCBub3QgaGF2ZSB0aGUgQXV0aG9yaXphdGlvbiBIZWFkZXIgYXV0b21hdGljYWxseVxuICAgKiBhZGRlZC5cbiAgICpcbiAgICogYXV0aG9yaXphdGlvbkhlYWRlck5hbWU6XG4gICAqIFRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHRoZSBBdXRob3JpemF0aW9uIEh0dHAgSGVhZGVyIG5hbWUuXG4gICAqXG4gICAqIGJlYXJlclByZWZpeDpcbiAgICogVGhpcyB2YWx1ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBBdXRob3JpemF0aW9uIEh0dHAgSGVhZGVyIHBhcmFtLlxuICAgKlxuICAgKiB0b2tlblVwZGF0ZUV4Y2x1ZGVkSGVhZGVyczpcbiAgICogQXJyYXkgb2YgSHR0cCBIZWFkZXIga2V5L3ZhbHVlIG1hcHMgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgdGhlIHRva2VuIHRvIGJlIHVwZGF0ZWQuXG4gICAqXG4gICAqIHVwZGF0ZU1pblZhbGlkaXR5OlxuICAgKiBUaGlzIHZhbHVlIGRldGVybWluZXMgaWYgdGhlIHRva2VuIHdpbGwgYmUgcmVmcmVzaGVkIGJhc2VkIG9uIGl0cyBleHBpcmF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIEEgUHJvbWlzZSB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbml0KG9wdGlvbnM6IEtleWNsb2FrT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5pbml0U2VydmljZVZhbHVlcyhvcHRpb25zKTtcbiAgICBjb25zdCB7IGNvbmZpZywgaW5pdE9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBLZXljbG9hayhjb25maWcpO1xuICAgIHRoaXMuYmluZHNLZXljbG9ha0V2ZW50cygpO1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRlZCA9IGF3YWl0IHRoaXMuX2luc3RhbmNlLmluaXQoaW5pdE9wdGlvbnMpO1xuXG4gICAgaWYgKGF1dGhlbnRpY2F0ZWQgJiYgdGhpcy5fbG9hZFVzZXJQcm9maWxlQXRTdGFydFVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBhdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0cyB0byBsb2dpbiBmb3JtIG9uIChvcHRpb25zIGlzIGFuIG9wdGlvbmFsIG9iamVjdCB3aXRoIHJlZGlyZWN0VXJpIGFuZC9vclxuICAgKiBwcm9tcHQgZmllbGRzKS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogT2JqZWN0LCB3aGVyZTpcbiAgICogIC0gcmVkaXJlY3RVcmk6IFNwZWNpZmllcyB0aGUgdXJpIHRvIHJlZGlyZWN0IHRvIGFmdGVyIGxvZ2luLlxuICAgKiAgLSBwcm9tcHQ6QnkgZGVmYXVsdCB0aGUgbG9naW4gc2NyZWVuIGlzIGRpc3BsYXllZCBpZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkLWluIHRvIEtleWNsb2FrLlxuICAgKiBUbyBvbmx5IGF1dGhlbnRpY2F0ZSB0byB0aGUgYXBwbGljYXRpb24gaWYgdGhlIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQtaW4gYW5kIG5vdCBkaXNwbGF5IHRoZVxuICAgKiBsb2dpbiBwYWdlIGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQtaW4sIHNldCB0aGlzIG9wdGlvbiB0byBub25lLiBUbyBhbHdheXMgcmVxdWlyZVxuICAgKiByZS1hdXRoZW50aWNhdGlvbiBhbmQgaWdub3JlIFNTTywgc2V0IHRoaXMgb3B0aW9uIHRvIGxvZ2luIC5cbiAgICogIC0gbWF4QWdlOiBVc2VkIGp1c3QgaWYgdXNlciBpcyBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQuIFNwZWNpZmllcyBtYXhpbXVtIHRpbWUgc2luY2UgdGhlXG4gICAqIGF1dGhlbnRpY2F0aW9uIG9mIHVzZXIgaGFwcGVuZWQuIElmIHVzZXIgaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGZvciBsb25nZXIgdGltZSB0aGFuXG4gICAqIG1heEFnZSwgdGhlIFNTTyBpcyBpZ25vcmVkIGFuZCBoZSB3aWxsIG5lZWQgdG8gcmUtYXV0aGVudGljYXRlIGFnYWluLlxuICAgKiAgLSBsb2dpbkhpbnQ6IFVzZWQgdG8gcHJlLWZpbGwgdGhlIHVzZXJuYW1lL2VtYWlsIGZpZWxkIG9uIHRoZSBsb2dpbiBmb3JtLlxuICAgKiAgLSBhY3Rpb246IElmIHZhbHVlIGlzICdyZWdpc3RlcicgdGhlbiB1c2VyIGlzIHJlZGlyZWN0ZWQgdG8gcmVnaXN0cmF0aW9uIHBhZ2UsIG90aGVyd2lzZSB0b1xuICAgKiBsb2dpbiBwYWdlLlxuICAgKiAgLSBsb2NhbGU6IFNwZWNpZmllcyB0aGUgZGVzaXJlZCBsb2NhbGUgZm9yIHRoZSBVSS5cbiAgICogQHJldHVybnNcbiAgICogQSB2b2lkIFByb21pc2UgaWYgdGhlIGxvZ2luIGlzIHN1Y2Nlc3NmdWwgYW5kIGFmdGVyIHRoZSB1c2VyIHByb2ZpbGUgbG9hZGluZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2dpbihvcHRpb25zOiBLZXljbG9hay5LZXljbG9ha0xvZ2luT3B0aW9ucyA9IHt9KSB7XG4gICAgYXdhaXQgdGhpcy5faW5zdGFuY2UubG9naW4ob3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5fbG9hZFVzZXJQcm9maWxlQXRTdGFydFVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRpcmVjdHMgdG8gbG9nb3V0LlxuICAgKlxuICAgKiBAcGFyYW0gcmVkaXJlY3RVcmlcbiAgICogU3BlY2lmaWVzIHRoZSB1cmkgdG8gcmVkaXJlY3QgdG8gYWZ0ZXIgbG9nb3V0LlxuICAgKiBAcmV0dXJuc1xuICAgKiBBIHZvaWQgUHJvbWlzZSBpZiB0aGUgbG9nb3V0IHdhcyBzdWNjZXNzZnVsLCBjbGVhbmluZyBhbHNvIHRoZSB1c2VyUHJvZmlsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2dvdXQocmVkaXJlY3RVcmk/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcmVkaXJlY3RVcmlcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5faW5zdGFuY2UubG9nb3V0KG9wdGlvbnMpO1xuICAgIHRoaXMuX3VzZXJQcm9maWxlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0cyB0byByZWdpc3RyYXRpb24gZm9ybS4gU2hvcnRjdXQgZm9yIGxvZ2luIHdpdGggb3B0aW9uXG4gICAqIGFjdGlvbiA9ICdyZWdpc3RlcicuIE9wdGlvbnMgYXJlIHNhbWUgYXMgZm9yIHRoZSBsb2dpbiBtZXRob2QgYnV0ICdhY3Rpb24nIGlzIHNldCB0b1xuICAgKiAncmVnaXN0ZXInLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBsb2dpbiBvcHRpb25zXG4gICAqIEByZXR1cm5zXG4gICAqIEEgdm9pZCBQcm9taXNlIGlmIHRoZSByZWdpc3RlciBmbG93IHdhcyBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKFxuICAgIG9wdGlvbnM6IEtleWNsb2FrLktleWNsb2FrTG9naW5PcHRpb25zID0geyBhY3Rpb246ICdyZWdpc3RlcicgfVxuICApIHtcbiAgICBhd2FpdCB0aGlzLl9pbnN0YW5jZS5yZWdpc3RlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWNjZXNzIHRvIHRoZSBzcGVjaWZpZWQgcm9sZS4gSXQgd2lsbCBsb29rIGZvciByb2xlcyBpblxuICAgKiByZWFsbSBhbmQgY2xpZW50SWQsIGJ1dCB3aWxsIG5vdCBjaGVjayBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4gZm9yIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHJvbGVcbiAgICogcm9sZSBuYW1lXG4gICAqIEBwYXJhbSByZXNvdXJjZVxuICAgKiByZXNvdXJjZSBuYW1lIElmIG5vdCBzcGVjaWZpZWQsIGBjbGllbnRJZGAgaXMgdXNlZFxuICAgKiBAcmV0dXJuc1xuICAgKiBBIGJvb2xlYW4gbWVhbmluZyBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBSb2xlLlxuICAgKi9cbiAgaXNVc2VySW5Sb2xlKHJvbGU6IHN0cmluZywgcmVzb3VyY2U/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUm9sZTogYm9vbGVhbjtcbiAgICBoYXNSb2xlID0gdGhpcy5faW5zdGFuY2UuaGFzUmVzb3VyY2VSb2xlKHJvbGUsIHJlc291cmNlKTtcbiAgICBpZiAoIWhhc1JvbGUpIHtcbiAgICAgIGhhc1JvbGUgPSB0aGlzLl9pbnN0YW5jZS5oYXNSZWFsbVJvbGUocm9sZSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNSb2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcm9sZXMgb2YgdGhlIGxvZ2dlZCB1c2VyLiBUaGUgYWxsUm9sZXMgcGFyYW1ldGVyLCB3aXRoIGRlZmF1bHQgdmFsdWVcbiAgICogdHJ1ZSwgd2lsbCByZXR1cm4gdGhlIGNsaWVudElkIGFuZCByZWFsbSByb2xlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2dlZCB1c2VyLiBJZiBzZXQgdG8gZmFsc2VcbiAgICogaXQgd2lsbCBvbmx5IHJldHVybiB0aGUgdXNlciByb2xlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNsaWVudElkLlxuICAgKlxuICAgKiBAcGFyYW0gYWxsUm9sZXNcbiAgICogRmxhZyB0byBzZXQgaWYgYWxsIHJvbGVzIHNob3VsZCBiZSByZXR1cm5lZC4oT3B0aW9uYWw6IGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZSlcbiAgICogQHJldHVybnNcbiAgICogQXJyYXkgb2YgUm9sZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsb2dnZWQgdXNlci5cbiAgICovXG4gIGdldFVzZXJSb2xlcyhhbGxSb2xlczogYm9vbGVhbiA9IHRydWUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZS5yZXNvdXJjZUFjY2Vzcykge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5faW5zdGFuY2UucmVzb3VyY2VBY2Nlc3MpIHtcbiAgICAgICAgaWYgKHRoaXMuX2luc3RhbmNlLnJlc291cmNlQWNjZXNzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCByZXNvdXJjZUFjY2VzcyA9IHRoaXMuX2luc3RhbmNlLnJlc291cmNlQWNjZXNzW2tleV07XG4gICAgICAgICAgY29uc3QgY2xpZW50Um9sZXMgPSByZXNvdXJjZUFjY2Vzc1sncm9sZXMnXSB8fCBbXTtcbiAgICAgICAgICByb2xlcyA9IHJvbGVzLmNvbmNhdChjbGllbnRSb2xlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbFJvbGVzICYmIHRoaXMuX2luc3RhbmNlLnJlYWxtQWNjZXNzKSB7XG4gICAgICBjb25zdCByZWFsbVJvbGVzID0gdGhpcy5faW5zdGFuY2UucmVhbG1BY2Nlc3NbJ3JvbGVzJ10gfHwgW107XG4gICAgICByb2xlcy5wdXNoKC4uLnJlYWxtUm9sZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZXM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdXNlciBpcyBsb2dnZWQgaW4uXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIEEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uXG4gICAqL1xuICBhc3luYyBpc0xvZ2dlZEluKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UuYXV0aGVudGljYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRva2VuIGhhcyBsZXNzIHRoYW4gbWluVmFsaWRpdHkgc2Vjb25kcyBsZWZ0IGJlZm9yZVxuICAgKiBpdCBleHBpcmVzLlxuICAgKlxuICAgKiBAcGFyYW0gbWluVmFsaWRpdHlcbiAgICogU2Vjb25kcyBsZWZ0LiAobWluVmFsaWRpdHkpIGlzIG9wdGlvbmFsLiBEZWZhdWx0IHZhbHVlIGlzIDAuXG4gICAqIEByZXR1cm5zXG4gICAqIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgdG9rZW4gaXMgZXhwaXJlZC5cbiAgICovXG4gIGlzVG9rZW5FeHBpcmVkKG1pblZhbGlkaXR5OiBudW1iZXIgPSAwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlLmlzVG9rZW5FeHBpcmVkKG1pblZhbGlkaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdG9rZW4gZXhwaXJlcyB3aXRoaW4gX3VwZGF0ZU1pblZhbGlkaXR5IHNlY29uZHMgdGhlIHRva2VuIGlzIHJlZnJlc2hlZC4gSWYgdGhlXG4gICAqIHNlc3Npb24gc3RhdHVzIGlmcmFtZSBpcyBlbmFibGVkLCB0aGUgc2Vzc2lvbiBzdGF0dXMgaXMgYWxzbyBjaGVja2VkLlxuICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0ZWxsaW5nIGlmIHRoZSB0b2tlbiB3YXMgcmVmcmVzaGVkIG9yIG5vdC4gSWYgdGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZVxuICAgKiBhbnltb3JlLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIG1pblZhbGlkaXR5XG4gICAqIFNlY29uZHMgbGVmdC4gKG1pblZhbGlkaXR5IGlzIG9wdGlvbmFsLCBpZiBub3Qgc3BlY2lmaWVkIHVwZGF0ZU1pblZhbGlkaXR5IC0gZGVmYXVsdCAyMCBpcyB1c2VkKVxuICAgKiBAcmV0dXJuc1xuICAgKiBQcm9taXNlIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHRva2VuIHdhcyBzdWNjZXNmdWxseSB1cGRhdGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVRva2VuKG1pblZhbGlkaXR5ID0gdGhpcy5fdXBkYXRlTWluVmFsaWRpdHkpIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCB1bnRpbCB0aGUgc2lsZW50IHJlZnJlc2ggKGlzc3VlICM0MylcbiAgICAvLyBpcyBub3QgaW1wbGVtZW50ZWQsIGF2b2lkaW5nIHRoZSByZWRpcmVjdCBsb29wLlxuICAgIGlmICh0aGlzLl9zaWxlbnRSZWZyZXNoKSB7XG4gICAgICBpZiAodGhpcy5pc1Rva2VuRXhwaXJlZCgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnRmFpbGVkIHRvIHJlZnJlc2ggdGhlIHRva2VuLCBvciB0aGUgc2Vzc2lvbiBpcyBleHBpcmVkJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleWNsb2FrIEFuZ3VsYXIgbGlicmFyeSBpcyBub3QgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9pbnN0YW5jZS51cGRhdGVUb2tlbihtaW5WYWxpZGl0eSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHVzZXIgcHJvZmlsZS5cbiAgICogUmV0dXJucyBwcm9taXNlIHRvIHNldCBmdW5jdGlvbnMgdG8gYmUgaW52b2tlZCBpZiB0aGUgcHJvZmlsZSB3YXMgbG9hZGVkXG4gICAqIHN1Y2Nlc3NmdWxseSwgb3IgaWYgdGhlIHByb2ZpbGUgY291bGQgbm90IGJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIGZvcmNlUmVsb2FkXG4gICAqIElmIHRydWUgd2lsbCBmb3JjZSB0aGUgbG9hZFVzZXJQcm9maWxlIGV2ZW4gaWYgaXRzIGFscmVhZHkgbG9hZGVkLlxuICAgKiBAcmV0dXJuc1xuICAgKiBBIHByb21pc2Ugd2l0aCB0aGUgS2V5Y2xvYWtQcm9maWxlIGRhdGEgbG9hZGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRVc2VyUHJvZmlsZShmb3JjZVJlbG9hZCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuX3VzZXJQcm9maWxlICYmICFmb3JjZVJlbG9hZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VzZXJQcm9maWxlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faW5zdGFuY2UuYXV0aGVudGljYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIHVzZXIgcHJvZmlsZSB3YXMgbm90IGxvYWRlZCBhcyB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLl91c2VyUHJvZmlsZSA9IGF3YWl0IHRoaXMuX2luc3RhbmNlLmxvYWRVc2VyUHJvZmlsZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhdXRoZW50aWNhdGVkIHRva2VuLCBjYWxsaW5nIHVwZGF0ZVRva2VuIHRvIGdldCBhIHJlZnJlc2hlZCBvbmUgaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS50b2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2dnZWQgdXNlcm5hbWUuXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIFRoZSBsb2dnZWQgdXNlcm5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlcm5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLl91c2VyUHJvZmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBsb2dnZWQgaW4gb3IgdXNlciBwcm9maWxlIHdhcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl91c2VyUHJvZmlsZS51c2VybmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhdXRoZW50aWNhdGlvbiBzdGF0ZSwgaW5jbHVkaW5nIHRva2Vucy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIGFwcGxpY2F0aW9uXG4gICAqIGhhcyBkZXRlY3RlZCB0aGUgc2Vzc2lvbiB3YXMgZXhwaXJlZCwgZm9yIGV4YW1wbGUgaWYgdXBkYXRpbmcgdG9rZW4gZmFpbHMuXG4gICAqIEludm9raW5nIHRoaXMgcmVzdWx0cyBpbiBvbkF1dGhMb2dvdXQgY2FsbGJhY2sgbGlzdGVuZXIgYmVpbmcgaW52b2tlZC5cbiAgICovXG4gIGNsZWFyVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5faW5zdGFuY2UuY2xlYXJUb2tlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB2YWxpZCB0b2tlbiBpbiBoZWFkZXIuIFRoZSBrZXkgJiB2YWx1ZSBmb3JtYXQgaXM6XG4gICAqIEF1dGhvcml6YXRpb24gQmVhcmVyIDx0b2tlbj4uXG4gICAqIElmIHRoZSBoZWFkZXJzIHBhcmFtIGlzIHVuZGVmaW5lZCBpdCB3aWxsIGNyZWF0ZSB0aGUgQW5ndWxhciBoZWFkZXJzIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGhlYWRlcnNcbiAgICogVXBkYXRlZCBoZWFkZXIgd2l0aCBBdXRob3JpemF0aW9uIGFuZCBLZXljbG9hayB0b2tlbi5cbiAgICogQHJldHVybnNcbiAgICogQW4gb2JzZXJ2YWJsZSB3aXRoIHdpdGggdGhlIEhUVFAgQXV0aG9yaXphdGlvbiBoZWFkZXIgYW5kIHRoZSBjdXJyZW50IHRva2VuLlxuICAgKi9cbiAgcHVibGljIGFkZFRva2VuVG9IZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKSkge1xuICAgIHJldHVybiBmcm9tKHRoaXMuZ2V0VG9rZW4oKSkucGlwZShcbiAgICAgIG1hcCgodG9rZW4pID0+XG4gICAgICAgIHRva2VuXG4gICAgICAgICAgPyBoZWFkZXJzLnNldChcbiAgICAgICAgICAgICAgdGhpcy5fYXV0aG9yaXphdGlvbkhlYWRlck5hbWUsXG4gICAgICAgICAgICAgIHRoaXMuX2JlYXJlclByZWZpeCArIHRva2VuXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBoZWFkZXJzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBLZXljbG9hayBpbnN0YW5jZSwgaWYgeW91IG5lZWQgYW55IGN1c3RvbWl6YXRpb24gdGhhdFxuICAgKiB0aGlzIEFuZ3VsYXIgc2VydmljZSBkb2VzIG5vdCBzdXBwb3J0IHlldC4gVXNlIHdpdGggY2F1dGlvbi5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICogVGhlIEtleWNsb2FrSW5zdGFuY2UgZnJvbSBrZXljbG9hay1qcy5cbiAgICovXG4gIGdldEtleWNsb2FrSW5zdGFuY2UoKTogS2V5Y2xvYWsuS2V5Y2xvYWtJbnN0YW5jZSB7XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIFJldHVybnMgdGhlIGV4Y2x1ZGVkIFVSTHMgdGhhdCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYnlcbiAgICogdGhlIGh0dHAgaW50ZXJjZXB0b3Igd2hpY2ggYXV0b21hdGljYWxseSBhZGRzIHRoZSBhdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUgSHR0cCBSZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBUaGUgZXhjbHVkZWQgdXJscyB0aGF0IG11c3Qgbm90IGJlIGludGVyY2VwdGVkIGJ5IHRoZSBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yLlxuICAgKi9cbiAgZ2V0IGV4Y2x1ZGVkVXJscygpOiBFeGNsdWRlZFVybFJlZ2V4W10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlZFVybHM7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgYmVhcmVyIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyLlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBSZXR1cm5zIGlmIHRoZSBiZWFyZXIgaW50ZXJjZXB0b3Igd2FzIHNldCB0byBiZSBkaXNhYmxlZC5cbiAgICovXG4gIGdldCBlbmFibGVCZWFyZXJJbnRlcmNlcHRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlQmVhcmVySW50ZXJjZXB0b3I7XG4gIH1cblxuICAvKipcbiAgICogS2V5Y2xvYWsgc3ViamVjdCB0byBtb25pdG9yIHRoZSBldmVudHMgdHJpZ2dlcmVkIGJ5IGtleWNsb2FrLWpzLlxuICAgKiBUaGUgZm9sbG93aW5nIGV2ZW50cyBhcyBhdmFpbGFibGUgKGFzIGRlc2NyaWJlZCBhdCBrZXljbG9hayBkb2NzIC1cbiAgICogaHR0cHM6Ly93d3cua2V5Y2xvYWsub3JnL2RvY3MvbGF0ZXN0L3NlY3VyaW5nX2FwcHMvaW5kZXguaHRtbCNjYWxsYmFjay1ldmVudHMpOlxuICAgKiAtIE9uQXV0aEVycm9yXG4gICAqIC0gT25BdXRoTG9nb3V0XG4gICAqIC0gT25BdXRoUmVmcmVzaEVycm9yXG4gICAqIC0gT25BdXRoUmVmcmVzaFN1Y2Nlc3NcbiAgICogLSBPbkF1dGhTdWNjZXNzXG4gICAqIC0gT25SZWFkeVxuICAgKiAtIE9uVG9rZW5FeHBpcmVcbiAgICogSW4gZWFjaCBvY2N1cnJlbmNlIG9mIGFueSBvZiB0aGVzZSwgdGhpcyBzdWJqZWN0IHdpbGwgcmV0dXJuIHRoZSBldmVudCB0eXBlLFxuICAgKiBkZXNjcmliZWQgYXQge0BsaW5rIEtleWNsb2FrRXZlbnRUeXBlfSBlbnVtIGFuZCB0aGUgZnVuY3Rpb24gYXJncyBmcm9tIHRoZSBrZXljbG9hay1qc1xuICAgKiBpZiBwcm92aWRlZCBhbnkuXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIEEgc3ViamVjdCB3aXRoIHRoZSB7QGxpbmsgS2V5Y2xvYWtFdmVudH0gd2hpY2ggZGVzY3JpYmVzIHRoZSBldmVudCB0eXBlIGFuZCBhdHRhY2hlcyB0aGVcbiAgICogZnVuY3Rpb24gYXJncy5cbiAgICovXG4gIGdldCBrZXljbG9ha0V2ZW50cyQoKTogU3ViamVjdDxLZXljbG9ha0V2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2tleWNsb2FrRXZlbnRzJDtcbiAgfVxufVxuIl19
@@ -3,10 +3,10 @@ import { CoreModule } from './core/core.module';
3
3
  import * as i0 from "@angular/core";
4
4
  export class KeycloakAngularModule {
5
5
  }
6
- KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
8
- KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, decorators: [{
6
+ KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
8
+ KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  imports: [CoreModule]
@@ -244,9 +244,9 @@ class KeycloakService {
244
244
  return this._keycloakEvents$;
245
245
  }
246
246
  }
247
- KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
248
- KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService });
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, decorators: [{
247
+ KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
248
+ KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, decorators: [{
250
250
  type: Injectable
251
251
  }] });
252
252
 
@@ -292,17 +292,17 @@ class KeycloakBearerInterceptor {
292
292
  }));
293
293
  }
294
294
  }
295
- KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
296
- KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor });
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
295
+ KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
296
+ KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor });
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
298
298
  type: Injectable
299
299
  }], ctorParameters: function () { return [{ type: KeycloakService }]; } });
300
300
 
301
301
  class CoreModule {
302
302
  }
303
- CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
304
- CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, imports: [CommonModule] });
305
- CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, providers: [
303
+ CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
304
+ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, imports: [CommonModule] });
305
+ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, providers: [
306
306
  KeycloakService,
307
307
  {
308
308
  provide: HTTP_INTERCEPTORS,
@@ -310,7 +310,7 @@ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14
310
310
  multi: true
311
311
  }
312
312
  ], imports: [CommonModule] });
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, decorators: [{
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, decorators: [{
314
314
  type: NgModule,
315
315
  args: [{
316
316
  imports: [CommonModule],
@@ -327,10 +327,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
327
327
 
328
328
  class KeycloakAngularModule {
329
329
  }
330
- KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
331
- KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
332
- KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, decorators: [{
330
+ KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
331
+ KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
332
+ KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, decorators: [{
334
334
  type: NgModule,
335
335
  args: [{
336
336
  imports: [CoreModule]
@@ -225,9 +225,9 @@ class KeycloakService {
225
225
  return this._keycloakEvents$;
226
226
  }
227
227
  }
228
- KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
229
- KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService });
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakService, decorators: [{
228
+ KeycloakService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
229
+ KeycloakService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService });
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakService, decorators: [{
231
231
  type: Injectable
232
232
  }] });
233
233
 
@@ -271,17 +271,17 @@ class KeycloakBearerInterceptor {
271
271
  }));
272
272
  }
273
273
  }
274
- KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
275
- KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor });
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
274
+ KeycloakBearerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, deps: [{ token: KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable });
275
+ KeycloakBearerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor });
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakBearerInterceptor, decorators: [{
277
277
  type: Injectable
278
278
  }], ctorParameters: function () { return [{ type: KeycloakService }]; } });
279
279
 
280
280
  class CoreModule {
281
281
  }
282
- CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
283
- CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, imports: [CommonModule] });
284
- CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, providers: [
282
+ CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
283
+ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, imports: [CommonModule] });
284
+ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, providers: [
285
285
  KeycloakService,
286
286
  {
287
287
  provide: HTTP_INTERCEPTORS,
@@ -289,7 +289,7 @@ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14
289
289
  multi: true
290
290
  }
291
291
  ], imports: [CommonModule] });
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CoreModule, decorators: [{
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CoreModule, decorators: [{
293
293
  type: NgModule,
294
294
  args: [{
295
295
  imports: [CommonModule],
@@ -306,10 +306,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
306
306
 
307
307
  class KeycloakAngularModule {
308
308
  }
309
- KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
310
- KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
311
- KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KeycloakAngularModule, decorators: [{
309
+ KeycloakAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
310
+ KeycloakAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
311
+ KeycloakAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, imports: [CoreModule] });
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: KeycloakAngularModule, decorators: [{
313
313
  type: NgModule,
314
314
  args: [{
315
315
  imports: [CoreModule]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloak-angular",
3
- "version": "12.2.0",
3
+ "version": "13.1.0",
4
4
  "description": "Easy Keycloak setup for Angular applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,13 +26,13 @@
26
26
  "oidc"
27
27
  ],
28
28
  "peerDependencies": {
29
- "@angular/common": "^14",
30
- "@angular/core": "^14",
31
- "@angular/router": "^14",
32
- "keycloak-js": "^18 || ^19 || 20"
29
+ "@angular/common": "^15",
30
+ "@angular/core": "^15",
31
+ "@angular/router": "^15",
32
+ "keycloak-js": "^18 || ^19 || ^20 || ^21"
33
33
  },
34
34
  "dependencies": {
35
- "tslib": "^2.3.0"
35
+ "tslib": "^2.3.1"
36
36
  },
37
37
  "module": "fesm2015/keycloak-angular.mjs",
38
38
  "es2020": "fesm2020/keycloak-angular.mjs",