tango-app-ui-auth 3.0.18-dev → 3.0.20-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,37 +1,129 @@
1
1
  import { Component } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "tango-app-ui-shared";
4
- import * as i2 from "@angular/common";
5
+ import * as i2 from "../../services/auth.service";
5
6
  import * as i3 from "@angular/router";
6
7
  import * as i4 from "@angular/forms";
8
+ import * as i5 from "@angular/common";
7
9
  export class TangoAuthForgotPasswordComponent {
8
10
  toast;
11
+ authService;
12
+ activatedRoute;
13
+ fb;
14
+ router;
9
15
  emailEnable = true;
10
16
  OTP;
11
17
  passwordEnable = false;
12
- passwordShow = false;
18
+ newPasswordShow = false;
19
+ verifyPasswordShow = false;
13
20
  confirmPasswordShow = false;
14
- constructor(toast) {
21
+ email = new FormControl("", [
22
+ Validators.required,
23
+ Validators.email,
24
+ Validators.maxLength(100),
25
+ Validators.minLength(3),
26
+ ]);
27
+ PasswordForm;
28
+ constructor(toast, authService, activatedRoute, fb, router) {
15
29
  this.toast = toast;
30
+ this.authService = authService;
31
+ this.activatedRoute = activatedRoute;
32
+ this.fb = fb;
33
+ this.router = router;
34
+ this.PasswordForm = this.fb.group({
35
+ password: [
36
+ "",
37
+ Validators.compose([
38
+ Validators.required,
39
+ Validators.minLength(8),
40
+ Validators.maxLength(320),
41
+ Validators.pattern(/^(?=.*[A-Z])(?=.*\d).{8,}$/),
42
+ ]),
43
+ ],
44
+ confirmPassword: [
45
+ "",
46
+ Validators.compose([
47
+ Validators.required,
48
+ Validators.minLength(8),
49
+ Validators.maxLength(320),
50
+ Validators.pattern(/^(?=.*[A-Z])(?=.*\d).{8,}$/),
51
+ this.validateAreEqual.bind(this),
52
+ ]),
53
+ ],
54
+ token: [
55
+ "",
56
+ Validators.required
57
+ ]
58
+ });
59
+ this.activatedRoute.queryParams.subscribe({
60
+ next: (qparams) => {
61
+ if (qparams) {
62
+ if (qparams.token) {
63
+ this.passwordEnable = true;
64
+ this.emailEnable = false;
65
+ this.PasswordForm.get('token')?.setValue(qparams.token);
66
+ }
67
+ else {
68
+ this.emailEnable = true;
69
+ this.passwordEnable = false;
70
+ }
71
+ }
72
+ },
73
+ });
74
+ }
75
+ validateAreEqual(fieldControl) {
76
+ return fieldControl?.value === this.PasswordForm?.get("password").value ? null : { NotEqual: true };
16
77
  }
17
78
  onSubmit() {
18
- this.passwordEnable = true;
19
- this.emailEnable = false;
79
+ this.authService
80
+ .forgotPasswordTrigger({ email: this.email.value })
81
+ .subscribe({
82
+ next: (res) => {
83
+ if (res && res.code == 200) {
84
+ this.toast.getSuccessToast(`Reset password link sent to ${this.email.value}`);
85
+ this.passwordEnable = true;
86
+ this.emailEnable = false;
87
+ }
88
+ else {
89
+ this.toast.getSuccessToast(`Unable to send reset password link to ${this.email.value}`);
90
+ }
91
+ },
92
+ error: () => {
93
+ this.toast.getSuccessToast(`Unable to send reset password link to ${this.email.value}`);
94
+ },
95
+ });
96
+ }
97
+ showNewPassword() {
98
+ this.newPasswordShow = !this.newPasswordShow;
20
99
  }
21
- showPassword() {
22
- this.passwordShow = !this.passwordShow;
100
+ showVerifyPassword() {
101
+ this.verifyPasswordShow = !this.verifyPasswordShow;
23
102
  }
24
103
  showConfirmPassword() {
25
104
  this.confirmPasswordShow = !this.confirmPasswordShow;
26
105
  }
27
106
  onPasswordSubmit() {
28
- this.toast.getSuccessToast('Password updated successfully.');
107
+ this.authService.forgotPassword(this.PasswordForm.value).subscribe({
108
+ next: (res) => {
109
+ if (res && res.code == 200) {
110
+ this.toast.getSuccessToast("Password updated successfully.");
111
+ this.router.navigate(['auth/login']);
112
+ }
113
+ else {
114
+ this.toast.getErrorToast('Unable to reset password! Please try again later.');
115
+ }
116
+ },
117
+ error: () => {
118
+ this.toast.getErrorToast('Unable to reset password! Please try again later.');
119
+ },
120
+ });
29
121
  }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoAuthForgotPasswordComponent, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TangoAuthForgotPasswordComponent, selector: "lib-tango-auth-forgot-password", ngImport: i0, template: "<div class=\"container\">\r\n <!-- style=\"padding: 96px 142px 96px 142px;\" -->\r\n <div class=\"row position-absolute\" >\r\n <div class=\"col-md-6 pe-10 d-flex justify-content-center align-items-center \">\r\n <img src=\"./assets/tango/Icons/LHS.svg\" alt=\"Image\" class=\"img-fluid\">\r\n </div>\r\n <div *ngIf=\"emailEnable\" class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\"> \r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n \r\n <div class=\"login-form login-signin w-100\">\r\n \r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-10 ms-10\">\r\n <h1 class=\"title my-4\"> Forgot Password\r\n </h1>\r\n <div class=\"title-subtitle mb-1\"> Enter the Email associated with your account and\r\n we'll send you a OTP to reset your password.\r\n </div>\r\n </div>\r\n <form class=\"w-100 title-padding\" novalidate=\"novalidate\">\r\n <div class=\"mb-1\">\r\n <label class=\"label\">Email</label>\r\n <input class=\"form-control my-3\" type=\"email\" id=\"email\" name=\"email\">\r\n </div>\r\n </form>\r\n \r\n <div class=\"d-flex mt-5 mb-5 mx-10\" role=\"group\">\r\n \r\n <button class=\"btn btn-primary w-100\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Request reset link</button>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center my-3\" routerLink=\"/auth/login\">Back to login</a> \r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\" class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n </div>\r\n <div *ngIf=\"passwordEnable\" class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\"> \r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n \r\n <div class=\"login-form login-signin w-100\">\r\n \r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-5 ms-10\">\r\n \r\n <h1 class=\"title my-4\">Reset Password\r\n </h1>\r\n <div class=\"title-subtitle mb-7\">Enter a new password to reset the password on your account\r\n </div>\r\n <div class=\"mb-5\">\r\n <label class=\"label\">New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input class=\"form-control my-3\" [type]=\"passwordShow ? 'text' : 'password'\" id=\"newpassword\" name=\"newpassword\">\r\n <span (click)=\"showPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"passwordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!passwordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"mb-5\">\r\n <label class=\"label\">Confirm New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input class=\"form-control my-3\" [type]=\"confirmPasswordShow ? 'text' : 'password'\" id=\"confirmnewpassword\" name=\"confirmnewpassword\">\r\n <span (click)=\"showConfirmPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"confirmPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!confirmPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mt-10 mb-5\" role=\"group\">\r\n \r\n <button class=\"btn btn-primary w-100 \" id=\"alert-toast\"\r\n (click)=\"onPasswordSubmit()\">Reset password</button>\r\n </div>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center\" routerLink=\"/auth/login\">Back to login</a> \r\n\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\" class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <img src=\"./assets/tango/Icons/login-background1.svg\" alt=\"Image\" class=\"background-image\">\r\n </div>\r\n\r\n\r\n\r\n\r\n", styles: [".title{color:var(--Gray-900, #101828)!important;font-size:24px!important;font-weight:600;line-height:32px!important}.title-subtitle{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400;line-height:20px!important}.label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px!important}:host ::ng-deep .ng-otp-input-wrapper .otp-input:first-child{margin:0}:host ::ng-deep .ng-otp-input-wrapper .otp-input{margin-right:0!important;height:80px!important;width:80px;padding:8px;text-align:center;margin:10px 38px;color:var(--Gray-300, #D0D5DD)!important;font-size:60px;font-style:normal;font-weight:500;line-height:72px;letter-spacing:-1.2px;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d}.small_lbl{color:var(--Gray-500, #667085);text-align:center;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.container{width:100%;height:100%;overflow:hidden}.background-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}.content{position:relative;z-index:1;width:45%;margin-left:auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.login-form .title-padding{padding:0 32px}.login-form .login-title{color:var(--Gray-900, #101828);font-size:36px;font-weight:600;line-height:44px;letter-spacing:-.72px}.login-form .login-sub-title{color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px}.login-form .form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px}.login-form .img-src{padding:10px 5px 32px}.login-form .mx-25{margin-right:-10px!important;margin-left:-45px!important}.login-form .w-360px{width:360px!important}.login-form .forgot{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize;text-align:center}.login-form .signup-default{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.login-form .signup-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.login-form .footer{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important;line-height:20px}@media (min-width: 1745px) and (max-width: 1910px){.mt-6{margin-top:7rem!important}}@media (min-width: 1920px) and (max-width: 2100px){.mt-6{margin-top:10rem!important}.login-form .mx-25{margin-right:0!important;margin-left:20px!important}}.position-absolute{position:absolute;top:50%;transform:translateY(-50%)}.card{border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.backtologin{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoAuthForgotPasswordComponent, deps: [{ token: i1.ToastService }, { token: i2.AuthService }, { token: i3.ActivatedRoute }, { token: i4.FormBuilder }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
123
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TangoAuthForgotPasswordComponent, selector: "lib-tango-auth-forgot-password", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row position-absolute\">\r\n <div class=\"col-md-6 pe-10 d-flex justify-content-center align-items-center \">\r\n <img src=\"./assets/tango/Icons/LHS.svg\" alt=\"Image\" class=\"img-fluid\">\r\n </div>\r\n @if (emailEnable) {\r\n <div class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\">\r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n\r\n <div class=\"login-form login-signin w-100\">\r\n\r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-10 ms-10\">\r\n <h1 class=\"title my-4\"> Forgot Password\r\n </h1>\r\n <div class=\"title-subtitle mb-1\"> Enter the Email associated with your account and\r\n we'll send you a OTP to reset your password.\r\n </div>\r\n </div>\r\n <form class=\"w-100 title-padding\" novalidate=\"novalidate\">\r\n <div class=\"mb-1\">\r\n <label class=\"label\">Email</label>\r\n <input class=\"form-control my-3\" [formControl]=\"email\" type=\"email\" id=\"email\"\r\n name=\"email\">\r\n </div>\r\n </form>\r\n\r\n <div class=\"d-flex mt-5 mb-5 mx-10\" role=\"group\">\r\n\r\n <button class=\"btn btn-primary w-100\" id=\"alert-toast\" [disabled]=\"email.invalid\"\r\n (click)=\"onSubmit()\">Request reset link</button>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center my-3\" routerLink=\"/auth/login\">Back\r\n to\r\n login</a>\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\"\r\n class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions\r\n India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\"\r\n class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path\r\n d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\"\r\n stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n }\r\n @if(passwordEnable) {\r\n <div class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\">\r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n\r\n <div class=\"login-form login-signin w-100\">\r\n\r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-5 ms-10\">\r\n\r\n <h1 class=\"title my-4\">Reset Password\r\n </h1>\r\n <div class=\"title-subtitle mb-7\">Enter a new password to reset the password on your account\r\n </div>\r\n <form [formGroup]=\"PasswordForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"email\" class=\"form-label\">New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input [type]=\"newPasswordShow ? 'text' : 'password'\" class=\"form-control\" id=\"password\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'is-invalid': PasswordForm.get('password')?.touched && PasswordForm.get('password')?.hasError('required') }\">\r\n <span (click)=\"showNewPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0 me-n2\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"newPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!newPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n <small\r\n *ngIf=\"PasswordForm.get('password')?.hasError('required') && PasswordForm.get('password')?.touched\">Password\r\n is required</small>\r\n <small *ngIf=\"PasswordForm.get('password')?.hasError('pattern')\">Use\r\n 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n <small\r\n *ngIf=\"PasswordForm.get('password')?.touched && PasswordForm.get('password')?.invalid\"></small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Confirm New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input [type]=\"verifyPasswordShow ? 'text' : 'password'\" class=\"form-control\" id=\"confirmPassword\"\r\n formControlName=\"confirmPassword\"\r\n [ngClass]=\"{ 'is-invalid': PasswordForm.get('confirmPassword')?.touched && PasswordForm.get('confirmPassword')?.hasError('required') }\">\r\n <span (click)=\"showVerifyPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0 me-n2\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"verifyPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!verifyPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n <small *ngIf=\"PasswordForm.get('confirmPassword')?.hasError('pattern')\">The password must\r\n contain atleast one capital letter and number.</small>\r\n <small\r\n *ngIf=\"PasswordForm.get('confirmPassword')?.touched && PasswordForm.get('confirmPassword')?.invalid\">Password\r\n does not match</small>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"d-flex mt-10 mb-5\" role=\"group\">\r\n <button class=\"btn btn-primary w-100 \" id=\"alert-toast\" [disabled]=\"PasswordForm.invalid\"\r\n (click)=\"onPasswordSubmit()\">Reset\r\n password</button>\r\n </div>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center\" routerLink=\"/auth/login\">Back to\r\n login</a>\r\n\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\"\r\n class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions\r\n India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\"\r\n class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path\r\n d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\"\r\n stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <img src=\"./assets/tango/Icons/login-background1.svg\" alt=\"Image\" class=\"background-image\">\r\n</div>\r\n\r\n\r\n\r\n\r\n", styles: [".title{color:var(--Gray-900, #101828)!important;font-size:24px!important;font-weight:600;line-height:32px!important}.title-subtitle{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400;line-height:20px!important}.label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px!important}:host ::ng-deep .ng-otp-input-wrapper .otp-input:first-child{margin:0}:host ::ng-deep .ng-otp-input-wrapper .otp-input{margin-right:0!important;height:80px!important;width:80px;padding:8px;text-align:center;margin:10px 38px;color:var(--Gray-300, #D0D5DD)!important;font-size:60px;font-style:normal;font-weight:500;line-height:72px;letter-spacing:-1.2px;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d}.small_lbl{color:var(--Gray-500, #667085);text-align:center;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.container{width:100%;height:100%;overflow:hidden}.background-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}.content{position:relative;z-index:1;width:45%;margin-left:auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.login-form .title-padding{padding:0 32px}.login-form .login-title{color:var(--Gray-900, #101828);font-size:36px;font-weight:600;line-height:44px;letter-spacing:-.72px}.login-form .login-sub-title{color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px}.login-form .form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px}.login-form .img-src{padding:10px 5px 32px}.login-form .mx-25{margin-right:-10px!important;margin-left:-45px!important}.login-form .w-360px{width:360px!important}.login-form .forgot{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize;text-align:center}.login-form .signup-default{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.login-form .signup-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.login-form .footer{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important;line-height:20px}@media (min-width: 1745px) and (max-width: 1910px){.mt-6{margin-top:7rem!important}}@media (min-width: 1920px) and (max-width: 2100px){.mt-6{margin-top:10rem!important}.login-form .mx-25{margin-right:0!important;margin-left:20px!important}}.position-absolute{position:absolute;top:50%;transform:translateY(-50%)}.card{border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.backtologin{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.form-control{display:block;color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px;-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-select{font-size:1.1rem;font-weight:600;line-height:2.35;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}small{color:var(--Error-500, #F04438)!important;font-size:13px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}.alert-required{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:500!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
32
124
  }
33
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoAuthForgotPasswordComponent, decorators: [{
34
126
  type: Component,
35
- args: [{ selector: 'lib-tango-auth-forgot-password', template: "<div class=\"container\">\r\n <!-- style=\"padding: 96px 142px 96px 142px;\" -->\r\n <div class=\"row position-absolute\" >\r\n <div class=\"col-md-6 pe-10 d-flex justify-content-center align-items-center \">\r\n <img src=\"./assets/tango/Icons/LHS.svg\" alt=\"Image\" class=\"img-fluid\">\r\n </div>\r\n <div *ngIf=\"emailEnable\" class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\"> \r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n \r\n <div class=\"login-form login-signin w-100\">\r\n \r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-10 ms-10\">\r\n <h1 class=\"title my-4\"> Forgot Password\r\n </h1>\r\n <div class=\"title-subtitle mb-1\"> Enter the Email associated with your account and\r\n we'll send you a OTP to reset your password.\r\n </div>\r\n </div>\r\n <form class=\"w-100 title-padding\" novalidate=\"novalidate\">\r\n <div class=\"mb-1\">\r\n <label class=\"label\">Email</label>\r\n <input class=\"form-control my-3\" type=\"email\" id=\"email\" name=\"email\">\r\n </div>\r\n </form>\r\n \r\n <div class=\"d-flex mt-5 mb-5 mx-10\" role=\"group\">\r\n \r\n <button class=\"btn btn-primary w-100\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Request reset link</button>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center my-3\" routerLink=\"/auth/login\">Back to login</a> \r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\" class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n </div>\r\n <div *ngIf=\"passwordEnable\" class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\"> \r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n \r\n <div class=\"login-form login-signin w-100\">\r\n \r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-5 ms-10\">\r\n \r\n <h1 class=\"title my-4\">Reset Password\r\n </h1>\r\n <div class=\"title-subtitle mb-7\">Enter a new password to reset the password on your account\r\n </div>\r\n <div class=\"mb-5\">\r\n <label class=\"label\">New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input class=\"form-control my-3\" [type]=\"passwordShow ? 'text' : 'password'\" id=\"newpassword\" name=\"newpassword\">\r\n <span (click)=\"showPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"passwordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!passwordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"mb-5\">\r\n <label class=\"label\">Confirm New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input class=\"form-control my-3\" [type]=\"confirmPasswordShow ? 'text' : 'password'\" id=\"confirmnewpassword\" name=\"confirmnewpassword\">\r\n <span (click)=\"showConfirmPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"confirmPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!confirmPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mt-10 mb-5\" role=\"group\">\r\n \r\n <button class=\"btn btn-primary w-100 \" id=\"alert-toast\"\r\n (click)=\"onPasswordSubmit()\">Reset password</button>\r\n </div>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center\" routerLink=\"/auth/login\">Back to login</a> \r\n\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\" class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <img src=\"./assets/tango/Icons/login-background1.svg\" alt=\"Image\" class=\"background-image\">\r\n </div>\r\n\r\n\r\n\r\n\r\n", styles: [".title{color:var(--Gray-900, #101828)!important;font-size:24px!important;font-weight:600;line-height:32px!important}.title-subtitle{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400;line-height:20px!important}.label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px!important}:host ::ng-deep .ng-otp-input-wrapper .otp-input:first-child{margin:0}:host ::ng-deep .ng-otp-input-wrapper .otp-input{margin-right:0!important;height:80px!important;width:80px;padding:8px;text-align:center;margin:10px 38px;color:var(--Gray-300, #D0D5DD)!important;font-size:60px;font-style:normal;font-weight:500;line-height:72px;letter-spacing:-1.2px;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d}.small_lbl{color:var(--Gray-500, #667085);text-align:center;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.container{width:100%;height:100%;overflow:hidden}.background-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}.content{position:relative;z-index:1;width:45%;margin-left:auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.login-form .title-padding{padding:0 32px}.login-form .login-title{color:var(--Gray-900, #101828);font-size:36px;font-weight:600;line-height:44px;letter-spacing:-.72px}.login-form .login-sub-title{color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px}.login-form .form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px}.login-form .img-src{padding:10px 5px 32px}.login-form .mx-25{margin-right:-10px!important;margin-left:-45px!important}.login-form .w-360px{width:360px!important}.login-form .forgot{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize;text-align:center}.login-form .signup-default{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.login-form .signup-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.login-form .footer{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important;line-height:20px}@media (min-width: 1745px) and (max-width: 1910px){.mt-6{margin-top:7rem!important}}@media (min-width: 1920px) and (max-width: 2100px){.mt-6{margin-top:10rem!important}.login-form .mx-25{margin-right:0!important;margin-left:20px!important}}.position-absolute{position:absolute;top:50%;transform:translateY(-50%)}.card{border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.backtologin{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}\n"] }]
36
- }], ctorParameters: () => [{ type: i1.ToastService }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFNdkI7SUFMcEIsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixHQUFHLENBQU07SUFDVCxjQUFjLEdBQVcsS0FBSyxDQUFDO0lBQy9CLFlBQVksR0FBVyxLQUFLLENBQUM7SUFDN0IsbUJBQW1CLEdBQVcsS0FBSyxDQUFDO0lBQ3BDLFlBQW9CLEtBQWtCO1FBQWxCLFVBQUssR0FBTCxLQUFLLENBQWE7SUFBRSxDQUFDO0lBRTNDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFFLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFFLEtBQUssQ0FBQTtJQUN6QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3JELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0lBQzlELENBQUM7dUdBdEJZLGdDQUFnQzsyRkFBaEMsZ0NBQWdDLHNFQ1I3QyxpNU5BdUhBOzsyRkQvR2EsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YW5nby1hdXRoLWZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvQXV0aEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IHtcclxuICBlbWFpbEVuYWJsZTogYm9vbGVhbiA9dHJ1ZTtcclxuICBPVFA6IGFueTtcclxuICBwYXNzd29yZEVuYWJsZTogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgcGFzc3dvcmRTaG93OiBib29sZWFuID1mYWxzZTtcclxuICBjb25maXJtUGFzc3dvcmRTaG93OiBib29sZWFuID1mYWxzZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvYXN0OlRvYXN0U2VydmljZSl7fVxyXG5cclxub25TdWJtaXQoKXtcclxuICB0aGlzLnBhc3N3b3JkRW5hYmxlPSB0cnVlOyBcclxuICB0aGlzLmVtYWlsRW5hYmxlID1mYWxzZVxyXG59XHJcblxyXG5zaG93UGFzc3dvcmQoKSB7XHJcbiAgdGhpcy5wYXNzd29yZFNob3cgPSAhdGhpcy5wYXNzd29yZFNob3c7XHJcbn1cclxuc2hvd0NvbmZpcm1QYXNzd29yZCgpe1xyXG50aGlzLmNvbmZpcm1QYXNzd29yZFNob3cgPSAhdGhpcy5jb25maXJtUGFzc3dvcmRTaG93O1xyXG59XHJcblxyXG5vblBhc3N3b3JkU3VibWl0KCl7XHJcbiAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoJ1Bhc3N3b3JkIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicpXHJcbn1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIHN0eWxlPVwicGFkZGluZzogOTZweCAxNDJweCA5NnB4IDE0MnB4O1wiIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1hYnNvbHV0ZVwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcGUtMTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIFwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9MSFMuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImltZy1mbHVpZFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJlbWFpbEVuYWJsZVwiIGNsYXNzPVwiY29sLW1kLTYgcHMtMTAgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPiBcclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZmx1c2ggdy1sZy02MDBweCBtcy0yMCBweS0zIG10LTIwXCI+XHJcbiAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvcm0gbG9naW4tc2lnbmluIHctMTAwXCI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1iZXR3ZWVuIHRpdGxlLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXktMTAgbXMtMTBcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRpdGxlIG15LTRcIj4gRm9yZ290IFBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLXN1YnRpdGxlIG1iLTFcIj4gRW50ZXIgdGhlIEVtYWlsIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGFjY291bnQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgd2UnbGwgc2VuZCB5b3UgYSBPVFAgdG8gcmVzZXQgeW91ciBwYXNzd29yZC5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGZvcm0gIGNsYXNzPVwidy0xMDAgdGl0bGUtcGFkZGluZ1wiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+RW1haWw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBteS0zXCIgdHlwZT1cImVtYWlsXCIgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICBcclxuICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJkLWZsZXggbXQtNSBtYi01IG14LTEwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCIgaWQ9XCJhbGVydC10b2FzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5SZXF1ZXN0IHJlc2V0IGxpbms8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGJhY2t0b2xvZ2luIHRleHQtY2VudGVyIG15LTNcIiByb3V0ZXJMaW5rPVwiL2F1dGgvbG9naW5cIj5CYWNrIHRvIGxvZ2luPC9hPiBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAgY2xhc3M9XCIgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IG1iLTMgIGZsZXgtbWQtc3RhY2sgcHQtMyBjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTIwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTEgZm9vdGVyXCI+MjAyNDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwiZm9vdGVyIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIj4mIzY0O1RhbmdvSVRTb2x1dGlvbnMgSW5kaWEgUHZ0IEx0ZDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm1lbnUgbWVudS1ncmF5LTYwMCBtZW51LWhvdmVyLXByaW1hcnkgZnctc2VtaWJvbGQgb3JkZXItMSBtZS03XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtZW51LWl0ZW0gZm9vdGVyXCI+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vdGFuZ29leWUuYWkvI2Fib3V0dXNcIiBjbGFzcz1cIm1lbnUtbGluayBweC01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMiAxM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMy43MDAyQzExIDMuMTUwMiAxMC41NSAyLjcwMDIgMTAgMi43MDAySDJDMS40NSAyLjcwMDIgMSAzLjE1MDIgMSAzLjcwMDJNMTEgMy43MDAyVjkuNzAwMkMxMSAxMC4yNTAyIDEwLjU1IDEwLjcwMDIgMTAgMTAuNzAwMkgyQzEuNDUgMTAuNzAwMiAxIDEwLjI1MDIgMSA5LjcwMDJWMy43MDAyTTExIDMuNzAwMkw2IDcuMjAwMkwxIDMuNzAwMlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPnN1cHBvcnQmIzY0O3RhbmdvdGVjaC5jby5pbjwvc3Bhbj48L2E+PC9saT5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInBhc3N3b3JkRW5hYmxlXCIgY2xhc3M9XCJjb2wtbWQtNiBwcy0xMCAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+IFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZmx1c2ggdy1sZy02MDBweCBtcy0yMCBweS0zIG10LTIwXCI+XHJcbiAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZm9ybSBsb2dpbi1zaWduaW4gdy0xMDBcIj5cclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWJldHdlZW4gdGl0bGUtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBteS01IG1zLTEwXCI+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRpdGxlIG15LTRcIj5SZXNldCBQYXNzd29yZFxyXG4gICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtc3VidGl0bGUgbWItN1wiPkVudGVyIGEgbmV3IHBhc3N3b3JkIHRvIHJlc2V0IHRoZSBwYXNzd29yZCBvbiB5b3VyIGFjY291bnRcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiPk5ldyBQYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG15LTNcIiBbdHlwZV09XCJwYXNzd29yZFNob3cgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgaWQ9XCJuZXdwYXNzd29yZFwiIG5hbWU9XCJuZXdwYXNzd29yZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlIHRvcC01MCBlbmQtMFwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLWt0LXBhc3N3b3JkLW1ldGVyLWNvbnRyb2w9XCJ2aXNpYmlsaXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInBhc3N3b3JkU2hvd1wiIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhcGFzc3dvcmRTaG93XCIgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIj5Db25maXJtIE5ldyBQYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG15LTNcIiBbdHlwZV09XCJjb25maXJtUGFzc3dvcmRTaG93ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiIGlkPVwiY29uZmlybW5ld3Bhc3N3b3JkXCIgbmFtZT1cImNvbmZpcm1uZXdwYXNzd29yZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dDb25maXJtUGFzc3dvcmQoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gcG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZSB0b3AtNTAgZW5kLTBcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1rdC1wYXNzd29yZC1tZXRlci1jb250cm9sPVwidmlzaWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb25maXJtUGFzc3dvcmRTaG93XCIgY2xhc3M9XCJmYSBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFjb25maXJtUGFzc3dvcmRTaG93XCIgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImQtZmxleCBtdC0xMCBtYi01XCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIFwiIGlkPVwiYWxlcnQtdG9hc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBhc3N3b3JkU3VibWl0KClcIj5SZXNldCBwYXNzd29yZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBiYWNrdG9sb2dpbiB0ZXh0LWNlbnRlclwiIHJvdXRlckxpbms9XCIvYXV0aC9sb2dpblwiPkJhY2sgdG8gbG9naW48L2E+IFxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCBvcmRlci0yIG9yZGVyLW1kLTEgbXMtMjBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMSBmb290ZXJcIj4yMDI0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9ucyBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibWVudSBtZW51LWdyYXktNjAwIG1lbnUtaG92ZXItcHJpbWFyeSBmdy1zZW1pYm9sZCBvcmRlci0xIG1lLTdcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiIGNsYXNzPVwibWVudS1saW5rIHB4LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAzLjcwMDJDMTEgMy4xNTAyIDEwLjU1IDIuNzAwMiAxMCAyLjcwMDJIMkMxLjQ1IDIuNzAwMiAxIDMuMTUwMiAxIDMuNzAwMk0xMSAzLjcwMDJWOS43MDAyQzExIDEwLjI1MDIgMTAuNTUgMTAuNzAwMiAxMCAxMC43MDAySDJDMS40NSAxMC43MDAyIDEgMTAuMjUwMiAxIDkuNzAwMlYzLjcwMDJNMTEgMy43MDAyTDYgNy4yMDAyTDEgMy43MDAyXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+c3VwcG9ydCYjNjQ7dGFuZ290ZWNoLmNvLmluPC9zcGFuPjwvYT48L2xpPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9naW4tYmFja2dyb3VuZDEuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImJhY2tncm91bmQtaW1hZ2VcIj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
127
+ args: [{ selector: "lib-tango-auth-forgot-password", template: "<div class=\"container\">\r\n <div class=\"row position-absolute\">\r\n <div class=\"col-md-6 pe-10 d-flex justify-content-center align-items-center \">\r\n <img src=\"./assets/tango/Icons/LHS.svg\" alt=\"Image\" class=\"img-fluid\">\r\n </div>\r\n @if (emailEnable) {\r\n <div class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\">\r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n\r\n <div class=\"login-form login-signin w-100\">\r\n\r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-10 ms-10\">\r\n <h1 class=\"title my-4\"> Forgot Password\r\n </h1>\r\n <div class=\"title-subtitle mb-1\"> Enter the Email associated with your account and\r\n we'll send you a OTP to reset your password.\r\n </div>\r\n </div>\r\n <form class=\"w-100 title-padding\" novalidate=\"novalidate\">\r\n <div class=\"mb-1\">\r\n <label class=\"label\">Email</label>\r\n <input class=\"form-control my-3\" [formControl]=\"email\" type=\"email\" id=\"email\"\r\n name=\"email\">\r\n </div>\r\n </form>\r\n\r\n <div class=\"d-flex mt-5 mb-5 mx-10\" role=\"group\">\r\n\r\n <button class=\"btn btn-primary w-100\" id=\"alert-toast\" [disabled]=\"email.invalid\"\r\n (click)=\"onSubmit()\">Request reset link</button>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center my-3\" routerLink=\"/auth/login\">Back\r\n to\r\n login</a>\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\"\r\n class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions\r\n India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\"\r\n class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path\r\n d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\"\r\n stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n }\r\n @if(passwordEnable) {\r\n <div class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\">\r\n <div class=\"card card-flush w-lg-600px ms-20 py-3 mt-20\">\r\n\r\n <div class=\"login-form login-signin w-100\">\r\n\r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-5 ms-10\">\r\n\r\n <h1 class=\"title my-4\">Reset Password\r\n </h1>\r\n <div class=\"title-subtitle mb-7\">Enter a new password to reset the password on your account\r\n </div>\r\n <form [formGroup]=\"PasswordForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"email\" class=\"form-label\">New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input [type]=\"newPasswordShow ? 'text' : 'password'\" class=\"form-control\" id=\"password\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'is-invalid': PasswordForm.get('password')?.touched && PasswordForm.get('password')?.hasError('required') }\">\r\n <span (click)=\"showNewPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0 me-n2\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"newPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!newPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n <small\r\n *ngIf=\"PasswordForm.get('password')?.hasError('required') && PasswordForm.get('password')?.touched\">Password\r\n is required</small>\r\n <small *ngIf=\"PasswordForm.get('password')?.hasError('pattern')\">Use\r\n 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n <small\r\n *ngIf=\"PasswordForm.get('password')?.touched && PasswordForm.get('password')?.invalid\"></small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Confirm New Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input [type]=\"verifyPasswordShow ? 'text' : 'password'\" class=\"form-control\" id=\"confirmPassword\"\r\n formControlName=\"confirmPassword\"\r\n [ngClass]=\"{ 'is-invalid': PasswordForm.get('confirmPassword')?.touched && PasswordForm.get('confirmPassword')?.hasError('required') }\">\r\n <span (click)=\"showVerifyPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0 me-n2\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"verifyPasswordShow\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!verifyPasswordShow\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n <small *ngIf=\"PasswordForm.get('confirmPassword')?.hasError('pattern')\">The password must\r\n contain atleast one capital letter and number.</small>\r\n <small\r\n *ngIf=\"PasswordForm.get('confirmPassword')?.touched && PasswordForm.get('confirmPassword')?.invalid\">Password\r\n does not match</small>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"d-flex mt-10 mb-5\" role=\"group\">\r\n <button class=\"btn btn-primary w-100 \" id=\"alert-toast\" [disabled]=\"PasswordForm.invalid\"\r\n (click)=\"onPasswordSubmit()\">Reset\r\n password</button>\r\n </div>\r\n </div>\r\n <a class=\"text-decoration-underline backtologin text-center\" routerLink=\"/auth/login\">Back to\r\n login</a>\r\n\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-20\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\"\r\n class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions\r\n India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\"\r\n class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path\r\n d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\"\r\n stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <img src=\"./assets/tango/Icons/login-background1.svg\" alt=\"Image\" class=\"background-image\">\r\n</div>\r\n\r\n\r\n\r\n\r\n", styles: [".title{color:var(--Gray-900, #101828)!important;font-size:24px!important;font-weight:600;line-height:32px!important}.title-subtitle{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400;line-height:20px!important}.label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px!important}:host ::ng-deep .ng-otp-input-wrapper .otp-input:first-child{margin:0}:host ::ng-deep .ng-otp-input-wrapper .otp-input{margin-right:0!important;height:80px!important;width:80px;padding:8px;text-align:center;margin:10px 38px;color:var(--Gray-300, #D0D5DD)!important;font-size:60px;font-style:normal;font-weight:500;line-height:72px;letter-spacing:-1.2px;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d}.small_lbl{color:var(--Gray-500, #667085);text-align:center;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.container{width:100%;height:100%;overflow:hidden}.background-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}.content{position:relative;z-index:1;width:45%;margin-left:auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.login-form .title-padding{padding:0 32px}.login-form .login-title{color:var(--Gray-900, #101828);font-size:36px;font-weight:600;line-height:44px;letter-spacing:-.72px}.login-form .login-sub-title{color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px}.login-form .form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px}.login-form .img-src{padding:10px 5px 32px}.login-form .mx-25{margin-right:-10px!important;margin-left:-45px!important}.login-form .w-360px{width:360px!important}.login-form .forgot{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize;text-align:center}.login-form .signup-default{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.login-form .signup-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.login-form .footer{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important;line-height:20px}@media (min-width: 1745px) and (max-width: 1910px){.mt-6{margin-top:7rem!important}}@media (min-width: 1920px) and (max-width: 2100px){.mt-6{margin-top:10rem!important}.login-form .mx-25{margin-right:0!important;margin-left:20px!important}}.position-absolute{position:absolute;top:50%;transform:translateY(-50%)}.card{border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.backtologin{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.form-control{display:block;color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px;-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-select{font-size:1.1rem;font-weight:600;line-height:2.35;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}small{color:var(--Error-500, #F04438)!important;font-size:13px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}.alert-required{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:500!important;line-height:20px}\n"] }]
128
+ }], ctorParameters: () => [{ type: i1.ToastService }, { type: i2.AuthService }, { type: i3.ActivatedRoute }, { type: i4.FormBuilder }, { type: i3.Router }] });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQvdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQWdDLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVVsRyxNQUFNLE9BQU8sZ0NBQWdDO0lBZ0JqQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJWLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsR0FBRyxDQUFNO0lBQ1QsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFDckMsS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtRQUMxQixVQUFVLENBQUMsUUFBUTtRQUNuQixVQUFVLENBQUMsS0FBSztRQUNoQixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUN6QixVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN4QixDQUFDLENBQUM7SUFDSCxZQUFZLENBQVk7SUFFeEIsWUFDVSxLQUFtQixFQUNuQixXQUF3QixFQUN4QixjQUE4QixFQUM5QixF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QyxzRUNYN0MsODdXQThKQTs7MkZEbkphLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdGFuZ28tYXV0aC1mb3Jnb3QtcGFzc3dvcmRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90YW5nby1hdXRoLWZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29BdXRoRm9yZ290UGFzc3dvcmRDb21wb25lbnQge1xyXG4gIGVtYWlsRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBPVFA6IGFueTtcclxuICBwYXNzd29yZEVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5ld1Bhc3N3b3JkU2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlcmlmeVBhc3N3b3JkU2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmZpcm1QYXNzd29yZFNob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbWFpbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbXHJcbiAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgVmFsaWRhdG9ycy5lbWFpbCxcclxuICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksXHJcbiAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcclxuICBdKTtcclxuICBQYXNzd29yZEZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLlBhc3N3b3JkRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBwYXNzd29yZDogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyMCksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPz0uKltBLVpdKSg/PS4qXFxkKS57OCx9JC8pLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgICBjb25maXJtUGFzc3dvcmQ6IFtcclxuICAgICAgICBcIlwiLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMjApLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD89LipbQS1aXSkoPz0uKlxcZCkuezgsfSQvKSxcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVBcmVFcXVhbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgICB0b2tlbjogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICBdXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHFwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChxcGFyYW1zKSB7XHJcbiAgICAgICAgICBpZiAocXBhcmFtcy50b2tlbikge1xyXG4gICAgICAgICAgICB0aGlzLnBhc3N3b3JkRW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5lbWFpbEVuYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlBhc3N3b3JkRm9ybS5nZXQoJ3Rva2VuJyk/LnNldFZhbHVlKHFwYXJhbXMudG9rZW4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbWFpbEVuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc3dvcmRFbmFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlQXJlRXF1YWwoZmllbGRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w8YW55Pikge1xyXG4gICAgcmV0dXJuIGZpZWxkQ29udHJvbD8udmFsdWUgPT09IHRoaXMuUGFzc3dvcmRGb3JtPy5nZXQoXCJwYXNzd29yZFwiKSEudmFsdWUgPyBudWxsIDogeyBOb3RFcXVhbDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlXHJcbiAgICAgIC5mb3Jnb3RQYXNzd29yZFRyaWdnZXIoeyBlbWFpbDogdGhpcy5lbWFpbC52YWx1ZSB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICAgIGBSZXNldCBwYXNzd29yZCBsaW5rIHNlbnQgdG8gJHt0aGlzLmVtYWlsLnZhbHVlfWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5wYXNzd29yZEVuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxFbmFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gc2VuZCByZXNldCBwYXNzd29yZCBsaW5rIHRvICR7dGhpcy5lbWFpbC52YWx1ZX1gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIGBVbmFibGUgdG8gc2VuZCByZXNldCBwYXNzd29yZCBsaW5rIHRvICR7dGhpcy5lbWFpbC52YWx1ZX1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd05ld1Bhc3N3b3JkKCkge1xyXG4gICAgdGhpcy5uZXdQYXNzd29yZFNob3cgPSAhdGhpcy5uZXdQYXNzd29yZFNob3c7XHJcbiAgfVxyXG5cclxuICBzaG93VmVyaWZ5UGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLnZlcmlmeVBhc3N3b3JkU2hvdyA9ICF0aGlzLnZlcmlmeVBhc3N3b3JkU2hvdztcclxuICB9XHJcblxyXG4gIHNob3dDb25maXJtUGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1QYXNzd29yZFNob3cgPSAhdGhpcy5jb25maXJtUGFzc3dvcmRTaG93O1xyXG4gIH1cclxuXHJcbiAgb25QYXNzd29yZFN1Ym1pdCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZm9yZ290UGFzc3dvcmQodGhpcy5QYXNzd29yZEZvcm0udmFsdWUpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiUGFzc3dvcmQgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCIpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhdXRoL2xvZ2luJ10pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1VuYWJsZSB0byByZXNldCBwYXNzd29yZCEgUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdVbmFibGUgdG8gcmVzZXQgcGFzc3dvcmQhIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1hYnNvbHV0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwZS0xMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTEhTLnN2Z1wiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJpbWctZmx1aWRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYgKGVtYWlsRW5hYmxlKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwcy0xMCAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWZsdXNoIHctbGctNjAwcHggbXMtMjAgcHktMyBtdC0yMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZm9ybSBsb2dpbi1zaWduaW4gdy0xMDBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtYmV0d2VlbiB0aXRsZS1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBteS0xMCBtcy0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRpdGxlIG15LTRcIj4gRm9yZ290IFBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtc3VidGl0bGUgbWItMVwiPiBFbnRlciB0aGUgRW1haWwgYXNzb2NpYXRlZCB3aXRoIHlvdXIgYWNjb3VudCBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2UnbGwgc2VuZCB5b3UgYSBPVFAgdG8gcmVzZXQgeW91ciBwYXNzd29yZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJ3LTEwMCB0aXRsZS1wYWRkaW5nXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiPkVtYWlsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG15LTNcIiBbZm9ybUNvbnRyb2xdPVwiZW1haWxcIiB0eXBlPVwiZW1haWxcIiBpZD1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNSBtYi01IG14LTEwXCIgcm9sZT1cImdyb3VwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIiBpZD1cImFsZXJ0LXRvYXN0XCIgW2Rpc2FibGVkXT1cImVtYWlsLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPlJlcXVlc3QgcmVzZXQgbGluazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgYmFja3RvbG9naW4gdGV4dC1jZW50ZXIgbXktM1wiIHJvdXRlckxpbms9XCIvYXV0aC9sb2dpblwiPkJhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xIGZvb3RlclwiPjIwMjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJtZW51IG1lbnUtZ3JheS02MDAgbWVudS1ob3Zlci1wcmltYXJ5IGZ3LXNlbWlib2xkIG9yZGVyLTEgbWUtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtbGluayBweC01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDMuNzAwMkMxMSAzLjE1MDIgMTAuNTUgMi43MDAyIDEwIDIuNzAwMkgyQzEuNDUgMi43MDAyIDEgMy4xNTAyIDEgMy43MDAyTTExIDMuNzAwMlY5LjcwMDJDMTEgMTAuMjUwMiAxMC41NSAxMC43MDAyIDEwIDEwLjcwMDJIMkMxLjQ1IDEwLjcwMDIgMSAxMC4yNTAyIDEgOS43MDAyVjMuNzAwMk0xMSAzLjcwMDJMNiA3LjIwMDJMMSAzLjcwMDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPnN1cHBvcnQmIzY0O3RhbmdvdGVjaC5jby5pbjwvc3Bhbj48L2E+PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZihwYXNzd29yZEVuYWJsZSkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHMtMTAgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1mbHVzaCB3LWxnLTYwMHB4IG1zLTIwIHB5LTMgbXQtMjBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvcm0gbG9naW4tc2lnbmluIHctMTAwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWJldHdlZW4gdGl0bGUtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXktNSBtcy0xMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ0aXRsZSBteS00XCI+UmVzZXQgUGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1zdWJ0aXRsZSBtYi03XCI+RW50ZXIgYSBuZXcgcGFzc3dvcmQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIG9uIHlvdXIgYWNjb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiUGFzc3dvcmRGb3JtXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC0xMiBjb2wteHhsLTEyIG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5OZXcgUGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbdHlwZV09XCJuZXdQYXNzd29yZFNob3cgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBQYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy50b3VjaGVkICYmIFBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dOZXdQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlIHRvcC01MCBlbmQtMCBtZS1uMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBhc3N3b3JkLW1ldGVyLWNvbnRyb2w9XCJ2aXNpYmlsaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm5ld1Bhc3N3b3JkU2hvd1wiIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhbmV3UGFzc3dvcmRTaG93XCIgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJQYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBQYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy50b3VjaGVkXCI+UGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQ8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cIlBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5Vc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCBvciBtb3JlIGNoYXJhY3RlcnMgd2l0aCBhIG1peCBvZiBsZXR0ZXJzLCBudW1iZXJzICYgc3ltYm9scy48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnRvdWNoZWQgJiYgUGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaW52YWxpZFwiPjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC0xMiBjb2wteHhsLTEyIG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbmZpcm0gTmV3IFBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwidmVyaWZ5UGFzc3dvcmRTaG93ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb25maXJtUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29uZmlybVBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBQYXNzd29yZEZvcm0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKT8udG91Y2hlZCAmJiBQYXNzd29yZEZvcm0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwic2hvd1ZlcmlmeVBhc3N3b3JkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIHBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUgdG9wLTUwIGVuZC0wIG1lLW4yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGFzc3dvcmQtbWV0ZXItY29udHJvbD1cInZpc2liaWxpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwidmVyaWZ5UGFzc3dvcmRTaG93XCIgY2xhc3M9XCJmYSBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF2ZXJpZnlQYXNzd29yZFNob3dcIiBjbGFzcz1cImZhIGZhLWV5ZS1zbGFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cIlBhc3N3b3JkRm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy5oYXNFcnJvcigncGF0dGVybicpXCI+VGhlIHBhc3N3b3JkIG11c3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiBhdGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlciBhbmQgbnVtYmVyLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUGFzc3dvcmRGb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJyk/LnRvdWNoZWQgJiYgUGFzc3dvcmRGb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJyk/LmludmFsaWRcIj5QYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2VzIG5vdCBtYXRjaDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMTAgbWItNVwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIFwiIGlkPVwiYWxlcnQtdG9hc3RcIiBbZGlzYWJsZWRdPVwiUGFzc3dvcmRGb3JtLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUGFzc3dvcmRTdWJtaXQoKVwiPlJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgYmFja3RvbG9naW4gdGV4dC1jZW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvbG9naW5cIj5CYWNrIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW48L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xIGZvb3RlclwiPjIwMjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJtZW51IG1lbnUtZ3JheS02MDAgbWVudS1ob3Zlci1wcmltYXJ5IGZ3LXNlbWlib2xkIG9yZGVyLTEgbWUtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtbGluayBweC01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDMuNzAwMkMxMSAzLjE1MDIgMTAuNTUgMi43MDAyIDEwIDIuNzAwMkgyQzEuNDUgMi43MDAyIDEgMy4xNTAyIDEgMy43MDAyTTExIDMuNzAwMlY5LjcwMDJDMTEgMTAuMjUwMiAxMC41NSAxMC43MDAyIDEwIDEwLjcwMDJIMkMxLjQ1IDEwLjcwMDIgMSAxMC4yNTAyIDEgOS43MDAyVjMuNzAwMk0xMSAzLjcwMDJMNiA3LjIwMDJMMSAzLjcwMDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPnN1cHBvcnQmIzY0O3RhbmdvdGVjaC5jby5pbjwvc3Bhbj48L2E+PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9naW4tYmFja2dyb3VuZDEuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImJhY2tncm91bmQtaW1hZ2VcIj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4iXX0=
@@ -113,8 +113,13 @@ export class TangoAuthLoginComponent {
113
113
  if (res && res.code == 200) {
114
114
  this.gs.userAccess.next(res.data?.permission);
115
115
  this.cd.detectChanges();
116
- this.router.navigate(['/manage/brands']);
117
- // this.router.navigateByUrl(this.returnUrl);
116
+ this.router.navigate(['/manage']);
117
+ }
118
+ else if (!res || res.code == 401) {
119
+ this.toastService.getErrorToast('Enter Valid Credentials');
120
+ }
121
+ else {
122
+ this.toastService.getErrorToast('Enter Valid Credentials');
118
123
  }
119
124
  },
120
125
  error: (err) => {
@@ -134,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
134
139
  type: Component,
135
140
  args: [{ selector: "lib-tango-auth-login", template: "<!-- <div class=\"row justify-content-center logotext px-0\">\r\n <img src=\"./assets/tango/Icons/login-background.svg\" alt=\"\">\r\n </div> -->\r\n\r\n<!-- \r\n<button (click)=\"onClick()\">Log In</button> -->\r\n\r\n<div class=\"container\">\r\n <!-- style=\"padding: 96px 142px 96px 142px;\" -->\r\n <div class=\"row position-absolute\" >\r\n <div class=\"col-md-6 pe-10 d-flex justify-content-center align-items-center \">\r\n <img src=\"./assets/tango/Icons/LHS.svg\" alt=\"Image\" class=\"img-fluid\">\r\n </div>\r\n <div class=\"col-md-6 ps-10 d-flex justify-content-center align-items-center\"> \r\n <div class=\"card\">\r\n \r\n \r\n\r\n\r\n \r\n <div class=\"login-form login-signin w-100\">\r\n \r\n <div class=\"d-flex flex-column align-items-between title-padding\">\r\n <div class=\"text-start my-10 ms-10\">\r\n <h3 class=\"login-title\">Log in</h3>\r\n <p class=\"login-sub-title\">Welcome back! Please enter your details.</p>\r\n </div>\r\n <form #loginForm=\"ngForm\" class=\"w-100 title-padding\" novalidate=\"novalidate\">\r\n <div class=\"mb-5 \">\r\n <label for=\"Brand\" class=\"form-label\">Email</label>\r\n <input type=\"type\" class=\"form-control\" id=\"Email\" name=\"Email\" autocomplete=\"off\" required [(ngModel)]=\"credentials.email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"mb-5 \">\r\n <label for=\"Brand\" class=\"form-label\">Password</label>\r\n <div class=\"position-relative mb-3\">\r\n <input class=\"form-control\" id=\"Password\" [type]=\"show ? 'text' : 'password'\"\r\n placeholder=\"\" name=\"password\" autocomplete=\"off\" required\r\n [(ngModel)]=\"credentials.password\">\r\n <span (click)=\"showPassword()\"\r\n class=\"btn btn-sm btn-icon position-absolute translate-middle top-50 end-0 me-n2\"\r\n data-kt-password-meter-control=\"visibility\">\r\n <i *ngIf=\"show\" class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n <i *ngIf=\"!show\" class=\"fa fa-eye-slash\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n <div *ngIf=\"hasError\" class=\"text-danger\" style=\"color: #ffffff !important;\">\r\n Email Id / Mobile Number or Password is incorrect\r\n </div>\r\n </div>\r\n\r\n <h6 class=\"forgot cursor-pointer\" routerLink=\"/auth/forgot-password\">Forgot Password</h6>\r\n <button class=\"btn btn-primary w-100 mt-3\" [disabled]=\"!loginForm.valid || (!credentials.email || !credentials.password)\" (click)=\"onLogin()\">Sign in</button>\r\n\r\n <button class=\"btn btn-outline w-100 mt-3\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3727_17759)\">\r\n <path\r\n d=\"M24.2663 12.9767C24.2663 12.161 24.2001 11.3408 24.059 10.5383H12.7402V15.1593H19.222C18.953 16.6497 18.0888 17.9681 16.8233 18.8058V21.8042H20.6903C22.9611 19.7142 24.2663 16.6276 24.2663 12.9767Z\"\r\n fill=\"#4285F4\" />\r\n <path\r\n d=\"M12.7401 24.701C15.9766 24.701 18.7059 23.6384 20.6945 21.8041L16.8276 18.8057C15.7517 19.5377 14.3627 19.9522 12.7445 19.9522C9.61388 19.9522 6.95946 17.8401 6.00705 15.0005H2.0166V18.0914C4.05371 22.1436 8.2029 24.701 12.7401 24.701Z\"\r\n fill=\"#34A853\" />\r\n <path\r\n d=\"M6.00277 15.0004C5.50011 13.5101 5.50011 11.8962 6.00277 10.4059V7.31494H2.01674C0.314734 10.7057 0.314734 14.7006 2.01674 18.0913L6.00277 15.0004Z\"\r\n fill=\"#FBBC04\" />\r\n <path\r\n d=\"M12.7401 5.44986C14.4509 5.4234 16.1044 6.06716 17.3434 7.24886L20.7695 3.82281C18.6001 1.7857 15.7208 0.665729 12.7401 0.701004C8.2029 0.701004 4.05371 3.25842 2.0166 7.315L6.00264 10.4059C6.95064 7.56193 9.60947 5.44986 12.7401 5.44986Z\"\r\n fill=\"#EA4335\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3727_17759\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5 0.700195)\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"mx-2\">Sign in with Google</span> </button>\r\n <button class=\"btn btn-outline w-100 mt-3\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3727_6141)\">\r\n <path d=\"M11.9057 12.104H0.5V0.700195H11.9057V12.104Z\" fill=\"#F1511B\" />\r\n <path d=\"M24.5004 12.104H13.0938V0.700195H24.4994V12.104H24.5004Z\" fill=\"#80CC28\" />\r\n <path d=\"M11.9057 24.7002H0.5V13.2964H11.9057V24.7002Z\" fill=\"#00ADEF\" />\r\n <path d=\"M24.5004 24.7002H13.0938V13.2964H24.4994V24.7002H24.5004Z\" fill=\"#FBBC09\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3727_6141\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5 0.700195)\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"mx-2\">Sign in with Microsoft</span></button>\r\n </form>\r\n\r\n <div class=\"mt-3 text-center ms-75px\"><span class=\"signup-default\"></span>Don\u2019t have an account?<span class=\"signup-primary ms-2 cursor-pointer\" routerLink=\"/auth/signup\">Sign up</span></div>\r\n </div>\r\n <div class=\" d-flex flex-column flex-md-row mb-3 flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-10\">\r\n <span class=\"me-1 footer\">2024</span>\r\n <a target=\"_blank\" class=\"footer text-decoration-underline cursor-pointer\">&#64;TangoITSolutions India Pvt Ltd</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n <path d=\"M11 3.7002C11 3.1502 10.55 2.7002 10 2.7002H2C1.45 2.7002 1 3.1502 1 3.7002M11 3.7002V9.7002C11 10.2502 10.55 10.7002 10 10.7002H2C1.45 10.7002 1 10.2502 1 9.7002V3.7002M11 3.7002L6 7.2002L1 3.7002\" stroke=\"#667085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">support&#64;tangotech.co.in</span></a></li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n \r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n<img src=\"./assets/tango/Icons/login-background1.svg\" alt=\"Image\" class=\"background-image\">\r\n</div>", styles: [".container{width:100%;height:100%;overflow:hidden}.background-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}.content{position:relative;z-index:1;width:45%;margin-left:auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 4px 10px #0000000d}.login-form .title-padding{padding:0 32px}.login-form .login-title{color:var(--Gray-900, #101828);font-size:36px;font-weight:600;line-height:44px;letter-spacing:-.72px}.login-form .login-sub-title{color:var(--Gray-500, #667085);font-size:16px;font-weight:400;line-height:24px}.login-form .form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500;line-height:20px}.login-form .img-src{padding:10px 5px 32px}.login-form .mx-25{margin-right:-10px!important;margin-left:-45px!important}.login-form .w-360px{width:360px!important}.login-form .forgot{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize;text-align:center}.login-form .signup-default{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.login-form .signup-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.login-form .footer{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important;line-height:20px}@media (min-width: 1745px) and (max-width: 1910px){.mt-6{margin-top:7rem!important}}@media (min-width: 1920px) and (max-width: 2100px){.mt-6{margin-top:10rem!important}.login-form .mx-25{margin-right:0!important;margin-left:20px!important}}.position-absolute{position:absolute;top:50%;transform:translateY(-50%)}\n"] }]
136
141
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.FormBuilder }, { type: i3.AuthService }, { type: i4.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i5.ToastService }] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1sb2dpbi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBV2pELE1BQU0sT0FBTyx1QkFBdUI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFBK0I7SUFDL0I7SUF0QlYsV0FBVyxHQUFRO1FBQ2pCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsUUFBUSxFQUFFLE1BQU07S0FDakIsQ0FBQztJQUNGLFFBQVEsQ0FBVTtJQUNsQixTQUFTLENBQVM7SUFDbEIsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUN0QixTQUFTLENBQU07SUFDZixXQUFXLEdBQVE7UUFDakIsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUM7SUFDRixTQUFTLENBQVU7SUFDWCxxQkFBcUIsQ0FBTTtJQUNsQixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUxQyxZQUNVLE1BQWMsRUFDZCxLQUFxQixFQUNyQixFQUFlLEVBQ2YsT0FBb0IsRUFDcEIsRUFBc0IsRUFBUyxFQUFxQixFQUNwRCxZQUEwQjtRQUwxQixXQUFNLEdBQU4s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QztpQkFDOUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO3VHQXZIVSx1QkFBdUI7MkZBQXZCLHVCQUF1Qiw0RENkcEMscWtPQWtITTs7MkZEcEdPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCdcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdGFuZ28tYXV0aC1sb2dpblwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vdGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29BdXRoTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVmYXVsdEF1dGg6IGFueSA9IHtcclxuICAgIGVtYWlsOiBcImFkbWluQGRlbW8uY29tXCIsXHJcbiAgICBwYXNzd29yZDogXCJkZW1vXCIsXHJcbiAgfTtcclxuICBoYXNFcnJvcjogYm9vbGVhbjtcclxuICByZXR1cm5Vcmw6IHN0cmluZztcclxuICBzaG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9naW5Gb3JtOiBhbnk7XHJcbiAgY3JlZGVudGlhbHM6IGFueSA9IHtcclxuICAgIGVtYWlsOiBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IG51bGwsXHJcbiAgfTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBhdXRobG9jYWxTdG9yYWdlVG9rZW46IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBjZCA6Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4gPSBgJHtlbnYuYXBwVmVyc2lvbn0tJHtlbnYuVVNFUkRBVEFfS0VZfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VXNlclZhbHVlKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIC8vIHRoaXMudXNlclByb2ZpbGUoKTtcclxuICAgIC8vIGdldCByZXR1cm4gdXJsIGZyb20gcm91dGUgcGFyYW1ldGVycyBvciBkZWZhdWx0IHRvICcvJ1xyXG4gICAgdGhpcy5yZXR1cm5VcmwgPVxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wicmV0dXJuVXJsXCIudG9TdHJpbmcoKV0gfHwgXCIvXCI7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZW1haWw6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLmVtYWlsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIwKSxcclxuICAgICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgcGFzc3dvcmQ6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLnBhc3N3b3JkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9uTG9naW4oKSB7XHJcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VydmljZS5sb2dpbih0aGlzLmNyZWRlbnRpYWxzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgaWYocmVzICYmIHJlcz8uY29kZSA9PT0gMjAwKXtcclxuICAgICAgICBsZXQgbG9naW5Ub2tlbjogYW55ID1cclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKTtcclxuICAgICAgICBpZiAobG9naW5Ub2tlbikge1xyXG4gICAgICAgICAgbG9naW5Ub2tlbiA9IEpTT04ucGFyc2UobG9naW5Ub2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZXM/LmRhdGE/LnJlc3VsdClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlKCk7XHJcbiAgICAgICAgfSAgZWxzZSBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSA0MDEpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ0VudGVyIFZhbGlkIENyZWRlbnRpYWxzJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1c2VyUHJvZmlsZSgpIHtcclxuICAgIHRoaXMuc2VydmljZS51c2VyUHJvZmlsZURldCgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyYmIHJlcy5jb2RlID09MjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdzLnVzZXJBY2Nlc3MubmV4dChyZXMuZGF0YT8ucGVybWlzc2lvbilcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvYnJhbmRzJ10pO1xyXG4gICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJldHVyblVybCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuc2hvdyA9ICF0aGlzLnNob3c7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGxvZ290ZXh0IHB4LTBcIj5cclxuICAgIDxpbWcgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2xvZ2luLWJhY2tncm91bmQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgPC9kaXY+IC0tPlxyXG5cclxuPCEtLSBcclxuPGJ1dHRvbiAoY2xpY2spPVwib25DbGljaygpXCI+TG9nIEluPC9idXR0b24+IC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDwhLS0gc3R5bGU9XCJwYWRkaW5nOiA5NnB4IDE0MnB4IDk2cHggMTQycHg7XCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1hYnNvbHV0ZVwiID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBlLTEwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL0xIUy5zdmdcIiBhbHQ9XCJJbWFnZVwiIGNsYXNzPVwiaW1nLWZsdWlkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHMtMTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+IFxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgIFxyXG4gICAgIFxyXG5cclxuXHJcbiAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvcm0gbG9naW4tc2lnbmluIHctMTAwXCI+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWJldHdlZW4gdGl0bGUtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXktMTAgbXMtMTBcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibG9naW4tdGl0bGVcIj5Mb2cgaW48L2gzPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImxvZ2luLXN1Yi10aXRsZVwiPldlbGNvbWUgYmFjayEgUGxlYXNlIGVudGVyIHlvdXIgZGV0YWlscy48L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxmb3JtICNsb2dpbkZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInctMTAwIHRpdGxlLXBhZGRpbmdcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNSBcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiQnJhbmRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIkVtYWlsXCIgbmFtZT1cIkVtYWlsXCIgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwiY3JlZGVudGlhbHMuZW1haWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi01IFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJCcmFuZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIlBhc3N3b3JkXCIgW3R5cGVdPVwic2hvdyA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cInBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyZWRlbnRpYWxzLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gcG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZSB0b3AtNTAgZW5kLTAgbWUtbjJcIlxyXG4gICAgICAgICAgICAgIGRhdGEta3QtcGFzc3dvcmQtbWV0ZXItY29udHJvbD1cInZpc2liaWxpdHlcIj5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cInNob3dcIiBjbGFzcz1cImZhIGZhLWV5ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFzaG93XCIgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBzdHlsZT1cImNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIEVtYWlsIElkIC8gTW9iaWxlIE51bWJlciBvciBQYXNzd29yZCBpcyBpbmNvcnJlY3RcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJmb3Jnb3QgY3Vyc29yLXBvaW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvZm9yZ290LXBhc3N3b3JkXCI+Rm9yZ290IFBhc3N3b3JkPC9oNj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtdC0zXCIgW2Rpc2FibGVkXT1cIiFsb2dpbkZvcm0udmFsaWQgfHwgKCFjcmVkZW50aWFscy5lbWFpbCB8fCAhY3JlZGVudGlhbHMucGFzc3dvcmQpXCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPlNpZ24gaW48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN18xNzc1OSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTI0LjI2NjMgMTIuOTc2N0MyNC4yNjYzIDEyLjE2MSAyNC4yMDAxIDExLjM0MDggMjQuMDU5IDEwLjUzODNIMTIuNzQwMlYxNS4xNTkzSDE5LjIyMkMxOC45NTMgMTYuNjQ5NyAxOC4wODg4IDE3Ljk2ODEgMTYuODIzMyAxOC44MDU4VjIxLjgwNDJIMjAuNjkwM0MyMi45NjExIDE5LjcxNDIgMjQuMjY2MyAxNi42Mjc2IDI0LjI2NjMgMTIuOTc2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDI4NUY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgMjQuNzAxQzE1Ljk3NjYgMjQuNzAxIDE4LjcwNTkgMjMuNjM4NCAyMC42OTQ1IDIxLjgwNDFMMTYuODI3NiAxOC44MDU3QzE1Ljc1MTcgMTkuNTM3NyAxNC4zNjI3IDE5Ljk1MjIgMTIuNzQ0NSAxOS45NTIyQzkuNjEzODggMTkuOTUyMiA2Ljk1OTQ2IDE3Ljg0MDEgNi4wMDcwNSAxNS4wMDA1SDIuMDE2NlYxOC4wOTE0QzQuMDUzNzEgMjIuMTQzNiA4LjIwMjkgMjQuNzAxIDEyLjc0MDEgMjQuNzAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzNEE4NTNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMDI3NyAxNS4wMDA0QzUuNTAwMTEgMTMuNTEwMSA1LjUwMDExIDExLjg5NjIgNi4wMDI3NyAxMC40MDU5VjcuMzE0OTRIMi4wMTY3NEMwLjMxNDczNCAxMC43MDU3IDAuMzE0NzM0IDE0LjcwMDYgMi4wMTY3NCAxOC4wOTEzTDYuMDAyNzcgMTUuMDAwNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkJCQzA0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgNS40NDk4NkMxNC40NTA5IDUuNDIzNCAxNi4xMDQ0IDYuMDY3MTYgMTcuMzQzNCA3LjI0ODg2TDIwLjc2OTUgMy44MjI4MUMxOC42MDAxIDEuNzg1NyAxNS43MjA4IDAuNjY1NzI5IDEyLjc0MDEgMC43MDEwMDRDOC4yMDI5IDAuNzAxMDA0IDQuMDUzNzEgMy4yNTg0MiAyLjAxNjYgNy4zMTVMNi4wMDI2NCAxMC40MDU5QzYuOTUwNjQgNy41NjE5MyA5LjYwOTQ3IDUuNDQ5ODYgMTIuNzQwMSA1LjQ0OTg2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNFQTQzMzVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM3MjdfMTc3NTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIEdvb2dsZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN182MTQxKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjkwNTcgMTIuMTA0SDAuNVYwLjcwMDE5NUgxMS45MDU3VjEyLjEwNFpcIiBmaWxsPVwiI0YxNTExQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjQuNTAwNCAxMi4xMDRIMTMuMDkzOFYwLjcwMDE5NUgyNC40OTk0VjEyLjEwNEgyNC41MDA0WlwiIGZpbGw9XCIjODBDQzI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS45MDU3IDI0LjcwMDJIMC41VjEzLjI5NjRIMTEuOTA1N1YyNC43MDAyWlwiIGZpbGw9XCIjMDBBREVGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNC41MDA0IDI0LjcwMDJIMTMuMDkzOFYxMy4yOTY0SDI0LjQ5OTRWMjQuNzAwMkgyNC41MDA0WlwiIGZpbGw9XCIjRkJCQzA5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzI3XzYxNDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIE1pY3Jvc29mdDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlciBtcy03NXB4XCI+PHNwYW4gY2xhc3M9XCJzaWdudXAtZGVmYXVsdFwiPjwvc3Bhbj5Eb27igJl0IGhhdmUgYW4gYWNjb3VudD88c3BhbiBjbGFzcz1cInNpZ251cC1wcmltYXJ5IG1zLTIgY3Vyc29yLXBvaW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvc2lnbnVwXCI+U2lnbiB1cDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTEwXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xIGZvb3RlclwiPjIwMjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9ucyBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtZW51IG1lbnUtZ3JheS02MDAgbWVudS1ob3Zlci1wcmltYXJ5IGZ3LXNlbWlib2xkIG9yZGVyLTEgbWUtN1wiPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiIGNsYXNzPVwibWVudS1saW5rIHB4LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMy43MDAyQzExIDMuMTUwMiAxMC41NSAyLjcwMDIgMTAgMi43MDAySDJDMS40NSAyLjcwMDIgMSAzLjE1MDIgMSAzLjcwMDJNMTEgMy43MDAyVjkuNzAwMkMxMSAxMC4yNTAyIDEwLjU1IDEwLjcwMDIgMTAgMTAuNzAwMkgyQzEuNDUgMTAuNzAwMiAxIDEwLjI1MDIgMSA5LjcwMDJWMy43MDAyTTExIDMuNzAwMkw2IDcuMjAwMkwxIDMuNzAwMlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5zdXBwb3J0JiM2NDt0YW5nb3RlY2guY28uaW48L3NwYW4+PC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgXHJcblxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9naW4tYmFja2dyb3VuZDEuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImJhY2tncm91bmQtaW1hZ2VcIj5cclxuPC9kaXY+Il19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1sb2dpbi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBV2pELE1BQU0sT0FBTyx1QkFBdUI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFBK0I7SUFDL0I7SUF0QlYsV0FBVyxHQUFRO1FBQ2pCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsUUFBUSxFQUFFLE1BQU07S0FDakIsQ0FBQztJQUNGLFFBQVEsQ0FBVTtJQUNsQixTQUFTLENBQVM7SUFDbEIsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUN0QixTQUFTLENBQU07SUFDZixXQUFXLEdBQVE7UUFDakIsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUM7SUFDRixTQUFTLENBQVU7SUFDWCxxQkFBcUIsQ0FBTTtJQUNsQixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUxQyxZQUNVLE1BQWMsRUFDZCxLQUFxQixFQUNyQixFQUFlLEVBQ2YsT0FBb0IsRUFDcEIsRUFBc0IsRUFBUyxFQUFxQixFQUNwRCxZQUEwQjtRQUwxQixXQUFNLEdBQU4s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QUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO29CQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUM1RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUM1RDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7dUdBMUhVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLDREQ2RwQyxxa09Ba0hNOzsyRkRwR08sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJ1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi10YW5nby1hdXRoLWxvZ2luXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYW5nb0F1dGhMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkZWZhdWx0QXV0aDogYW55ID0ge1xyXG4gICAgZW1haWw6IFwiYWRtaW5AZGVtby5jb21cIixcclxuICAgIHBhc3N3b3JkOiBcImRlbW9cIixcclxuICB9O1xyXG4gIGhhc0Vycm9yOiBib29sZWFuO1xyXG4gIHJldHVyblVybDogc3RyaW5nO1xyXG4gIHNob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2dpbkZvcm06IGFueTtcclxuICBjcmVkZW50aWFsczogYW55ID0ge1xyXG4gICAgZW1haWw6IG51bGwsXHJcbiAgICBwYXNzd29yZDogbnVsbCxcclxuICB9O1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIGF1dGhsb2NhbFN0b3JhZ2VUb2tlbjogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIGNkIDpDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLmF1dGhsb2NhbFN0b3JhZ2VUb2tlbiA9IGAke2Vudi5hcHBWZXJzaW9ufS0ke2Vudi5VU0VSREFUQV9LRVl9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgLy8gdGhpcy51c2VyUHJvZmlsZSgpO1xyXG4gICAgLy8gZ2V0IHJldHVybiB1cmwgZnJvbSByb3V0ZSBwYXJhbWV0ZXJzIG9yIGRlZmF1bHQgdG8gJy8nXHJcbiAgICB0aGlzLnJldHVyblVybCA9XHJcbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJyZXR1cm5VcmxcIi50b1N0cmluZygpXSB8fCBcIi9cIjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmxvZ2luRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBlbWFpbDogW1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEF1dGguZW1haWwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLmVtYWlsLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMjApLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgICBwYXNzd29yZDogW1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEF1dGgucGFzc3dvcmQsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksXHJcbiAgICAgICAgXSksXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgb25Mb2dpbigpIHtcclxuICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmxvZ2luKHRoaXMuY3JlZGVudGlhbHMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICBpZihyZXMgJiYgcmVzPy5jb2RlID09PSAyMDApe1xyXG4gICAgICAgIGxldCBsb2dpblRva2VuOiBhbnkgPVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4pO1xyXG4gICAgICAgIGlmIChsb2dpblRva2VuKSB7XHJcbiAgICAgICAgICBsb2dpblRva2VuID0gSlNPTi5wYXJzZShsb2dpblRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4sXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcz8uZGF0YT8ucmVzdWx0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMudXNlclByb2ZpbGUoKTtcclxuICAgICAgICB9ICBlbHNlIGlmICghcmVzIHx8IHJlcy5jb2RlID09IDQwMSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdFbnRlciBWYWxpZCBDcmVkZW50aWFscycpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVzZXJQcm9maWxlKCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLnVzZXJQcm9maWxlRGV0KCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzJiYgcmVzLmNvZGUgPT0yMDApIHtcclxuICAgICAgICAgIHRoaXMuZ3MudXNlckFjY2Vzcy5uZXh0KHJlcy5kYXRhPy5wZXJtaXNzaW9uKVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZSddKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFyZXMgfHwgcmVzLmNvZGUgPT0gNDAxKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdFbnRlciBWYWxpZCBDcmVkZW50aWFscycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdFbnRlciBWYWxpZCBDcmVkZW50aWFscycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuc2hvdyA9ICF0aGlzLnNob3c7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGxvZ290ZXh0IHB4LTBcIj5cclxuICAgIDxpbWcgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2xvZ2luLWJhY2tncm91bmQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgPC9kaXY+IC0tPlxyXG5cclxuPCEtLSBcclxuPGJ1dHRvbiAoY2xpY2spPVwib25DbGljaygpXCI+TG9nIEluPC9idXR0b24+IC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDwhLS0gc3R5bGU9XCJwYWRkaW5nOiA5NnB4IDE0MnB4IDk2cHggMTQycHg7XCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1hYnNvbHV0ZVwiID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBlLTEwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL0xIUy5zdmdcIiBhbHQ9XCJJbWFnZVwiIGNsYXNzPVwiaW1nLWZsdWlkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHMtMTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+IFxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgIFxyXG4gICAgIFxyXG5cclxuXHJcbiAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvcm0gbG9naW4tc2lnbmluIHctMTAwXCI+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWJldHdlZW4gdGl0bGUtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXktMTAgbXMtMTBcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibG9naW4tdGl0bGVcIj5Mb2cgaW48L2gzPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImxvZ2luLXN1Yi10aXRsZVwiPldlbGNvbWUgYmFjayEgUGxlYXNlIGVudGVyIHlvdXIgZGV0YWlscy48L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxmb3JtICNsb2dpbkZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInctMTAwIHRpdGxlLXBhZGRpbmdcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNSBcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiQnJhbmRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIkVtYWlsXCIgbmFtZT1cIkVtYWlsXCIgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwiY3JlZGVudGlhbHMuZW1haWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi01IFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJCcmFuZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIlBhc3N3b3JkXCIgW3R5cGVdPVwic2hvdyA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cInBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyZWRlbnRpYWxzLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gcG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZSB0b3AtNTAgZW5kLTAgbWUtbjJcIlxyXG4gICAgICAgICAgICAgIGRhdGEta3QtcGFzc3dvcmQtbWV0ZXItY29udHJvbD1cInZpc2liaWxpdHlcIj5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cInNob3dcIiBjbGFzcz1cImZhIGZhLWV5ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFzaG93XCIgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBzdHlsZT1cImNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIEVtYWlsIElkIC8gTW9iaWxlIE51bWJlciBvciBQYXNzd29yZCBpcyBpbmNvcnJlY3RcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJmb3Jnb3QgY3Vyc29yLXBvaW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvZm9yZ290LXBhc3N3b3JkXCI+Rm9yZ290IFBhc3N3b3JkPC9oNj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtdC0zXCIgW2Rpc2FibGVkXT1cIiFsb2dpbkZvcm0udmFsaWQgfHwgKCFjcmVkZW50aWFscy5lbWFpbCB8fCAhY3JlZGVudGlhbHMucGFzc3dvcmQpXCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPlNpZ24gaW48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN18xNzc1OSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTI0LjI2NjMgMTIuOTc2N0MyNC4yNjYzIDEyLjE2MSAyNC4yMDAxIDExLjM0MDggMjQuMDU5IDEwLjUzODNIMTIuNzQwMlYxNS4xNTkzSDE5LjIyMkMxOC45NTMgMTYuNjQ5NyAxOC4wODg4IDE3Ljk2ODEgMTYuODIzMyAxOC44MDU4VjIxLjgwNDJIMjAuNjkwM0MyMi45NjExIDE5LjcxNDIgMjQuMjY2MyAxNi42Mjc2IDI0LjI2NjMgMTIuOTc2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDI4NUY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgMjQuNzAxQzE1Ljk3NjYgMjQuNzAxIDE4LjcwNTkgMjMuNjM4NCAyMC42OTQ1IDIxLjgwNDFMMTYuODI3NiAxOC44MDU3QzE1Ljc1MTcgMTkuNTM3NyAxNC4zNjI3IDE5Ljk1MjIgMTIuNzQ0NSAxOS45NTIyQzkuNjEzODggMTkuOTUyMiA2Ljk1OTQ2IDE3Ljg0MDEgNi4wMDcwNSAxNS4wMDA1SDIuMDE2NlYxOC4wOTE0QzQuMDUzNzEgMjIuMTQzNiA4LjIwMjkgMjQuNzAxIDEyLjc0MDEgMjQuNzAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzNEE4NTNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMDI3NyAxNS4wMDA0QzUuNTAwMTEgMTMuNTEwMSA1LjUwMDExIDExLjg5NjIgNi4wMDI3NyAxMC40MDU5VjcuMzE0OTRIMi4wMTY3NEMwLjMxNDczNCAxMC43MDU3IDAuMzE0NzM0IDE0LjcwMDYgMi4wMTY3NCAxOC4wOTEzTDYuMDAyNzcgMTUuMDAwNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkJCQzA0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgNS40NDk4NkMxNC40NTA5IDUuNDIzNCAxNi4xMDQ0IDYuMDY3MTYgMTcuMzQzNCA3LjI0ODg2TDIwLjc2OTUgMy44MjI4MUMxOC42MDAxIDEuNzg1NyAxNS43MjA4IDAuNjY1NzI5IDEyLjc0MDEgMC43MDEwMDRDOC4yMDI5IDAuNzAxMDA0IDQuMDUzNzEgMy4yNTg0MiAyLjAxNjYgNy4zMTVMNi4wMDI2NCAxMC40MDU5QzYuOTUwNjQgNy41NjE5MyA5LjYwOTQ3IDUuNDQ5ODYgMTIuNzQwMSA1LjQ0OTg2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNFQTQzMzVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM3MjdfMTc3NTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIEdvb2dsZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN182MTQxKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjkwNTcgMTIuMTA0SDAuNVYwLjcwMDE5NUgxMS45MDU3VjEyLjEwNFpcIiBmaWxsPVwiI0YxNTExQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjQuNTAwNCAxMi4xMDRIMTMuMDkzOFYwLjcwMDE5NUgyNC40OTk0VjEyLjEwNEgyNC41MDA0WlwiIGZpbGw9XCIjODBDQzI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS45MDU3IDI0LjcwMDJIMC41VjEzLjI5NjRIMTEuOTA1N1YyNC43MDAyWlwiIGZpbGw9XCIjMDBBREVGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNC41MDA0IDI0LjcwMDJIMTMuMDkzOFYxMy4yOTY0SDI0LjQ5OTRWMjQuNzAwMkgyNC41MDA0WlwiIGZpbGw9XCIjRkJCQzA5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzI3XzYxNDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIE1pY3Jvc29mdDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlciBtcy03NXB4XCI+PHNwYW4gY2xhc3M9XCJzaWdudXAtZGVmYXVsdFwiPjwvc3Bhbj5Eb27igJl0IGhhdmUgYW4gYWNjb3VudD88c3BhbiBjbGFzcz1cInNpZ251cC1wcmltYXJ5IG1zLTIgY3Vyc29yLXBvaW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvc2lnbnVwXCI+U2lnbiB1cDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTEwXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xIGZvb3RlclwiPjIwMjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9ucyBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtZW51IG1lbnUtZ3JheS02MDAgbWVudS1ob3Zlci1wcmltYXJ5IGZ3LXNlbWlib2xkIG9yZGVyLTEgbWUtN1wiPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiIGNsYXNzPVwibWVudS1saW5rIHB4LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMy43MDAyQzExIDMuMTUwMiAxMC41NSAyLjcwMDIgMTAgMi43MDAySDJDMS40NSAyLjcwMDIgMSAzLjE1MDIgMSAzLjcwMDJNMTEgMy43MDAyVjkuNzAwMkMxMSAxMC4yNTAyIDEwLjU1IDEwLjcwMDIgMTAgMTAuNzAwMkgyQzEuNDUgMTAuNzAwMiAxIDEwLjI1MDIgMSA5LjcwMDJWMy43MDAyTTExIDMuNzAwMkw2IDcuMjAwMkwxIDMuNzAwMlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5zdXBwb3J0JiM2NDt0YW5nb3RlY2guY28uaW48L3NwYW4+PC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgXHJcblxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9naW4tYmFja2dyb3VuZDEuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImJhY2tncm91bmQtaW1hZ2VcIj5cclxuPC9kaXY+Il19