tango-app-ui-auth 3.0.23-dev → 3.0.24-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.
@@ -140,11 +140,11 @@ export class TangoAuthLoginComponent {
140
140
  this.show = !this.show;
141
141
  }
142
142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoAuthLoginComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.FormBuilder }, { token: i3.AuthService }, { token: i4.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i5.ToastService }], target: i0.ɵɵFactoryTarget.Component });
143
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TangoAuthLoginComponent, selector: "lib-tango-auth-login", viewQueries: [{ propertyName: "emailInputRef", first: true, predicate: ["emailInput"], descendants: true }, { propertyName: "passwordInputRef", first: true, predicate: ["passwordInput"], descendants: true }], ngImport: i0, 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=\"Email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"Email\" name=\"Email\" autocomplete=\"off\" required [(ngModel)]=\"credentials.email\" autocomplete=\"off\" #emailInput>\r\n </div>\r\n <div class=\"mb-5 \">\r\n <label for=\"Password\" 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 #passwordInput\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<div class=\"text-center\">\r\n <h6 class=\"forgot cursor-pointer\" routerLink=\"/auth/forgot-password\">Forgot Password</h6>\r\n\r\n</div>\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"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TangoAuthLoginComponent, selector: "lib-tango-auth-login", viewQueries: [{ propertyName: "emailInputRef", first: true, predicate: ["emailInput"], descendants: true }, { propertyName: "passwordInputRef", first: true, predicate: ["passwordInput"], descendants: true }], ngImport: i0, 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\">\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=\"Email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"Email\" name=\"Email\" autocomplete=\"off\" required [(ngModel)]=\"credentials.email\" autocomplete=\"off\" #emailInput>\r\n </div>\r\n <div class=\"mb-5 \">\r\n <label for=\"Password\" 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 #passwordInput\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<div class=\"text-center\">\r\n <h6 class=\"forgot cursor-pointer\" routerLink=\"/auth/forgot-password\">Forgot Password</h6>\r\n\r\n</div>\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 not-allowed coming-soon\" >\r\n <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> \r\n <span class=\"tooltip\">Coming Soon</span>\r\n </button>\r\n <button class=\"btn btn-outline w-100 mt-3 not-allowed coming-soon\" ><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> <span class=\"tooltip\">Coming Soon</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%)}.not-allowed{cursor:not-allowed!important}.btn-outline.coming-soon{border-color:#ced4da;color:#6c757d;position:relative}.btn-outline.coming-soon:hover{border-color:#6c757d;color:#212529}.tooltip{visibility:hidden;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px;position:absolute;z-index:1;bottom:100%;left:50%;transform:translate(-50%);width:max-content}.btn-outline.coming-soon:hover .tooltip{visibility:visible}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
144
144
  }
145
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoAuthLoginComponent, decorators: [{
146
146
  type: Component,
147
- 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=\"Email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"Email\" name=\"Email\" autocomplete=\"off\" required [(ngModel)]=\"credentials.email\" autocomplete=\"off\" #emailInput>\r\n </div>\r\n <div class=\"mb-5 \">\r\n <label for=\"Password\" 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 #passwordInput\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<div class=\"text-center\">\r\n <h6 class=\"forgot cursor-pointer\" routerLink=\"/auth/forgot-password\">Forgot Password</h6>\r\n\r\n</div>\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"] }]
147
+ 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\">\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=\"Email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"Email\" name=\"Email\" autocomplete=\"off\" required [(ngModel)]=\"credentials.email\" autocomplete=\"off\" #emailInput>\r\n </div>\r\n <div class=\"mb-5 \">\r\n <label for=\"Password\" 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 #passwordInput\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<div class=\"text-center\">\r\n <h6 class=\"forgot cursor-pointer\" routerLink=\"/auth/forgot-password\">Forgot Password</h6>\r\n\r\n</div>\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 not-allowed coming-soon\" >\r\n <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> \r\n <span class=\"tooltip\">Coming Soon</span>\r\n </button>\r\n <button class=\"btn btn-outline w-100 mt-3 not-allowed coming-soon\" ><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> <span class=\"tooltip\">Coming Soon</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%)}.not-allowed{cursor:not-allowed!important}.btn-outline.coming-soon{border-color:#ced4da;color:#6c757d;position:relative}.btn-outline.coming-soon:hover{border-color:#6c757d;color:#212529}.tooltip{visibility:hidden;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px;position:absolute;z-index:1;bottom:100%;left:50%;transform:translate(-50%);width:max-content}.btn-outline.coming-soon:hover .tooltip{visibility:visible}\n"] }]
148
148
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.FormBuilder }, { type: i3.AuthService }, { type: i4.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i5.ToastService }], propDecorators: { emailInputRef: [{
149
149
  type: ViewChild,
150
150
  args: ['emailInput']
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
152
152
  type: ViewChild,
153
153
  args: ['passwordInput']
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1sb2dpbi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFpQyxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQVMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVdqRCxNQUFNLE9BQU8sdUJBQXVCO0lBb0J4QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQStCO0lBQy9CO0lBeEJWLFdBQVcsR0FBUTtRQUNqQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLFFBQVEsRUFBRSxNQUFNO0tBQ2pCLENBQUM7SUFDRixRQUFRLENBQVU7SUFDbEIsU0FBUyxDQUFTO0lBQ2xCLElBQUksR0FBWSxLQUFLLENBQUM7SUFDdEIsU0FBUyxDQUFNO0lBQ2YsV0FBVyxHQUFRO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0lBQ0YsU0FBUyxDQUFVO0lBQ00sYUFBYSxDQUFjO0lBQ3hCLGdCQUFnQixDQUFjO0lBQ2xELHFCQUFxQixDQUFNO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLEVBQWUsRUFDZixPQUFvQixFQUNwQixF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LFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZpcnN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnXHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRhbmdvLWF1dGgtbG9naW5cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvQXV0aExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlZmF1bHRBdXRoOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogXCJhZG1pbkBkZW1vLmNvbVwiLFxyXG4gICAgcGFzc3dvcmQ6IFwiZGVtb1wiLFxyXG4gIH07XHJcbiAgaGFzRXJyb3I6IGJvb2xlYW47XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvZ2luRm9ybTogYW55O1xyXG4gIGNyZWRlbnRpYWxzOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogbnVsbCxcclxuICAgIHBhc3N3b3JkOiBudWxsLFxyXG4gIH07XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xyXG4gIEBWaWV3Q2hpbGQoJ2VtYWlsSW5wdXQnKSBlbWFpbElucHV0UmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwYXNzd29yZElucHV0JykgcGFzc3dvcmRJbnB1dFJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgcHJpdmF0ZSBhdXRobG9jYWxTdG9yYWdlVG9rZW46IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBjZCA6Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4gPSBgJHtlbnYuYXBwVmVyc2lvbn0tJHtlbnYuVVNFUkRBVEFfS0VZfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VXNlclZhbHVlKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIC8vIHRoaXMudXNlclByb2ZpbGUoKTtcclxuICAgIC8vIGdldCByZXR1cm4gdXJsIGZyb20gcm91dGUgcGFyYW1ldGVycyBvciBkZWZhdWx0IHRvICcvJ1xyXG4gICAgdGhpcy5yZXR1cm5VcmwgPVxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wicmV0dXJuVXJsXCIudG9TdHJpbmcoKV0gfHwgXCIvXCI7XHJcbiAgICAgIGlmICh0aGlzLmVtYWlsSW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQudmFsdWUgfHwgdGhpcy5wYXNzd29yZElucHV0UmVmPy5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XHJcbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpZWxkcyBpZiBhdXRvZmlsbGVkXHJcbiAgICAgICAgdGhpcy5lbWFpbElucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnBhc3N3b3JkSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZW1haWw6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLmVtYWlsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIwKSxcclxuICAgICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgcGFzc3dvcmQ6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLnBhc3N3b3JkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9uTG9naW4oKSB7XHJcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VydmljZS5sb2dpbih0aGlzLmNyZWRlbnRpYWxzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgaWYocmVzICYmIHJlcz8uY29kZSA9PT0gMjAwKXtcclxuICAgICAgICBsZXQgbG9naW5Ub2tlbjogYW55ID1cclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKTtcclxuICAgICAgICBpZiAobG9naW5Ub2tlbikge1xyXG4gICAgICAgICAgbG9naW5Ub2tlbiA9IEpTT04ucGFyc2UobG9naW5Ub2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZXM/LmRhdGE/LnJlc3VsdClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlKCk7XHJcbiAgICAgICAgfSAgZWxzZSBpZiAoIXJlcyB8fCByZXM/LmNvZGUgPT0gNDAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ0VudGVyIFZhbGlkIENyZWRlbnRpYWxzJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdFbnRlciBWYWxpZCBDcmVkZW50aWFscycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6J1RoZSB1c2VyIGhhcyBiZWVuIHVuYXV0aG9yaXplZCB0byBsb2dpbicpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1c2VyUHJvZmlsZSgpIHtcclxuICAgIHRoaXMuc2VydmljZS51c2VyUHJvZmlsZURldCgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyYmIHJlcy5jb2RlID09MjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdzLnVzZXJBY2Nlc3MubmV4dChyZXMuZGF0YT8ucGVybWlzc2lvbilcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UnXSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghcmVzIHx8IHJlcy5jb2RlID09IDQwMSkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93UGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLnNob3cgPSAhdGhpcy5zaG93O1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBsb2dvdGV4dCBweC0wXCI+XHJcbiAgICA8aW1nICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9sb2dpbi1iYWNrZ3JvdW5kLnN2Z1wiIGFsdD1cIlwiPlxyXG4gIDwvZGl2PiAtLT5cclxuXHJcbjwhLS0gXHJcbjxidXR0b24gKGNsaWNrKT1cIm9uQ2xpY2soKVwiPkxvZyBJbjwvYnV0dG9uPiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICA8IS0tIHN0eWxlPVwicGFkZGluZzogOTZweCAxNDJweCA5NnB4IDE0MnB4O1wiIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgcG9zaXRpb24tYWJzb2x1dGVcIiA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwZS0xMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9MSFMuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImltZy1mbHVpZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBzLTEwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPiBcclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICBcclxuICAgICBcclxuXHJcblxyXG4gICAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1mb3JtIGxvZ2luLXNpZ25pbiB3LTEwMFwiPlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1iZXR3ZWVuIHRpdGxlLXBhZGRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG15LTEwIG1zLTEwXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImxvZ2luLXRpdGxlXCI+TG9nIGluPC9oMz5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJsb2dpbi1zdWItdGl0bGVcIj5XZWxjb21lIGJhY2shIFBsZWFzZSBlbnRlciB5b3VyIGRldGFpbHMuPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8Zm9ybSAjbG9naW5Gb3JtPVwibmdGb3JtXCIgY2xhc3M9XCJ3LTEwMCB0aXRsZS1wYWRkaW5nXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1haWw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiRW1haWxcIiBuYW1lPVwiRW1haWxcIiAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWQgWyhuZ01vZGVsKV09XCJjcmVkZW50aWFscy5lbWFpbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNlbWFpbElucHV0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiUGFzc3dvcmRcIiBbdHlwZV09XCJzaG93ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIiBuYW1lPVwicGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZCAjcGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3JlZGVudGlhbHMucGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlIHRvcC01MCBlbmQtMCBtZS1uMlwiXHJcbiAgICAgICAgICAgICAgZGF0YS1rdC1wYXNzd29yZC1tZXRlci1jb250cm9sPVwidmlzaWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiIXNob3dcIiBjbGFzcz1cImZhIGZhLWV5ZS1zbGFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Vycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIHN0eWxlPVwiY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgRW1haWwgSWQgLyBNb2JpbGUgTnVtYmVyIG9yIFBhc3N3b3JkIGlzIGluY29ycmVjdFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgPGg2IGNsYXNzPVwiZm9yZ290IGN1cnNvci1wb2ludGVyXCIgcm91dGVyTGluaz1cIi9hdXRoL2ZvcmdvdC1wYXNzd29yZFwiPkZvcmdvdCBQYXNzd29yZDwvaDY+XHJcblxyXG48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtdC0zXCIgW2Rpc2FibGVkXT1cIiFsb2dpbkZvcm0udmFsaWQgfHwgKCFjcmVkZW50aWFscy5lbWFpbCB8fCAhY3JlZGVudGlhbHMucGFzc3dvcmQpXCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPlNpZ24gaW48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN18xNzc1OSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTI0LjI2NjMgMTIuOTc2N0MyNC4yNjYzIDEyLjE2MSAyNC4yMDAxIDExLjM0MDggMjQuMDU5IDEwLjUzODNIMTIuNzQwMlYxNS4xNTkzSDE5LjIyMkMxOC45NTMgMTYuNjQ5NyAxOC4wODg4IDE3Ljk2ODEgMTYuODIzMyAxOC44MDU4VjIxLjgwNDJIMjAuNjkwM0MyMi45NjExIDE5LjcxNDIgMjQuMjY2MyAxNi42Mjc2IDI0LjI2NjMgMTIuOTc2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDI4NUY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgMjQuNzAxQzE1Ljk3NjYgMjQuNzAxIDE4LjcwNTkgMjMuNjM4NCAyMC42OTQ1IDIxLjgwNDFMMTYuODI3NiAxOC44MDU3QzE1Ljc1MTcgMTkuNTM3NyAxNC4zNjI3IDE5Ljk1MjIgMTIuNzQ0NSAxOS45NTIyQzkuNjEzODggMTkuOTUyMiA2Ljk1OTQ2IDE3Ljg0MDEgNi4wMDcwNSAxNS4wMDA1SDIuMDE2NlYxOC4wOTE0QzQuMDUzNzEgMjIuMTQzNiA4LjIwMjkgMjQuNzAxIDEyLjc0MDEgMjQuNzAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzNEE4NTNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMDI3NyAxNS4wMDA0QzUuNTAwMTEgMTMuNTEwMSA1LjUwMDExIDExLjg5NjIgNi4wMDI3NyAxMC40MDU5VjcuMzE0OTRIMi4wMTY3NEMwLjMxNDczNCAxMC43MDU3IDAuMzE0NzM0IDE0LjcwMDYgMi4wMTY3NCAxOC4wOTEzTDYuMDAyNzcgMTUuMDAwNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkJCQzA0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjc0MDEgNS40NDk4NkMxNC40NTA5IDUuNDIzNCAxNi4xMDQ0IDYuMDY3MTYgMTcuMzQzNCA3LjI0ODg2TDIwLjc2OTUgMy44MjI4MUMxOC42MDAxIDEuNzg1NyAxNS43MjA4IDAuNjY1NzI5IDEyLjc0MDEgMC43MDEwMDRDOC4yMDI5IDAuNzAxMDA0IDQuMDUzNzEgMy4yNTg0MiAyLjAxNjYgNy4zMTVMNi4wMDI2NCAxMC40MDU5QzYuOTUwNjQgNy41NjE5MyA5LjYwOTQ3IDUuNDQ5ODYgMTIuNzQwMSA1LjQ0OTg2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNFQTQzMzVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM3MjdfMTc3NTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIEdvb2dsZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN182MTQxKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjkwNTcgMTIuMTA0SDAuNVYwLjcwMDE5NUgxMS45MDU3VjEyLjEwNFpcIiBmaWxsPVwiI0YxNTExQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjQuNTAwNCAxMi4xMDRIMTMuMDkzOFYwLjcwMDE5NUgyNC40OTk0VjEyLjEwNEgyNC41MDA0WlwiIGZpbGw9XCIjODBDQzI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS45MDU3IDI0LjcwMDJIMC41VjEzLjI5NjRIMTEuOTA1N1YyNC43MDAyWlwiIGZpbGw9XCIjMDBBREVGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNC41MDA0IDI0LjcwMDJIMTMuMDkzOFYxMy4yOTY0SDI0LjQ5OTRWMjQuNzAwMkgyNC41MDA0WlwiIGZpbGw9XCIjRkJCQzA5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzI3XzYxNDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIE1pY3Jvc29mdDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlciBtcy03NXB4XCI+PHNwYW4gY2xhc3M9XCJzaWdudXAtZGVmYXVsdFwiPjwvc3Bhbj5Eb27igJl0IGhhdmUgYW4gYWNjb3VudD88c3BhbiBjbGFzcz1cInNpZ251cC1wcmltYXJ5IG1zLTIgY3Vyc29yLXBvaW50ZXJcIiByb3V0ZXJMaW5rPVwiL2F1dGgvc2lnbnVwXCI+U2lnbiB1cDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cIiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItMyAgZmxleC1tZC1zdGFjayBwdC0zIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTEwXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xIGZvb3RlclwiPjIwMjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJmb290ZXIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiPiYjNjQ7VGFuZ29JVFNvbHV0aW9ucyBJbmRpYSBQdnQgTHRkPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtZW51IG1lbnUtZ3JheS02MDAgbWVudS1ob3Zlci1wcmltYXJ5IGZ3LXNlbWlib2xkIG9yZGVyLTEgbWUtN1wiPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly90YW5nb2V5ZS5haS8jYWJvdXR1c1wiIGNsYXNzPVwibWVudS1saW5rIHB4LTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMy43MDAyQzExIDMuMTUwMiAxMC41NSAyLjcwMDIgMTAgMi43MDAySDJDMS40NSAyLjcwMDIgMSAzLjE1MDIgMSAzLjcwMDJNMTEgMy43MDAyVjkuNzAwMkMxMSAxMC4yNTAyIDEwLjU1IDEwLjcwMDIgMTAgMTAuNzAwMkgyQzEuNDUgMTAuNzAwMiAxIDEwLjI1MDIgMSA5LjcwMDJWMy43MDAyTTExIDMuNzAwMkw2IDcuMjAwMkwxIDMuNzAwMlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5zdXBwb3J0JiM2NDt0YW5nb3RlY2guY28uaW48L3NwYW4+PC9hPjwvbGk+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgXHJcblxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9naW4tYmFja2dyb3VuZDEuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImJhY2tncm91bmQtaW1hZ2VcIj5cclxuPC9kaXY+Il19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1sb2dpbi90YW5nby1hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFpQyxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQVMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVdqRCxNQUFNLE9BQU8sdUJBQXVCO0lBb0J4QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQStCO0lBQy9CO0lBeEJWLFdBQVcsR0FBUTtRQUNqQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLFFBQVEsRUFBRSxNQUFNO0tBQ2pCLENBQUM7SUFDRixRQUFRLENBQVU7SUFDbEIsU0FBUyxDQUFTO0lBQ2xCLElBQUksR0FBWSxLQUFLLENBQUM7SUFDdEIsU0FBUyxDQUFNO0lBQ2YsV0FBVyxHQUFRO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0lBQ0YsU0FBUyxDQUFVO0lBQ00sYUFBYSxDQUFjO0lBQ3hCLGdCQUFnQixDQUFjO0lBQ2xELHFCQUFxQixDQUFNO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLEVBQWUsRUFDZixPQUFvQixFQUNwQixF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LFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZpcnN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnXHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRhbmdvLWF1dGgtbG9naW5cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvQXV0aExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlZmF1bHRBdXRoOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogXCJhZG1pbkBkZW1vLmNvbVwiLFxyXG4gICAgcGFzc3dvcmQ6IFwiZGVtb1wiLFxyXG4gIH07XHJcbiAgaGFzRXJyb3I6IGJvb2xlYW47XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvZ2luRm9ybTogYW55O1xyXG4gIGNyZWRlbnRpYWxzOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogbnVsbCxcclxuICAgIHBhc3N3b3JkOiBudWxsLFxyXG4gIH07XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xyXG4gIEBWaWV3Q2hpbGQoJ2VtYWlsSW5wdXQnKSBlbWFpbElucHV0UmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwYXNzd29yZElucHV0JykgcGFzc3dvcmRJbnB1dFJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgcHJpdmF0ZSBhdXRobG9jYWxTdG9yYWdlVG9rZW46IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBjZCA6Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4gPSBgJHtlbnYuYXBwVmVyc2lvbn0tJHtlbnYuVVNFUkRBVEFfS0VZfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VXNlclZhbHVlKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIC8vIHRoaXMudXNlclByb2ZpbGUoKTtcclxuICAgIC8vIGdldCByZXR1cm4gdXJsIGZyb20gcm91dGUgcGFyYW1ldGVycyBvciBkZWZhdWx0IHRvICcvJ1xyXG4gICAgdGhpcy5yZXR1cm5VcmwgPVxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1wicmV0dXJuVXJsXCIudG9TdHJpbmcoKV0gfHwgXCIvXCI7XHJcbiAgICAgIGlmICh0aGlzLmVtYWlsSW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQudmFsdWUgfHwgdGhpcy5wYXNzd29yZElucHV0UmVmPy5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XHJcbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpZWxkcyBpZiBhdXRvZmlsbGVkXHJcbiAgICAgICAgdGhpcy5lbWFpbElucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnBhc3N3b3JkSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZW1haWw6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLmVtYWlsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIwKSxcclxuICAgICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgcGFzc3dvcmQ6IFtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBdXRoLnBhc3N3b3JkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9uTG9naW4oKSB7XHJcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VydmljZS5sb2dpbih0aGlzLmNyZWRlbnRpYWxzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgaWYocmVzICYmIHJlcz8uY29kZSA9PT0gMjAwKXtcclxuICAgICAgICBsZXQgbG9naW5Ub2tlbjogYW55ID1cclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKTtcclxuICAgICAgICBpZiAobG9naW5Ub2tlbikge1xyXG4gICAgICAgICAgbG9naW5Ub2tlbiA9IEpTT04ucGFyc2UobG9naW5Ub2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZXM/LmRhdGE/LnJlc3VsdClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlKCk7XHJcbiAgICAgICAgfSAgZWxzZSBpZiAoIXJlcyB8fCByZXM/LmNvZGUgPT0gNDAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ0VudGVyIFZhbGlkIENyZWRlbnRpYWxzJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdFbnRlciBWYWxpZCBDcmVkZW50aWFscycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6J1RoZSB1c2VyIGhhcyBiZWVuIHVuYXV0aG9yaXplZCB0byBsb2dpbicpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1c2VyUHJvZmlsZSgpIHtcclxuICAgIHRoaXMuc2VydmljZS51c2VyUHJvZmlsZURldCgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyYmIHJlcy5jb2RlID09MjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdzLnVzZXJBY2Nlc3MubmV4dChyZXMuZGF0YT8ucGVybWlzc2lvbilcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UnXSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghcmVzIHx8IHJlcy5jb2RlID09IDQwMSkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRW50ZXIgVmFsaWQgQ3JlZGVudGlhbHMnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93UGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLnNob3cgPSAhdGhpcy5zaG93O1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBsb2dvdGV4dCBweC0wXCI+XHJcbiAgICA8aW1nICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9sb2dpbi1iYWNrZ3JvdW5kLnN2Z1wiIGFsdD1cIlwiPlxyXG4gIDwvZGl2PiAtLT5cclxuXHJcbjwhLS0gXHJcbjxidXR0b24gKGNsaWNrKT1cIm9uQ2xpY2soKVwiPkxvZyBJbjwvYnV0dG9uPiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICA8IS0tIHN0eWxlPVwicGFkZGluZzogOTZweCAxNDJweCA5NnB4IDE0MnB4O1wiIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgcG9zaXRpb24tYWJzb2x1dGVcIiA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwZS0xMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9MSFMuc3ZnXCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImltZy1mbHVpZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBzLTEwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPiBcclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICBcclxuICAgICBcclxuXHJcblxyXG4gICAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1mb3JtIGxvZ2luLXNpZ25pblwiPlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1iZXR3ZWVuIHRpdGxlLXBhZGRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG15LTEwIG1zLTEwXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImxvZ2luLXRpdGxlXCI+TG9nIGluPC9oMz5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJsb2dpbi1zdWItdGl0bGVcIj5XZWxjb21lIGJhY2shIFBsZWFzZSBlbnRlciB5b3VyIGRldGFpbHMuPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8Zm9ybSAjbG9naW5Gb3JtPVwibmdGb3JtXCIgY2xhc3M9XCJ3LTEwMCB0aXRsZS1wYWRkaW5nXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1haWw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiRW1haWxcIiBuYW1lPVwiRW1haWxcIiAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWQgWyhuZ01vZGVsKV09XCJjcmVkZW50aWFscy5lbWFpbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNlbWFpbElucHV0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiUGFzc3dvcmRcIiBbdHlwZV09XCJzaG93ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIiBuYW1lPVwicGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZCAjcGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3JlZGVudGlhbHMucGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlIHRvcC01MCBlbmQtMCBtZS1uMlwiXHJcbiAgICAgICAgICAgICAgZGF0YS1rdC1wYXNzd29yZC1tZXRlci1jb250cm9sPVwidmlzaWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiIXNob3dcIiBjbGFzcz1cImZhIGZhLWV5ZS1zbGFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Vycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIHN0eWxlPVwiY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgRW1haWwgSWQgLyBNb2JpbGUgTnVtYmVyIG9yIFBhc3N3b3JkIGlzIGluY29ycmVjdFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgPGg2IGNsYXNzPVwiZm9yZ290IGN1cnNvci1wb2ludGVyXCIgcm91dGVyTGluaz1cIi9hdXRoL2ZvcmdvdC1wYXNzd29yZFwiPkZvcmdvdCBQYXNzd29yZDwvaDY+XHJcblxyXG48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtdC0zXCIgW2Rpc2FibGVkXT1cIiFsb2dpbkZvcm0udmFsaWQgfHwgKCFjcmVkZW50aWFscy5lbWFpbCB8fCAhY3JlZGVudGlhbHMucGFzc3dvcmQpXCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPlNpZ24gaW48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXQtMyBub3QtYWxsb3dlZCBjb21pbmctc29vblwiID5cclxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM3MjdfMTc3NTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yNC4yNjYzIDEyLjk3NjdDMjQuMjY2MyAxMi4xNjEgMjQuMjAwMSAxMS4zNDA4IDI0LjA1OSAxMC41MzgzSDEyLjc0MDJWMTUuMTU5M0gxOS4yMjJDMTguOTUzIDE2LjY0OTcgMTguMDg4OCAxNy45NjgxIDE2LjgyMzMgMTguODA1OFYyMS44MDQySDIwLjY5MDNDMjIuOTYxMSAxOS43MTQyIDI0LjI2NjMgMTYuNjI3NiAyNC4yNjYzIDEyLjk3NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQyODVGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi43NDAxIDI0LjcwMUMxNS45NzY2IDI0LjcwMSAxOC43MDU5IDIzLjYzODQgMjAuNjk0NSAyMS44MDQxTDE2LjgyNzYgMTguODA1N0MxNS43NTE3IDE5LjUzNzcgMTQuMzYyNyAxOS45NTIyIDEyLjc0NDUgMTkuOTUyMkM5LjYxMzg4IDE5Ljk1MjIgNi45NTk0NiAxNy44NDAxIDYuMDA3MDUgMTUuMDAwNUgyLjAxNjZWMTguMDkxNEM0LjA1MzcxIDIyLjE0MzYgOC4yMDI5IDI0LjcwMSAxMi43NDAxIDI0LjcwMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMzRBODUzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDAyNzcgMTUuMDAwNEM1LjUwMDExIDEzLjUxMDEgNS41MDAxMSAxMS44OTYyIDYuMDAyNzcgMTAuNDA1OVY3LjMxNDk0SDIuMDE2NzRDMC4zMTQ3MzQgMTAuNzA1NyAwLjMxNDczNCAxNC43MDA2IDIuMDE2NzQgMTguMDkxM0w2LjAwMjc3IDE1LjAwMDRaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZCQkMwNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi43NDAxIDUuNDQ5ODZDMTQuNDUwOSA1LjQyMzQgMTYuMTA0NCA2LjA2NzE2IDE3LjM0MzQgNy4yNDg4NkwyMC43Njk1IDMuODIyODFDMTguNjAwMSAxLjc4NTcgMTUuNzIwOCAwLjY2NTcyOSAxMi43NDAxIDAuNzAxMDA0QzguMjAyOSAwLjcwMTAwNCA0LjA1MzcxIDMuMjU4NDIgMi4wMTY2IDcuMzE1TDYuMDAyNjQgMTAuNDA1OUM2Ljk1MDY0IDcuNTYxOTMgOS42MDk0NyA1LjQ0OTg2IDEyLjc0MDEgNS40NDk4NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRUE0MzM1XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzI3XzE3NzU5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSAwLjcwMDE5NSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXgtMlwiPlNpZ24gaW4gd2l0aCBHb29nbGU8L3NwYW4+IFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcFwiPkNvbWluZyBTb29uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMCBtdC0zIG5vdC1hbGxvd2VkIGNvbWluZy1zb29uXCIgPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzcyN182MTQxKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjkwNTcgMTIuMTA0SDAuNVYwLjcwMDE5NUgxMS45MDU3VjEyLjEwNFpcIiBmaWxsPVwiI0YxNTExQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjQuNTAwNCAxMi4xMDRIMTMuMDkzOFYwLjcwMDE5NUgyNC40OTk0VjEyLjEwNEgyNC41MDA0WlwiIGZpbGw9XCIjODBDQzI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS45MDU3IDI0LjcwMDJIMC41VjEzLjI5NjRIMTEuOTA1N1YyNC43MDAyWlwiIGZpbGw9XCIjMDBBREVGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNC41MDA0IDI0LjcwMDJIMTMuMDkzOFYxMy4yOTY0SDI0LjQ5OTRWMjQuNzAwMkgyNC41MDA0WlwiIGZpbGw9XCIjRkJCQzA5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzI3XzYxNDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41IDAuNzAwMTk1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+U2lnbiBpbiB3aXRoIE1pY3Jvc29mdDwvc3Bhbj4gIDxzcGFuIGNsYXNzPVwidG9vbHRpcFwiPkNvbWluZyBTb29uPC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtY2VudGVyIG1zLTc1cHhcIj48c3BhbiBjbGFzcz1cInNpZ251cC1kZWZhdWx0XCI+PC9zcGFuPkRvbuKAmXQgaGF2ZSBhbiBhY2NvdW50PzxzcGFuIGNsYXNzPVwic2lnbnVwLXByaW1hcnkgbXMtMiBjdXJzb3ItcG9pbnRlclwiIHJvdXRlckxpbms9XCIvYXV0aC9zaWdudXBcIj5TaWduIHVwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgIGNsYXNzPVwiIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LW1kLXJvdyBtYi0zICBmbGV4LW1kLXN0YWNrIHB0LTMgY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTkwMCBvcmRlci0yIG9yZGVyLW1kLTEgbXMtMTBcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTEgZm9vdGVyXCI+MjAyNDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImZvb3RlciB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCI+JiM2NDtUYW5nb0lUU29sdXRpb25zIEluZGlhIFB2dCBMdGQ8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cIm1lbnUgbWVudS1ncmF5LTYwMCBtZW51LWhvdmVyLXByaW1hcnkgZnctc2VtaWJvbGQgb3JkZXItMSBtZS03XCI+XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWVudS1pdGVtIGZvb3RlclwiPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3RhbmdvZXllLmFpLyNhYm91dHVzXCIgY2xhc3M9XCJtZW51LWxpbmsgcHgtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTIgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAzLjcwMDJDMTEgMy4xNTAyIDEwLjU1IDIuNzAwMiAxMCAyLjcwMDJIMkMxLjQ1IDIuNzAwMiAxIDMuMTUwMiAxIDMuNzAwMk0xMSAzLjcwMDJWOS43MDAyQzExIDEwLjI1MDIgMTAuNTUgMTAuNzAwMiAxMCAxMC43MDAySDJDMS40NSAxMC43MDAyIDEgMTAuMjUwMiAxIDkuNzAwMlYzLjcwMDJNMTEgMy43MDAyTDYgNy4yMDAyTDEgMy43MDAyXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPnN1cHBvcnQmIzY0O3RhbmdvdGVjaC5jby5pbjwvc3Bhbj48L2E+PC9saT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICBcclxuXHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9sb2dpbi1iYWNrZ3JvdW5kMS5zdmdcIiBhbHQ9XCJJbWFnZVwiIGNsYXNzPVwiYmFja2dyb3VuZC1pbWFnZVwiPlxyXG48L2Rpdj4iXX0=