@annalib/anna-cognito-lib 2.2.4 → 2.2.6
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/esm2020/lib/anna-cognito-lib.module.mjs +6 -6
- package/esm2020/lib/components/sso-login/sso-login.component.mjs +32 -0
- package/esm2020/lib/config/auth-service.token.mjs +1 -1
- package/esm2020/lib/constants/loginConstant.mjs +2 -1
- package/esm2020/lib/services/auth.service.mjs +59 -57
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/annalib-anna-cognito-lib.mjs +70 -72
- package/fesm2015/annalib-anna-cognito-lib.mjs.map +1 -1
- package/fesm2020/annalib-anna-cognito-lib.mjs +70 -70
- package/fesm2020/annalib-anna-cognito-lib.mjs.map +1 -1
- package/lib/anna-cognito-lib.module.d.ts +2 -2
- package/lib/components/{duo-sso-login/duo-sso-login.component.d.ts → sso-login/sso-login.component.d.ts} +3 -4
- package/lib/config/auth-service.token.d.ts +1 -2
- package/lib/constants/loginConstant.d.ts +1 -0
- package/lib/services/auth.service.d.ts +1 -4
- package/package.json +1 -2
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/duo-sso-login/duo-sso-login.component.mjs +0 -35
|
@@ -8,13 +8,13 @@ import * as i6 from "./directives/spinner-button/spinner-button.directive";
|
|
|
8
8
|
import * as i7 from "./components/version-and-term-policy/version-and-term-policy.component";
|
|
9
9
|
import * as i8 from "./components/surewaves-year-logo/surewaves-year-logo.component";
|
|
10
10
|
import * as i9 from "./components/powered-by-logo-template/powered-by-logo-template.component";
|
|
11
|
-
import * as i10 from "./components/
|
|
11
|
+
import * as i10 from "./components/sso-login/sso-login.component";
|
|
12
12
|
import * as i11 from "@angular/forms";
|
|
13
13
|
import * as i12 from "@angular/router";
|
|
14
14
|
import * as i13 from "@angular/common";
|
|
15
15
|
export declare class AnnaCognitoLibModule {
|
|
16
16
|
constructor();
|
|
17
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<AnnaCognitoLibModule, never>;
|
|
18
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.
|
|
18
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.SsoLoginComponent], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.RouterModule, typeof i13.CommonModule, typeof i13.NgOptimizedImage], [typeof i1.LoginComponent, typeof i10.SsoLoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i13.NgOptimizedImage]>;
|
|
19
19
|
static ɵinj: i0.ɵɵInjectorDeclaration<AnnaCognitoLibModule>;
|
|
20
20
|
}
|
|
@@ -2,14 +2,13 @@ import { IConfigService } from '../../config/config-service.token';
|
|
|
2
2
|
import { LoginConstant } from '../../constants/loginConstant';
|
|
3
3
|
import { AnnaLibAuthService } from '../../services/auth.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class SsoLoginComponent {
|
|
6
6
|
authService: AnnaLibAuthService;
|
|
7
7
|
consumingProjectConfigService: IConfigService;
|
|
8
8
|
constants: typeof LoginConstant;
|
|
9
9
|
constructor(authService: AnnaLibAuthService, consumingProjectConfigService: IConfigService);
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
signInWithSSO(): void;
|
|
12
|
-
|
|
13
|
-
static
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DuoSsoLoginComponent, "anna-cognito-lib-duo-sso-login", never, {}, {}, never, never, false, never>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SsoLoginComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SsoLoginComponent, "anna-cognito-lib-sso-login", never, {}, {}, never, never, false, never>;
|
|
15
14
|
}
|
|
@@ -4,7 +4,7 @@ import { Observable } from 'rxjs';
|
|
|
4
4
|
export declare const AUTH_SERVICE_TOKEN: InjectionToken<IAuthService>;
|
|
5
5
|
export interface IAuthService {
|
|
6
6
|
isLoggingIn: boolean;
|
|
7
|
-
onSuccessfulAuthenticatingUser(
|
|
7
|
+
onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;
|
|
8
8
|
isUsernameAvailable(username: string): Observable<any>;
|
|
9
9
|
isEmailAvailable(emailId: string, ogId: number): Observable<any>;
|
|
10
10
|
getUserState(username: string): Observable<any>;
|
|
@@ -14,5 +14,4 @@ export interface IAuthService {
|
|
|
14
14
|
onPasswordUpdate(userName: string): void;
|
|
15
15
|
newPasswordSetThenUpdateToBackend(userCode: string): void;
|
|
16
16
|
signInWithDuo(): void;
|
|
17
|
-
signInWithCognito(): void;
|
|
18
17
|
}
|
|
@@ -39,6 +39,7 @@ export declare class LoginConstant {
|
|
|
39
39
|
static readonly forgortPasswordPageUrl = "/forgot-password";
|
|
40
40
|
static readonly verifyAndSetNewPasswordUrl = "/verify-and-set-new-password";
|
|
41
41
|
static readonly loginPageUrl = "/login";
|
|
42
|
+
static readonly coPilotloginPageUrl = "/co-pilot-login";
|
|
42
43
|
static readonly welcomeScrreenUrl = "/welcome-screen";
|
|
43
44
|
static readonly homePageUrl = "/dashboard";
|
|
44
45
|
static readonly stationSettingUrl = "/station-settings";
|
|
@@ -26,13 +26,11 @@ export declare class AnnaLibAuthService {
|
|
|
26
26
|
userName: any;
|
|
27
27
|
accessTokenTimerId: any;
|
|
28
28
|
forgotPasswordAndGlobalSignoutLoader: boolean;
|
|
29
|
-
userPassword: any;
|
|
30
29
|
constructor(router: Router, aclService: AnnaLibAclService, httpClient: HttpClient, toastr: ToastrService, consumingProjectAuthService: IAuthService, consumingProjectConfigService: IConfigService);
|
|
31
30
|
ngOnInit(): void;
|
|
32
31
|
isUserLoggedIn(): Promise<boolean>;
|
|
33
32
|
sessionTimeout(): void;
|
|
34
|
-
computeTokenExpiration(
|
|
35
|
-
getCurrentSession(): Promise<any>;
|
|
33
|
+
computeTokenExpiration(idToken: any): number;
|
|
36
34
|
handleSignIn({ username, password }: SignInInput): Promise<void>;
|
|
37
35
|
getAllCognitoTokenAndGroups(token: AuthTokens): Promise<void>;
|
|
38
36
|
refreshAccessToken(): void;
|
|
@@ -41,7 +39,6 @@ export declare class AnnaLibAuthService {
|
|
|
41
39
|
verifyCode(confirmationCode: string, newPassword: string): Promise<void>;
|
|
42
40
|
forgotPasswordError(err: any, noOfAttempts: number): string;
|
|
43
41
|
signInWithDuo(): void;
|
|
44
|
-
signInWithCognito(): void;
|
|
45
42
|
handleSignOut(): Promise<void>;
|
|
46
43
|
expiryAllExistingCurrentSession(username: string, newPassword: string): void;
|
|
47
44
|
setUserDetails(): void;
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@annalib/anna-cognito-lib",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.6",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^15.2.9",
|
|
6
6
|
"@angular/core": "^15.2.9",
|
|
7
7
|
"@mdi/font": "^5.9.55",
|
|
8
8
|
"@ng-bootstrap/ng-bootstrap": "^14.1.1",
|
|
9
9
|
"@types/node": "^12.11.1",
|
|
10
|
-
"@aws-amplify/ui-angular": "^5.0.2",
|
|
11
10
|
"aws-amplify": "^6.0.4",
|
|
12
11
|
"bootstrap": "^5.2.3",
|
|
13
12
|
"ngx-toastr": "^15.2.2"
|
package/public-api.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from './lib/anna-cognito-lib.module';
|
|
2
2
|
export * from './lib/components/login/login.component';
|
|
3
|
-
export * from './lib/components/
|
|
3
|
+
export * from './lib/components/sso-login/sso-login.component';
|
|
4
4
|
export * from './lib/components/forgot-password/forgot-password.component';
|
|
5
5
|
export * from './lib/components/set-new-password/set-new-password.component';
|
|
6
6
|
export * from './lib/components/password-matching/password-matching.component';
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { CONFIG_SERVICE_TOKEN } from '../../config/config-service.token';
|
|
3
|
-
import { LoginConstant } from '../../constants/loginConstant';
|
|
4
|
-
import { AnnaLibAuthService } from '../../services/auth.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../services/auth.service";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "../version-and-term-policy/version-and-term-policy.component";
|
|
9
|
-
import * as i4 from "../surewaves-year-logo/surewaves-year-logo.component";
|
|
10
|
-
import * as i5 from "../powered-by-logo-template/powered-by-logo-template.component";
|
|
11
|
-
export class DuoSsoLoginComponent {
|
|
12
|
-
constructor(authService, consumingProjectConfigService) {
|
|
13
|
-
this.authService = authService;
|
|
14
|
-
this.consumingProjectConfigService = consumingProjectConfigService;
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.constants = LoginConstant;
|
|
18
|
-
}
|
|
19
|
-
signInWithSSO() {
|
|
20
|
-
this.authService.signInWithDuo();
|
|
21
|
-
}
|
|
22
|
-
signInWithCognito() {
|
|
23
|
-
this.authService.signInWithCognito();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
DuoSsoLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, deps: [{ token: i1.AnnaLibAuthService }, { token: CONFIG_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
DuoSsoLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DuoSsoLoginComponent, selector: "anna-cognito-lib-duo-sso-login", ngImport: i0, template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "component", type: i3.VersionAndTermPolicyComponent, selector: "anna-cognito-lib-version-and-term-policy" }, { kind: "component", type: i4.SurewavesYearLogoComponent, selector: "anna-cognito-lib-surewaves-year-logo" }, { kind: "component", type: i5.PoweredByLogoTemplateComponent, selector: "anna-cognito-lib-powered-by-logo-template" }] });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{ selector: 'anna-cognito-lib-duo-sso-login', template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"] }]
|
|
31
|
-
}], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: undefined, decorators: [{
|
|
32
|
-
type: Inject,
|
|
33
|
-
args: [CONFIG_SERVICE_TOKEN]
|
|
34
|
-
}] }]; } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVvLXNzby1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdW8tc3NvLWxvZ2luL2R1by1zc28tbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZHVvLXNzby1sb2dpbi9kdW8tc3NvLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBa0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUNTLFdBQStCLEVBQ0QsNkJBQTZDO1FBRDNFLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUNELGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBZ0I7SUFDaEYsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN2QyxDQUFDOztpSEFsQlUsb0JBQW9CLG9EQUtyQixvQkFBb0I7cUdBTG5CLG9CQUFvQixzRUNWakMsMGlDQXVCTTsyRkRiTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFTdkMsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09ORklHX1NFUlZJQ0VfVE9LRU4sIElDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy1zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbG9naW5Db25zdGFudCc7XG5pbXBvcnQgeyBBbm5hTGliQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbm5hLWNvZ25pdG8tbGliLWR1by1zc28tbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHVvLXNzby1sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1by1zc28tbG9naW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEdW9Tc29Mb2dpbkNvbXBvbmVudCB7XG4gIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChDT05GSUdfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlOiBJQ29uZmlnU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcbiAgfVxuXG4gIHNpZ25JbldpdGhTU08oKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zaWduSW5XaXRoRHVvKCk7XG4gIH1cblxuICBzaWduSW5XaXRoQ29nbml0bygpIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNpZ25JbldpdGhDb2duaXRvKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gICAgPHNlY3Rpb24gKm5nSWY9XCJjb25zdGFudHMuZm9yZ290UGFzc3dvcmRcIj5cbiAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxpbWcgW25nU3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIHdpZHRoPVwiMTQ1XCIgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkFubmEgTG9nb1wiIHByaW9yaXR5IC8+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic3ViLXRpdGxlXCI+TG9naW48L3A+XG4gICAgICAgICAgICA8cD5TaWduIGluIHRvIHlvdXIgYWNjb3VudCB3aXRoIFNTTzwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG5cIiAoY2xpY2spPVwic2lnbkluV2l0aFNTTygpXCI+TG9naW48L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8YSB0YWJpbmRleD1cIjRcIiBjbGFzcz1cImxvZ2luLWxpbmtcIiBbcm91dGVyTGlua109XCJjb25zdGFudHMubG9naW5QYWdlVXJsXCI+U2lnbiBpbiB3aXRoIHVzZXJuYW1lPC9hPiAtLT5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8Zm9vdGVyPlxuICAgICAgICAgICAgPGFubmEtY29nbml0by1saWItcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYWdlLWZvb3RlclwiPlxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XG4gICAgPGFubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+PC9hbm5hLWNvZ25pdG8tbGliLXZlcnNpb24tYW5kLXRlcm0tcG9saWN5PlxuPC9kaXY+Il19
|