@bnsights/bbsf-utilities 1.0.69-beta.3 → 1.2.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.
Files changed (44) hide show
  1. package/README.md +81 -2
  2. package/fesm2022/bnsights-bbsf-utilities.mjs +135 -61
  3. package/fesm2022/bnsights-bbsf-utilities.mjs.map +1 -1
  4. package/lib/bbsf-utilities.module.d.ts +22 -2
  5. package/lib/shared/authentication/auth.service.d.ts +0 -1
  6. package/lib/shared/services/language.service.d.ts +12 -0
  7. package/lib/shared/services/request-handler.service.d.ts +2 -3
  8. package/package.json +11 -21
  9. package/esm2022/auth/bnsights-bbsf-utilities-auth.mjs +0 -5
  10. package/esm2022/auth/public-api.mjs +0 -5
  11. package/esm2022/bnsights-bbsf-utilities.mjs +0 -5
  12. package/esm2022/http/bnsights-bbsf-utilities-http.mjs +0 -5
  13. package/esm2022/http/public-api.mjs +0 -8
  14. package/esm2022/lib/bbsf-utilities.module.mjs +0 -63
  15. package/esm2022/lib/shared/authentication/auth.service.mjs +0 -260
  16. package/esm2022/lib/shared/authentication/index.mjs +0 -2
  17. package/esm2022/lib/shared/config/environment.mjs +0 -12
  18. package/esm2022/lib/shared/enums/authentication-modes-enums.mjs +0 -8
  19. package/esm2022/lib/shared/index.mjs +0 -4
  20. package/esm2022/lib/shared/models/UserModel.mjs +0 -3
  21. package/esm2022/lib/shared/models/area-model.mjs +0 -3
  22. package/esm2022/lib/shared/models/error-model.mjs +0 -3
  23. package/esm2022/lib/shared/models/index.mjs +0 -5
  24. package/esm2022/lib/shared/models/request-options-model.mjs +0 -11
  25. package/esm2022/lib/shared/models/speech-language.mjs +0 -3
  26. package/esm2022/lib/shared/services/appearance-configuration.service.mjs +0 -35
  27. package/esm2022/lib/shared/services/configuration.service.mjs +0 -48
  28. package/esm2022/lib/shared/services/control-validation.service.mjs +0 -173
  29. package/esm2022/lib/shared/services/environment.service.mjs +0 -83
  30. package/esm2022/lib/shared/services/index.mjs +0 -14
  31. package/esm2022/lib/shared/services/language.service.mjs +0 -21
  32. package/esm2022/lib/shared/services/master-layout.service.mjs +0 -77
  33. package/esm2022/lib/shared/services/preload.service.mjs +0 -54
  34. package/esm2022/lib/shared/services/request-handler.service.mjs +0 -260
  35. package/esm2022/lib/shared/services/speech-recognition.service.mjs +0 -76
  36. package/esm2022/lib/shared/services/styles-bundle.service.mjs +0 -76
  37. package/esm2022/lib/shared/services/translate.service.mjs +0 -14
  38. package/esm2022/lib/shared/services/translation-resolver.service.mjs +0 -7
  39. package/esm2022/lib/shared/services/utility.service.mjs +0 -87
  40. package/esm2022/public-api.mjs +0 -56
  41. package/esm2022/translate/bnsights-bbsf-utilities-translate.mjs +0 -5
  42. package/esm2022/translate/public-api.mjs +0 -7
  43. package/esm2022/ui/bnsights-bbsf-utilities-ui.mjs +0 -5
  44. package/esm2022/ui/public-api.mjs +0 -8
@@ -1,6 +1,5 @@
1
1
  import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http";
2
2
  import { OnDestroy } from '@angular/core';
3
- import { Router } from '@angular/router';
4
3
  import { Observable, Subject } from 'rxjs';
5
4
  import { BBSFTranslateService, EnvironmentService, UtilityService } from ".";
6
5
  import { AuthService } from '../authentication/auth.service';
@@ -12,10 +11,10 @@ export declare class RequestHandlerService implements OnDestroy {
12
11
  private environmentService;
13
12
  private utilityService;
14
13
  private bbsfTranslateService;
15
- private router;
16
14
  private currentLanguage;
17
15
  onDestroy$: Subject<void>;
18
- constructor(http: HttpClient, authService: AuthService, environmentService: EnvironmentService, utilityService: UtilityService, bbsfTranslateService: BBSFTranslateService, router: Router);
16
+ private router;
17
+ constructor(http: HttpClient, authService: AuthService, environmentService: EnvironmentService, utilityService: UtilityService, bbsfTranslateService: BBSFTranslateService);
19
18
  private isOnline;
20
19
  get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T>;
21
20
  post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T>;
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@bnsights/bbsf-utilities",
3
- "version": "1.0.69-beta.3",
3
+ "version": "1.2.0",
4
4
  "peerDependencies": {
5
- "@angular/animations": "^17.0.5",
6
- "@angular/cdk": "^17.0.2",
7
- "@angular/common": "^17.0.5",
8
- "@angular/compiler": "^17.0.5",
9
- "@angular/core": "^17.0.5",
10
- "@angular/forms": "^17.0.5",
11
- "@angular/localize": "^17.0.5",
12
- "@angular/router": "^17.0.5"
5
+ "@angular/animations": "^19.2.14",
6
+ "@angular/cdk": "^19.2.19",
7
+ "@angular/common": "^19.2.14",
8
+ "@angular/compiler": "^19.2.14",
9
+ "@angular/core": "^19.2.14",
10
+ "@angular/forms": "^19.2.14",
11
+ "@angular/localize": "^19.2.14",
12
+ "@angular/router": "^19.2.14"
13
13
  },
14
14
  "dependencies": {
15
15
  "lodash": "^4.17.21",
@@ -18,9 +18,9 @@
18
18
  },
19
19
  "optionalDependencies": {
20
20
  "@auth0/angular-jwt": "^5.2.0",
21
- "ngx-cookie-service": "17.0.0",
22
21
  "ng-block-ui": "^4.0.1",
23
- "ngx-toastr": "^18.0.0",
22
+ "ngx-cookie-service": "^19.0.0",
23
+ "ngx-toastr": "^19.0.0",
24
24
  "oidc-client": "^1.11.5",
25
25
  "class-transformer": "^0.5.1",
26
26
  "@ngx-translate/core": "^15.0.0"
@@ -33,32 +33,22 @@
33
33
  },
34
34
  ".": {
35
35
  "types": "./index.d.ts",
36
- "esm2022": "./esm2022/bnsights-bbsf-utilities.mjs",
37
- "esm": "./esm2022/bnsights-bbsf-utilities.mjs",
38
36
  "default": "./fesm2022/bnsights-bbsf-utilities.mjs"
39
37
  },
40
38
  "./auth": {
41
39
  "types": "./auth/index.d.ts",
42
- "esm2022": "./esm2022/auth/bnsights-bbsf-utilities-auth.mjs",
43
- "esm": "./esm2022/auth/bnsights-bbsf-utilities-auth.mjs",
44
40
  "default": "./fesm2022/bnsights-bbsf-utilities-auth.mjs"
45
41
  },
46
42
  "./http": {
47
43
  "types": "./http/index.d.ts",
48
- "esm2022": "./esm2022/http/bnsights-bbsf-utilities-http.mjs",
49
- "esm": "./esm2022/http/bnsights-bbsf-utilities-http.mjs",
50
44
  "default": "./fesm2022/bnsights-bbsf-utilities-http.mjs"
51
45
  },
52
46
  "./translate": {
53
47
  "types": "./translate/index.d.ts",
54
- "esm2022": "./esm2022/translate/bnsights-bbsf-utilities-translate.mjs",
55
- "esm": "./esm2022/translate/bnsights-bbsf-utilities-translate.mjs",
56
48
  "default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
57
49
  },
58
50
  "./ui": {
59
51
  "types": "./ui/index.d.ts",
60
- "esm2022": "./esm2022/ui/bnsights-bbsf-utilities-ui.mjs",
61
- "esm": "./esm2022/ui/bnsights-bbsf-utilities-ui.mjs",
62
52
  "default": "./fesm2022/bnsights-bbsf-utilities-ui.mjs"
63
53
  }
64
54
  },
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi11dGlsaXRpZXMtYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL2F1dGgvYm5zaWdodHMtYmJzZi11dGlsaXRpZXMtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,5 +0,0 @@
1
- /*
2
- * Public API Surface of @bnsights/bbsf-utilities/auth
3
- */
4
- export { AuthService } from '@bnsights/bbsf-utilities';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL2F1dGgvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMvYXV0aFxyXG4gKi9cclxuXHJcbmV4cG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvYm5zaWdodHMtYmJzZi11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi11dGlsaXRpZXMtaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL2h0dHAvYm5zaWdodHMtYmJzZi11dGlsaXRpZXMtaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,8 +0,0 @@
1
- /*
2
- * Public API Surface of @bnsights/bbsf-utilities/http
3
- */
4
- export { RequestHandlerService } from '@bnsights/bbsf-utilities';
5
- export { FileLoaderService } from '@bnsights/bbsf-utilities';
6
- export { MasterLayoutService } from '@bnsights/bbsf-utilities';
7
- export { RequestOptionsModel } from '@bnsights/bbsf-utilities';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL2h0dHAvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBibnNpZ2h0cy9iYnNmLXV0aWxpdGllcy9odHRwXHJcbiAqL1xyXG5cclxuZXhwb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuZXhwb3J0IHsgRmlsZUxvYWRlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5leHBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuZXhwb3J0IHsgUmVxdWVzdE9wdGlvbnNNb2RlbCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG4iXX0=
@@ -1,63 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { RouterModule } from '@angular/router';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { BlockUIModule } from 'ng-block-ui';
6
- import { ToastrModule } from 'ngx-toastr';
7
- import { CookieService } from 'ngx-cookie-service';
8
- import { UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService, ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService, SpeechRecognitionService } from './shared';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "ng-block-ui";
11
- import * as i2 from "ngx-toastr";
12
- export class BBSFUtilitiesModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: BBSFUtilitiesModule, imports: [CommonModule,
15
- RouterModule, i1.BlockUIModule, i2.ToastrModule] }); }
16
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFUtilitiesModule, providers: [
17
- UtilityService,
18
- EnvironmentService,
19
- AuthService,
20
- RequestHandlerService,
21
- StylesBundleService,
22
- TranslateService,
23
- BBSFTranslateService,
24
- ControlValidationService,
25
- MasterLayoutService,
26
- ConfigurationService,
27
- CookieService,
28
- LanguageService,
29
- SpeechRecognitionService
30
- ], imports: [CommonModule,
31
- RouterModule,
32
- BlockUIModule.forRoot(),
33
- ToastrModule.forRoot()] }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFUtilitiesModule, decorators: [{
36
- type: NgModule,
37
- args: [{
38
- declarations: [],
39
- imports: [
40
- CommonModule,
41
- RouterModule,
42
- BlockUIModule.forRoot(),
43
- ToastrModule.forRoot(),
44
- ],
45
- exports: [],
46
- providers: [
47
- UtilityService,
48
- EnvironmentService,
49
- AuthService,
50
- RequestHandlerService,
51
- StylesBundleService,
52
- TranslateService,
53
- BBSFTranslateService,
54
- ControlValidationService,
55
- MasterLayoutService,
56
- ConfigurationService,
57
- CookieService,
58
- LanguageService,
59
- SpeechRecognitionService
60
- ]
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFDcEcsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFDakcsd0JBQXdCLEVBQ3pCLE1BQU0sVUFBVSxDQUFDOzs7O0FBNkJsQixNQUFNLE9BQU8sbUJBQW1COytHQUFuQixtQkFBbUI7Z0hBQW5CLG1CQUFtQixZQXZCNUIsWUFBWTtZQUNaLFlBQVk7Z0hBc0JILG1CQUFtQixhQWhCbkI7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsYUFBYTtZQUNiLGVBQWU7WUFDZix3QkFBd0I7U0FDekIsWUFyQkMsWUFBWTtZQUNaLFlBQVk7WUFDWixhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxPQUFPLEVBQUU7OzRGQW9CYixtQkFBbUI7a0JBM0IvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsWUFBWSxDQUFDLE9BQU8sRUFBRTtxQkFFdkI7b0JBQ0QsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFO3dCQUNULGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUlNb2R1bGUgfSBmcm9tICduZy1ibG9jay11aSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBVdGlsaXR5U2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFN0eWxlc0J1bmRsZVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgTWFzdGVyTGF5b3V0U2VydmljZSwgQ29uZmlndXJhdGlvblNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlXHJcbn0gZnJvbSAnLi9zaGFyZWQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3QoKSxcclxuXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBTdHlsZXNCdW5kbGVTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgTWFzdGVyTGF5b3V0U2VydmljZSxcclxuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgQ29va2llU2VydmljZSxcclxuICAgIExhbmd1YWdlU2VydmljZSxcclxuICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZVdGlsaXRpZXNNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
@@ -1,260 +0,0 @@
1
- import { HttpHeaders } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { JwtHelperService } from '@auth0/angular-jwt';
5
- import { User } from '../models/UserModel';
6
- import { AuthenticationModes } from '../enums/authentication-modes-enums';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- import * as i2 from "../services";
10
- import * as i3 from "@angular/router";
11
- import * as i4 from "ngx-cookie-service";
12
- import * as i5 from "../services/utility.service";
13
- export class AuthService {
14
- static { this.user = null; }
15
- get user() {
16
- if (!this._user) {
17
- this._user = this.getUserManager();
18
- }
19
- return this._user;
20
- }
21
- static { this.UserClaims = null; }
22
- //refresh
23
- static { this.timers = []; }
24
- static { this.seconds = 0; }
25
- constructor(injector, http, environmentService, translateService, router, cookieService, utilityService) {
26
- this.injector = injector;
27
- this.http = http;
28
- this.environmentService = environmentService;
29
- this.translateService = translateService;
30
- this.router = router;
31
- this.cookieService = cookieService;
32
- this.utilityService = utilityService;
33
- this.redirectUrl = '';
34
- this.jwtHelper = new JwtHelperService();
35
- this.isAuthenticatedSubject = new BehaviorSubject(this.hasToken());
36
- this.isAuthenticate$ = this.isAuthenticatedSubject.asObservable();
37
- }
38
- get TOKEN_KEY() {
39
- if (!this._TOKEN_KEY) {
40
- this._TOKEN_KEY = this.environmentService.getCookieName();
41
- }
42
- return this._TOKEN_KEY;
43
- }
44
- hasToken() {
45
- const token = this.cookieService.get(this.TOKEN_KEY);
46
- return token && !this.jwtHelper.isTokenExpired(token);
47
- }
48
- getUserManager() {
49
- const token = this.cookieService.get(this.TOKEN_KEY);
50
- if (token) {
51
- if (!this.jwtHelper.isTokenExpired(token))
52
- this.handleAccessTokenWithoutLanguage(token);
53
- else
54
- this.cookieService.delete(this.TOKEN_KEY, '/');
55
- }
56
- else {
57
- AuthService.timers.map(t => clearInterval(t));
58
- AuthService.timers = [];
59
- AuthService.user = null;
60
- this._user = null;
61
- }
62
- return AuthService.user;
63
- }
64
- getUser() {
65
- this._user = AuthService.user;
66
- }
67
- storUser(User) {
68
- AuthService.user = this._user = this.user;
69
- }
70
- getCurrentUser() {
71
- return AuthService.user;
72
- }
73
- isAuthenticated() {
74
- AuthService.user = this.user;
75
- return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);
76
- }
77
- isUserInRole(allowedPermission) {
78
- let selectedPermissionSetID = Number.parseInt(AuthService.user.profile['selectedpermissionsetid']);
79
- return allowedPermission.includes(selectedPermissionSetID);
80
- }
81
- isUserPermissionSetsInRoles(allowedPermission) {
82
- const permissionSetSIDString = AuthService.user.profile['permissionSetSID'];
83
- if (!permissionSetSIDString) {
84
- return false;
85
- }
86
- // Split comma-separated string and convert to numbers
87
- const userPermissionSets = permissionSetSIDString
88
- .split(',')
89
- .map(id => Number.parseInt(id.trim()))
90
- .filter(id => !isNaN(id)); // Filter out invalid numbers
91
- // Check if any user permission set is in the allowed permissions
92
- return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));
93
- }
94
- authorizationHeaderValue() {
95
- return AuthService.user
96
- ? `${AuthService.user.token_type} ${AuthService.user.access_token}`
97
- : '';
98
- }
99
- name() {
100
- return AuthService.user != null ? AuthService.user.profile.given_name : '';
101
- }
102
- setUrl(url) {
103
- localStorage.setItem('redirectUrl', url);
104
- }
105
- getUrl() {
106
- return localStorage.getItem('redirectUrl') ?? "/";
107
- }
108
- signOut() {
109
- let isAuthenticated = this.isAuthenticated();
110
- this.cookieService.delete(this.TOKEN_KEY, '/');
111
- AuthService.timers.map(t => clearInterval(t));
112
- AuthService.timers = [];
113
- AuthService.user = null;
114
- this._user = null;
115
- localStorage.removeItem("redirectUrl");
116
- if (isAuthenticated) {
117
- this.logout().subscribe(res => {
118
- if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)
119
- this.logoutFromUAEPass();
120
- else
121
- this.router.navigate(['/Admin/account/login']);
122
- });
123
- }
124
- else {
125
- if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)
126
- this.logoutFromUAEPass();
127
- else
128
- this.router.navigate(['/Admin/account/login']);
129
- }
130
- }
131
- logout() {
132
- const httpOptions = {
133
- headers: new HttpHeaders({
134
- 'Content-Type': 'application/json',
135
- }),
136
- };
137
- let ApiUrl = '/Account/';
138
- return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);
139
- }
140
- clearUserSessionClaims() {
141
- const httpOptions = {
142
- headers: new HttpHeaders({
143
- 'Content-Type': 'application/json',
144
- }),
145
- };
146
- let ApiUrl = '/api/Home/';
147
- return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
148
- }
149
- async handleAccessToken(response) {
150
- this.cookieService.delete(this.TOKEN_KEY, '/');
151
- const token = response;
152
- AuthService.user = null;
153
- AuthService.user = new User();
154
- AuthService.user.token_type = "Bearer";
155
- AuthService.user.access_token = token;
156
- AuthService.user.profile = this.jwtHelper.decodeToken(token);
157
- AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
158
- this._user = AuthService.user;
159
- localStorage.setItem("language", AuthService.user.profile.locale);
160
- this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, "/", null, true, 'Lax');
161
- this.isAuthenticatedSubject.next(true);
162
- this.setTokenSeconds();
163
- AuthService.timers.push(this.checkRefreshToken());
164
- await this.updateLanguage();
165
- }
166
- handleAccessTokenWithoutLanguage(response) {
167
- this.cookieService.delete(this.TOKEN_KEY, '/');
168
- const token = response;
169
- AuthService.user = null;
170
- AuthService.user = new User();
171
- AuthService.user.token_type = "Bearer";
172
- AuthService.user.access_token = token;
173
- AuthService.user.profile = this.jwtHelper.decodeToken(token);
174
- AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
175
- this.setTokenSeconds();
176
- this._user = AuthService.user;
177
- localStorage.setItem("language", AuthService.user.profile.locale);
178
- this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, "/", null, true, 'Lax');
179
- this.isAuthenticatedSubject.next(true);
180
- AuthService.timers.push(this.checkRefreshToken());
181
- }
182
- async updateLanguage() {
183
- if (!localStorage.getItem('language') || localStorage.getItem('language') == this.user.profile.locale)
184
- localStorage.setItem('language', this.user.profile.locale);
185
- if (this.translateService.currentLang != localStorage.getItem('language')) {
186
- this.translateService.resetLang(this.translateService.currentLang);
187
- await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();
188
- }
189
- }
190
- checkRefreshToken() {
191
- let date = new Date();
192
- return setInterval(() => {
193
- if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated()) {
194
- AuthService.timers.map(t => clearInterval(t));
195
- AuthService.timers = [];
196
- const token = this.cookieService.get(this.TOKEN_KEY);
197
- if (token) {
198
- this.refresh();
199
- }
200
- }
201
- AuthService.seconds--;
202
- }, 1000);
203
- }
204
- setTokenSeconds() {
205
- let date = new Date();
206
- AuthService.seconds = (AuthService.user.expires_at - date) / 1000;
207
- }
208
- refresh() {
209
- this.cookieService.delete(this.TOKEN_KEY, '/');
210
- const httpOptions = {
211
- headers: new HttpHeaders({
212
- 'Content-Type': 'application/json',
213
- 'Authorization': this.authorizationHeaderValue(),
214
- }),
215
- };
216
- let ApiUrl = '/api/Home/';
217
- this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res) => {
218
- this.handleAccessTokenWithoutLanguage(res.val);
219
- });
220
- }
221
- loginWithUAEPass() {
222
- const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;
223
- const queryParams = {
224
- response_type: 'code',
225
- client_id: `${this.environmentService.getUAEPassClientID()}`,
226
- redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,
227
- scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',
228
- state: this.translateService.currentLang,
229
- acr_values: 'urn:safelayer:tws:policies:authentication:level:low',
230
- ui_locales: this.translateService.currentLang,
231
- };
232
- const queryParamsString = Object.entries(queryParams)
233
- .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
234
- .join('&');
235
- const loginUrl = `${authEndpoint}?${queryParamsString}`;
236
- window.location.href = loginUrl;
237
- return;
238
- }
239
- logoutFromUAEPass() {
240
- const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;
241
- const queryParams = {
242
- redirect_uri: `${this.environmentService.getBaseUrl()}`,
243
- };
244
- const queryParamsString = Object.entries(queryParams)
245
- .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
246
- .join('&');
247
- const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;
248
- window.location.href = logoutUrl;
249
- return;
250
- }
251
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, deps: [{ token: i0.Injector }, { token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i2.BBSFTranslateService }, { token: i3.Router }, { token: i4.CookieService }, { token: i5.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
252
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, providedIn: 'root' }); }
253
- }
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, decorators: [{
255
- type: Injectable,
256
- args: [{
257
- providedIn: 'root',
258
- }]
259
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i2.BBSFTranslateService }, { type: i3.Router }, { type: i4.CookieService }, { type: i5.UtilityService }] });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxXQUFXO2FBRWYsU0FBSSxHQUFnQixJQUFJLEFBQXBCLENBQXFCO0lBRWhDLElBQVksSUFBSTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzthQUNNLGVBQVUsR0FBUSxJQUFJLEFBQVosQ0FBYTtJQUk5QixTQUFTO2FBQ0YsV0FBTSxHQUFHLEVBQUUsQUFBTCxDQUFNO2FBQ1osWUFBTyxHQUFHLENBQUMsQUFBSixDQUFLO0lBRW5CLFlBQW9CLFFBQWtCLEVBQVUsSUFBZ0IsRUFBVSxrQkFBc0MsRUFBVSxnQkFBc0MsRUFBVSxNQUFjLEVBQVUsYUFBNEIsRUFBVSxjQUE4QjtRQUFsUCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHVCQUFrQixHQUFsQixr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YUFDNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRyxZQUFZLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDaEMsT0FBTztJQUNULENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7UUFDN0gsTUFBTSxXQUFXLEdBQUc7WUFDbEIsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxFQUFFO1NBQ3hELENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ2xELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUViLE1BQU0sU0FBUyxHQUFHLEdBQUcsY0FBYyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE9BQU87SUFDVCxDQUFDOytHQWhRVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9tb2RlbHMvVXNlck1vZGVsJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlcyB9IGZyb20gJy4uL2VudW1zL2F1dGhlbnRpY2F0aW9uLW1vZGVzLWVudW1zJztcclxuaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gJ3RpbWVycyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICBwdWJsaWMgcmVkaXJlY3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIHN0YXRpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgX3VzZXI6IFVzZXIgfCBudWxsO1xyXG4gIHByaXZhdGUgZ2V0IHVzZXIoKTogVXNlciB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLl91c2VyKSB7XHJcbiAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLmdldFVzZXJNYW5hZ2VyKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlcjtcclxuICB9XHJcbiAgc3RhdGljIFVzZXJDbGFpbXM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBqd3RIZWxwZXI6IEp3dEhlbHBlclNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gIHByaXZhdGUgaXNBdXRoZW50aWNhdGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5oYXNUb2tlbigpKTtcclxuICBpc0F1dGhlbnRpY2F0ZSQgPSB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy9yZWZyZXNoXHJcbiAgc3RhdGljIHRpbWVycyA9IFtdO1xyXG4gIHN0YXRpYyBzZWNvbmRzID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9UT0tFTl9LRVk6IHN0cmluZ1xyXG4gIGdldCBUT0tFTl9LRVkoKSB7XHJcbiAgICBpZiAoIXRoaXMuX1RPS0VOX0tFWSkge1xyXG4gICAgICB0aGlzLl9UT0tFTl9LRVkgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRDb29raWVOYW1lKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fVE9LRU5fS0VZO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNUb2tlbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLlRPS0VOX0tFWSk7XHJcbiAgICByZXR1cm4gdG9rZW4gJiYgIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJNYW5hZ2VyKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuVE9LRU5fS0VZKTtcclxuICAgIGlmICh0b2tlbikge1xyXG4gICAgICBpZiAoIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKSlcclxuICAgICAgICB0aGlzLmhhbmRsZUFjY2Vzc1Rva2VuV2l0aG91dExhbmd1YWdlKHRva2VuKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5UT0tFTl9LRVksICcvJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgQXV0aFNlcnZpY2UudGltZXJzLm1hcCh0ID0+IGNsZWFySW50ZXJ2YWwodCkpO1xyXG4gICAgICBBdXRoU2VydmljZS50aW1lcnMgPSBbXTtcclxuICAgICAgQXV0aFNlcnZpY2UudXNlciA9IG51bGw7XHJcbiAgICAgIHRoaXMuX3VzZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyKCkge1xyXG4gICAgdGhpcy5fdXNlciA9IEF1dGhTZXJ2aWNlLnVzZXI7XHJcbiAgfVxyXG4gIHN0b3JVc2VyKFVzZXI6IGFueSkge1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IHRoaXMuX3VzZXIgPSB0aGlzLnVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyO1xyXG4gIH1cclxuXHJcbiAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IHRoaXMudXNlcjtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyICE9IG51bGwgJiYgIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKEF1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VuKTtcclxuICB9XHJcbiAgaXNVc2VySW5Sb2xlKGFsbG93ZWRQZXJtaXNzaW9uKSB7XHJcbiAgICBsZXQgc2VsZWN0ZWRQZXJtaXNzaW9uU2V0SUQgPSBOdW1iZXIucGFyc2VJbnQoQXV0aFNlcnZpY2UudXNlci5wcm9maWxlWydzZWxlY3RlZHBlcm1pc3Npb25zZXRpZCddKTtcclxuICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbi5pbmNsdWRlcyhzZWxlY3RlZFBlcm1pc3Npb25TZXRJRCk7XHJcbiAgfVxyXG5cclxuICBpc1VzZXJQZXJtaXNzaW9uU2V0c0luUm9sZXMoYWxsb3dlZFBlcm1pc3Npb246IG51bWJlcltdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwZXJtaXNzaW9uU2V0U0lEU3RyaW5nID0gQXV0aFNlcnZpY2UudXNlci5wcm9maWxlWydwZXJtaXNzaW9uU2V0U0lEJ107XHJcbiAgICBpZiAoIXBlcm1pc3Npb25TZXRTSURTdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNwbGl0IGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgYW5kIGNvbnZlcnQgdG8gbnVtYmVyc1xyXG4gICAgY29uc3QgdXNlclBlcm1pc3Npb25TZXRzID0gcGVybWlzc2lvblNldFNJRFN0cmluZ1xyXG4gICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAubWFwKGlkID0+IE51bWJlci5wYXJzZUludChpZC50cmltKCkpKVxyXG4gICAgICAuZmlsdGVyKGlkID0+ICFpc05hTihpZCkpOyAvLyBGaWx0ZXIgb3V0IGludmFsaWQgbnVtYmVyc1xyXG5cclxuICAgIC8vIENoZWNrIGlmIGFueSB1c2VyIHBlcm1pc3Npb24gc2V0IGlzIGluIHRoZSBhbGxvd2VkIHBlcm1pc3Npb25zXHJcbiAgICByZXR1cm4gdXNlclBlcm1pc3Npb25TZXRzLnNvbWUocGVybWlzc2lvblNldElEID0+IGFsbG93ZWRQZXJtaXNzaW9uLmluY2x1ZGVzKHBlcm1pc3Npb25TZXRJRCkpO1xyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlclxyXG4gICAgICA/IGAke0F1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZX0gJHtBdXRoU2VydmljZS51c2VyLmFjY2Vzc190b2tlbn1gXHJcbiAgICAgIDogJyc7XHJcbiAgfVxyXG5cclxuICBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlciAhPSBudWxsID8gQXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmdpdmVuX25hbWUgOiAnJztcclxuICB9XHJcbiAgc2V0VXJsKHVybCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlZGlyZWN0VXJsJywgdXJsKTtcclxuICB9XHJcbiAgZ2V0VXJsKCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWRpcmVjdFVybCcpID8/IFwiL1wiO1xyXG4gIH1cclxuXHJcbiAgc2lnbk91dCgpIHtcclxuICAgIGxldCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmlzQXV0aGVudGljYXRlZCgpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZSh0aGlzLlRPS0VOX0tFWSwgJy8nKTtcclxuICAgIEF1dGhTZXJ2aWNlLnRpbWVycy5tYXAodCA9PiBjbGVhckludGVydmFsKHQpKTtcclxuICAgIEF1dGhTZXJ2aWNlLnRpbWVycyA9IFtdO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IG51bGw7XHJcbiAgICB0aGlzLl91c2VyID0gbnVsbDtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicmVkaXJlY3RVcmxcIik7XHJcbiAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJCU0ZBdXRoZW50aWNhdGlvbk1vZGUoKSA9PSBBdXRoZW50aWNhdGlvbk1vZGVzLlVBRVBhc3MpXHJcbiAgICAgICAgICB0aGlzLmxvZ291dEZyb21VQUVQYXNzKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vYWNjb3VudC9sb2dpbiddKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJCU0ZBdXRoZW50aWNhdGlvbk1vZGUoKSA9PSBBdXRoZW50aWNhdGlvbk1vZGVzLlVBRVBhc3MpXHJcbiAgICAgICAgdGhpcy5sb2dvdXRGcm9tVUFFUGFzcygpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vYWNjb3VudC9sb2dpbiddKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL0FjY291bnQvJztcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgQXBpVXJsICsgJ0xvZ291dCcsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuICBjbGVhclVzZXJTZXNzaW9uQ2xhaW1zKCkge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgbGV0IEFwaVVybCA9ICcvYXBpL0hvbWUvJztcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSArIEFwaVVybCArICdDbGVhckN1cnJlbnRVc2VyU2Vzc2lvbicsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUFjY2Vzc1Rva2VuKHJlc3BvbnNlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5UT0tFTl9LRVksICcvJyk7XHJcbiAgICBjb25zdCB0b2tlbiA9IHJlc3BvbnNlO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IG51bGw7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gbmV3IFVzZXIoKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZSA9IFwiQmVhcmVyXCI7XHJcbiAgICBBdXRoU2VydmljZS51c2VyLmFjY2Vzc190b2tlbiA9IHRva2VuO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci5wcm9maWxlID0gdGhpcy5qd3RIZWxwZXIuZGVjb2RlVG9rZW4odG9rZW4pO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci5leHBpcmVzX2F0ID0gdGhpcy5qd3RIZWxwZXIuZ2V0VG9rZW5FeHBpcmF0aW9uRGF0ZSh0b2tlbik7XHJcbiAgICB0aGlzLl91c2VyID0gQXV0aFNlcnZpY2UudXNlcjtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibGFuZ3VhZ2VcIiwgQXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmxvY2FsZSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KHRoaXMuVE9LRU5fS0VZLCB0b2tlbiwgQXV0aFNlcnZpY2UudXNlci5leHBpcmVzX2F0LCBcIi9cIiwgbnVsbCwgdHJ1ZSwgJ0xheCcpO1xyXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnNldFRva2VuU2Vjb25kcygpO1xyXG4gICAgQXV0aFNlcnZpY2UudGltZXJzLnB1c2godGhpcy5jaGVja1JlZnJlc2hUb2tlbigpKTtcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlTGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFjY2Vzc1Rva2VuV2l0aG91dExhbmd1YWdlKHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5UT0tFTl9LRVksICcvJyk7XHJcbiAgICBjb25zdCB0b2tlbiA9IHJlc3BvbnNlO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IG51bGw7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gbmV3IFVzZXIoKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZSA9IFwiQmVhcmVyXCI7XHJcbiAgICBBdXRoU2VydmljZS51c2VyLmFjY2Vzc190b2tlbiA9IHRva2VuO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci5wcm9maWxlID0gdGhpcy5qd3RIZWxwZXIuZGVjb2RlVG9rZW4odG9rZW4pO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci5leHBpcmVzX2F0ID0gdGhpcy5qd3RIZWxwZXIuZ2V0VG9rZW5FeHBpcmF0aW9uRGF0ZSh0b2tlbik7XHJcbiAgICB0aGlzLnNldFRva2VuU2Vjb25kcygpO1xyXG4gICAgdGhpcy5fdXNlciA9IEF1dGhTZXJ2aWNlLnVzZXI7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImxhbmd1YWdlXCIsIEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5sb2NhbGUpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCh0aGlzLlRPS0VOX0tFWSwgdG9rZW4sIEF1dGhTZXJ2aWNlLnVzZXIuZXhwaXJlc19hdCwgXCIvXCIsIG51bGwsIHRydWUsICdMYXgnKTtcclxuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgQXV0aFNlcnZpY2UudGltZXJzLnB1c2godGhpcy5jaGVja1JlZnJlc2hUb2tlbigpKTtcclxuICB9XHJcbiAgYXN5bmMgdXBkYXRlTGFuZ3VhZ2UoKSB7XHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpID09IHRoaXMudXNlci5wcm9maWxlLmxvY2FsZSlcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgdGhpcy51c2VyLnByb2ZpbGUubG9jYWxlKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nICE9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKSB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5yZXNldExhbmcodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKTtcclxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnJlbG9hZExhbmcobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZWZyZXNoVG9rZW4oKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCkgYXMgYW55O1xyXG4gICAgcmV0dXJuIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKE1hdGguZmxvb3IoQXV0aFNlcnZpY2Uuc2Vjb25kcykgPCAxMjAgJiYgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSkge1xyXG4gICAgICAgIEF1dGhTZXJ2aWNlLnRpbWVycy5tYXAodCA9PiBjbGVhckludGVydmFsKHQpKTtcclxuICAgICAgICBBdXRoU2VydmljZS50aW1lcnMgPSBbXTtcclxuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29va2llU2VydmljZS5nZXQodGhpcy5UT0tFTl9LRVkpO1xyXG4gICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEF1dGhTZXJ2aWNlLnNlY29uZHMtLTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuICBzZXRUb2tlblNlY29uZHMoKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCkgYXMgYW55O1xyXG4gICAgQXV0aFNlcnZpY2Uuc2Vjb25kcyA9IChBdXRoU2VydmljZS51c2VyLmV4cGlyZXNfYXQgLSBkYXRlKSAvIDEwMDA7XHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKHRoaXMuVE9LRU5fS0VZLCAnLycpO1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCksXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgQXBpVXJsICsgJ1JlZnJlc2hBY2Nlc3NUb2tlbicsIGh0dHBPcHRpb25zKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQWNjZXNzVG9rZW5XaXRob3V0TGFuZ3VhZ2UocmVzLnZhbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvZ2luV2l0aFVBRVBhc3MoKSB7XHJcbiAgICBjb25zdCBhdXRoRW5kcG9pbnQgPSBgJHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRVQUVQYXNzQmFzZVVybCgpfSR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0VUFFUGFzc0F1dGhvcml6YXRpb25FbmRQb2ludCgpfWA7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxyXG4gICAgICBjbGllbnRfaWQ6IGAke3RoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFVBRVBhc3NDbGllbnRJRCgpfWAsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogYCR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpfSR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0VUFFUGFzc1JlZGlyZWN0VXJsKCl9YCxcclxuICAgICAgc2NvcGU6ICd1cm46dWFlOmRpZ2l0YWxpZDpwcm9maWxlOmdlbmVyYWwgdXJuOnVhZTpkaWdpdGFsaWQ6cHJvZmlsZTpnZW5lcmFsOnByb2ZpbGVUeXBlIHVybjp1YWU6ZGlnaXRhbGlkOnByb2ZpbGU6Z2VuZXJhbDp1bmlmaWVkSWQnLFxyXG4gICAgICBzdGF0ZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG4gICAgICBhY3JfdmFsdWVzOiAndXJuOnNhZmVsYXllcjp0d3M6cG9saWNpZXM6YXV0aGVudGljYXRpb246bGV2ZWw6bG93JyxcclxuICAgICAgdWlfbG9jYWxlczogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zU3RyaW5nID0gT2JqZWN0LmVudHJpZXMocXVlcnlQYXJhbXMpXHJcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YClcclxuICAgICAgLmpvaW4oJyYnKTtcclxuICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7YXV0aEVuZHBvaW50fT8ke3F1ZXJ5UGFyYW1zU3RyaW5nfWA7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0RnJvbVVBRVBhc3MoKSB7XHJcbiAgICBjb25zdCBsb2dvdXRFbmRwb2ludCA9IGAke3RoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFVBRVBhc3NCYXNlVXJsKCl9JHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRVQUVQYXNzTG9nb3V0RW5kUG9pbnQoKX1gO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIHJlZGlyZWN0X3VyaTogYCR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpfWAsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXNTdHJpbmcgPSBPYmplY3QuZW50cmllcyhxdWVyeVBhcmFtcylcclxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX1gKVxyXG4gICAgICAuam9pbignJicpO1xyXG5cclxuICAgIGNvbnN0IGxvZ291dFVybCA9IGAke2xvZ291dEVuZHBvaW50fT8ke3F1ZXJ5UGFyYW1zU3RyaW5nfWA7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ291dFVybDtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export * from './auth.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9hdXRoZW50aWNhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG4iXX0=
@@ -1,12 +0,0 @@
1
- // This file can be replaced during build by using the `fileReplacements` array.
2
- // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3
- // The list of file replacements can be found in `angular.json`.
4
- export const environment = Object.assign({}, window.Environment);
5
- /*
6
- * In development mode, to ignore zone related error stack frames such as
7
- * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
8
- * import the following file, but please comment it out in production mode
9
- * because it will have performance impact when throw error
10
- */
11
- // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLDJFQUEyRTtBQUMzRSxnRUFBZ0U7QUFFaEUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFHLE1BQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUcxRTs7Ozs7R0FLRztBQUNILG1FQUFtRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjYW4gYmUgcmVwbGFjZWQgZHVyaW5nIGJ1aWxkIGJ5IHVzaW5nIHRoZSBgZmlsZVJlcGxhY2VtZW50c2AgYXJyYXkuXHJcbi8vIGBuZyBidWlsZCAtLS1wcm9kYCByZXBsYWNlcyBgZW52aXJvbm1lbnQudHNgIHdpdGggYGVudmlyb25tZW50LnByb2QudHNgLlxyXG4vLyBUaGUgbGlzdCBvZiBmaWxlIHJlcGxhY2VtZW50cyBjYW4gYmUgZm91bmQgaW4gYGFuZ3VsYXIuanNvbmAuXHJcblxyXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCAod2luZG93IGFzIGFueSkuRW52aXJvbm1lbnQpO1xyXG5cclxuXHJcbi8qXHJcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcclxuICogYHpvbmUucnVuYCwgYHpvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrYCBmb3IgZWFzaWVyIGRlYnVnZ2luZywgeW91IGNhblxyXG4gKiBpbXBvcnQgdGhlIGZvbGxvd2luZyBmaWxlLCBidXQgcGxlYXNlIGNvbW1lbnQgaXQgb3V0IGluIHByb2R1Y3Rpb24gbW9kZVxyXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxyXG4gKi9cclxuLy8gaW1wb3J0ICd6b25lLmpzL2Rpc3Qvem9uZS1lcnJvcic7ICAvLyBJbmNsdWRlZCB3aXRoIEFuZ3VsYXIgQ0xJLlxyXG4iXX0=
@@ -1,8 +0,0 @@
1
- export var AuthenticationModes;
2
- (function (AuthenticationModes) {
3
- AuthenticationModes["Forms"] = "Forms";
4
- AuthenticationModes["UAEPass"] = "UAEPass";
5
- AuthenticationModes["WindowsAD"] = "WindowsAD";
6
- AuthenticationModes["AzureAD"] = "AzureAD";
7
- })(AuthenticationModes || (AuthenticationModes = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tbW9kZXMtZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9lbnVtcy9hdXRoZW50aWNhdGlvbi1tb2Rlcy1lbnVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxtQkFLWDtBQUxELFdBQVksbUJBQW1CO0lBQzNCLHNDQUFlLENBQUE7SUFDZiwwQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBdUIsQ0FBQTtJQUN2QiwwQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUs5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEF1dGhlbnRpY2F0aW9uTW9kZXMge1xyXG4gICAgRm9ybXMgPSAnRm9ybXMnLFxyXG4gICAgVUFFUGFzcyA9IFwiVUFFUGFzc1wiLFxyXG4gICAgV2luZG93c0FEID0gXCJXaW5kb3dzQURcIixcclxuICAgIEF6dXJlQUQgPSBcIkF6dXJlQURcIixcclxufSJdfQ==
@@ -1,4 +0,0 @@
1
- export * from './authentication';
2
- export * from './models';
3
- export * from './services';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcyc7XHJcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export class User {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvbW9kZWxzL1VzZXJNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sSUFBSTtDQU1oQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVc2VyIHtcclxuXHJcbiAgdG9rZW5fdHlwZTogc3RyaW5nO1xyXG4gIGFjY2Vzc190b2tlbjogc3RyaW5nO1xyXG4gIHByb2ZpbGU6IGFueTtcclxuICBleHBpcmVzX2F0OiBhbnlcclxufVxyXG4iXX0=
@@ -1,3 +0,0 @@
1
- export class AreaModel {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL21vZGVscy9hcmVhLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0NBR3JCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFyZWFNb2RlbCB7XHJcbiAgcGVybWlzc2lvblNldElEOiBudW1iZXJcclxuICBhcmVhVXJsOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -1,3 +0,0 @@
1
- export class ErrorModel {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9tb2RlbHMvZXJyb3ItbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFVBQVU7Q0FJdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXJyb3JNb2RlbCB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBjb250cm9sTmFtZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,5 +0,0 @@
1
- export * from './area-model';
2
- export * from './error-model';
3
- export * from './request-options-model';
4
- export * from './speech-language';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcmVhLW1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVxdWVzdC1vcHRpb25zLW1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcGVlY2gtbGFuZ3VhZ2UnO1xyXG4iXX0=
@@ -1,11 +0,0 @@
1
- export class RequestOptionsModel {
2
- constructor() {
3
- this.disableSuccessNotification = false;
4
- this.disableBlockUI = false;
5
- this.disableErrorHandler = false;
6
- this.responseType = "";
7
- this.formGroup = null;
8
- this.castResponsetoClass = true;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1vcHRpb25zLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvbW9kZWxzL3JlcXVlc3Qtb3B0aW9ucy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sbUJBQW1CO0lBQWhDO1FBQ0UsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQzVDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUdyQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQTtRQUN0QixjQUFTLEdBQWMsSUFBSSxDQUFBO1FBQzNCLHdCQUFtQixHQUFZLElBQUksQ0FBQztJQUN0QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0T3B0aW9uc01vZGVsIHtcclxuICBkaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc2FibGVCbG9ja1VJOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZUVycm9ySGFuZGxlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1c3RvbVN1Y2Nlc3NNZXNzYWdlOiBzdHJpbmc7XHJcbiAgY3VzdG9tRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VUeXBlOiBhbnkgPSBcIlwiXHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBudWxsXHJcbiAgY2FzdFJlc3BvbnNldG9DbGFzczogYm9vbGVhbiA9IHRydWU7XHJcbn1cclxuIl19
@@ -1,3 +0,0 @@
1
- export class LanguageDTO {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLWxhbmd1YWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvbW9kZWxzL3NwZWVjaC1sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztDQWF2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMYW5ndWFnZURUTyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHByZWZpeDogc3RyaW5nO1xyXG4gIGRpYWxlY3Q6IHN0cmluZztcclxuICBlbmdsaXNoTmFtZTogc3RyaW5nO1xyXG4gIGFyYWJpY05hbWU6IHN0cmluZztcclxuICBuYXRpdmVOYW1lOiBzdHJpbmc7XHJcbiAgZGV0ZWN0ZWQ6IHN0cmluZztcclxuICBzZWFyY2hpbmc6IHN0cmluZztcclxuICBlbGV2YXRpbmc6IHN0cmluZztcclxuICB0cmFuc2xhdGluZzogc3RyaW5nO1xyXG4gIGdlbmVyYXRpbmdBbnN3ZXJzRm9yWW91OiBzdHJpbmc7XHJcbiAgaXNSVEw6IGJvb2xlYW47XHJcbn1cclxuIl19