@igo2/auth 1.9.0 → 1.10.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/bundles/igo2-auth.umd.js +56 -8
- package/bundles/igo2-auth.umd.js.map +1 -1
- package/esm2015/lib/auth-form/auth-facebook.component.js +1 -1
- package/esm2015/lib/auth-form/auth-form.component.js +1 -1
- package/esm2015/lib/auth-form/auth-google.component.js +1 -1
- package/esm2015/lib/auth-form/auth-intern.component.js +1 -1
- package/esm2015/lib/auth-form/auth-microsoft.component.js +1 -1
- package/esm2015/lib/auth-form/index.js +1 -1
- package/esm2015/lib/auth-routing.module.js +1 -1
- package/esm2015/lib/shared/admin.guard.js +1 -1
- package/esm2015/lib/shared/auth-msalBroadcastServiceb2c.service.js +1 -1
- package/esm2015/lib/shared/auth.guard.js +1 -1
- package/esm2015/lib/shared/auth.interceptor.js +36 -1
- package/esm2015/lib/shared/auth.interface.js +1 -1
- package/esm2015/lib/shared/logged.guard.js +1 -1
- package/esm2015/lib/shared/profils.guard.js +1 -1
- package/esm2015/lib/shared/protected.directive.js +1 -1
- package/esm2015/lib/shared/storage.interface.js +1 -1
- package/esm2015/public_api.js +1 -1
- package/fesm2015/igo2-auth.js +35 -0
- package/fesm2015/igo2-auth.js.map +1 -1
- package/lib/shared/auth.interceptor.d.ts +3 -0
- package/lib/shared/auth.interface.d.ts +6 -0
- package/package.json +9 -8
package/fesm2015/igo2-auth.js
CHANGED
|
@@ -1177,9 +1177,18 @@ class AuthInterceptor {
|
|
|
1177
1177
|
get hostsWithCredentials() {
|
|
1178
1178
|
return this.config.getConfig('auth.hostsWithCredentials') || [];
|
|
1179
1179
|
}
|
|
1180
|
+
get hostsWithAuthByKey() {
|
|
1181
|
+
return this.config.getConfig('auth.hostsByKey') || [];
|
|
1182
|
+
}
|
|
1180
1183
|
intercept(originalReq, next) {
|
|
1181
1184
|
const withCredentials = this.handleHostsWithCredentials(originalReq.url);
|
|
1182
1185
|
let req = originalReq.clone();
|
|
1186
|
+
const hostWithKey = this.handleHostsAuthByKey(originalReq.url);
|
|
1187
|
+
if (hostWithKey) {
|
|
1188
|
+
req = req.clone({
|
|
1189
|
+
params: req.params.set(hostWithKey.key, hostWithKey.value)
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1183
1192
|
if (withCredentials) {
|
|
1184
1193
|
req = originalReq.clone({
|
|
1185
1194
|
withCredentials
|
|
@@ -1232,6 +1241,21 @@ class AuthInterceptor {
|
|
|
1232
1241
|
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
|
|
1233
1242
|
return true;
|
|
1234
1243
|
}
|
|
1244
|
+
alterUrlWithKeyAuth(url) {
|
|
1245
|
+
const hostWithKey = this.handleHostsAuthByKey(url);
|
|
1246
|
+
let interceptedUrl = url;
|
|
1247
|
+
if (hostWithKey) {
|
|
1248
|
+
const urlDecomposed = interceptedUrl.split(/[?&]/);
|
|
1249
|
+
let urlWithKeyAdded = urlDecomposed.shift();
|
|
1250
|
+
const paramsToKeep = urlDecomposed.filter(p => p.length !== 0);
|
|
1251
|
+
paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);
|
|
1252
|
+
if (paramsToKeep.length) {
|
|
1253
|
+
urlWithKeyAdded += '?' + paramsToKeep.join('&');
|
|
1254
|
+
}
|
|
1255
|
+
return urlWithKeyAdded;
|
|
1256
|
+
}
|
|
1257
|
+
return;
|
|
1258
|
+
}
|
|
1235
1259
|
handleHostsWithCredentials(reqUrl) {
|
|
1236
1260
|
let withCredentials = false;
|
|
1237
1261
|
for (const hostWithCredentials of this.hostsWithCredentials) {
|
|
@@ -1243,6 +1267,17 @@ class AuthInterceptor {
|
|
|
1243
1267
|
}
|
|
1244
1268
|
return withCredentials;
|
|
1245
1269
|
}
|
|
1270
|
+
handleHostsAuthByKey(reqUrl) {
|
|
1271
|
+
let hostWithKey;
|
|
1272
|
+
for (const hostWithAuthByKey of this.hostsWithAuthByKey) {
|
|
1273
|
+
const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);
|
|
1274
|
+
if (domainRegex.test(reqUrl)) {
|
|
1275
|
+
hostWithKey = { key: hostWithAuthByKey.keyProperty, value: hostWithAuthByKey.keyValue };
|
|
1276
|
+
break;
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
return hostWithKey;
|
|
1280
|
+
}
|
|
1246
1281
|
refreshToken() {
|
|
1247
1282
|
const jwt = this.tokenService.decode();
|
|
1248
1283
|
const currentTime = new Date().getTime() / 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-auth.js","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.html","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.html","../../../packages/auth/src/lib/shared/auth-msalServiceb2c.service..ts","../../../packages/auth/src/lib/shared/auth-msalBroadcastServiceb2c.service.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.html","../../../packages/auth/src/lib/auth-form/auth-facebook.component.ts","../../../packages/auth/src/lib/auth-form/auth-facebook.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.ts","../../../packages/auth/src/lib/auth-form/auth-form.component.html","../../../packages/auth/src/lib/auth-form/auth-form.component.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/auth-microsoft.provider.ts","../../../packages/auth/src/lib/shared/protected.directive.ts","../../../packages/auth/src/lib/shared/storage.service.ts","../../../packages/auth/src/lib/auth-routing.module.ts","../../../packages/auth/src/lib/auth.module.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\nimport jwtDecode from 'jwt-decode';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthOptions } from './auth.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n private options: AuthOptions;\n\n constructor(private injector: Injector) {}\n\n set(token: string) {\n localStorage.setItem(this.tokenKey, token);\n }\n\n remove() {\n localStorage.removeItem(this.tokenKey);\n }\n\n get(): string {\n return localStorage.getItem(this.tokenKey);\n }\n\n decode() {\n const token = this.get();\n if (!token) {\n return;\n }\n return jwtDecode(token);\n }\n\n isExpired() {\n const jwt = this.decode();\n const currentTime = new Date().getTime() / 1000;\n if (jwt && currentTime < jwt.exp) {\n return false;\n }\n return true;\n }\n\n private get tokenKey() {\n const config = this.injector.get<ConfigService>(ConfigService);\n this.options = config.getConfig('auth') || {};\n return this.options.tokenKey;\n }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\n\nimport { Observable, BehaviorSubject, of } from 'rxjs';\nimport { tap, catchError } from 'rxjs/operators';\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\n\nimport { ConfigService, LanguageService, MessageService } from '@igo2/core';\nimport { Base64 } from '@igo2/utils';\n\nimport { User, IInfosUser } from './auth.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n private anonymous = false;\n\n get hasAuthService() {\n return this.config.getConfig('auth.url') !== undefined;\n }\n\n constructor(\n private http: HttpClient,\n private tokenService: TokenService,\n private config: ConfigService,\n private languageService: LanguageService,\n private messageService: MessageService,\n @Optional() private router: Router\n ) {\n this.authenticate$.next(this.authenticated);\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n username,\n password: this.encodePassword(password)\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginWithToken(token: string, type: string, infosUser?: IInfosUser): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginAnonymous(): Observable<boolean> {\n this.anonymous = true;\n this.logged$.next(true);\n return of(true);\n }\n\n refresh(): Observable<void> {\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/refresh`, {}).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): Observable<boolean> {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\n return of(true);\n }\n\n isAuthenticated(): boolean {\n return !this.tokenService.isExpired();\n }\n\n getToken(): string {\n return this.tokenService.get();\n }\n\n decodeToken() {\n if (this.isAuthenticated()) {\n return this.tokenService.decode();\n }\n return false;\n }\n\n goToRedirectUrl() {\n if (!this.router) {\n return;\n }\n const redirectUrl = this.redirectUrl || this.router.url;\n\n const options = this.config.getConfig('auth') || {};\n if (redirectUrl === options.loginRoute) {\n const homeRoute = options.homeRoute || '/';\n this.router.navigateByUrl(homeRoute);\n } else if (redirectUrl) {\n this.router.navigateByUrl(redirectUrl);\n }\n }\n\n getUserInfo(): Observable<User> {\n const url = this.config.getConfig('auth.url') + '/info';\n return this.http.get<User>(url);\n }\n\n getProfils(): Observable<{ profils: string[] }> {\n const url = this.config.getConfig('auth.url');\n return this.http.get<{ profils: string[] }>(`${url}/profils`);\n }\n\n updateUser(user: User): Observable<User> {\n const url = this.config.getConfig('auth.url');\n return this.http.patch<User>(url, user);\n }\n\n private encodePassword(password: string) {\n return Base64.encode(password);\n }\n\n // authenticated or anonymous\n get logged(): boolean {\n return this.authenticated || this.isAnonymous;\n }\n\n get isAnonymous(): boolean {\n return this.anonymous;\n }\n\n get authenticated(): boolean {\n return this.isAuthenticated();\n }\n\n get isAdmin(): boolean {\n const token = this.decodeToken();\n if (token && token.user && token.user.isAdmin) {\n return true;\n }\n return false;\n }\n\n private loginCall(body, headers) {\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/login`, body, { headers }).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n const tokenDecoded = this.decodeToken();\n if (tokenDecoded && tokenDecoded.user) {\n if (tokenDecoded.user.locale) {\n this.languageService.setLanguage(tokenDecoded.user.locale);\n }\n if (tokenDecoded.user.isExpired) {\n this.languageService.translate\n .get('igo.auth.error.Password expired')\n .subscribe((expiredAlert) =>\n this.messageService.alert(expiredAlert)\n );\n }\n }\n this.authenticate$.next(true);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n}\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ApplicationRef,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { ConfigService, LanguageService } from '@igo2/core';\r\nimport { AuthGoogleOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-google',\r\n templateUrl: './auth-google.component.html',\r\n styleUrls: ['./auth-google.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthGoogleComponent {\r\n private options: AuthGoogleOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private languageService: LanguageService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.google') || {};\r\n\r\n if (this.options.apiKey && this.options.clientId) {\r\n this.loadSDKGoogle();\r\n this.loadPlatform();\r\n } else {\r\n console.warn('Google authentification needs \"apiKey\" and \"clientId\" options');\r\n }\r\n }\r\n\r\n public handleSignInClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signIn();\r\n }\r\n\r\n public handleSignOutClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signOut();\r\n }\r\n\r\n private handleClientLoad() {\r\n (window as any).gapi.load('client:auth2', () => this.initClient());\r\n }\r\n\r\n private initClient() {\r\n (window as any).gapi.client\r\n .init({\r\n apiKey: this.options.apiKey,\r\n clientId: this.options.clientId,\r\n discoveryDocs: [\r\n 'https://people.googleapis.com/$discovery/rest?version=v1'\r\n ],\r\n scope: 'profile'\r\n })\r\n .then(() => {\r\n this.handleSignOutClick();\r\n this.updateTextButton();\r\n (window as any).gapi.auth2.getAuthInstance().isSignedIn.listen(rep => {\r\n this.updateSigninStatus(rep);\r\n });\r\n });\r\n }\r\n\r\n private updateSigninStatus(isSignedIn) {\r\n this.updateTextButton();\r\n if (isSignedIn) {\r\n this.loginGoogle((window as any).gapi.client.getToken().access_token);\r\n }\r\n }\r\n\r\n private updateTextButton() {\r\n const btn = document.querySelector('span[id^=\"not_signed_\"]');\r\n if (btn && this.languageService.getLanguage() !== 'en') {\r\n if (btn.innerHTML === 'Sign in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');\r\n } else if (btn.innerHTML === 'Signed in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');\r\n }\r\n }\r\n }\r\n\r\n private loginGoogle(token) {\r\n this.authService.loginWithToken(token, 'google').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKGoogle() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-jssdk';\r\n js.src = 'https://apis.google.com/js/api.js';\r\n js.onload = () => {\r\n this.handleClientLoad();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n\r\n private loadPlatform() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-platform';\r\n js.src = 'https://apis.google.com/js/platform.js';\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div class=\"g-signin2 google-login-button\" data-height=\"40\" data-width=\"265\" data-longtitle=\"true\">\r\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter,\n Inject\n} from '@angular/core';\nimport { MsalBroadcastService, MsalService, MSAL_GUARD_CONFIG} from '@azure/msal-angular';\nimport {\n InteractionStatus,\n AuthenticationResult,\n PublicClientApplication,\n PopupRequest,\n SilentRequest,\n InteractionRequiredAuthError\n} from '@azure/msal-browser';\nimport { ConfigService } from '@igo2/core';\nimport { AuthMicrosoftOptions, MSPMsalGuardConfiguration } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'igo-auth-microsoft',\n templateUrl: './auth-microsoft.component.html',\n styleUrls: ['./auth-microsoft.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthMicrosoftComponent {\n private options: AuthMicrosoftOptions;\n private readonly _destroying$ = new Subject<void>();\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n private broadcastService: MsalBroadcastService;\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private appRef: ApplicationRef,\n private msalService: MsalService,\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MSPMsalGuardConfiguration[],\n ) {\n this.options = this.config.getConfig('auth.microsoft') || {};\n\n this.msalService.instance = new PublicClientApplication({\n auth: this.options,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n this.broadcastService = new MsalBroadcastService(this.msalService.instance, this.msalService);\n\n if (this.options.clientId) {\n this.broadcastService.inProgress$\n .pipe(\n filter((status: InteractionStatus) => status === InteractionStatus.None),\n takeUntil(this._destroying$)\n )\n .subscribe(() => {\n this.checkAccount();\n });\n\n } else {\n console.warn('Microsoft authentification needs \"clientId\" option');\n }\n }\n\n public loginMicrosoft() {\n this.msalService.loginPopup({...this.getConf().authRequest} as PopupRequest)\n .subscribe((response: AuthenticationResult) => {\n this.msalService.instance.setActiveAccount(response.account);\n this.checkAccount();\n });\n }\n\n private checkAccount() {\n this.msalService.instance\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\n .then((response: AuthenticationResult) => {\n const tokenAccess = response.accessToken;\n const tokenId = response.idToken;\n this.authService.loginWithToken(tokenAccess, 'microsoft', { tokenId } ).subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n // fallback to interaction when silent call fails\n return this.msalService.acquireTokenPopup(this.getConf().authRequest as SilentRequest);\n }\n console.log(error);\n }).catch(error => {\n console.log('Silent token fails');\n });\n }\n\n private getConf(): MSPMsalGuardConfiguration {\n return this.msalGuardConfig.filter(conf => conf.type === 'add')[0];\n }\n}\n","<button class=\"microsoft-login-button\" mat-raised-button (click)=\"loginMicrosoft()\">\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{'igo.auth.microsoft.login' | translate}}\r\n</button>\r\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport {\n IPublicClientApplication,\n EndSessionRequest,\n EndSessionPopupRequest,\n AuthenticationResult,\n RedirectRequest,\n SilentRequest,\n PopupRequest,\n SsoSilentRequest,\n Logger,\n WrapperSKU\n} from '@azure/msal-browser';\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\nimport { Observable, from } from 'rxjs';\nimport { IMsalService } from '@azure/msal-angular';\n\n@Injectable()\nexport class MsalServiceb2c implements IMsalService {\n private redirectHash: string;\n private logger: Logger;\n private name = '@azure/msal-angular';\n private version = '2.0.0-beta.2';\n constructor(\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\n private location: Location\n ) {\n const hash = this.location.path(true).split('#').pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);\n }\n\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\n return from(this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\n return from(this.instance.acquireTokenRedirect(request));\n }\n acquireTokenSilent(silentRequest: SilentRequest): Observable<AuthenticationResult> {\n return from(this.instance.acquireTokenSilent(silentRequest));\n }\n handleRedirectObservable(hash?: string): Observable<AuthenticationResult> {\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\n }\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\n return from(this.instance.loginPopup(request));\n }\n loginRedirect(request?: RedirectRequest): Observable<void> {\n return from(this.instance.loginRedirect(request));\n }\n logout(logoutRequest?: EndSessionRequest): Observable<void> {\n return from(this.instance.logout(logoutRequest));\n }\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\n return from(this.instance.logoutRedirect(logoutRequest));\n }\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\n return from(this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\n return from(this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger(): Logger {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(this.name, this.version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger: Logger): void {\n this.logger = logger.clone(this.name, this.version);\n this.instance.setLogger(logger);\n }\n\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\nimport { EventMessage, EventMessageUtils, IPublicClientApplication, InteractionStatus } from '@azure/msal-browser';\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\n\n@Injectable()\nexport class MsalBroadcastServiceb2c {\n private _msalSubject: Subject<EventMessage>;\n public msalSubject$: Observable<EventMessage>;\n private _inProgress: BehaviorSubject<InteractionStatus>;\n public inProgress$: Observable<InteractionStatus>;\n\n constructor(\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\n private authService: MsalServiceb2c\n ) {\n this._msalSubject = new Subject<EventMessage>();\n this.msalSubject$ = this._msalSubject.asObservable();\n\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject<InteractionStatus>(InteractionStatus.Startup);\n this.inProgress$ = this._inProgress.asObservable();\n\n this.msalInstance.addEventCallback((message: EventMessage) => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\n if (status !== null) {\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress to ${status}`);\n this._inProgress.next(status);\n }\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter,\n Inject\n} from '@angular/core';\n\nimport { MSAL_GUARD_CONFIG } from '@azure/msal-angular';\nimport {\n InteractionStatus,\n AuthenticationResult,\n PublicClientApplication,\n PopupRequest,\n SilentRequest,\n InteractionRequiredAuthError\n} from '@azure/msal-browser';\nimport { ConfigService } from '@igo2/core';\nimport { AuthMicrosoftb2cOptions, MSPMsalGuardConfiguration } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { MsalBroadcastServiceb2c } from '../shared/auth-msalBroadcastServiceb2c.service';\nimport { MsalServiceb2c } from '../shared/auth-msalServiceb2c.service.';\n\n@Component({\n selector: 'igo-auth-microsoftb2c',\n templateUrl: './auth-microsoftb2c.component.html',\n styleUrls: ['./auth-microsoftb2c.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthMicrosoftb2cComponent {\n private options: AuthMicrosoftb2cOptions;\n private readonly _destroying$ = new Subject<void>();\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n private broadcastService: MsalBroadcastServiceb2c;\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private appRef: ApplicationRef,\n private msalService: MsalServiceb2c,\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MSPMsalGuardConfiguration[],\n ) {\n\n this.options = this.config.getConfig('auth.microsoftb2c') || {};\n\n this.msalService.instance = new PublicClientApplication({\n auth: this.options.browserAuthOptions,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n this.broadcastService = new MsalBroadcastServiceb2c(this.msalService.instance, this.msalService);\n\n if (this.options.browserAuthOptions.clientId) {\n this.broadcastService.inProgress$\n .pipe(\n filter((status: InteractionStatus) => status === InteractionStatus.None),\n takeUntil(this._destroying$)\n )\n .subscribe(() => {\n this.checkAccount();\n });\n\n } else {\n console.warn('Microsoft authentification needs \"clientId\" option');\n }\n }\n\n public loginMicrosoftb2c() {\n this.msalService.loginPopup({...this.getConf().authRequest} as PopupRequest)\n .subscribe((response: AuthenticationResult) => {\n this.msalService.instance.setActiveAccount(response.account);\n this.checkAccount();\n });\n }\n\n private checkAccount() {\n this.msalService.instance\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\n .then((response: AuthenticationResult) => {\n const token = response.idToken;\n this.authService.loginWithToken(token, 'microsoftb2c').subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n // fallback to interaction when silent call fails\n return this.msalService.acquireTokenPopup(this.getConf().authRequest as SilentRequest);\n }\n }).catch(error => {\n console.log('Silent token fails');\n });\n }\n\n private getConf(): MSPMsalGuardConfiguration {\n return this.msalGuardConfig.filter(conf => conf.type === 'b2c')[0];\n }\n}\n","<button class=\"microsoft-login-button\" mat-raised-button (click)=\"loginMicrosoftb2c()\">\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n {{'igo.auth.microsoftb2c.login' | translate}}\n</button>\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ApplicationRef,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthFacebookOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-facebook',\r\n templateUrl: './auth-facebook.component.html',\r\n styleUrls: ['./auth-facebook.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthFacebookComponent {\r\n private options: AuthFacebookOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.facebook') || {};\r\n\r\n if (this.options.appId) {\r\n this.loadSDKFacebook();\r\n } else {\r\n console.warn('Facebook authentification needs \"appId\" option');\r\n }\r\n }\r\n\r\n private subscribeEvents() {\r\n (window as any).FB.Event.subscribe('auth.statusChange', rep => {\r\n this.statusChangeCallback(rep);\r\n });\r\n }\r\n\r\n private statusChangeCallback(response) {\r\n if (response.status === 'connected') {\r\n const accessToken = response.authResponse.accessToken;\r\n this.loginFacebook(accessToken);\r\n }\r\n }\r\n\r\n private loginFacebook(token) {\r\n this.authService.loginWithToken(token, 'facebook').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKFacebook() {\r\n if (document.getElementById('facebook-jssdk')) {\r\n return;\r\n }\r\n\r\n const urlSDK =\r\n 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';\r\n\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'facebook-jssdk';\r\n js.src = `${urlSDK}&appId=${this.options.appId}`;\r\n js.onload = () => {\r\n this.subscribeEvents();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div scope=\"public_profile,email\"\r\n class=\"fb-login-button\" data-max-rows=\"1\" data-size=\"large\"\r\n data-button-type=\"login_with\" data-show-faces=\"false\"\r\n data-auto-logout-link=\"false\" data-use-continue-as=\"false\">\r\n</div>\r\n","<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <input matInput required placeholder=\"{{'igo.auth.user' | translate}}\" formControlName=\"username\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <input matInput required type=\"password\" placeholder=\"{{'igo.auth.password' | translate}}\" formControlName=\"password\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid || loading\">{{'igo.auth.login' | translate}}</button>\r\n <button *ngIf=\"allowAnonymous\" mat-raised-button class=\"anonymous\" type=\"button\" [disabled]=\"loading\" (click)=\"loginAnonymous()\">\r\n {{'igo.auth.accessAnonymous' | translate }}\r\n </button>\r\n <div *ngIf=\"error\">\r\n <br/>\r\n <font size=\"3\" color=\"red\">{{error}}</font>\r\n </div>\r\n</form>\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Validators, FormGroup, FormBuilder } from '@angular/forms';\r\n\r\nimport { AuthService } from '../shared/auth.service';\r\nimport { LanguageService } from '@igo2/core';\r\n\r\n@Component({\r\n selector: 'igo-auth-intern',\r\n templateUrl: './auth-intern.component.html',\r\n styleUrls: ['./auth-intern.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthInternComponent {\r\n @Input()\r\n get allowAnonymous(): boolean {\r\n return this._allowAnonymous;\r\n }\r\n set allowAnonymous(value: boolean) {\r\n this._allowAnonymous = value;\r\n }\r\n private _allowAnonymous = true;\r\n\r\n public error = '';\r\n public form: FormGroup;\r\n public loading = false;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private languageService: LanguageService,\r\n fb: FormBuilder\r\n ) {\r\n this.form = fb.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n }\r\n\r\n loginUser(values: any) {\r\n this.loading = true;\r\n this.auth.login(values.username, values.password).subscribe(\r\n () => {\r\n this.login.emit(true);\r\n this.loading = false;\r\n },\r\n (error: any) => {\r\n try {\r\n this.languageService.translate\r\n .get('igo.auth.error.' + error.error.message)\r\n .subscribe(errorMsg => (this.error = errorMsg));\r\n } catch (e) {\r\n this.error = error.error.message;\r\n }\r\n this.loading = false;\r\n }\r\n );\r\n return false;\r\n }\r\n\r\n loginAnonymous() {\r\n this.auth.loginAnonymous().subscribe(() => {\r\n this.login.emit(true);\r\n });\r\n }\r\n}\r\n","<div *ngIf=\"visible\">\n <div *ngIf=\"!auth.logged && backgroundDisable\" class=\"backgroundDisable\"></div>\n\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\n <h1>{{'igo.auth.connection' | translate}}</h1>\n\n <igo-auth-google\n *ngIf=\"options.google && options.google.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-google>\n <igo-auth-microsoft\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-microsoft>\n <igo-auth-microsoftb2c\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-microsoftb2c>\n <igo-auth-facebook\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-facebook>\n <igo-auth-intern\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\n [allowAnonymous]=\"options.allowAnonymous\"\n (login)=\"onLogin()\">\n </igo-auth-intern>\n </div>\n\n <div *ngIf=\"auth.logged && showAlreadyConnectedDiv\" class=\"login center-block\">\n <p>{{'igo.auth.welcome' | translate: user}}</p>\n <button mat-raised-button type=\"button\" (click)=\"logout()\">{{'igo.auth.signOut' | translate}}</button>\n </div>\n\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\n <p>{{'igo.auth.deconnection' | translate}}</p>\n <button *ngIf=\"options.homeRoute\" mat-raised-button type=\"button\" (click)=\"home()\">{{'igo.auth.home' | translate}}</button>\n </div>\n\n</div>\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n Input,\r\n Optional,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-form',\r\n templateUrl: './auth-form.component.html',\r\n styleUrls: ['./auth-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthFormComponent implements OnInit {\r\n @Input()\r\n get backgroundDisable(): boolean {\r\n if (this.isLogoutRoute || this.isLogoutRoute) {\r\n return false;\r\n }\r\n return this._backgroundDisable;\r\n }\r\n set backgroundDisable(value: boolean) {\r\n this._backgroundDisable = value.toString() === 'true';\r\n }\r\n private _backgroundDisable = true;\r\n\r\n @Input()\r\n get hasAlreadyConnectedDiv(): boolean {\r\n return this._hasAlreadyConnectedDiv;\r\n }\r\n set hasAlreadyConnectedDiv(value: boolean) {\r\n this._hasAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _hasAlreadyConnectedDiv = true;\r\n\r\n @Input()\r\n get hasLogoutDiv(): boolean {\r\n return this._hasLogoutDiv;\r\n }\r\n set hasLogoutDiv(value: boolean) {\r\n this._hasLogoutDiv = value.toString() === 'true';\r\n }\r\n private _hasLogoutDiv = true;\r\n\r\n @Input()\r\n get showAlreadyConnectedDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasAlreadyConnectedDiv;\r\n }\r\n return this._showAlreadyConnectedDiv;\r\n }\r\n set showAlreadyConnectedDiv(value: boolean) {\r\n this._showAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _showAlreadyConnectedDiv = false;\r\n\r\n @Input()\r\n get showLogoutDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasLogoutDiv;\r\n }\r\n return this._showLogoutDiv;\r\n }\r\n set showLogoutDiv(value: boolean) {\r\n this._showLogoutDiv = value.toString() === 'true';\r\n }\r\n private _showLogoutDiv = false;\r\n\r\n get showLoginDiv(): boolean {\r\n if (!this.isLogoutRoute) {\r\n return true;\r\n }\r\n }\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public options: AuthOptions;\r\n public user;\r\n\r\n public visible = true;\r\n\r\n private isLoginRoute: boolean;\r\n private isLogoutRoute: boolean;\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private config: ConfigService,\r\n @Optional() private router: Router\r\n ) {\r\n this.options = this.config.getConfig('auth') || {};\r\n this.visible = Object.getOwnPropertyNames(this.options).length !== 0;\r\n }\r\n\r\n public ngOnInit() {\r\n this.analyzeRoute();\r\n this.getName();\r\n }\r\n\r\n public onLogin() {\r\n this.auth.goToRedirectUrl();\r\n this.getName();\r\n this.login.emit(true);\r\n }\r\n\r\n public logout() {\r\n this.auth.logout().subscribe(() => {\r\n this.user = undefined;\r\n if (this.router) {\r\n if (this.options.logoutRoute) {\r\n this.router.navigate([this.options.logoutRoute]);\r\n } else if (this.options.homeRoute) {\r\n this.router.navigate([this.options.homeRoute]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public home() {\r\n if (this.router && this.options.homeRoute) {\r\n this.router.navigate([this.options.homeRoute]);\r\n }\r\n }\r\n\r\n private getName() {\r\n const tokenDecoded = this.auth.decodeToken();\r\n if (tokenDecoded) {\r\n this.user = {\r\n name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId\r\n };\r\n }\r\n }\r\n\r\n private analyzeRoute() {\r\n if (!this.router) {\r\n return;\r\n }\r\n\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationStart))\r\n .subscribe((changeEvent: any) => {\r\n if (changeEvent.url) {\r\n const currentRoute = changeEvent.url;\r\n const logoutRoute = this.options.logoutRoute;\r\n const loginRoute = this.options.loginRoute;\r\n\r\n this.isLogoutRoute = currentRoute === logoutRoute;\r\n this.isLoginRoute = currentRoute === loginRoute;\r\n\r\n if (this.isLogoutRoute) {\r\n this.auth.logout();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoggedGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.logged) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth');\r\n if (authConfig && authConfig.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.authenticated) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth');\r\n if (authConfig && authConfig.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const token = this.authService.decodeToken();\r\n if (token && token.user && token.user.isAdmin) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth');\r\n if (authConfig && authConfig.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfilsGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.authService.getProfils().pipe(\r\n map((profils: { profils: string[] }) => {\r\n const authConfig = this.config.getConfig('auth');\r\n if (\r\n profils &&\r\n profils.profils &&\r\n profils.profils.some(v => authConfig.profilsGuard.indexOf(v) !== -1)\r\n ) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n if (authConfig && authConfig.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpInterceptor,\n HttpHandler,\n HttpRequest\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Md5 } from 'ts-md5';\n\nimport { ConfigService } from '@igo2/core';\nimport { TokenService } from './token.service';\nimport { WithCredentialsOptions } from './auth.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n private refreshInProgress = false;\n\n private get trustHosts() {\n const trustHosts = this.config.getConfig('auth.trustHosts') || [];\n trustHosts.push(window.location.hostname);\n return trustHosts;\n }\n\n private get hostsWithCredentials(): WithCredentialsOptions[] {\n return this.config.getConfig('auth.hostsWithCredentials') || [];\n }\n\n constructor(\n private config: ConfigService,\n private tokenService: TokenService,\n private http: HttpClient\n ) {}\n\n intercept(\n originalReq: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\n let req = originalReq.clone();\n if (withCredentials) {\n req = originalReq.clone({\n withCredentials\n });\n }\n this.refreshToken();\n const token = this.tokenService.get();\n const element = document.createElement('a');\n element.href = req.url;\n if (element.host === '') {\n element.href = element.href; // FIX IE11, DO NOT REMOVE\n }\n\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return next.handle(req);\n }\n\n const authHeader = `Bearer ${token}`;\n let authReq = req.clone({\n headers: req.headers.set('Authorization', authHeader)\n });\n\n const tokenDecoded: any = this.tokenService.decode();\n if (\n authReq.params.get('_i') === 'true' &&\n tokenDecoded &&\n tokenDecoded.user &&\n tokenDecoded.user.sourceId\n ) {\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\n authReq = authReq.clone({\n params: authReq.params.set('_i', hashUser)\n });\n } else if (authReq.params.get('_i') === 'true') {\n authReq = authReq.clone({\n params: authReq.params.delete('_i')\n });\n }\n\n return next.handle(authReq);\n }\n\n interceptXhr(xhr, url: string): boolean {\n const withCredentials = this.handleHostsWithCredentials(url);\n if (withCredentials) {\n xhr.withCredentials = withCredentials;\n return true;\n }\n\n this.refreshToken();\n const element = document.createElement('a');\n element.href = url;\n\n const token = this.tokenService.get();\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return false;\n }\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\n return true;\n }\n\n private handleHostsWithCredentials(reqUrl: string) {\n let withCredentials = false;\n for (const hostWithCredentials of this.hostsWithCredentials) {\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n withCredentials = hostWithCredentials.withCredentials !== undefined ? hostWithCredentials.withCredentials : undefined;\n break;\n }\n }\n return withCredentials;\n }\n\n refreshToken() {\n const jwt = this.tokenService.decode();\n const currentTime = new Date().getTime() / 1000;\n\n if (\n !this.refreshInProgress &&\n jwt &&\n currentTime < jwt.exp &&\n currentTime > jwt.exp - 1800\n ) {\n this.refreshInProgress = true;\n\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/refresh`, {}).subscribe(\n (data: any) => {\n this.tokenService.set(data.token);\n this.refreshInProgress = false;\n },\n err => {\n err.error.caught = true;\n return err;\n }\n );\n }\n }\n}\n","import {\n MSAL_GUARD_CONFIG,\n MSAL_INSTANCE,\n MsalService,\n} from '@azure/msal-angular';\n\nimport {\n PublicClientApplication,\n InteractionType\n} from '@azure/msal-browser';\n\nimport { ConfigService } from '@igo2/core';\n\nimport { BrowserAuthOptions } from '@azure/msal-browser';\n\nimport { AuthMicrosoftOptions, MSPMsalGuardConfiguration } from './auth.interface';\n\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\n\nexport function MSALConfigFactory(config: ConfigService): PublicClientApplication {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoft') || {};\n\n msConf.redirectUri = msConf.redirectUri || window.location.href;\n msConf.authority = msConf.authority || 'https://login.microsoftonline.com/organizations';\n\n const myMsalObj = new PublicClientApplication({\n auth: msConf,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n return myMsalObj;\n}\n\nexport function MSALConfigFactoryb2c(config: ConfigService): PublicClientApplication {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoftb2c.browserAuthOptions') || {};\n msConf.redirectUri = msConf.redirectUri || window.location.href;\n msConf.authority = msConf.authority || 'https://login.microsoftonline.com/organizations';\n\n const myMsalObj = new PublicClientApplication({\n auth: msConf,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n return myMsalObj;\n}\n\nexport function MSALAngularConfigFactory(config: ConfigService): MSPMsalGuardConfiguration {\n\n const msConf: AuthMicrosoftOptions = config.getConfig('auth.microsoft') || {};\n\n return {\n interactionType: InteractionType.Popup,\n authRequest: {\n scopes: ['user.read'],\n loginHint: 'todo',\n },\n type: 'add'\n };\n}\n\nexport function MSALAngularConfigFactoryb2c(config: ConfigService): MSPMsalGuardConfiguration {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoftb2c.browserAuthOptions') || {};\n\n return {\n interactionType: InteractionType.Popup,\n authRequest: {\n scopes: [msConf.clientId]\n },\n type: 'b2c'\n };\n}\n\nexport function provideAuthMicrosoft(type?: string) {\n if (type === 'b2c') {\n return [\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALConfigFactoryb2c,\n deps: [ConfigService]\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALAngularConfigFactoryb2c,\n deps: [ConfigService],\n multi: true\n },\n MsalServiceb2c\n ];\n } else {\n return [\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALConfigFactory,\n deps: [ConfigService]\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALAngularConfigFactory,\n deps: [ConfigService],\n multi: true\n },\n MsalService\n ];\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Directive({\r\n selector: '[igoProtected]'\r\n})\r\nexport class ProtectedDirective {\r\n constructor(authentication: AuthService, el: ElementRef) {\r\n if (!authentication.isAuthenticated()) {\r\n el.nativeElement.parentNode.removeChild(el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { StorageService, StorageScope, ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\nimport { AuthStorageOptions } from './storage.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService extends StorageService {\n protected options: AuthStorageOptions;\n\n constructor(\n config: ConfigService,\n private http: HttpClient,\n private authService: AuthService,\n private tokenService: TokenService\n ) {\n super(config);\n\n this.authService.authenticate$.subscribe(isAuthenticated => {\n if (isAuthenticated && this.options.url) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n });\n }\n\n set(\n key: string,\n value: string | object | boolean | number,\n scope: StorageScope = StorageScope.LOCAL\n ) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = value;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.set(key, value, scope);\n }\n\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = undefined;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.remove(key, scope);\n }\n\n clear(scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http.patch(this.options.url, { preference: {}}, {\n params: {\n mergePreference: 'false'\n }\n }).subscribe();\n }\n\n let token: string;\n if (scope === StorageScope.LOCAL) {\n token = this.tokenService.get();\n }\n\n super.clear(scope);\n\n if (token) {\n this.tokenService.set(token);\n }\n\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { AuthFormComponent } from './auth-form/auth-form.component';\r\n\r\nconst routes: Routes = [\r\n { path: 'login', component: AuthFormComponent },\r\n { path: 'logout', component: AuthFormComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AuthRoutingModule {}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MsalModule } from '@azure/msal-angular';\n\nimport { StorageService, IgoLanguageModule } from '@igo2/core';\n\nimport { AuthStorageService } from './shared/storage.service';\nimport { ProtectedDirective } from './shared/protected.directive';\nimport { AuthInterceptor } from './shared/auth.interceptor';\nimport { provideAuthMicrosoft } from './shared/auth-microsoft.provider';\n\nimport { AuthInternComponent } from './auth-form/auth-intern.component';\nimport { AuthFormComponent } from './auth-form/auth-form.component';\nimport { AuthGoogleComponent } from './auth-form/auth-google.component';\nimport { AuthFacebookComponent } from './auth-form/auth-facebook.component';\nimport { AuthMicrosoftComponent } from './auth-form/auth-microsoft.component';\nimport { AuthMicrosoftb2cComponent } from './auth-form/auth-microsoftb2c.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n IgoLanguageModule,\n MsalModule\n ],\n declarations: [\n AuthFormComponent,\n AuthGoogleComponent,\n AuthInternComponent,\n AuthFacebookComponent,\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent,\n ProtectedDirective\n ],\n exports: [AuthFormComponent, ProtectedDirective]\n})\nexport class IgoAuthModule {\n static forRoot(): ModuleWithProviders<IgoAuthModule> {\n return {\n ngModule: IgoAuthModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n },\n ...provideAuthMicrosoft('add'),\n ...provideAuthMicrosoft('b2c')\n ]\n };\n }\n}\n","/*\r\n * Public API Surface of auth\r\n */\r\n\r\nexport { AuthFormComponent } from './lib/auth-form';\r\nexport * from './lib/shared/auth.service';\r\nexport * from './lib/shared/logged.guard';\r\nexport * from './lib/shared/auth.guard';\r\nexport * from './lib/shared/admin.guard';\r\nexport * from './lib/shared/profils.guard';\r\nexport * from './lib/shared/auth.interceptor';\r\nexport * from './lib/shared/auth.interface';\r\nexport * from './lib/shared/auth-microsoft.provider';\r\nexport * from './lib/shared/protected.directive';\r\nexport * from './lib/shared/token.service';\r\nexport * from './lib/shared/storage.interface';\r\nexport * from './lib/shared/storage.service';\r\nexport * from './lib/auth-routing.module';\r\nexport * from './lib/auth.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-auth.js","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.html","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.html","../../../packages/auth/src/lib/shared/auth-msalServiceb2c.service..ts","../../../packages/auth/src/lib/shared/auth-msalBroadcastServiceb2c.service.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.html","../../../packages/auth/src/lib/auth-form/auth-facebook.component.ts","../../../packages/auth/src/lib/auth-form/auth-facebook.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.ts","../../../packages/auth/src/lib/auth-form/auth-form.component.html","../../../packages/auth/src/lib/auth-form/auth-form.component.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/auth-microsoft.provider.ts","../../../packages/auth/src/lib/shared/protected.directive.ts","../../../packages/auth/src/lib/shared/storage.service.ts","../../../packages/auth/src/lib/auth-routing.module.ts","../../../packages/auth/src/lib/auth.module.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\nimport jwtDecode from 'jwt-decode';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthOptions } from './auth.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n private options: AuthOptions;\n\n constructor(private injector: Injector) {}\n\n set(token: string) {\n localStorage.setItem(this.tokenKey, token);\n }\n\n remove() {\n localStorage.removeItem(this.tokenKey);\n }\n\n get(): string {\n return localStorage.getItem(this.tokenKey);\n }\n\n decode() {\n const token = this.get();\n if (!token) {\n return;\n }\n return jwtDecode(token);\n }\n\n isExpired() {\n const jwt = this.decode();\n const currentTime = new Date().getTime() / 1000;\n if (jwt && currentTime < jwt.exp) {\n return false;\n }\n return true;\n }\n\n private get tokenKey() {\n const config = this.injector.get<ConfigService>(ConfigService);\n this.options = config.getConfig('auth') || {};\n return this.options.tokenKey;\n }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\n\nimport { Observable, BehaviorSubject, of } from 'rxjs';\nimport { tap, catchError } from 'rxjs/operators';\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\n\nimport { ConfigService, LanguageService, MessageService } from '@igo2/core';\nimport { Base64 } from '@igo2/utils';\n\nimport { User, IInfosUser } from './auth.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n private anonymous = false;\n\n get hasAuthService() {\n return this.config.getConfig('auth.url') !== undefined;\n }\n\n constructor(\n private http: HttpClient,\n private tokenService: TokenService,\n private config: ConfigService,\n private languageService: LanguageService,\n private messageService: MessageService,\n @Optional() private router: Router\n ) {\n this.authenticate$.next(this.authenticated);\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n username,\n password: this.encodePassword(password)\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginWithToken(token: string, type: string, infosUser?: IInfosUser): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginAnonymous(): Observable<boolean> {\n this.anonymous = true;\n this.logged$.next(true);\n return of(true);\n }\n\n refresh(): Observable<void> {\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/refresh`, {}).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): Observable<boolean> {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\n return of(true);\n }\n\n isAuthenticated(): boolean {\n return !this.tokenService.isExpired();\n }\n\n getToken(): string {\n return this.tokenService.get();\n }\n\n decodeToken() {\n if (this.isAuthenticated()) {\n return this.tokenService.decode();\n }\n return false;\n }\n\n goToRedirectUrl() {\n if (!this.router) {\n return;\n }\n const redirectUrl = this.redirectUrl || this.router.url;\n\n const options = this.config.getConfig('auth') || {};\n if (redirectUrl === options.loginRoute) {\n const homeRoute = options.homeRoute || '/';\n this.router.navigateByUrl(homeRoute);\n } else if (redirectUrl) {\n this.router.navigateByUrl(redirectUrl);\n }\n }\n\n getUserInfo(): Observable<User> {\n const url = this.config.getConfig('auth.url') + '/info';\n return this.http.get<User>(url);\n }\n\n getProfils(): Observable<{ profils: string[] }> {\n const url = this.config.getConfig('auth.url');\n return this.http.get<{ profils: string[] }>(`${url}/profils`);\n }\n\n updateUser(user: User): Observable<User> {\n const url = this.config.getConfig('auth.url');\n return this.http.patch<User>(url, user);\n }\n\n private encodePassword(password: string) {\n return Base64.encode(password);\n }\n\n // authenticated or anonymous\n get logged(): boolean {\n return this.authenticated || this.isAnonymous;\n }\n\n get isAnonymous(): boolean {\n return this.anonymous;\n }\n\n get authenticated(): boolean {\n return this.isAuthenticated();\n }\n\n get isAdmin(): boolean {\n const token = this.decodeToken();\n if (token && token.user && token.user.isAdmin) {\n return true;\n }\n return false;\n }\n\n private loginCall(body, headers) {\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/login`, body, { headers }).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n const tokenDecoded = this.decodeToken();\n if (tokenDecoded && tokenDecoded.user) {\n if (tokenDecoded.user.locale) {\n this.languageService.setLanguage(tokenDecoded.user.locale);\n }\n if (tokenDecoded.user.isExpired) {\n this.languageService.translate\n .get('igo.auth.error.Password expired')\n .subscribe((expiredAlert) =>\n this.messageService.alert(expiredAlert)\n );\n }\n }\n this.authenticate$.next(true);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter\n} from '@angular/core';\n\nimport { ConfigService, LanguageService } from '@igo2/core';\nimport { AuthGoogleOptions } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\n\n@Component({\n selector: 'igo-auth-google',\n templateUrl: './auth-google.component.html',\n styleUrls: ['./auth-google.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthGoogleComponent {\n private options: AuthGoogleOptions;\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private languageService: LanguageService,\n private appRef: ApplicationRef\n ) {\n this.options = this.config.getConfig('auth.google') || {};\n\n if (this.options.apiKey && this.options.clientId) {\n this.loadSDKGoogle();\n this.loadPlatform();\n } else {\n console.warn('Google authentification needs \"apiKey\" and \"clientId\" options');\n }\n }\n\n public handleSignInClick() {\n (window as any).gapi.auth2.getAuthInstance().signIn();\n }\n\n public handleSignOutClick() {\n (window as any).gapi.auth2.getAuthInstance().signOut();\n }\n\n private handleClientLoad() {\n (window as any).gapi.load('client:auth2', () => this.initClient());\n }\n\n private initClient() {\n (window as any).gapi.client\n .init({\n apiKey: this.options.apiKey,\n clientId: this.options.clientId,\n discoveryDocs: [\n 'https://people.googleapis.com/$discovery/rest?version=v1'\n ],\n scope: 'profile'\n })\n .then(() => {\n this.handleSignOutClick();\n this.updateTextButton();\n (window as any).gapi.auth2.getAuthInstance().isSignedIn.listen(rep => {\n this.updateSigninStatus(rep);\n });\n });\n }\n\n private updateSigninStatus(isSignedIn) {\n this.updateTextButton();\n if (isSignedIn) {\n this.loginGoogle((window as any).gapi.client.getToken().access_token);\n }\n }\n\n private updateTextButton() {\n const btn = document.querySelector('span[id^=\"not_signed_\"]');\n if (btn && this.languageService.getLanguage() !== 'en') {\n if (btn.innerHTML === 'Sign in with Google') {\n btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');\n } else if (btn.innerHTML === 'Signed in with Google') {\n btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');\n }\n }\n }\n\n private loginGoogle(token) {\n this.authService.loginWithToken(token, 'google').subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n }\n\n private loadSDKGoogle() {\n const fjs = document.getElementsByTagName('script')[0];\n const js = document.createElement('script');\n js.id = 'google-jssdk';\n js.src = 'https://apis.google.com/js/api.js';\n js.onload = () => {\n this.handleClientLoad();\n };\n fjs.parentNode.insertBefore(js, fjs);\n }\n\n private loadPlatform() {\n const fjs = document.getElementsByTagName('script')[0];\n const js = document.createElement('script');\n js.id = 'google-platform';\n js.src = 'https://apis.google.com/js/platform.js';\n fjs.parentNode.insertBefore(js, fjs);\n }\n}\n","<div class=\"g-signin2 google-login-button\" data-height=\"40\" data-width=\"265\" data-longtitle=\"true\">\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter,\n Inject\n} from '@angular/core';\nimport { MsalBroadcastService, MsalService, MSAL_GUARD_CONFIG} from '@azure/msal-angular';\nimport {\n InteractionStatus,\n AuthenticationResult,\n PublicClientApplication,\n PopupRequest,\n SilentRequest,\n InteractionRequiredAuthError\n} from '@azure/msal-browser';\nimport { ConfigService } from '@igo2/core';\nimport { AuthMicrosoftOptions, MSPMsalGuardConfiguration } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'igo-auth-microsoft',\n templateUrl: './auth-microsoft.component.html',\n styleUrls: ['./auth-microsoft.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthMicrosoftComponent {\n private options: AuthMicrosoftOptions;\n private readonly _destroying$ = new Subject<void>();\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n private broadcastService: MsalBroadcastService;\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private appRef: ApplicationRef,\n private msalService: MsalService,\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MSPMsalGuardConfiguration[],\n ) {\n this.options = this.config.getConfig('auth.microsoft') || {};\n\n this.msalService.instance = new PublicClientApplication({\n auth: this.options,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n this.broadcastService = new MsalBroadcastService(this.msalService.instance, this.msalService);\n\n if (this.options.clientId) {\n this.broadcastService.inProgress$\n .pipe(\n filter((status: InteractionStatus) => status === InteractionStatus.None),\n takeUntil(this._destroying$)\n )\n .subscribe(() => {\n this.checkAccount();\n });\n\n } else {\n console.warn('Microsoft authentification needs \"clientId\" option');\n }\n }\n\n public loginMicrosoft() {\n this.msalService.loginPopup({...this.getConf().authRequest} as PopupRequest)\n .subscribe((response: AuthenticationResult) => {\n this.msalService.instance.setActiveAccount(response.account);\n this.checkAccount();\n });\n }\n\n private checkAccount() {\n this.msalService.instance\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\n .then((response: AuthenticationResult) => {\n const tokenAccess = response.accessToken;\n const tokenId = response.idToken;\n this.authService.loginWithToken(tokenAccess, 'microsoft', { tokenId } ).subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n // fallback to interaction when silent call fails\n return this.msalService.acquireTokenPopup(this.getConf().authRequest as SilentRequest);\n }\n console.log(error);\n }).catch(error => {\n console.log('Silent token fails');\n });\n }\n\n private getConf(): MSPMsalGuardConfiguration {\n return this.msalGuardConfig.filter(conf => conf.type === 'add')[0];\n }\n}\n","<button class=\"microsoft-login-button\" mat-raised-button (click)=\"loginMicrosoft()\">\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n {{'igo.auth.microsoft.login' | translate}}\n</button>\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport {\n IPublicClientApplication,\n EndSessionRequest,\n EndSessionPopupRequest,\n AuthenticationResult,\n RedirectRequest,\n SilentRequest,\n PopupRequest,\n SsoSilentRequest,\n Logger,\n WrapperSKU\n} from '@azure/msal-browser';\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\nimport { Observable, from } from 'rxjs';\nimport { IMsalService } from '@azure/msal-angular';\n\n@Injectable()\nexport class MsalServiceb2c implements IMsalService {\n private redirectHash: string;\n private logger: Logger;\n private name = '@azure/msal-angular';\n private version = '2.0.0-beta.2';\n constructor(\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\n private location: Location\n ) {\n const hash = this.location.path(true).split('#').pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);\n }\n\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\n return from(this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\n return from(this.instance.acquireTokenRedirect(request));\n }\n acquireTokenSilent(silentRequest: SilentRequest): Observable<AuthenticationResult> {\n return from(this.instance.acquireTokenSilent(silentRequest));\n }\n handleRedirectObservable(hash?: string): Observable<AuthenticationResult> {\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\n }\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\n return from(this.instance.loginPopup(request));\n }\n loginRedirect(request?: RedirectRequest): Observable<void> {\n return from(this.instance.loginRedirect(request));\n }\n logout(logoutRequest?: EndSessionRequest): Observable<void> {\n return from(this.instance.logout(logoutRequest));\n }\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\n return from(this.instance.logoutRedirect(logoutRequest));\n }\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\n return from(this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\n return from(this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger(): Logger {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(this.name, this.version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger: Logger): void {\n this.logger = logger.clone(this.name, this.version);\n this.instance.setLogger(logger);\n }\n\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\nimport { EventMessage, EventMessageUtils, IPublicClientApplication, InteractionStatus } from '@azure/msal-browser';\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\n\n@Injectable()\nexport class MsalBroadcastServiceb2c {\n private _msalSubject: Subject<EventMessage>;\n public msalSubject$: Observable<EventMessage>;\n private _inProgress: BehaviorSubject<InteractionStatus>;\n public inProgress$: Observable<InteractionStatus>;\n\n constructor(\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\n private authService: MsalServiceb2c\n ) {\n this._msalSubject = new Subject<EventMessage>();\n this.msalSubject$ = this._msalSubject.asObservable();\n\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject<InteractionStatus>(InteractionStatus.Startup);\n this.inProgress$ = this._inProgress.asObservable();\n\n this.msalInstance.addEventCallback((message: EventMessage) => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\n if (status !== null) {\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress to ${status}`);\n this._inProgress.next(status);\n }\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter,\n Inject\n} from '@angular/core';\n\nimport { MSAL_GUARD_CONFIG } from '@azure/msal-angular';\nimport {\n InteractionStatus,\n AuthenticationResult,\n PublicClientApplication,\n PopupRequest,\n SilentRequest,\n InteractionRequiredAuthError\n} from '@azure/msal-browser';\nimport { ConfigService } from '@igo2/core';\nimport { AuthMicrosoftb2cOptions, MSPMsalGuardConfiguration } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { MsalBroadcastServiceb2c } from '../shared/auth-msalBroadcastServiceb2c.service';\nimport { MsalServiceb2c } from '../shared/auth-msalServiceb2c.service.';\n\n@Component({\n selector: 'igo-auth-microsoftb2c',\n templateUrl: './auth-microsoftb2c.component.html',\n styleUrls: ['./auth-microsoftb2c.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthMicrosoftb2cComponent {\n private options: AuthMicrosoftb2cOptions;\n private readonly _destroying$ = new Subject<void>();\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n private broadcastService: MsalBroadcastServiceb2c;\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private appRef: ApplicationRef,\n private msalService: MsalServiceb2c,\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MSPMsalGuardConfiguration[],\n ) {\n\n this.options = this.config.getConfig('auth.microsoftb2c') || {};\n\n this.msalService.instance = new PublicClientApplication({\n auth: this.options.browserAuthOptions,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n this.broadcastService = new MsalBroadcastServiceb2c(this.msalService.instance, this.msalService);\n\n if (this.options.browserAuthOptions.clientId) {\n this.broadcastService.inProgress$\n .pipe(\n filter((status: InteractionStatus) => status === InteractionStatus.None),\n takeUntil(this._destroying$)\n )\n .subscribe(() => {\n this.checkAccount();\n });\n\n } else {\n console.warn('Microsoft authentification needs \"clientId\" option');\n }\n }\n\n public loginMicrosoftb2c() {\n this.msalService.loginPopup({...this.getConf().authRequest} as PopupRequest)\n .subscribe((response: AuthenticationResult) => {\n this.msalService.instance.setActiveAccount(response.account);\n this.checkAccount();\n });\n }\n\n private checkAccount() {\n this.msalService.instance\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\n .then((response: AuthenticationResult) => {\n const token = response.idToken;\n this.authService.loginWithToken(token, 'microsoftb2c').subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n // fallback to interaction when silent call fails\n return this.msalService.acquireTokenPopup(this.getConf().authRequest as SilentRequest);\n }\n }).catch(error => {\n console.log('Silent token fails');\n });\n }\n\n private getConf(): MSPMsalGuardConfiguration {\n return this.msalGuardConfig.filter(conf => conf.type === 'b2c')[0];\n }\n}\n","<button class=\"microsoft-login-button\" mat-raised-button (click)=\"loginMicrosoftb2c()\">\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n {{'igo.auth.microsoftb2c.login' | translate}}\n</button>\n","import {\n Component,\n ChangeDetectionStrategy,\n ApplicationRef,\n Output,\n EventEmitter\n} from '@angular/core';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthFacebookOptions } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\n\n@Component({\n selector: 'igo-auth-facebook',\n templateUrl: './auth-facebook.component.html',\n styleUrls: ['./auth-facebook.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthFacebookComponent {\n private options: AuthFacebookOptions;\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private appRef: ApplicationRef\n ) {\n this.options = this.config.getConfig('auth.facebook') || {};\n\n if (this.options.appId) {\n this.loadSDKFacebook();\n } else {\n console.warn('Facebook authentification needs \"appId\" option');\n }\n }\n\n private subscribeEvents() {\n (window as any).FB.Event.subscribe('auth.statusChange', rep => {\n this.statusChangeCallback(rep);\n });\n }\n\n private statusChangeCallback(response) {\n if (response.status === 'connected') {\n const accessToken = response.authResponse.accessToken;\n this.loginFacebook(accessToken);\n }\n }\n\n private loginFacebook(token) {\n this.authService.loginWithToken(token, 'facebook').subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n }\n\n private loadSDKFacebook() {\n if (document.getElementById('facebook-jssdk')) {\n return;\n }\n\n const urlSDK =\n 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';\n\n const fjs = document.getElementsByTagName('script')[0];\n const js = document.createElement('script');\n js.id = 'facebook-jssdk';\n js.src = `${urlSDK}&appId=${this.options.appId}`;\n js.onload = () => {\n this.subscribeEvents();\n };\n fjs.parentNode.insertBefore(js, fjs);\n }\n}\n","<div scope=\"public_profile,email\"\n class=\"fb-login-button\" data-max-rows=\"1\" data-size=\"large\"\n data-button-type=\"login_with\" data-show-faces=\"false\"\n data-auto-logout-link=\"false\" data-use-continue-as=\"false\">\n</div>\n","<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput required placeholder=\"{{'igo.auth.user' | translate}}\" formControlName=\"username\">\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput required type=\"password\" placeholder=\"{{'igo.auth.password' | translate}}\" formControlName=\"password\">\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid || loading\">{{'igo.auth.login' | translate}}</button>\n <button *ngIf=\"allowAnonymous\" mat-raised-button class=\"anonymous\" type=\"button\" [disabled]=\"loading\" (click)=\"loginAnonymous()\">\n {{'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br/>\n <font size=\"3\" color=\"red\">{{error}}</font>\n </div>\n</form>\n","import {\n Component,\n ChangeDetectionStrategy,\n Input,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Validators, FormGroup, FormBuilder } from '@angular/forms';\n\nimport { AuthService } from '../shared/auth.service';\nimport { LanguageService } from '@igo2/core';\n\n@Component({\n selector: 'igo-auth-intern',\n templateUrl: './auth-intern.component.html',\n styleUrls: ['./auth-intern.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AuthInternComponent {\n @Input()\n get allowAnonymous(): boolean {\n return this._allowAnonymous;\n }\n set allowAnonymous(value: boolean) {\n this._allowAnonymous = value;\n }\n private _allowAnonymous = true;\n\n public error = '';\n public form: FormGroup;\n public loading = false;\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n public auth: AuthService,\n private languageService: LanguageService,\n fb: FormBuilder\n ) {\n this.form = fb.group({\n username: ['', Validators.required],\n password: ['', Validators.required]\n });\n }\n\n loginUser(values: any) {\n this.loading = true;\n this.auth.login(values.username, values.password).subscribe(\n () => {\n this.login.emit(true);\n this.loading = false;\n },\n (error: any) => {\n try {\n this.languageService.translate\n .get('igo.auth.error.' + error.error.message)\n .subscribe(errorMsg => (this.error = errorMsg));\n } catch (e) {\n this.error = error.error.message;\n }\n this.loading = false;\n }\n );\n return false;\n }\n\n loginAnonymous() {\n this.auth.loginAnonymous().subscribe(() => {\n this.login.emit(true);\n });\n }\n}\n","<div *ngIf=\"visible\">\n <div *ngIf=\"!auth.logged && backgroundDisable\" class=\"backgroundDisable\"></div>\n\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\n <h1>{{'igo.auth.connection' | translate}}</h1>\n\n <igo-auth-google\n *ngIf=\"options.google && options.google.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-google>\n <igo-auth-microsoft\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-microsoft>\n <igo-auth-microsoftb2c\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-microsoftb2c>\n <igo-auth-facebook\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\n (login)=\"onLogin()\">\n </igo-auth-facebook>\n <igo-auth-intern\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\n [allowAnonymous]=\"options.allowAnonymous\"\n (login)=\"onLogin()\">\n </igo-auth-intern>\n </div>\n\n <div *ngIf=\"auth.logged && showAlreadyConnectedDiv\" class=\"login center-block\">\n <p>{{'igo.auth.welcome' | translate: user}}</p>\n <button mat-raised-button type=\"button\" (click)=\"logout()\">{{'igo.auth.signOut' | translate}}</button>\n </div>\n\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\n <p>{{'igo.auth.deconnection' | translate}}</p>\n <button *ngIf=\"options.homeRoute\" mat-raised-button type=\"button\" (click)=\"home()\">{{'igo.auth.home' | translate}}</button>\n </div>\n\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n Input,\n Optional,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthOptions } from '../shared/auth.interface';\nimport { AuthService } from '../shared/auth.service';\n\n@Component({\n selector: 'igo-auth-form',\n templateUrl: './auth-form.component.html',\n styleUrls: ['./auth-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AuthFormComponent implements OnInit {\n @Input()\n get backgroundDisable(): boolean {\n if (this.isLogoutRoute || this.isLogoutRoute) {\n return false;\n }\n return this._backgroundDisable;\n }\n set backgroundDisable(value: boolean) {\n this._backgroundDisable = value.toString() === 'true';\n }\n private _backgroundDisable = true;\n\n @Input()\n get hasAlreadyConnectedDiv(): boolean {\n return this._hasAlreadyConnectedDiv;\n }\n set hasAlreadyConnectedDiv(value: boolean) {\n this._hasAlreadyConnectedDiv = value.toString() === 'true';\n }\n private _hasAlreadyConnectedDiv = true;\n\n @Input()\n get hasLogoutDiv(): boolean {\n return this._hasLogoutDiv;\n }\n set hasLogoutDiv(value: boolean) {\n this._hasLogoutDiv = value.toString() === 'true';\n }\n private _hasLogoutDiv = true;\n\n @Input()\n get showAlreadyConnectedDiv(): boolean {\n if (this.isLogoutRoute) {\n return this.hasAlreadyConnectedDiv;\n }\n return this._showAlreadyConnectedDiv;\n }\n set showAlreadyConnectedDiv(value: boolean) {\n this._showAlreadyConnectedDiv = value.toString() === 'true';\n }\n private _showAlreadyConnectedDiv = false;\n\n @Input()\n get showLogoutDiv(): boolean {\n if (this.isLogoutRoute) {\n return this.hasLogoutDiv;\n }\n return this._showLogoutDiv;\n }\n set showLogoutDiv(value: boolean) {\n this._showLogoutDiv = value.toString() === 'true';\n }\n private _showLogoutDiv = false;\n\n get showLoginDiv(): boolean {\n if (!this.isLogoutRoute) {\n return true;\n }\n }\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public options: AuthOptions;\n public user;\n\n public visible = true;\n\n private isLoginRoute: boolean;\n private isLogoutRoute: boolean;\n\n constructor(\n public auth: AuthService,\n private config: ConfigService,\n @Optional() private router: Router\n ) {\n this.options = this.config.getConfig('auth') || {};\n this.visible = Object.getOwnPropertyNames(this.options).length !== 0;\n }\n\n public ngOnInit() {\n this.analyzeRoute();\n this.getName();\n }\n\n public onLogin() {\n this.auth.goToRedirectUrl();\n this.getName();\n this.login.emit(true);\n }\n\n public logout() {\n this.auth.logout().subscribe(() => {\n this.user = undefined;\n if (this.router) {\n if (this.options.logoutRoute) {\n this.router.navigate([this.options.logoutRoute]);\n } else if (this.options.homeRoute) {\n this.router.navigate([this.options.homeRoute]);\n }\n }\n });\n }\n\n public home() {\n if (this.router && this.options.homeRoute) {\n this.router.navigate([this.options.homeRoute]);\n }\n }\n\n private getName() {\n const tokenDecoded = this.auth.decodeToken();\n if (tokenDecoded) {\n this.user = {\n name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId\n };\n }\n }\n\n private analyzeRoute() {\n if (!this.router) {\n return;\n }\n\n this.router.events\n .pipe(filter((event) => event instanceof NavigationStart))\n .subscribe((changeEvent: any) => {\n if (changeEvent.url) {\n const currentRoute = changeEvent.url;\n const logoutRoute = this.options.logoutRoute;\n const loginRoute = this.options.loginRoute;\n\n this.isLogoutRoute = currentRoute === logoutRoute;\n this.isLoginRoute = currentRoute === loginRoute;\n\n if (this.isLogoutRoute) {\n this.auth.logout();\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.logged) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth');\n if (authConfig && authConfig.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.authenticated) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth');\n if (authConfig && authConfig.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const token = this.authService.decodeToken();\n if (token && token.user && token.user.isAdmin) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth');\n if (authConfig && authConfig.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\nimport { map } from 'rxjs/operators';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilsGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authService.getProfils().pipe(\n map((profils: { profils: string[] }) => {\n const authConfig = this.config.getConfig('auth');\n if (\n profils &&\n profils.profils &&\n profils.profils.some(v => authConfig.profilsGuard.indexOf(v) !== -1)\n ) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n if (authConfig && authConfig.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpInterceptor,\n HttpHandler,\n HttpRequest\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Md5 } from 'ts-md5';\n\nimport { ConfigService } from '@igo2/core';\nimport { TokenService } from './token.service';\nimport { AuthByKeyOptions, WithCredentialsOptions } from './auth.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n private refreshInProgress = false;\n\n private get trustHosts() {\n const trustHosts = this.config.getConfig('auth.trustHosts') || [];\n trustHosts.push(window.location.hostname);\n return trustHosts;\n }\n\n private get hostsWithCredentials(): WithCredentialsOptions[] {\n return this.config.getConfig('auth.hostsWithCredentials') || [];\n }\n\n private get hostsWithAuthByKey(): AuthByKeyOptions[] {\n return this.config.getConfig('auth.hostsByKey') || [];\n }\n\n constructor(\n private config: ConfigService,\n private tokenService: TokenService,\n private http: HttpClient\n ) {}\n\n intercept(\n originalReq: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\n let req = originalReq.clone();\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\n if (hostWithKey) {\n req = req.clone({\n params: req.params.set(hostWithKey.key, hostWithKey.value)\n });\n }\n if (withCredentials) {\n req = originalReq.clone({\n withCredentials\n });\n }\n this.refreshToken();\n const token = this.tokenService.get();\n const element = document.createElement('a');\n element.href = req.url;\n if (element.host === '') {\n element.href = element.href; // FIX IE11, DO NOT REMOVE\n }\n\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return next.handle(req);\n }\n\n const authHeader = `Bearer ${token}`;\n let authReq = req.clone({\n headers: req.headers.set('Authorization', authHeader)\n });\n\n const tokenDecoded: any = this.tokenService.decode();\n if (\n authReq.params.get('_i') === 'true' &&\n tokenDecoded &&\n tokenDecoded.user &&\n tokenDecoded.user.sourceId\n ) {\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\n authReq = authReq.clone({\n params: authReq.params.set('_i', hashUser)\n });\n } else if (authReq.params.get('_i') === 'true') {\n authReq = authReq.clone({\n params: authReq.params.delete('_i')\n });\n }\n\n return next.handle(authReq);\n }\n\n interceptXhr(xhr, url: string): boolean {\n const withCredentials = this.handleHostsWithCredentials(url);\n if (withCredentials) {\n xhr.withCredentials = withCredentials;\n return true;\n }\n\n this.refreshToken();\n const element = document.createElement('a');\n element.href = url;\n\n const token = this.tokenService.get();\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return false;\n }\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\n return true;\n }\n\n alterUrlWithKeyAuth(url: string): string {\n const hostWithKey = this.handleHostsAuthByKey(url);\n let interceptedUrl = url;\n if (hostWithKey) {\n const urlDecomposed = interceptedUrl.split(/[?&]/);\n let urlWithKeyAdded = urlDecomposed.shift();\n const paramsToKeep = urlDecomposed.filter(p => p.length !== 0);\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\n if (paramsToKeep.length) {\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\n }\n return urlWithKeyAdded;\n }\n return;\n }\n\n private handleHostsWithCredentials(reqUrl: string) {\n let withCredentials = false;\n for (const hostWithCredentials of this.hostsWithCredentials) {\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n withCredentials = hostWithCredentials.withCredentials !== undefined ? hostWithCredentials.withCredentials : undefined;\n break;\n }\n }\n return withCredentials;\n }\n\n private handleHostsAuthByKey(reqUrl: string): {key: string, value: string} {\n let hostWithKey;\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n hostWithKey = {key : hostWithAuthByKey.keyProperty, value: hostWithAuthByKey.keyValue};\n break;\n }\n }\n return hostWithKey;\n }\n\n refreshToken() {\n const jwt = this.tokenService.decode();\n const currentTime = new Date().getTime() / 1000;\n\n if (\n !this.refreshInProgress &&\n jwt &&\n currentTime < jwt.exp &&\n currentTime > jwt.exp - 1800\n ) {\n this.refreshInProgress = true;\n\n const url = this.config.getConfig('auth.url');\n return this.http.post(`${url}/refresh`, {}).subscribe(\n (data: any) => {\n this.tokenService.set(data.token);\n this.refreshInProgress = false;\n },\n err => {\n err.error.caught = true;\n return err;\n }\n );\n }\n }\n}\n","import {\n MSAL_GUARD_CONFIG,\n MSAL_INSTANCE,\n MsalService,\n} from '@azure/msal-angular';\n\nimport {\n PublicClientApplication,\n InteractionType\n} from '@azure/msal-browser';\n\nimport { ConfigService } from '@igo2/core';\n\nimport { BrowserAuthOptions } from '@azure/msal-browser';\n\nimport { AuthMicrosoftOptions, MSPMsalGuardConfiguration } from './auth.interface';\n\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\n\nexport function MSALConfigFactory(config: ConfigService): PublicClientApplication {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoft') || {};\n\n msConf.redirectUri = msConf.redirectUri || window.location.href;\n msConf.authority = msConf.authority || 'https://login.microsoftonline.com/organizations';\n\n const myMsalObj = new PublicClientApplication({\n auth: msConf,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n return myMsalObj;\n}\n\nexport function MSALConfigFactoryb2c(config: ConfigService): PublicClientApplication {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoftb2c.browserAuthOptions') || {};\n msConf.redirectUri = msConf.redirectUri || window.location.href;\n msConf.authority = msConf.authority || 'https://login.microsoftonline.com/organizations';\n\n const myMsalObj = new PublicClientApplication({\n auth: msConf,\n cache: {\n cacheLocation: 'sessionStorage'\n }\n });\n\n return myMsalObj;\n}\n\nexport function MSALAngularConfigFactory(config: ConfigService): MSPMsalGuardConfiguration {\n\n const msConf: AuthMicrosoftOptions = config.getConfig('auth.microsoft') || {};\n\n return {\n interactionType: InteractionType.Popup,\n authRequest: {\n scopes: ['user.read'],\n loginHint: 'todo',\n },\n type: 'add'\n };\n}\n\nexport function MSALAngularConfigFactoryb2c(config: ConfigService): MSPMsalGuardConfiguration {\n\n const msConf: BrowserAuthOptions = config.getConfig('auth.microsoftb2c.browserAuthOptions') || {};\n\n return {\n interactionType: InteractionType.Popup,\n authRequest: {\n scopes: [msConf.clientId]\n },\n type: 'b2c'\n };\n}\n\nexport function provideAuthMicrosoft(type?: string) {\n if (type === 'b2c') {\n return [\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALConfigFactoryb2c,\n deps: [ConfigService]\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALAngularConfigFactoryb2c,\n deps: [ConfigService],\n multi: true\n },\n MsalServiceb2c\n ];\n } else {\n return [\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALConfigFactory,\n deps: [ConfigService]\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALAngularConfigFactory,\n deps: [ConfigService],\n multi: true\n },\n MsalService\n ];\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { AuthService } from './auth.service';\n\n@Directive({\n selector: '[igoProtected]'\n})\nexport class ProtectedDirective {\n constructor(authentication: AuthService, el: ElementRef) {\n if (!authentication.isAuthenticated()) {\n el.nativeElement.parentNode.removeChild(el.nativeElement);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { StorageService, StorageScope, ConfigService } from '@igo2/core';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\nimport { AuthStorageOptions } from './storage.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService extends StorageService {\n protected options: AuthStorageOptions;\n\n constructor(\n config: ConfigService,\n private http: HttpClient,\n private authService: AuthService,\n private tokenService: TokenService\n ) {\n super(config);\n\n this.authService.authenticate$.subscribe(isAuthenticated => {\n if (isAuthenticated && this.options.url) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n });\n }\n\n set(\n key: string,\n value: string | object | boolean | number,\n scope: StorageScope = StorageScope.LOCAL\n ) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = value;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.set(key, value, scope);\n }\n\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = undefined;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.remove(key, scope);\n }\n\n clear(scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http.patch(this.options.url, { preference: {}}, {\n params: {\n mergePreference: 'false'\n }\n }).subscribe();\n }\n\n let token: string;\n if (scope === StorageScope.LOCAL) {\n token = this.tokenService.get();\n }\n\n super.clear(scope);\n\n if (token) {\n this.tokenService.set(token);\n }\n\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthFormComponent } from './auth-form/auth-form.component';\n\nconst routes: Routes = [\n { path: 'login', component: AuthFormComponent },\n { path: 'logout', component: AuthFormComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: []\n})\nexport class AuthRoutingModule {}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MsalModule } from '@azure/msal-angular';\n\nimport { StorageService, IgoLanguageModule } from '@igo2/core';\n\nimport { AuthStorageService } from './shared/storage.service';\nimport { ProtectedDirective } from './shared/protected.directive';\nimport { AuthInterceptor } from './shared/auth.interceptor';\nimport { provideAuthMicrosoft } from './shared/auth-microsoft.provider';\n\nimport { AuthInternComponent } from './auth-form/auth-intern.component';\nimport { AuthFormComponent } from './auth-form/auth-form.component';\nimport { AuthGoogleComponent } from './auth-form/auth-google.component';\nimport { AuthFacebookComponent } from './auth-form/auth-facebook.component';\nimport { AuthMicrosoftComponent } from './auth-form/auth-microsoft.component';\nimport { AuthMicrosoftb2cComponent } from './auth-form/auth-microsoftb2c.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n IgoLanguageModule,\n MsalModule\n ],\n declarations: [\n AuthFormComponent,\n AuthGoogleComponent,\n AuthInternComponent,\n AuthFacebookComponent,\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent,\n ProtectedDirective\n ],\n exports: [AuthFormComponent, ProtectedDirective]\n})\nexport class IgoAuthModule {\n static forRoot(): ModuleWithProviders<IgoAuthModule> {\n return {\n ngModule: IgoAuthModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n },\n ...provideAuthMicrosoft('add'),\n ...provideAuthMicrosoft('b2c')\n ]\n };\n }\n}\n","/*\n * Public API Surface of auth\n */\n\nexport { AuthFormComponent } from './lib/auth-form';\nexport * from './lib/shared/auth.service';\nexport * from './lib/shared/logged.guard';\nexport * from './lib/shared/auth.guard';\nexport * from './lib/shared/admin.guard';\nexport * from './lib/shared/profils.guard';\nexport * from './lib/shared/auth.interceptor';\nexport * from './lib/shared/auth.interface';\nexport * from './lib/shared/auth-microsoft.provider';\nexport * from './lib/shared/protected.directive';\nexport * from './lib/shared/token.service';\nexport * from './lib/shared/storage.interface';\nexport * from './lib/shared/storage.service';\nexport * from './lib/auth-routing.module';\nexport * from './lib/auth.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASa,YAAY;IAGvB,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAE1C,GAAG,CAAC,KAAa;QACf,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC5C;IAED,MAAM;QACJ,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,GAAG;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5C;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;KACzB;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAChD,IAAI,GAAG,IAAI,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE;YAChC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;KACb;IAED,IAAY,QAAQ;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;;wEAtCU,YAAY;kEAAZ,YAAY,WAAZ,YAAY,mBAFX,MAAM;uFAEP,YAAY;cAHxB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCSY,WAAW;IAUtB,YACU,IAAgB,EAChB,YAA0B,EAC1B,MAAqB,EACrB,eAAgC,EAChC,cAA8B,EAClB,MAAc;QAL1B,SAAI,GAAJ,IAAI,CAAY;QAChB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAe;QACrB,oBAAe,GAAf,eAAe,CAAiB;QAChC,mBAAc,GAAd,cAAc,CAAgB;QAClB,WAAM,GAAN,MAAM,CAAQ;QAf7B,kBAAa,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC,CAAC;QACxD,YAAO,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC,CAAC;QAEjD,cAAS,GAAG,KAAK,CAAC;QAcxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa;YACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SAClC,CAAC,CAAC;KACJ;IAjBD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;KACxD;IAiBD,KAAK,CAAC,QAAgB,EAAE,QAAgB;QACtC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG;YACX,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;SACxC,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,cAAc,CAAC,KAAa,EAAE,IAAY,EAAE,SAAsB;QAChE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG;YACX,KAAK;YACL,cAAc,EAAE,IAAI;YACpB,SAAS;SACV,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAED,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,IAAS;YACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG;YACb,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACxB,MAAM,GAAG,CAAC;SACX,CAAC,CACH,CAAC;KACH;IAED,MAAM;QACJ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAED,eAAe;QACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;KACvC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;KAChC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SACnC;QACD,OAAO,KAAK,CAAC;KACd;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAExD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,WAAW,KAAK,OAAO,CAAC,UAAU,EAAE;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SACtC;aAAM,IAAI,WAAW,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;SACxC;KACF;IAED,WAAW;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,CAAC,CAAC;KACjC;IAED,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,GAAG,GAAG,UAAU,CAAC,CAAC;KAC/D;IAED,UAAU,CAAC,IAAU;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAO,GAAG,EAAE,IAAI,CAAC,CAAC;KACzC;IAEO,cAAc,CAAC,QAAgB;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAChC;;IAGD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;KAC/C;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;KAC/B;IAED,IAAI,OAAO;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;IAEO,SAAS,CAAC,IAAI,EAAE,OAAO;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAC3D,GAAG,CAAC,CAAC,IAAS;YACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE;gBACrC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC5B,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC5D;gBACD,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC/B,IAAI,CAAC,eAAe,CAAC,SAAS;yBAC3B,GAAG,CAAC,iCAAiC,CAAC;yBACtC,SAAS,CAAC,CAAC,YAAY,KACtB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CACxC,CAAC;iBACL;aACF;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC,EACF,UAAU,CAAC,CAAC,GAAG;YACb,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACxB,MAAM,GAAG,CAAC;SACX,CAAC,CACH,CAAC;KACH;;sEAzKU,WAAW;iEAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;uFAEP,WAAW;cAHvB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;sBAiBI,QAAQ;;;MCfA,mBAAmB;IAK9B,YACU,WAAwB,EACxB,MAAqB,EACrB,eAAgC,EAChC,MAAsB;QAHtB,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,oBAAe,GAAf,eAAe,CAAiB;QAChC,WAAM,GAAN,MAAM,CAAgB;QANtB,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAQnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;SAC/E;KACF;IAEM,iBAAiB;QACrB,MAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC;KACvD;IAEM,kBAAkB;QACtB,MAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;KACxD;IAEO,gBAAgB;QACrB,MAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KACpE;IAEO,UAAU;QACf,MAAc,CAAC,IAAI,CAAC,MAAM;aACxB,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,aAAa,EAAE;gBACb,0DAA0D;aAC3D;YACD,KAAK,EAAE,SAAS;SACjB,CAAC;aACD,IAAI,CAAC;YACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;gBAChE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ,CAAC,CAAC;KACN;IAEO,kBAAkB,CAAC,UAAU;QACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,WAAW,CAAE,MAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC;SACvE;KACF;IAEO,gBAAgB;QACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QAC9D,IAAI,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACtD,IAAI,GAAG,CAAC,SAAS,KAAK,qBAAqB,EAAE;gBAC3C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aACjF;iBAAM,IAAI,GAAG,CAAC,SAAS,KAAK,uBAAuB,EAAE;gBACpD,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;aAClF;SACF;KACF;IAEO,WAAW,CAAC,KAAK;QACvB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvB,CAAC,CAAC;KACJ;IAEO,aAAa;QACnB,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC;QACvB,EAAE,CAAC,GAAG,GAAG,mCAAmC,CAAC;QAC7C,EAAE,CAAC,MAAM,GAAG;YACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB,CAAC;QACF,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KACtC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC;QAC1B,EAAE,CAAC,GAAG,GAAG,wCAAwC,CAAC;QAClD,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KACtC;;sFA9FU,mBAAmB;sEAAnB,mBAAmB;QClBhC,yBAAmG;;uFDkBtF,mBAAmB;cAN/B,SAAS;eAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,WAAW,EAAE,8BAA8B;gBAC3C,SAAS,EAAE,CAAC,8BAA8B,CAAC;gBAC3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;kJAIW,KAAK;kBAAd,MAAM;;;MEQI,sBAAsB;IAMjC,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAsB,EACtB,WAAwB,EACG,eAA4C;QAJvE,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAgB;QACtB,gBAAW,GAAX,WAAW,CAAa;QACG,oBAAe,GAAf,eAAe,CAA6B;QAThE,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC1C,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAUnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAE7D,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,uBAAuB,CAAC;YACtD,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,KAAK,EAAE;gBACL,aAAa,EAAE,gBAAgB;aAChC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9F,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW;iBAChC,IAAI,CACH,MAAM,CAAC,CAAC,MAAyB,KAAK,MAAM,KAAK,iBAAiB,CAAC,IAAI,CAAC,EACxE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAC7B;iBACA,SAAS,CAAC;gBACT,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB,CAAC,CAAC;SAEJ;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;SACpE;KACF;IAEM,cAAc;QACnB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,kBAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAiB,CAAC;aAC3E,SAAS,CAAC,CAAC,QAA8B;YACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,CAAC,CAAC;KACJ;IAEO,YAAY;QAClB,IAAI,CAAC,WAAW,CAAC,QAAQ;aACtB,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAA4B,CAAC;aAC/D,IAAI,CAAC,CAAC,QAA8B;YACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAE,CAAC,SAAS,CAAC;gBAChF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB,CAAC,CAAC;SACJ,CAAC;aACD,KAAK,CAAC,CAAO,KAAK;YACjB,IAAI,KAAK,YAAY,4BAA4B,EAAE;;gBAEjD,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAA4B,CAAC,CAAC;aACxF;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACpB,CAAA,CAAC,CAAC,KAAK,CAAC,KAAK;YACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;SACnC,CAAC,CAAC;KACN;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpE;;4FAvEU,sBAAsB,mLAWvB,iBAAiB;yEAXhB,sBAAsB;QC7BnC,iCAAoF;QAA3B,mGAAS,oBAAgB,IAAC;QACjF,8BAAyC;QACzC,YACF;;QAAA,iBAAS;;QADP,eACF;QADE,kFACF;;uFD0Ba,sBAAsB;cANlC,SAAS;eAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,WAAW,EAAE,iCAAiC;gBAC9C,SAAS,EAAE,CAAC,iCAAiC,CAAC;gBAC9C,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;;sBAYI,MAAM;uBAAC,iBAAiB;wBARjB,KAAK;kBAAd,MAAM;;;AEhCT;;;;MAwBa,cAAc;IAKvB,YACkC,QAAkC,EACxD,QAAkB;QADI,aAAQ,GAAR,QAAQ,CAA0B;QACxD,aAAQ,GAAR,QAAQ,CAAU;QAJtB,SAAI,GAAG,qBAAqB,CAAC;QAC7B,YAAO,GAAG,cAAc,CAAC;QAK7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACvD,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;SAClC;QACD,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5E;IAED,iBAAiB,CAAC,OAAqB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;KACzD;IACD,oBAAoB,CAAC,OAAwB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5D;IACD,kBAAkB,CAAC,aAA4B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;KAChE;IACD,wBAAwB,CAAC,IAAa;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;KAC/E;IACD,UAAU,CAAC,OAAsB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;KAClD;IACD,aAAa,CAAC,OAAyB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;KACrD;IACD,MAAM,CAAC,aAAiC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;KACpD;IACD,cAAc,CAAC,aAAiC;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;KAC5D;IACD,WAAW,CAAC,aAAsC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KACzD;IACD,SAAS,CAAC,OAAyB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjD;;;;;IAKD,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;IAED,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACnC;;4EA5DQ,cAAc,cAMX,aAAa;oEANhB,cAAc,WAAd,cAAc;uFAAd,cAAc;cAD1B,UAAU;;sBAOF,MAAM;uBAAC,aAAa;;;AC9B7B;;;;MAYa,uBAAuB;IAMhC,YACmC,YAAsC,EAC7D,WAA2B;QADJ,iBAAY,GAAZ,YAAY,CAA0B;QAC7D,gBAAW,GAAX,WAAW,CAAgB;QAEnC,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAgB,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;;QAGrD,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAoB,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAEnD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAqB;YACrD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,sBAAsB,OAAO,CAAC,SAAS,qCAAqC,MAAM,EAAE,CAAC,CAAC;gBAC3H,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACjC;SACJ,CAAC,CAAC;KACN;;8FAzBQ,uBAAuB,cAOpB,aAAa;6EAPhB,uBAAuB,WAAvB,uBAAuB;uFAAvB,uBAAuB;cADnC,UAAU;;sBAQF,MAAM;uBAAC,aAAa;;;MCahB,yBAAyB;IAMpC,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAsB,EACtB,WAA2B,EACA,eAA4C;QAJvE,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAgB;QACtB,gBAAW,GAAX,WAAW,CAAgB;QACA,oBAAe,GAAf,eAAe,CAA6B;QAThE,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC1C,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAWnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAEhE,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,uBAAuB,CAAC;YACtD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;YACrC,KAAK,EAAE;gBACL,aAAa,EAAE,gBAAgB;aAChC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,gBAAgB,CAAC,WAAW;iBAChC,IAAI,CACH,MAAM,CAAC,CAAC,MAAyB,KAAK,MAAM,KAAK,iBAAiB,CAAC,IAAI,CAAC,EACxE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAC7B;iBACA,SAAS,CAAC;gBACT,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB,CAAC,CAAC;SAEJ;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;SACpE;KACF;IAEM,iBAAiB;QACtB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,kBAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAiB,CAAC;aAC3E,SAAS,CAAC,CAAC,QAA8B;YACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,CAAC,CAAC;KACJ;IAEO,YAAY;QAClB,IAAI,CAAC,WAAW,CAAC,QAAQ;aACtB,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAA4B,CAAC;aAC/D,IAAI,CAAC,CAAC,QAA8B;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB,CAAC,CAAC;SACJ,CAAC;aACD,KAAK,CAAC,CAAO,KAAK;YACjB,IAAI,KAAK,YAAY,4BAA4B,EAAE;;gBAEjD,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAA4B,CAAC,CAAC;aACxF;SACA,CAAA,CAAC,CAAC,KAAK,CAAC,KAAK;YACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;SACnC,CAAC,CAAC;KACR;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpE;;kGAtEU,yBAAyB,iLAW1B,iBAAiB;4EAXhB,yBAAyB;QChCtC,iCAAuF;QAA9B,sGAAS,uBAAmB,IAAC;QACpF,8BAAyC;QACzC,YACF;;QAAA,iBAAS;;QADP,eACF;QADE,qFACF;;uFD6Ba,yBAAyB;cANrC,SAAS;eAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,WAAW,EAAE,oCAAoC;gBACjD,SAAS,EAAE,CAAC,oCAAoC,CAAC;gBACjD,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;;sBAYI,MAAM;uBAAC,iBAAiB;wBARjB,KAAK;kBAAd,MAAM;;;MEjBI,qBAAqB;IAKhC,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAsB;QAFtB,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAgB;QALtB,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAOnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;SAChE;KACF;IAEO,eAAe;QACpB,MAAc,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,GAAG;YACzD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;SAChC,CAAC,CAAC;KACJ;IAEO,oBAAoB,CAAC,QAAQ;QACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;YACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;SACjC;KACF;IAEO,aAAa,CAAC,KAAK;QACzB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvB,CAAC,CAAC;KACJ;IAEO,eAAe;QACrB,IAAI,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;YAC7C,OAAO;SACR;QAED,MAAM,MAAM,GACV,gEAAgE,CAAC;QAEnE,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,EAAE,CAAC,EAAE,GAAG,gBAAgB,CAAC;QACzB,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjD,EAAE,CAAC,MAAM,GAAG;YACV,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC;QACF,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KACtC;;0FAvDU,qBAAqB;wEAArB,qBAAqB;QClBlC,yBAIM;;uFDcO,qBAAqB;cANjC,SAAS;eAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,WAAW,EAAE,gCAAgC;gBAC7C,SAAS,EAAE,CAAC,gCAAgC,CAAC;gBAC7C,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;oHAIW,KAAK;kBAAd,MAAM;;;;;IEPP,iCAAiI;IAA3B,+LAA0B;IAC9H,YACF;;IAAA,iBAAS;;;IAFwE,yCAAoB;IACnG,eACF;IADE,iFACF;;;IACA,2BAAmB;IACjB,qBAAK;IACL,+BAA2B;IAAA,YAAS;IAAA,iBAAO;IAC7C,iBAAM;;;IADuB,eAAS;IAAT,kCAAS;;MCD3B,mBAAmB;IAgB9B,YACS,IAAiB,EAChB,eAAgC,EACxC,EAAe;QAFR,SAAI,GAAJ,IAAI,CAAa;QAChB,oBAAe,GAAf,eAAe,CAAiB;QAVlC,oBAAe,GAAG,IAAI,CAAC;QAExB,UAAK,GAAG,EAAE,CAAC;QAEX,YAAO,GAAG,KAAK,CAAC;QAEb,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAOnE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;YACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;SACpC,CAAC,CAAC;KACJ;IAxBD,IACI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,KAAc;QAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;IAoBD,SAAS,CAAC,MAAW;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CACzD;YACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,EACD,CAAC,KAAU;YACT,IAAI;gBACF,IAAI,CAAC,eAAe,CAAC,SAAS;qBAC3B,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;qBAC5C,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;aAClC;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CACF,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvB,CAAC,CAAC;KACJ;;sFApDU,mBAAmB;sEAAnB,mBAAmB;QDlBhC,+BAAwE;QAAnC,oGAAY,6BAAqB,IAAC;QACrE,2BAAK;QACH,yCAAmC;QACjC,2BAAkG;;QACpG,iBAAiB;QACnB,iBAAM;QAEN,2BAAK;QACH,yCAAmC;QACjC,2BAAsH;;QACxH,iBAAiB;QACnB,iBAAM;QAEN,iCAA4E;QAAA,aAAgC;;QAAA,iBAAS;QACrH,4EAES;QACT,sEAGM;QACR,iBAAO;;QArBD,oCAAkB;QAGO,eAA6C;QAA7C,8EAA6C;QAM7B,eAAiD;QAAjD,kFAAiD;QAItD,eAAmC;QAAnC,yDAAmC;QAAC,eAAgC;QAAhC,8DAAgC;QACnG,eAAoB;QAApB,yCAAoB;QAGvB,eAAW;QAAX,gCAAW;;uFCCN,mBAAmB;cAN/B,SAAS;eAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,WAAW,EAAE,8BAA8B;gBAC3C,SAAS,EAAE,CAAC,8BAA8B,CAAC;gBAC3C,eAAe,EAAE,uBAAuB,CAAC,OAAO;aACjD;qHAGK,cAAc;kBADjB,KAAK;YAaI,KAAK;kBAAd,MAAM;;;;IC/BP,yBAA+E;;;;IAK7E,0CAEsB;IAApB,uNAAmB;IACrB,iBAAkB;;;;IAClB,6CAEsB;IAApB,6NAAmB;IACrB,iBAAqB;;;;IACrB,gDAEsB;IAApB,mOAAmB;IACrB,iBAAwB;;;;IACxB,4CAEsB;IAApB,2NAAmB;IACrB,iBAAoB;;;;IACpB,0CAGsB;IAApB,uNAAmB;IACrB,iBAAkB;;;IAFhB,8DAAyC;;;IArB7C,8BAAqE;IACnE,0BAAI;IAAA,YAAqC;;IAAA,iBAAK;IAE9C,sGAGkB;IAClB,4GAGqB;IACrB,kHAGwB;IACxB,0GAGoB;IACpB,sGAIkB;IACpB,iBAAM;;;IAvBA,eAAqC;IAArC,iEAAqC;IAGtC,eAAwD;IAAxD,uFAAwD;IAIxD,eAA8D;IAA9D,6FAA8D;IAI9D,eAAoE;IAApE,mGAAoE;IAIpE,eAA4D;IAA5D,2FAA4D;IAI5D,eAAyD;IAAzD,wFAAyD;;;;IAM9D,8BAA+E;IAC7E,yBAAG;IAAA,YAAwC;;IAAA,iBAAI;IAC/C,iCAA2D;IAAnB,2LAAkB;IAAC,YAAkC;;IAAA,iBAAS;IACxG,iBAAM;;;IAFD,eAAwC;IAAxC,2EAAwC;IACgB,eAAkC;IAAlC,8DAAkC;;;;IAK7F,iCAAmF;IAAjB,kMAAgB;IAAC,YAA+B;;IAAA,iBAAS;;IAAxC,eAA+B;IAA/B,2DAA+B;;;IAFpH,8BAAsD;IACpD,yBAAG;IAAA,YAAuC;;IAAA,iBAAI;IAC9C,qFAA2H;IAC7H,iBAAM;;;IAFD,eAAuC;IAAvC,mEAAuC;IACjC,eAAuB;IAAvB,+CAAuB;;;IApCpC,2BAAqB;IACnB,wEAA+E;IAE/E,wEAwBM;IAEN,wEAGM;IAEN,wEAGM;IAER,iBAAM;;;IAtCE,eAAuC;IAAvC,sEAAuC;IAEvC,eAAkC;IAAlC,iEAAkC;IA0BlC,eAA4C;IAA5C,2EAA4C;IAK5C,eAAmB;IAAnB,2CAAmB;;MCZd,iBAAiB;IAuE5B,YACS,IAAiB,EAChB,MAAqB,EACT,MAAc;QAF3B,SAAI,GAAJ,IAAI,CAAa;QAChB,WAAM,GAAN,MAAM,CAAe;QACT,WAAM,GAAN,MAAM,CAAQ;QA/D5B,uBAAkB,GAAG,IAAI,CAAC;QAS1B,4BAAuB,GAAG,IAAI,CAAC;QAS/B,kBAAa,GAAG,IAAI,CAAC;QAYrB,6BAAwB,GAAG,KAAK,CAAC;QAYjC,mBAAc,GAAG,KAAK,CAAC;QAQrB,UAAK,GAA0B,IAAI,YAAY,EAAW,CAAC;QAK9D,YAAO,GAAG,IAAI,CAAC;QAUpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KACtE;IA7ED,IACI,iBAAiB;QACnB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IACD,IAAI,iBAAiB,CAAC,KAAc;QAClC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;KACvD;IAGD,IACI,sBAAsB;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACrC;IACD,IAAI,sBAAsB,CAAC,KAAc;QACvC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;KAC5D;IAGD,IACI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAc;QAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;KAClD;IAGD,IACI,uBAAuB;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,IAAI,CAAC,sBAAsB,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACtC;IACD,IAAI,uBAAuB,CAAC,KAAc;QACxC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;KAC7D;IAGD,IACI,aAAa;QACf,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;KACnD;IAGD,IAAI,YAAY;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;KACF;IAqBM,QAAQ;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;oBAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;iBAClD;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;iBAChD;aACF;SACF,CAAC,CAAC;KACJ;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SAChD;KACF;IAEO,OAAO;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,IAAI,GAAG;gBACV,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ;aAChE,CAAC;SACH;KACF;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,MAAM;aACf,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,eAAe,CAAC,CAAC;aACzD,SAAS,CAAC,CAAC,WAAgB;YAC1B,IAAI,WAAW,CAAC,GAAG,EAAE;gBACnB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC;gBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAE3C,IAAI,CAAC,aAAa,GAAG,YAAY,KAAK,WAAW,CAAC;gBAClD,IAAI,CAAC,YAAY,GAAG,YAAY,KAAK,UAAU,CAAC;gBAEhD,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;iBACpB;aACF;SACF,CAAC,CAAC;KACN;;kFA5IU,iBAAiB;oEAAjB,iBAAiB;QDtB9B,kEAuCM;;QAvCA,kCAAa;;uFCsBN,iBAAiB;cAN7B,SAAS;eAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,4BAA4B;gBACzC,SAAS,EAAE,CAAC,4BAA4B,CAAC;gBACzC,eAAe,EAAE,uBAAuB,CAAC,OAAO;aACjD;;sBA2EI,QAAQ;wBAxEP,iBAAiB;kBADpB,KAAK;YAaF,sBAAsB;kBADzB,KAAK;YAUF,YAAY;kBADf,KAAK;YAUF,uBAAuB;kBAD1B,KAAK;YAaF,aAAa;kBADhB,KAAK;YAkBI,KAAK;kBAAd,MAAM;;;MCrEI,WAAW;IACtB,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;QAED,OAAO,KAAK,CAAC;KACd;;sEApBU,WAAW;iEAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;uFAEP,WAAW;cAHvB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCCY,SAAS;IACpB,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YAClC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;QAED,OAAO,KAAK,CAAC;KACd;;kEApBU,SAAS;+DAAT,SAAS,WAAT,SAAS,mBAFR,MAAM;uFAEP,SAAS;cAHrB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCCY,UAAU;IACrB,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;QAED,OAAO,KAAK,CAAC;KACd;;oEArBU,UAAU;gEAAV,UAAU,WAAV,UAAU,mBAFT,MAAM;uFAEP,UAAU;cAHtB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCEY,YAAY;IACvB,YACU,WAAwB,EACxB,MAAqB,EACrB,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,MAA8B,EAAE,KAA0B;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,OAA8B;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACjD,IACE,OAAO;gBACP,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACpE;gBACA,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;YAEzC,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAClD;YAED,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;KACH;;wEA5BU,YAAY;kEAAZ,YAAY,WAAZ,YAAY,mBAFX,MAAM;uFAEP,YAAY;cAHxB,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCIY,eAAe;IAiB1B,YACU,MAAqB,EACrB,YAA0B,EAC1B,IAAgB;QAFhB,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,SAAI,GAAJ,IAAI,CAAY;QAnBlB,sBAAiB,GAAG,KAAK,CAAC;KAoB9B;IAlBJ,IAAY,UAAU;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAClE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC;KACnB;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;KACjE;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;KACvD;IAQD,SAAS,CACP,WAA6B,EAC7B,IAAiB;QAEjB,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE;YACf,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;aAC3D,CAAC,CAAC;SACJ;QACD,IAAI,eAAe,EAAE;YACnB,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC;gBACtB,eAAe;aAChB,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACvB,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SAC7B;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;QAED,MAAM,UAAU,GAAG,UAAU,KAAK,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC;SACtD,CAAC,CAAC;QAEH,MAAM,YAAY,GAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACrD,IACE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM;YACnC,YAAY;YACZ,YAAY,CAAC,IAAI;YACjB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAC1B;YACA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAW,CAAC;YACnE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;aAC3C,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC7B;IAED,YAAY,CAAC,GAAG,EAAE,GAAW;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,eAAe,EAAE;YAClB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;YACtC,OAAO,IAAI,CAAC;SACd;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9D,OAAO,KAAK,CAAC;SACd;QACD,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;KACb;IAED,mBAAmB,CAAC,GAAW;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,cAAc,GAAG,GAAG,CAAC;QACzB,IAAI,WAAW,EAAE;YACf,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,eAAe,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC/D,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,YAAY,CAAC,MAAM,EAAE;gBACvB,eAAe,IAAI,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACjD;YACD,OAAO,eAAe,CAAC;SACxB;QACD,OAAO;KACR;IAEO,0BAA0B,CAAC,MAAc;QAC/C,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,KAAK,MAAM,mBAAmB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3D,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YACrE,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC5B,eAAe,GAAG,mBAAmB,CAAC,eAAe,KAAK,SAAS,GAAG,mBAAmB,CAAC,eAAe,GAAG,SAAS,CAAC;gBACtH,MAAM;aACP;SACF;QACD,OAAO,eAAe,CAAC;KACxB;IAEO,oBAAoB,CAAC,MAAc;QACzC,IAAI,WAAW,CAAC;QAChB,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACvD,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACnE,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC5B,WAAW,GAAG,EAAC,GAAG,EAAG,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAC,CAAC;gBACvF,MAAM;aACP;SACF;QACD,OAAO,WAAW,CAAC;KACpB;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAEhD,IACE,CAAC,IAAI,CAAC,iBAAiB;YACvB,GAAG;YACH,WAAW,GAAG,GAAG,CAAC,GAAG;YACrB,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,EAC5B;YACA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC,SAAS,CACnD,CAAC,IAAS;gBACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC,EACD,GAAG;gBACD,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACxB,OAAO,GAAG,CAAC;aACZ,CACF,CAAC;SACH;KACF;;8EAhKU,eAAe;qEAAf,eAAe,WAAf,eAAe,mBAFd,MAAM;uFAEP,eAAe;cAH3B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;SCEe,iBAAiB,CAAC,MAAqB;IAErD,MAAM,MAAM,GAAuB,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAE5E,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,iDAAiD,CAAC;IAEzF,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;QAC5C,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE;YACL,aAAa,EAAE,gBAAgB;SAChC;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;SAEe,oBAAoB,CAAC,MAAqB;IAExD,MAAM,MAAM,GAAuB,MAAM,CAAC,SAAS,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC;IAClG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,iDAAiD,CAAC;IAEzF,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;QAC5C,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE;YACL,aAAa,EAAE,gBAAgB;SAChC;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;SAEe,wBAAwB,CAAC,MAAqB;IAE5D,MAAM,MAAM,GAAyB,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAE9E,OAAO;QACL,eAAe,EAAE,eAAe,CAAC,KAAK;QACtC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,SAAS,EAAE,MAAM;SAClB;QACD,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;SAEe,2BAA2B,CAAC,MAAqB;IAE/D,MAAM,MAAM,GAAuB,MAAM,CAAC,SAAS,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC;IAElG,OAAO;QACL,eAAe,EAAE,eAAe,CAAC,KAAK;QACtC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;SAC1B;QACD,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;SAEe,oBAAoB,CAAC,IAAa;IAChD,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO;YACL;gBACE,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,CAAC,aAAa,CAAC;aACtB;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,2BAA2B;gBACvC,IAAI,EAAE,CAAC,aAAa,CAAC;gBACrB,KAAK,EAAE,IAAI;aACZ;YACD,cAAc;SACf,CAAC;KACH;SAAM;QACL,OAAO;YACL;gBACE,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,iBAAiB;gBAC7B,IAAI,EAAE,CAAC,aAAa,CAAC;aACtB;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,wBAAwB;gBACpC,IAAI,EAAE,CAAC,aAAa,CAAC;gBACrB,KAAK,EAAE,IAAI;aACZ;YACD,WAAW;SACZ,CAAC;KACH;AACH;;MCzGa,kBAAkB;IAC7B,YAAY,cAA2B,EAAE,EAAc;QACrD,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE;YACrC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SAC3D;KACF;;oFALU,kBAAkB;qEAAlB,kBAAkB;uFAAlB,kBAAkB;cAH9B,SAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B;;;MCMY,kBAAmB,SAAQ,cAAc;IAGpD,YACE,MAAqB,EACb,IAAgB,EAChB,WAAwB,EACxB,YAA0B;QAElC,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAAY;QAChB,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QAIlC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe;YACtD,IAAI,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvC,IAAI,CAAC,IAAI;qBACN,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;qBACrB,SAAS,CAAC,CAAC,OAA+B;oBACzC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;wBACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;4BACjD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;4BACtC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;yBACvB;qBACF;iBACF,CAAC,CAAC;aACN;SACF,CAAC,CAAC;KACJ;IAED,GAAG,CACD,GAAW,EACX,KAAyC,EACzC,QAAsB,YAAY,CAAC,KAAK;QAExC,IACE,KAAK,KAAK,YAAY,CAAC,KAAK;YAC5B,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB;YACA,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;SAC/D;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9B;IAED,MAAM,CAAC,GAAW,EAAE,QAAsB,YAAY,CAAC,KAAK;QAC1D,IACE,KAAK,KAAK,YAAY,CAAC,KAAK;YAC5B,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB;YACA,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;SAC/D;QACD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC1B;IAED,KAAK,CAAC,QAAsB,YAAY,CAAC,KAAK;QAC5C,IACE,KAAK,KAAK,YAAY,CAAC,KAAK;YAC5B,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB;YACA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAC,EAAE;gBACnD,MAAM,EAAE;oBACN,eAAe,EAAE,OAAO;iBACzB;aACF,CAAC,CAAC,SAAS,EAAE,CAAC;SAChB;QAED,IAAI,KAAa,CAAC;QAClB,IAAI,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE;YAChC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;SACjC;QAED,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,IACE,KAAK,KAAK,YAAY,CAAC,KAAK;YAC5B,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB;YACA,IAAI,CAAC,IAAI;iBACN,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;iBACrB,SAAS,CAAC,CAAC,OAA+B;gBACzC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;oBACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBACtC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACvB;iBACF;aACF,CAAC,CAAC;SACN;KACF;;oFAjGU,kBAAkB;wEAAlB,kBAAkB,WAAlB,kBAAkB,mBAFjB,MAAM;uFAEP,kBAAkB;cAH9B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;ACLD,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE;CACjD,CAAC;MAOW,iBAAiB;;kFAAjB,iBAAiB;mEAAjB,iBAAiB;wEAFjB,EAAE,YAFJ,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9B,YAAY;uFAGX,iBAAiB;cAL7B,QAAQ;eAAC;gBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,SAAS,EAAE,EAAE;aACd;;wFACY,iBAAiB,0CAHlB,YAAY;;MCkCX,aAAa;IACxB,OAAO,OAAO;QACZ,OAAO;YACL,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,eAAe;oBACzB,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,kBAAkB;iBAC7B;gBACD,GAAG,oBAAoB,CAAC,KAAK,CAAC;gBAC9B,GAAG,oBAAoB,CAAC,KAAK,CAAC;aAC/B;SACF,CAAC;KACH;;0EAlBU,aAAa;+DAAb,aAAa;mEArBf;YACP,YAAY;YACZ,mBAAmB;YACnB,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,UAAU;SACX;uFAYU,aAAa;cAtBzB,QAAQ;eAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,mBAAmB;oBACnB,kBAAkB;oBAClB,cAAc;oBACd,aAAa;oBACb,eAAe;oBACf,iBAAiB;oBACjB,UAAU;iBACX;gBACD,YAAY,EAAE;oBACZ,iBAAiB;oBACjB,mBAAmB;oBACnB,mBAAmB;oBACnB,qBAAqB;oBACrB,sBAAsB;oBACtB,yBAAyB;oBACzB,kBAAkB;iBACnB;gBACD,OAAO,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;aACjD;;wFACY,aAAa,mBAVtB,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,qBAAqB;QACrB,sBAAsB;QACtB,yBAAyB;QACzB,kBAAkB,aAhBlB,YAAY;QACZ,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,UAAU,aAWF,iBAAiB,EAAE,kBAAkB;;AC5CjD;;;;ACAA;;;;;;"}
|
|
@@ -11,10 +11,13 @@ export declare class AuthInterceptor implements HttpInterceptor {
|
|
|
11
11
|
private refreshInProgress;
|
|
12
12
|
private get trustHosts();
|
|
13
13
|
private get hostsWithCredentials();
|
|
14
|
+
private get hostsWithAuthByKey();
|
|
14
15
|
constructor(config: ConfigService, tokenService: TokenService, http: HttpClient);
|
|
15
16
|
intercept(originalReq: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
16
17
|
interceptXhr(xhr: any, url: string): boolean;
|
|
18
|
+
alterUrlWithKeyAuth(url: string): string;
|
|
17
19
|
private handleHostsWithCredentials;
|
|
20
|
+
private handleHostsAuthByKey;
|
|
18
21
|
refreshToken(): import("rxjs").Subscription;
|
|
19
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthInterceptor, never>;
|
|
20
23
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthInterceptor>;
|
|
@@ -57,6 +57,12 @@ export interface AuthOptions {
|
|
|
57
57
|
trustHosts?: string[];
|
|
58
58
|
profilsGuard?: string[];
|
|
59
59
|
hostsWithCredentials?: WithCredentialsOptions[];
|
|
60
|
+
hostsByKey?: AuthByKeyOptions[];
|
|
61
|
+
}
|
|
62
|
+
export interface AuthByKeyOptions {
|
|
63
|
+
domainRegFilters?: string;
|
|
64
|
+
keyProperty?: string;
|
|
65
|
+
keyValue?: string;
|
|
60
66
|
}
|
|
61
67
|
export interface WithCredentialsOptions {
|
|
62
68
|
withCredentials?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "MSP",
|
|
6
6
|
"keywords": [
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"tslib": "^2.0.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@angular/cdk": "
|
|
26
|
-
"@angular/common": "^12.
|
|
27
|
-
"@angular/core": "^12.
|
|
28
|
-
"@angular/forms": "^12.
|
|
29
|
-
"@angular/material": "
|
|
30
|
-
"@igo2/core": "^1.
|
|
31
|
-
"@igo2/utils": "^1.
|
|
25
|
+
"@angular/cdk": "^12.2.9",
|
|
26
|
+
"@angular/common": "^12.2.9",
|
|
27
|
+
"@angular/core": "^12.2.9",
|
|
28
|
+
"@angular/forms": "^12.2.9",
|
|
29
|
+
"@angular/material": "^12.2.9",
|
|
30
|
+
"@igo2/core": "^1.10.0",
|
|
31
|
+
"@igo2/utils": "^1.10.0",
|
|
32
32
|
"rxjs": "^6.6.7",
|
|
33
33
|
"@azure/msal-angular": "^2.0.0",
|
|
34
34
|
"@azure/msal-browser": "^2.14.2"
|
|
@@ -41,5 +41,6 @@
|
|
|
41
41
|
"typings": "igo2-auth.d.ts",
|
|
42
42
|
"sideEffects": false,
|
|
43
43
|
"scripts": {
|
|
44
|
+
|
|
44
45
|
}
|
|
45
46
|
}
|