verben-authentication-ui 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/components/sign-in/sign-in.component.mjs +15 -7
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs +14 -6
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs.map +1 -1
- package/package.json +7 -7
- package/src/lib/components/sign-in/sign-in.component.d.ts +2 -1
|
@@ -55,6 +55,7 @@ export class SignInComponent {
|
|
|
55
55
|
inputBorder = '1px solid #66666659';
|
|
56
56
|
inputBorderRadius = '12px';
|
|
57
57
|
termsErrorText = 'Please agree to the terms of use and privacy policy.';
|
|
58
|
+
urlKeyOverride = null;
|
|
58
59
|
formSubmit = new EventEmitter();
|
|
59
60
|
onSubmitEnd = new EventEmitter();
|
|
60
61
|
onGoogleAuthResponse = new EventEmitter();
|
|
@@ -111,13 +112,18 @@ export class SignInComponent {
|
|
|
111
112
|
});
|
|
112
113
|
}
|
|
113
114
|
async getTenantConfig() {
|
|
114
|
-
const isLocalhost = window?.location?.hostname ===
|
|
115
|
-
const payload =
|
|
115
|
+
const isLocalhost = window?.location?.hostname === 'localhost';
|
|
116
|
+
const payload = this.urlKeyOverride
|
|
116
117
|
? {
|
|
117
|
-
Key:
|
|
118
|
-
Value:
|
|
118
|
+
Key: 'UrlKey',
|
|
119
|
+
Value: this.urlKeyOverride,
|
|
119
120
|
}
|
|
120
|
-
:
|
|
121
|
+
: isLocalhost
|
|
122
|
+
? {
|
|
123
|
+
Key: 'UrlKey',
|
|
124
|
+
Value: 'https://bovas.white360.net',
|
|
125
|
+
}
|
|
126
|
+
: undefined;
|
|
121
127
|
try {
|
|
122
128
|
const res = await this.server.post(`Tenant/GetTenantConfigByUrlKey`, payload);
|
|
123
129
|
this.tenantDetails = res;
|
|
@@ -227,7 +233,7 @@ export class SignInComponent {
|
|
|
227
233
|
};
|
|
228
234
|
}
|
|
229
235
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i2.UtilService }, { token: i2.EnvironmentService }, { token: i3.ActivatedRoute }, { token: i3.Router }, { token: i2.EncryptionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "verben-sign-in", inputs: { headlingText: "headlingText", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", customClass: "customClass", headlingClass: "headlingClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", forgetPasswordClass: "forgetPasswordClass", requestAccessClass: "requestAccessClass", createAccountClass: "createAccountClass", createAccountLinkClass: "createAccountLinkClass", forgetPasswordLink: "forgetPasswordLink", createAccountLink: "createAccountLink", requestAccessLink: "requestAccessLink", btnClass: "btnClass", btnBgColor: "btnBgColor", btnColor: "btnColor", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnPd: "btnPd", btnText: "btnText", inputLabelColor: "inputLabelColor", inputBgColor: "inputBgColor", inputBorder: "inputBorder", inputBorderRadius: "inputBorderRadius", termsErrorText: "termsErrorText" }, outputs: { formSubmit: "formSubmit", onSubmitEnd: "onSubmitEnd", onGoogleAuthResponse: "onGoogleAuthResponse", onSubmitGoogleAuth: "onSubmitGoogleAuth", tenantConfigLoaded: "tenantConfigLoaded", googleClick: "googleClick", microsoftClick: "microsoftClick", appleClick: "appleClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i5.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["emitMechanismFn"] }, { kind: "component", type: i7.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
236
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "verben-sign-in", inputs: { headlingText: "headlingText", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", customClass: "customClass", headlingClass: "headlingClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", forgetPasswordClass: "forgetPasswordClass", requestAccessClass: "requestAccessClass", createAccountClass: "createAccountClass", createAccountLinkClass: "createAccountLinkClass", forgetPasswordLink: "forgetPasswordLink", createAccountLink: "createAccountLink", requestAccessLink: "requestAccessLink", btnClass: "btnClass", btnBgColor: "btnBgColor", btnColor: "btnColor", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnPd: "btnPd", btnText: "btnText", inputLabelColor: "inputLabelColor", inputBgColor: "inputBgColor", inputBorder: "inputBorder", inputBorderRadius: "inputBorderRadius", termsErrorText: "termsErrorText", urlKeyOverride: "urlKeyOverride" }, outputs: { formSubmit: "formSubmit", onSubmitEnd: "onSubmitEnd", onGoogleAuthResponse: "onGoogleAuthResponse", onSubmitGoogleAuth: "onSubmitGoogleAuth", tenantConfigLoaded: "tenantConfigLoaded", googleClick: "googleClick", microsoftClick: "microsoftClick", appleClick: "appleClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i5.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["emitMechanismFn"] }, { kind: "component", type: i7.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
231
237
|
}
|
|
232
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, decorators: [{
|
|
233
239
|
type: Component,
|
|
@@ -296,6 +302,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
296
302
|
type: Input
|
|
297
303
|
}], termsErrorText: [{
|
|
298
304
|
type: Input
|
|
305
|
+
}], urlKeyOverride: [{
|
|
306
|
+
type: Input
|
|
299
307
|
}], formSubmit: [{
|
|
300
308
|
type: Output
|
|
301
309
|
}], onSubmitEnd: [{
|
|
@@ -313,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
313
321
|
}], appleClick: [{
|
|
314
322
|
type: Output
|
|
315
323
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHTCxXQUFXLEVBR1gsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3hFLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSx5Q0FBeUMsQ0FBQztBQUtqRCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLGVBQWU7SUF3RWhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBN0VELFlBQVksR0FBVyxTQUFTLENBQUM7SUFDakMsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFDcEIsRUFBRSxHQUFXLEVBQUUsQ0FBQztJQUNoQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsT0FBTyxHQUFXLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQVcsaUNBQWlDLENBQUM7SUFDdEQsTUFB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QUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFHRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9naW5EYXRhIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBSZXNwb25zZUtleVZhbHVlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIEF1dGhNZWNoYW5pc20sXG4gIE1lY2hhbmlzbVR5cGUsXG59IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElPYXV0aFJlc3AgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgVGVuYW50Q29uZmlnIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XG5pbXBvcnQgeyBVc2VyQWdlbnRUeXBlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi1zaWduLWluJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ24taW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc2lnbi1pbi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgaGVhZGxpbmdUZXh0OiBzdHJpbmcgPSAnU2lnbiBpbic7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbWF4V2lkdGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBtYXJnaW46IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVhZGxpbmdDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJnQ29sb3I6IHN0cmluZyA9ICcjZmZmJztcbiAgQElucHV0KCkgYm94U2hhZG93OiBzdHJpbmcgPSAnNHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJzFweCBzb2xpZCAjNjY2NjY2ODAnO1xuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IHN0cmluZyA9ICcyNHB4JztcbiAgQElucHV0KCkgdGV4dENvbG9yOiBzdHJpbmcgPSAnIzMzMyc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBmb3JnZXRQYXNzd29yZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVxdWVzdEFjY2Vzc0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudExpbmtDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLy8gbGlua3NcbiAgQElucHV0KCkgZm9yZ2V0UGFzc3dvcmRMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudExpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1ZXN0QWNjZXNzTGluazogc3RyaW5nID0gJyc7XG4gIC8vIGJ1dHRvbiBzdHlsZXNcbiAgQElucHV0KCkgYnRuQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBidG5CZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJ0bkNvbG9yOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYnRuQm9yZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYnRuQm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMjRweCc7XG4gIEBJbnB1dCgpIGJ0blBkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYnRuVGV4dDogc3RyaW5nID0gJ0xvZyBpbic7XG5cbiAgLy9pbnB1dFN0eWxlc1xuICBASW5wdXQoKSBpbnB1dExhYmVsQ29sb3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbnB1dEJnQ29sb3I6IHN0cmluZyA9ICd0cmFuc3BhcmVudCc7XG4gIEBJbnB1dCgpIGlucHV0Qm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICM2NjY2NjY1OSc7XG4gIEBJbnB1dCgpIGlucHV0Qm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMTJweCc7XG4gIEBJbnB1dCgpIHRlcm1zRXJyb3JUZXh0OiBzdHJpbmcgPVxuICAgICdQbGVhc2UgYWdyZWUgdG8gdGhlIHRlcm1zIG9mIHVzZSBhbmQgcHJpdmFjeSBwb2xpY3kuJztcblxuICBAT3V0cHV0KCkgZm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9naW5EYXRhPigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRFbmQ6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUtleVZhbHVlIHwgRXJyb3JSZXNwb25zZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uR29vZ2xlQXV0aFJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8XG4gICAgUmVzcG9uc2VLZXlWYWx1ZSB8IEVycm9yUmVzcG9uc2VcbiAgPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0R29vZ2xlQXV0aDogRXZlbnRFbWl0dGVyPFJlc3BvbnNlS2V5VmFsdWUgfCBFcnJvclJlc3BvbnNlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdGVuYW50Q29uZmlnTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUZW5hbnRDb25maWcgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgZ29vZ2xlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBtaWNyb3NvZnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFwcGxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdGVuYW50RGV0YWlsczogYW55IHwgbnVsbCA9IG51bGw7XG4gIEF1dGhNZWNoYW5pc21zOiBBdXRoTWVjaGFuaXNtW10gfCBudWxsID0gbnVsbDtcbiAgc2hvd2Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9naW5Gb3JtOiBGb3JtR3JvdXA7XG4gIGFwaUtleTogc3RyaW5nPScnXG4gIHNlY3JldDogc3RyaW5nO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29kZTogc3RyaW5nID0gJyc7XG4gIHR5cGU6IHN0cmluZyA9ICcnO1xuICBtZWNoYW5pc21UeXBlOiBzdHJpbmcgPSAnJztcbiAgT2F1dGhEYXRhOiBJT2F1dGhSZXNwID0ge1xuICAgIEFjY2Vzc1Rva2VuOiAnJyxcbiAgICBFbWFpbDogJycsXG4gICAgRmlyc3ROYW1lOiAnJyxcbiAgICBMYXN0TmFtZTogJycsXG4gIH07XG4gIGNvbmZpZ0RhdGE6IFRlbmFudENvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBFbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcbiAgICAgIF0pLFxuICAgICAgUGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLFxuICAgICAgXSksXG4gICAgfSk7XG4gICAgdGhpcy5zZWNyZXQgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5TZWNyZXQ7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmdldFRlbmFudENvbmZpZygpO1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuY29kZSA9IHBhcmFtc1snY29kZSddO1xuICAgICAgdGhpcy50eXBlID0gcGFyYW1zWyd0eXBlJ107XG4gICAgICBpZiAodGhpcy5jb2RlKSB7XG4gICAgICAgIHRoaXMudmVyaWZ5VXNlckRldGFpbHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5hc3luYyBnZXRUZW5hbnRDb25maWcoKSB7XG4gIGNvbnN0IGlzTG9jYWxob3N0ID0gd2luZG93Py5sb2NhdGlvbj8uaG9zdG5hbWUgPT09IFwibG9jYWxob3N0XCI7XG4gIGNvbnN0IHBheWxvYWQgPSBpc0xvY2FsaG9zdFxuICAgID8ge1xuICAgICAgICBLZXk6IFwiVXJsS2V5XCIsXG4gICAgICAgIFZhbHVlOiBcImh0dHBzOi8vYm92YXMud2hpdGUzNjAubmV0XCIsXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0PFRlbmFudENvbmZpZz4oXG4gICAgICBgVGVuYW50L0dldFRlbmFudENvbmZpZ0J5VXJsS2V5YCxcbiAgICAgIHBheWxvYWRcbiAgICApO1xuICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlcztcbiAgICB0aGlzLmFwaUtleSA9IHRoaXMudGVuYW50RGV0YWlscy5UZW5hbnRJZFxuICAgIHRoaXMuY29uZmlnRGF0YSA9IHJlcztcblxuICAgIHRoaXMuQXV0aE1lY2hhbmlzbXMgPSB0aGlzLnRlbmFudERldGFpbHM/LkF1dGhNZWNoYW5pc21zPy5maWx0ZXIoXG4gICAgICAobTpBdXRoTWVjaGFuaXNtKSA9PiBtLlVzZXJBZ2VudCA9PT0gVXNlckFnZW50VHlwZS5XZWJcbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuQXV0aE1lY2hhbmlzbXM/Lmxlbmd0aCB8fFxuICAgICAgIXRoaXMuQXV0aE1lY2hhbmlzbXMuc29tZSgobSkgPT4gbS5BdXRoTWVjaGFuaXNtID09PSBNZWNoYW5pc21UeXBlLkluQXBwKVxuICAgICkge1xuICAgICAgdGhpcy5zaG93Zm9ybSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dmb3JtID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnRlbmFudENvbmZpZ0xvYWRlZC5lbWl0KHRoaXMuY29uZmlnRGF0YSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMudGVuYW50Q29uZmlnTG9hZGVkLmVtaXQobnVsbCk7XG4gIH1cbn1cblxuXG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0udmFsaWQ7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlVc2VyRGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCAmJiB0aGlzLmFwaUtleSkge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5maW5kKChpdGVtKSA9PlxuICAgICAgICBpdGVtLkF1dGhNZWNoYW5pc20uaW5jbHVkZXModGhpcy50eXBlKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIEF1dGhDb2RlOiB0aGlzLmNvZGUsXG4gICAgICAgIFRlbmFudDogdGhpcy5hcGlLZXksXG4gICAgICAgIEF1dGhNZWNoYW5pc206IGRhdGEuQXV0aE1lY2hhbmlzbSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgICAgYEF1dGhlbnRpY2F0aW9uL0dldFVzZXJEZXRhaWxzYCxcbiAgICAgICAgcGF5bG9hZFxuICAgICAgKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZXMgYXMgSU9hdXRoUmVzcDtcbiAgICAgICAgdGhpcy5PYXV0aERhdGEgPSB7XG4gICAgICAgICAgQWNjZXNzVG9rZW46IHJlc3VsdD8uQWNjZXNzVG9rZW4sXG4gICAgICAgICAgRW1haWw6IHJlc3VsdD8uRW1haWwsXG4gICAgICAgICAgRmlyc3ROYW1lOiByZXN1bHQ/LkZpcnN0TmFtZSxcbiAgICAgICAgICBMYXN0TmFtZTogcmVzdWx0Py5MYXN0TmFtZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN1Ym1pdChkYXRhLkF1dGhNZWNoYW5pc20pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdCh0eXBlOiBzdHJpbmcpIHtcbiAgICBsZXQgZGF0YTogTG9naW5EYXRhID0ge1xuICAgICAgTWFpbEFkZHJlc3M6ICcnLFxuICAgICAgUGFzc3dvcmQ6ICcnLFxuICAgICAgTG9naW5UeXBlOiB0eXBlLFxuICAgICAgVGVuYW50OiB0aGlzLnRlbmFudERldGFpbHMuVGVuYW50SWQsXG4gICAgICBTZWNyZXRlOiB0aGlzLnNlY3JldCxcbiAgICAgIFRva2VuOiAnJyxcbiAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09IE1lY2hhbmlzbVR5cGUuSW5BcHAgJiYgdGhpcy5jaGVja0Zvcm0oKSkge1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgTWFpbEFkZHJlc3M6IHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydFbWFpbCddLnZhbHVlLFxuICAgICAgICBQYXNzd29yZDogU3RyaW5nKFxuICAgICAgICAgIENyeXB0b0pTLk1ENSh0aGlzLmxvZ2luRm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS52YWx1ZSlcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGUgPT09IE1lY2hhbmlzbVR5cGUuR29vZ2xlIHx8XG4gICAgICB0eXBlID09PSBNZWNoYW5pc21UeXBlLk1pY3Jvc29mdFxuICAgICkge1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgTWFpbEFkZHJlc3M6IHRoaXMuT2F1dGhEYXRhPy5FbWFpbCxcbiAgICAgICAgVG9rZW46IHRoaXMuT2F1dGhEYXRhPy5BY2Nlc3NUb2tlbixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtU3VibWl0LmVtaXQoZGF0YSk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7IC8vIFByZXNlcnZpbmcgeW91ciB1dGlsU2VydmljZSBjYWxsXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoYEF1dGhlbnRpY2F0aW9uL0xvZ2luYCwgZGF0YSk7XG4gICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2U6JywgcmVzKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTsgLy8gU3RvcCB1dGlsU2VydmljZSB0cmFja2luZyBvbiBzdWNjZXNzL2ZhaWx1cmVcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMub25TdWJtaXRFbmQuZW1pdChyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzIGFzIFJlc3BvbnNlS2V5VmFsdWU7XG4gICAgICAgIHRoaXMub25TdWJtaXRFbmQuZW1pdChyZXN1bHQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7IC8vIFN0b3AgdXRpbFNlcnZpY2UgdHJhY2tpbmcgb24gZXJyb3JcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgbG9naW46JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogdGhpcy5iZ0NvbG9yLFxuICAgICAgJ2JveC1zaGFkb3cnOiB0aGlzLmJveFNoYWRvdyxcbiAgICAgIGJvcmRlcjogdGhpcy5ib3JkZXIsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6IHRoaXMuYm9yZGVyUmFkaXVzLFxuICAgICAgY29sb3I6IHRoaXMudGV4dENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAnbWF4LXdpZHRoJzogdGhpcy5tYXhXaWR0aCxcbiAgICAgIG1hcmdpbjogdGhpcy5tYXJnaW4sXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgcGFkZGluZzogdGhpcy5wZCxcbiAgICB9O1xuICB9XG59XG4iLCI8c2VjdGlvblxuW25nU3R5bGVdPVwic3R5bGVzXCJcbmNsYXNzPVwie3sgY3VzdG9tQ2xhc3MgfX1cIlxuPlxuICAgIDxoMiBjbGFzcz1cInt7aGVhZGxpbmdDbGFzc319XCI+e3toZWFkbGluZ1RleHR9fTwvaDI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KCdJbkFwcCcpXCIgY2xhc3M9XCJmbGV4V3JhcHBlclwiPiBcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtV3JhcHBlclwiICpuZ0lmPVwic2hvd2Zvcm1cIj4gXG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBbbGFiZWxdPVwiJ0VtYWlsJ1wiXG4gICAgICAgIFtsYWJlbENvbG9yXT1cImlucHV0TGFiZWxDb2xvclwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkVtYWlsXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtiZ0NvbG9yXT1cImlucHV0QmdDb2xvclwiXG4gICAgICAgIFtib3JkZXJdPVwiaW5wdXRCb3JkZXJcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cImlucHV0Qm9yZGVyUmFkaXVzXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8ZGl2PiBcbiAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgW2xhYmVsXT1cIidQYXNzd29yZCdcIlxuICAgICAgICBbbGFiZWxDb2xvcl09XCJpbnB1dExhYmVsQ29sb3JcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJQYXNzd29yZFwiXG4gICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICBbYmdDb2xvcl09XCJpbnB1dEJnQ29sb3JcIlxuICAgICAgICBbYm9yZGVyXT1cImlucHV0Qm9yZGVyXCJcbiAgICAgICAgW2JvcmRlclJhZGl1c109XCJpbnB1dEJvcmRlclJhZGl1c1wiXG4gICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgW3Bhc3N3b3JkVG9nZ2xlXT1cInRydWVcIlxuICAgICAgICBbcGFzc0xlbmd0aF09XCI1XCJcbiAgICAgICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwie1xuICAgICAgICAgIHBhc3N3b3JkOidQYXNzd29yZCBpcyByZXF1aXJlZCdcbiAgICAgICAgfVwiXG4gICAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICAgIDxkaXYgY2xhc3M9XCJwd2RXcmFwcGVyXCI+IFxuICAgICAgICAgIDxwIGNsYXM9XCJtYi0wXCI+IDxhIFtyb3V0ZXJMaW5rXT1cImZvcmdldFBhc3N3b3JkTGlua1wiIGNsYXNzPVwie3tmb3JnZXRQYXNzd29yZENsYXNzfX1cIj5Gb3Jnb3QgcGFzc3dvcmQ8L2E+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsaWItYnV0dG9uIFxuICAgICAgW2J1dHRvbkNsYXNzXT1cImJ0bkNsYXNzXCJcbiAgICAgIFtjb2xvcl09XCJidG5Db2xvclwiXG4gICAgICBbYm9yZGVyXT1cImJ0bkJvcmRlclwiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cImJ0bkJvcmRlclJhZGl1c1wiXG4gICAgICBbYmdDb2xvcl09XCJidG5CZ0NvbG9yXCJcbiAgICAgIFtwZF09XCJidG5QZFwiXG4gICAgICBbdGV4dF09XCJidG5UZXh0XCIgXG4gICAgICB0eXBlPVwic3VibWl0XCIgXG4gICAgICBbZGlzYWJsZWRdPVwiIXRoaXMuY2hlY2tGb3JtKClcIlxuICAgICAgPjwvbGliLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PiBcbiAgICAgIDxwICpuZ0lmPVwicmVxdWVzdEFjY2Vzc0xpbmtcIj5cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwicmVxdWVzdEFjY2Vzc0xpbmtcIiAgY2xhc3M9XCJ7e3JlcXVlc3RBY2Nlc3NDbGFzc319XCI+Q2xpY2sgaGVyZSB0byByZXF1ZXN0IHVzZXIgYWNjZXNzPC9hPlxuICAgICAgPC9wPlxuICAgICBcbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8ZGl2PiBcbiAgICA8ZGl2ICpuZ0lmPVwiQXV0aE1lY2hhbmlzbXMgIT09IG51bGxcIj4gXG4gICAgICA8dmVyYmVuLW8tYXV0aCBcbiAgICAgICAgW2F1dGhNZWNoYW5pc21zXT1cIkF1dGhNZWNoYW5pc21zXCJcbiAgICAgID48L3ZlcmJlbi1vLWF1dGg+XG4gICAgPC9kaXY+XG4gICAgICA8cCBjbGFzcz1cInt7Y3JlYXRlQWNjb3VudENsYXNzfX1cIiAqbmdJZj1cImNyZWF0ZUFjY291bnRMaW5rXCI+XG4gICAgICAgIERvbid0IGhhdmUgYW4gYWNjb3VudD9cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiY3JlYXRlQWNjb3VudExpbmtcIiAgY2xhc3M9XCJ7e2NyZWF0ZUFjY291bnRMaW5rQ2xhc3N9fVwiPkNyZWF0ZSBhbiBhY2NvdW50PC9hPlxuICAgICAgPC9wPlxuICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuICAiXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHTCxXQUFXLEVBR1gsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3hFLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSx5Q0FBeUMsQ0FBQztBQUtqRCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLGVBQWU7SUF5RWhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBOUVELFlBQVksR0FBVyxTQUFTLENBQUM7SUFDakMsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFDcEIsRUFBRSxHQUFXLEVBQUUsQ0FBQztJQUNoQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsT0FBTyxHQUFXLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQVcsaUNBQWlDLENBQUM7SUFDdEQsTUFBTSxHQUFXLHFCQUFxQixDQUFDO0lBQ3ZDLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUMzQixNQUFNLEdBQVcsTUFBTSxDQUFDO0lBQ3hCLG1CQUFtQixHQUFXLEVBQUUsQ0FBQztJQUNqQyxrQkFBa0IsR0FBVyxFQUFFLENBQUM7SUFDaEMsa0JBQWtCLEdBQVcsRUFBRSxDQUFDO0lBQ2hDLHNCQUFzQixHQUFXLEVBQUUsQ0FBQztJQUU3QyxRQUFRO0lBQ0Msa0JBQWtCLEdBQVcsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztJQUMvQixpQkFBaUIsR0FBVyxFQUFFLENBQUM7SUFDeEMsZ0JBQWdCO0lBQ1AsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixVQUFVLEdBQVcsU0FBUyxDQUFDO0lBQy9CLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixlQUFlLEdBQVcsTUFBTSxDQUFDO0lBQ2pDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsT0FBTyxHQUFXLFFBQVEsQ0FBQztJQUVwQyxhQUFhO0lBQ0osZUFBZSxHQUFXLEVBQUUsQ0FBQztJQUM3QixZQUFZLEdBQVcsYUFBYSxDQUFDO0lBQ3JDLFdBQVcsR0FBVyxxQkFBcUIsQ0FBQztJQUM1QyxpQkFBaUIsR0FBVyxNQUFNLENBQUM7SUFDbkMsY0FBYyxHQUNyQixzREFBc0QsQ0FBQztJQUNoRCxjQUFjLEdBQWtCLElBQUksQ0FBQztJQUVwQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUMzQyxXQUFXLEdBQ25CLElBQUksWUFBWSxFQUFFLENBQUM7SUFDWCxvQkFBb0IsR0FFMUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNiLGtCQUFrQixHQUMxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ1gsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7SUFDN0QsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFMUMsYUFBYSxHQUFlLElBQUksQ0FBQztJQUNqQyxjQUFjLEdBQTJCLElBQUksQ0FBQztJQUM5QyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFNBQVMsQ0FBWTtJQUNyQixNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQ3BCLE1BQU0sQ0FBUztJQUNmLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsU0FBUyxHQUFlO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxTQUFTLEVBQUUsRUFBRTtRQUNiLFFBQVEsRUFBRSxFQUFFO0tBQ2IsQ0FBQztJQUNGLFVBQVUsR0FBd0IsSUFBSSxDQUFDO0lBRXZDLFlBQ1UsRUFBZSxFQUNmLE1BQTZCLEVBQzdCLFdBQXdCLEVBQ3hCLE1BQTBCLEVBQzFCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxpQkFBb0M7UUFOcEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRTVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0IsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUU7Z0JBQzFDLFVBQVUsQ0FBQyxRQUFRO2dCQUNuQixVQUFVLENBQUMsS0FBSzthQUNqQixDQUFDO1lBQ0YsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUU7Z0JBQzdDLFVBQVUsQ0FBQyxRQUFRO2dCQUNuQixVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUN4QixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxLQUFLLFdBQVcsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYztZQUNqQyxDQUFDLENBQUM7Z0JBQ0UsR0FBRyxFQUFFLFFBQVE7Z0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzNCO1lBQ0gsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2IsQ0FBQyxDQUFDO29CQUNFLEdBQUcsRUFBRSxRQUFRO29CQUNiLEtBQUssRUFBRSw0QkFBNEI7aUJBQ3BDO2dCQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoQyxnQ0FBZ0MsRUFDaEMsT0FBTyxDQUNSLENBQUM7WUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1lBRXRCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUM5RCxDQUFDLENBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssYUFBYSxDQUFDLEdBQUcsQ0FDeEQsQ0FBQztZQUVGLElBQ0UsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU07Z0JBQzVCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQy9DLEVBQ0QsQ0FBQztnQkFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN2QyxDQUFDO1lBQ0YsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDaEMsK0JBQStCLEVBQy9CLE9BQU8sQ0FDUixDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU87WUFDVCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxNQUFNLEdBQUcsR0FBaUIsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRztvQkFDZixXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVc7b0JBQ2hDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSztvQkFDcEIsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO29CQUM1QixRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVE7aUJBQzNCLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3ZCLElBQUksSUFBSSxHQUFjO1lBQ3BCLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVE7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3BCLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztRQUVGLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxHQUFHO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSztnQkFDbkQsUUFBUSxFQUFFLE1BQU0sQ0FDZCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUN4RDthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sSUFDTCxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU07WUFDN0IsSUFBSSxLQUFLLGFBQWEsQ0FBQyxTQUFTLEVBQ2hDLENBQUM7WUFDRCxJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUs7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVc7YUFDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsK0NBQStDO1lBQy9FLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBRXZCLElBQUksR0FBRyxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsR0FBdUIsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7WUFDckUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU87WUFDTCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsT0FBTztZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNqQixDQUFDO0lBQ0osQ0FBQzt3R0EzUFUsZUFBZTs0RkFBZixlQUFlLDZ4Q0M5QjVCLHVzRkFrRkU7OzRGRHBEVyxlQUFlO2tCQUwzQixTQUFTOytCQUNFLGdCQUFnQjtpUUFLakIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUdHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dpbkRhdGEgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IFJlc3BvbnNlS2V5VmFsdWUgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQXV0aE1lY2hhbmlzbSxcbiAgTWVjaGFuaXNtVHlwZSxcbn0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU9hdXRoUmVzcCB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBUZW5hbnRDb25maWcgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcbmltcG9ydCB7IFVzZXJBZ2VudFR5cGUgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLXNpZ24taW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zaWduLWluLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduSW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBoZWFkbGluZ1RleHQ6IHN0cmluZyA9ICdTaWduIGluJztcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBtYXhXaWR0aDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1hcmdpbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBoZWFkbGluZ0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYmdDb2xvcjogc3RyaW5nID0gJyNmZmYnO1xuICBASW5wdXQoKSBib3hTaGFkb3c6IHN0cmluZyA9ICc0cHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpJztcbiAgQElucHV0KCkgYm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICM2NjY2NjY4MCc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzI0cHgnO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZyA9ICcjMzMzJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIGZvcmdldFBhc3N3b3JkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1ZXN0QWNjZXNzQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjcmVhdGVBY2NvdW50Q2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjcmVhdGVBY2NvdW50TGlua0NsYXNzOiBzdHJpbmcgPSAnJztcblxuICAvLyBsaW5rc1xuICBASW5wdXQoKSBmb3JnZXRQYXNzd29yZExpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjcmVhdGVBY2NvdW50TGluazogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVlc3RBY2Nlc3NMaW5rOiBzdHJpbmcgPSAnJztcbiAgLy8gYnV0dG9uIHN0eWxlc1xuICBASW5wdXQoKSBidG5DbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJ0bkJnQ29sb3I6IHN0cmluZyA9ICcjRkZFNjgxJztcbiAgQElucHV0KCkgYnRuQ29sb3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBidG5Cb3JkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBidG5Cb3JkZXJSYWRpdXM6IHN0cmluZyA9ICcyNHB4JztcbiAgQElucHV0KCkgYnRuUGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBidG5UZXh0OiBzdHJpbmcgPSAnTG9nIGluJztcblxuICAvL2lucHV0U3R5bGVzXG4gIEBJbnB1dCgpIGlucHV0TGFiZWxDb2xvcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlucHV0QmdDb2xvcjogc3RyaW5nID0gJ3RyYW5zcGFyZW50JztcbiAgQElucHV0KCkgaW5wdXRCb3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgIzY2NjY2NjU5JztcbiAgQElucHV0KCkgaW5wdXRCb3JkZXJSYWRpdXM6IHN0cmluZyA9ICcxMnB4JztcbiAgQElucHV0KCkgdGVybXNFcnJvclRleHQ6IHN0cmluZyA9XG4gICAgJ1BsZWFzZSBhZ3JlZSB0byB0aGUgdGVybXMgb2YgdXNlIGFuZCBwcml2YWN5IHBvbGljeS4nO1xuICBASW5wdXQoKSB1cmxLZXlPdmVycmlkZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luRGF0YT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0RW5kOiBFdmVudEVtaXR0ZXI8UmVzcG9uc2VLZXlWYWx1ZSB8IEVycm9yUmVzcG9uc2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkdvb2dsZUF1dGhSZXNwb25zZTogRXZlbnRFbWl0dGVyPFxuICAgIFJlc3BvbnNlS2V5VmFsdWUgfCBFcnJvclJlc3BvbnNlXG4gID4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblN1Ym1pdEdvb2dsZUF1dGg6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUtleVZhbHVlIHwgRXJyb3JSZXNwb25zZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHRlbmFudENvbmZpZ0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGVuYW50Q29uZmlnIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIGdvb2dsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbWljcm9zb2Z0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhcHBsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHRlbmFudERldGFpbHM6IGFueSB8IG51bGwgPSBudWxsO1xuICBBdXRoTWVjaGFuaXNtczogQXV0aE1lY2hhbmlzbVtdIHwgbnVsbCA9IG51bGw7XG4gIHNob3dmb3JtOiBib29sZWFuID0gZmFsc2U7XG4gIGxvZ2luRm9ybTogRm9ybUdyb3VwO1xuICBhcGlLZXk6IHN0cmluZyA9ICcnO1xuICBzZWNyZXQ6IHN0cmluZztcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGNvZGU6IHN0cmluZyA9ICcnO1xuICB0eXBlOiBzdHJpbmcgPSAnJztcbiAgbWVjaGFuaXNtVHlwZTogc3RyaW5nID0gJyc7XG4gIE9hdXRoRGF0YTogSU9hdXRoUmVzcCA9IHtcbiAgICBBY2Nlc3NUb2tlbjogJycsXG4gICAgRW1haWw6ICcnLFxuICAgIEZpcnN0TmFtZTogJycsXG4gICAgTGFzdE5hbWU6ICcnLFxuICB9O1xuICBjb25maWdEYXRhOiBUZW5hbnRDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvZ2luRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgRW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMuZW1haWwsXG4gICAgICBdKSxcbiAgICAgIFBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgIF0pLFxuICAgIH0pO1xuICAgIHRoaXMuc2VjcmV0ID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuU2VjcmV0O1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRUZW5hbnRDb25maWcoKTtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmNvZGUgPSBwYXJhbXNbJ2NvZGUnXTtcbiAgICAgIHRoaXMudHlwZSA9IHBhcmFtc1sndHlwZSddO1xuICAgICAgaWYgKHRoaXMuY29kZSkge1xuICAgICAgICB0aGlzLnZlcmlmeVVzZXJEZXRhaWxzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRUZW5hbnRDb25maWcoKSB7XG4gICAgY29uc3QgaXNMb2NhbGhvc3QgPSB3aW5kb3c/LmxvY2F0aW9uPy5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMudXJsS2V5T3ZlcnJpZGVcbiAgICAgID8ge1xuICAgICAgICAgIEtleTogJ1VybEtleScsXG4gICAgICAgICAgVmFsdWU6IHRoaXMudXJsS2V5T3ZlcnJpZGUsXG4gICAgICAgIH1cbiAgICAgIDogaXNMb2NhbGhvc3RcbiAgICAgID8ge1xuICAgICAgICAgIEtleTogJ1VybEtleScsXG4gICAgICAgICAgVmFsdWU6ICdodHRwczovL2JvdmFzLndoaXRlMzYwLm5ldCcsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3Q8VGVuYW50Q29uZmlnPihcbiAgICAgICAgYFRlbmFudC9HZXRUZW5hbnRDb25maWdCeVVybEtleWAsXG4gICAgICAgIHBheWxvYWRcbiAgICAgICk7XG4gICAgICB0aGlzLnRlbmFudERldGFpbHMgPSByZXM7XG4gICAgICB0aGlzLmFwaUtleSA9IHRoaXMudGVuYW50RGV0YWlscy5UZW5hbnRJZDtcbiAgICAgIHRoaXMuY29uZmlnRGF0YSA9IHJlcztcblxuICAgICAgdGhpcy5BdXRoTWVjaGFuaXNtcyA9IHRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbXM/LmZpbHRlcihcbiAgICAgICAgKG06IEF1dGhNZWNoYW5pc20pID0+IG0uVXNlckFnZW50ID09PSBVc2VyQWdlbnRUeXBlLldlYlxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5BdXRoTWVjaGFuaXNtcz8ubGVuZ3RoIHx8XG4gICAgICAgICF0aGlzLkF1dGhNZWNoYW5pc21zLnNvbWUoXG4gICAgICAgICAgKG0pID0+IG0uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5JbkFwcFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zaG93Zm9ybSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Zm9ybSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGVuYW50Q29uZmlnTG9hZGVkLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMudGVuYW50Q29uZmlnTG9hZGVkLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGb3JtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvZ2luRm9ybS52YWxpZDtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVVzZXJEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsICYmIHRoaXMuYXBpS2V5KSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbmQoKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyh0aGlzLnR5cGUpXG4gICAgICApO1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgQXV0aENvZGU6IHRoaXMuY29kZSxcbiAgICAgICAgVGVuYW50OiB0aGlzLmFwaUtleSxcbiAgICAgICAgQXV0aE1lY2hhbmlzbTogZGF0YS5BdXRoTWVjaGFuaXNtLFxuICAgICAgfTtcblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgICBgQXV0aGVudGljYXRpb24vR2V0VXNlckRldGFpbHNgLFxuICAgICAgICBwYXlsb2FkXG4gICAgICApO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlcyBhcyBJT2F1dGhSZXNwO1xuICAgICAgICB0aGlzLk9hdXRoRGF0YSA9IHtcbiAgICAgICAgICBBY2Nlc3NUb2tlbjogcmVzdWx0Py5BY2Nlc3NUb2tlbixcbiAgICAgICAgICBFbWFpbDogcmVzdWx0Py5FbWFpbCxcbiAgICAgICAgICBGaXJzdE5hbWU6IHJlc3VsdD8uRmlyc3ROYW1lLFxuICAgICAgICAgIExhc3ROYW1lOiByZXN1bHQ/Lkxhc3ROYW1lLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3VibWl0KGRhdGEuQXV0aE1lY2hhbmlzbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3VibWl0KHR5cGU6IHN0cmluZykge1xuICAgIGxldCBkYXRhOiBMb2dpbkRhdGEgPSB7XG4gICAgICBNYWlsQWRkcmVzczogJycsXG4gICAgICBQYXNzd29yZDogJycsXG4gICAgICBMb2dpblR5cGU6IHR5cGUsXG4gICAgICBUZW5hbnQ6IHRoaXMudGVuYW50RGV0YWlscy5UZW5hbnRJZCxcbiAgICAgIFNlY3JldGU6IHRoaXMuc2VjcmV0LFxuICAgICAgVG9rZW46ICcnLFxuICAgIH07XG5cbiAgICBpZiAodHlwZSA9PT0gTWVjaGFuaXNtVHlwZS5JbkFwcCAmJiB0aGlzLmNoZWNrRm9ybSgpKSB7XG4gICAgICBkYXRhID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBNYWlsQWRkcmVzczogdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ0VtYWlsJ10udmFsdWUsXG4gICAgICAgIFBhc3N3b3JkOiBTdHJpbmcoXG4gICAgICAgICAgQ3J5cHRvSlMuTUQ1KHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLnZhbHVlKVxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdHlwZSA9PT0gTWVjaGFuaXNtVHlwZS5Hb29nbGUgfHxcbiAgICAgIHR5cGUgPT09IE1lY2hhbmlzbVR5cGUuTWljcm9zb2Z0XG4gICAgKSB7XG4gICAgICBkYXRhID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBNYWlsQWRkcmVzczogdGhpcy5PYXV0aERhdGE/LkVtYWlsLFxuICAgICAgICBUb2tlbjogdGhpcy5PYXV0aERhdGE/LkFjY2Vzc1Rva2VuLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdChkYXRhKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTsgLy8gUHJlc2VydmluZyB5b3VyIHV0aWxTZXJ2aWNlIGNhbGxcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChgQXV0aGVudGljYXRpb24vTG9naW5gLCBkYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdSZXNwb25zZTonLCByZXMpO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpOyAvLyBTdG9wIHV0aWxTZXJ2aWNlIHRyYWNraW5nIG9uIHN1Y2Nlc3MvZmFpbHVyZVxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5vblN1Ym1pdEVuZC5lbWl0KHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgUmVzcG9uc2VLZXlWYWx1ZTtcbiAgICAgICAgdGhpcy5vblN1Ym1pdEVuZC5lbWl0KHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTsgLy8gU3RvcCB1dGlsU2VydmljZSB0cmFja2luZyBvbiBlcnJvclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBsb2dpbjonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmJnQ29sb3IsXG4gICAgICAnYm94LXNoYWRvdyc6IHRoaXMuYm94U2hhZG93LFxuICAgICAgYm9yZGVyOiB0aGlzLmJvcmRlcixcbiAgICAgICdib3JkZXItcmFkaXVzJzogdGhpcy5ib3JkZXJSYWRpdXMsXG4gICAgICBjb2xvcjogdGhpcy50ZXh0Q29sb3IsXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgICdtYXgtd2lkdGgnOiB0aGlzLm1heFdpZHRoLFxuICAgICAgbWFyZ2luOiB0aGlzLm1hcmdpbixcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICBwYWRkaW5nOiB0aGlzLnBkLFxuICAgIH07XG4gIH1cbn1cbiIsIjxzZWN0aW9uXG5bbmdTdHlsZV09XCJzdHlsZXNcIlxuY2xhc3M9XCJ7eyBjdXN0b21DbGFzcyB9fVwiXG4+XG4gICAgPGgyIGNsYXNzPVwie3toZWFkbGluZ0NsYXNzfX1cIj57e2hlYWRsaW5nVGV4dH19PC9oMj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoJ0luQXBwJylcIiBjbGFzcz1cImZsZXhXcmFwcGVyXCI+IFxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1XcmFwcGVyXCIgKm5nSWY9XCJzaG93Zm9ybVwiPiBcbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtsYWJlbF09XCInRW1haWwnXCJcbiAgICAgICAgW2xhYmVsQ29sb3JdPVwiaW5wdXRMYWJlbENvbG9yXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRW1haWxcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW2JnQ29sb3JdPVwiaW5wdXRCZ0NvbG9yXCJcbiAgICAgICAgW2JvcmRlcl09XCJpbnB1dEJvcmRlclwiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiaW5wdXRCb3JkZXJSYWRpdXNcIlxuICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICAgIDxkaXY+IFxuICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBbbGFiZWxdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICAgIFtsYWJlbENvbG9yXT1cImlucHV0TGFiZWxDb2xvclwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIlBhc3N3b3JkXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtiZ0NvbG9yXT1cImlucHV0QmdDb2xvclwiXG4gICAgICAgIFtib3JkZXJdPVwiaW5wdXRCb3JkZXJcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cImlucHV0Qm9yZGVyUmFkaXVzXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbcGFzc3dvcmRUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICAgIFtwYXNzTGVuZ3RoXT1cIjVcIlxuICAgICAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJ7XG4gICAgICAgICAgcGFzc3dvcmQ6J1Bhc3N3b3JkIGlzIHJlcXVpcmVkJ1xuICAgICAgICB9XCJcbiAgICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cInB3ZFdyYXBwZXJcIj4gXG4gICAgICAgICAgPHAgY2xhcz1cIm1iLTBcIj4gPGEgW3JvdXRlckxpbmtdPVwiZm9yZ2V0UGFzc3dvcmRMaW5rXCIgY2xhc3M9XCJ7e2ZvcmdldFBhc3N3b3JkQ2xhc3N9fVwiPkZvcmdvdCBwYXNzd29yZDwvYT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxpYi1idXR0b24gXG4gICAgICBbYnV0dG9uQ2xhc3NdPVwiYnRuQ2xhc3NcIlxuICAgICAgW2NvbG9yXT1cImJ0bkNvbG9yXCJcbiAgICAgIFtib3JkZXJdPVwiYnRuQm9yZGVyXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiYnRuQm9yZGVyUmFkaXVzXCJcbiAgICAgIFtiZ0NvbG9yXT1cImJ0bkJnQ29sb3JcIlxuICAgICAgW3BkXT1cImJ0blBkXCJcbiAgICAgIFt0ZXh0XT1cImJ0blRleHRcIiBcbiAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgIFtkaXNhYmxlZF09XCIhdGhpcy5jaGVja0Zvcm0oKVwiXG4gICAgICA+PC9saWItYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+IFxuICAgICAgPHAgKm5nSWY9XCJyZXF1ZXN0QWNjZXNzTGlua1wiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCJyZXF1ZXN0QWNjZXNzTGlua1wiICBjbGFzcz1cInt7cmVxdWVzdEFjY2Vzc0NsYXNzfX1cIj5DbGljayBoZXJlIHRvIHJlcXVlc3QgdXNlciBhY2Nlc3M8L2E+XG4gICAgICA8L3A+XG4gICAgIFxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG4gIDxkaXY+IFxuICAgIDxkaXYgKm5nSWY9XCJBdXRoTWVjaGFuaXNtcyAhPT0gbnVsbFwiPiBcbiAgICAgIDx2ZXJiZW4tby1hdXRoIFxuICAgICAgICBbYXV0aE1lY2hhbmlzbXNdPVwiQXV0aE1lY2hhbmlzbXNcIlxuICAgICAgPjwvdmVyYmVuLW8tYXV0aD5cbiAgICA8L2Rpdj5cbiAgICAgIDxwIGNsYXNzPVwie3tjcmVhdGVBY2NvdW50Q2xhc3N9fVwiICpuZ0lmPVwiY3JlYXRlQWNjb3VudExpbmtcIj5cbiAgICAgICAgRG9uJ3QgaGF2ZSBhbiBhY2NvdW50P1xuICAgICAgICA8YSBbcm91dGVyTGlua109XCJjcmVhdGVBY2NvdW50TGlua1wiICBjbGFzcz1cInt7Y3JlYXRlQWNjb3VudExpbmtDbGFzc319XCI+Q3JlYXRlIGFuIGFjY291bnQ8L2E+XG4gICAgICA8L3A+XG4gIDwvZGl2PlxuICA8L3NlY3Rpb24+XG4gICJdfQ==
|
|
@@ -59,6 +59,7 @@ class SignInComponent {
|
|
|
59
59
|
inputBorder = '1px solid #66666659';
|
|
60
60
|
inputBorderRadius = '12px';
|
|
61
61
|
termsErrorText = 'Please agree to the terms of use and privacy policy.';
|
|
62
|
+
urlKeyOverride = null;
|
|
62
63
|
formSubmit = new EventEmitter();
|
|
63
64
|
onSubmitEnd = new EventEmitter();
|
|
64
65
|
onGoogleAuthResponse = new EventEmitter();
|
|
@@ -115,13 +116,18 @@ class SignInComponent {
|
|
|
115
116
|
});
|
|
116
117
|
}
|
|
117
118
|
async getTenantConfig() {
|
|
118
|
-
const isLocalhost = window?.location?.hostname ===
|
|
119
|
-
const payload =
|
|
119
|
+
const isLocalhost = window?.location?.hostname === 'localhost';
|
|
120
|
+
const payload = this.urlKeyOverride
|
|
120
121
|
? {
|
|
121
|
-
Key:
|
|
122
|
-
Value:
|
|
122
|
+
Key: 'UrlKey',
|
|
123
|
+
Value: this.urlKeyOverride,
|
|
123
124
|
}
|
|
124
|
-
:
|
|
125
|
+
: isLocalhost
|
|
126
|
+
? {
|
|
127
|
+
Key: 'UrlKey',
|
|
128
|
+
Value: 'https://bovas.white360.net',
|
|
129
|
+
}
|
|
130
|
+
: undefined;
|
|
125
131
|
try {
|
|
126
132
|
const res = await this.server.post(`Tenant/GetTenantConfigByUrlKey`, payload);
|
|
127
133
|
this.tenantDetails = res;
|
|
@@ -231,7 +237,7 @@ class SignInComponent {
|
|
|
231
237
|
};
|
|
232
238
|
}
|
|
233
239
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i2.UtilService }, { token: i2.EnvironmentService }, { token: i3.ActivatedRoute }, { token: i3.Router }, { token: i2.EncryptionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
234
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "verben-sign-in", inputs: { headlingText: "headlingText", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", customClass: "customClass", headlingClass: "headlingClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", forgetPasswordClass: "forgetPasswordClass", requestAccessClass: "requestAccessClass", createAccountClass: "createAccountClass", createAccountLinkClass: "createAccountLinkClass", forgetPasswordLink: "forgetPasswordLink", createAccountLink: "createAccountLink", requestAccessLink: "requestAccessLink", btnClass: "btnClass", btnBgColor: "btnBgColor", btnColor: "btnColor", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnPd: "btnPd", btnText: "btnText", inputLabelColor: "inputLabelColor", inputBgColor: "inputBgColor", inputBorder: "inputBorder", inputBorderRadius: "inputBorderRadius", termsErrorText: "termsErrorText" }, outputs: { formSubmit: "formSubmit", onSubmitEnd: "onSubmitEnd", onGoogleAuthResponse: "onGoogleAuthResponse", onSubmitGoogleAuth: "onSubmitGoogleAuth", tenantConfigLoaded: "tenantConfigLoaded", googleClick: "googleClick", microsoftClick: "microsoftClick", appleClick: "appleClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i5.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["emitMechanismFn"] }, { kind: "component", type: i7.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
240
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "verben-sign-in", inputs: { headlingText: "headlingText", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", customClass: "customClass", headlingClass: "headlingClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", forgetPasswordClass: "forgetPasswordClass", requestAccessClass: "requestAccessClass", createAccountClass: "createAccountClass", createAccountLinkClass: "createAccountLinkClass", forgetPasswordLink: "forgetPasswordLink", createAccountLink: "createAccountLink", requestAccessLink: "requestAccessLink", btnClass: "btnClass", btnBgColor: "btnBgColor", btnColor: "btnColor", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnPd: "btnPd", btnText: "btnText", inputLabelColor: "inputLabelColor", inputBgColor: "inputBgColor", inputBorder: "inputBorder", inputBorderRadius: "inputBorderRadius", termsErrorText: "termsErrorText", urlKeyOverride: "urlKeyOverride" }, outputs: { formSubmit: "formSubmit", onSubmitEnd: "onSubmitEnd", onGoogleAuthResponse: "onGoogleAuthResponse", onSubmitGoogleAuth: "onSubmitGoogleAuth", tenantConfigLoaded: "tenantConfigLoaded", googleClick: "googleClick", microsoftClick: "microsoftClick", appleClick: "appleClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i5.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["emitMechanismFn"] }, { kind: "component", type: i7.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
235
241
|
}
|
|
236
242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, decorators: [{
|
|
237
243
|
type: Component,
|
|
@@ -300,6 +306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
300
306
|
type: Input
|
|
301
307
|
}], termsErrorText: [{
|
|
302
308
|
type: Input
|
|
309
|
+
}], urlKeyOverride: [{
|
|
310
|
+
type: Input
|
|
303
311
|
}], formSubmit: [{
|
|
304
312
|
type: Output
|
|
305
313
|
}], onSubmitEnd: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-authentication-ui-src-lib-components-sign-in.mjs","sources":["../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.component.ts","../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.component.html","../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.module.ts","../../../projects/verben-authentication-ui/src/lib/components/sign-in/verben-authentication-ui-src-lib-components-sign-in.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { LoginData } from 'verben-authentication-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-authentication-ui/src/lib/services';\nimport { UtilService } from 'verben-authentication-ui/src/lib/services';\nimport { ErrorResponse } from 'verben-authentication-ui/src/lib/models';\nimport { ResponseKeyValue } from 'verben-authentication-ui/src/lib/models';\nimport { EnvironmentService } from 'verben-authentication-ui/src/lib/services';\nimport {\n AuthMechanism,\n MechanismType,\n} from 'verben-authentication-ui/src/lib/models';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IOauthResp } from 'verben-authentication-ui/src/lib/models';\nimport { TenantConfig } from 'verben-authentication-ui/src/lib/models';\nimport { EncryptionService } from 'verben-authentication-ui/src/lib/services';\nimport CryptoJS from 'crypto-js';\nimport { UserAgentType } from 'verben-authentication-ui/src/lib/models';\n@Component({\n selector: 'verben-sign-in',\n templateUrl: './sign-in.component.html',\n styleUrl: './sign-in.component.css',\n})\nexport class SignInComponent implements OnInit {\n @Input() headlingText: string = 'Sign in';\n @Input() width: string = '';\n @Input() maxWidth: string = '';\n @Input() margin: string = '';\n @Input() pd: string = '';\n @Input() customClass: string = '';\n @Input() headlingClass: string = '';\n @Input() bgColor: string = '#fff';\n @Input() boxShadow: string = '4px 4px 4px rgba(0, 0, 0, 0.25)';\n @Input() border: string = '1px solid #66666680';\n @Input() borderRadius: string = '24px';\n @Input() textColor: string = '#333';\n @Input() height: string = 'auto';\n @Input() forgetPasswordClass: string = '';\n @Input() requestAccessClass: string = '';\n @Input() createAccountClass: string = '';\n @Input() createAccountLinkClass: string = '';\n\n // links\n @Input() forgetPasswordLink: string = '';\n @Input() createAccountLink: string = '';\n @Input() requestAccessLink: string = '';\n // button styles\n @Input() btnClass: string = '';\n @Input() btnBgColor: string = '#FFE681';\n @Input() btnColor: string = '';\n @Input() btnBorder: string = '';\n @Input() btnBorderRadius: string = '24px';\n @Input() btnPd: string = '';\n @Input() btnText: string = 'Log in';\n\n //inputStyles\n @Input() inputLabelColor: string = '';\n @Input() inputBgColor: string = 'transparent';\n @Input() inputBorder: string = '1px solid #66666659';\n @Input() inputBorderRadius: string = '12px';\n @Input() termsErrorText: string =\n 'Please agree to the terms of use and privacy policy.';\n\n @Output() formSubmit = new EventEmitter<LoginData>();\n @Output() onSubmitEnd: EventEmitter<ResponseKeyValue | ErrorResponse> =\n new EventEmitter();\n @Output() onGoogleAuthResponse: EventEmitter<\n ResponseKeyValue | ErrorResponse\n > = new EventEmitter();\n @Output() onSubmitGoogleAuth: EventEmitter<ResponseKeyValue | ErrorResponse> =\n new EventEmitter();\n @Output() tenantConfigLoaded = new EventEmitter<TenantConfig | null>();\n @Output() googleClick = new EventEmitter();\n @Output() microsoftClick = new EventEmitter();\n @Output() appleClick = new EventEmitter();\n\n tenantDetails: any | null = null;\n AuthMechanisms: AuthMechanism[] | null = null;\n showform: boolean = false;\n loginForm: FormGroup;\n apiKey: string=''\n secret: string;\n isLoading: boolean = false;\n code: string = '';\n type: string = '';\n mechanismType: string = '';\n OauthData: IOauthResp = {\n AccessToken: '',\n Email: '',\n FirstName: '',\n LastName: '',\n };\n configData: TenantConfig | null = null;\n\n constructor(\n private fb: FormBuilder,\n private server: HttpWebRequestService,\n private utilService: UtilService,\n private envSvc: EnvironmentService,\n private route: ActivatedRoute,\n private router: Router,\n private encryptionService: EncryptionService\n ) {\n this.loginForm = this.fb.group({\n Email: new FormControl<string | null>(null, [\n Validators.required,\n Validators.email,\n ]),\n Password: new FormControl<string | null>(null, [\n Validators.required,\n Validators.minLength(5),\n ]),\n });\n this.secret = this.envSvc.environment.Secret;\n }\n\n async ngOnInit() {\n await this.getTenantConfig();\n this.route.queryParams.subscribe((params) => {\n this.code = params['code'];\n this.type = params['type'];\n if (this.code) {\n this.verifyUserDetails();\n }\n });\n }\n\nasync getTenantConfig() {\n const isLocalhost = window?.location?.hostname === \"localhost\";\n const payload = isLocalhost\n ? {\n Key: \"UrlKey\",\n Value: \"https://bovas.white360.net\",\n }\n : undefined;\n\n try {\n const res = await this.server.post<TenantConfig>(\n `Tenant/GetTenantConfigByUrlKey`,\n payload\n );\n this.tenantDetails = res;\n this.apiKey = this.tenantDetails.TenantId\n this.configData = res;\n\n this.AuthMechanisms = this.tenantDetails?.AuthMechanisms?.filter(\n (m:AuthMechanism) => m.UserAgent === UserAgentType.Web\n );\n\n if (\n !this.AuthMechanisms?.length ||\n !this.AuthMechanisms.some((m) => m.AuthMechanism === MechanismType.InApp)\n ) {\n this.showform = false;\n } else {\n this.showform = true;\n }\n\n this.tenantConfigLoaded.emit(this.configData);\n } catch (err) {\n this.tenantConfigLoaded.emit(null);\n }\n}\n\n\n checkForm(): boolean {\n return this.loginForm.valid;\n }\n\n async verifyUserDetails() {\n if (this.AuthMechanisms !== null && this.apiKey) {\n const data: any = this.AuthMechanisms.find((item) =>\n item.AuthMechanism.includes(this.type)\n );\n const payload = {\n AuthCode: this.code,\n Tenant: this.apiKey,\n AuthMechanism: data.AuthMechanism,\n };\n\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Authentication/GetUserDetails`,\n payload\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return;\n } else {\n var result = res as IOauthResp;\n this.OauthData = {\n AccessToken: result?.AccessToken,\n Email: result?.Email,\n FirstName: result?.FirstName,\n LastName: result?.LastName,\n };\n\n this.submit(data.AuthMechanism);\n }\n }\n }\n\n async submit(type: string) {\n let data: LoginData = {\n MailAddress: '',\n Password: '',\n LoginType: type,\n Tenant: this.tenantDetails.TenantId,\n Secrete: this.secret,\n Token: '',\n };\n\n if (type === MechanismType.InApp && this.checkForm()) {\n data = {\n ...data,\n MailAddress: this.loginForm.controls['Email'].value,\n Password: String(\n CryptoJS.MD5(this.loginForm.controls['Password'].value)\n ),\n };\n } else if (\n type === MechanismType.Google ||\n type === MechanismType.Microsoft\n ) {\n data = {\n ...data,\n MailAddress: this.OauthData?.Email,\n Token: this.OauthData?.AccessToken,\n };\n }\n\n this.formSubmit.emit(data);\n this.utilService.sendBI(true); // Preserving your utilService call\n this.isLoading = true;\n\n try {\n const res = await this.server.post(`Authentication/Login`, data);\n console.log('Response:', res);\n this.utilService.sendBI(false); // Stop utilService tracking on success/failure\n this.isLoading = false;\n\n if (res instanceof ErrorResponse) {\n this.onSubmitEnd.emit(res);\n } else {\n const result = res as ResponseKeyValue;\n this.onSubmitEnd.emit(result);\n }\n } catch (error) {\n this.utilService.sendBI(false); // Stop utilService tracking on error\n this.isLoading = false;\n console.error('Error during login:', error);\n }\n }\n\n get styles() {\n return {\n 'background-color': this.bgColor,\n 'box-shadow': this.boxShadow,\n border: this.border,\n 'border-radius': this.borderRadius,\n color: this.textColor,\n width: this.width,\n 'max-width': this.maxWidth,\n margin: this.margin,\n height: this.height,\n padding: this.pd,\n };\n }\n}\n","<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SignInComponent } from './sign-in.component';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { VerbenaButtonModule, VerbenaInputModule } from 'verben-ng-ui';\nimport { OAuthModule } from 'verben-authentication-ui/src/lib/components/o-auth';\nimport { ButtonModule } from 'verben-authentication-ui/src/lib/components/button';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [SignInComponent],\n imports: [\n CommonModule,\n FormsModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n RouterLink,\n OAuthModule,\n ButtonModule,\n ReactiveFormsModule,\n ],\n exports: [SignInComponent],\n})\nexport class SignInModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-authentication-ui-src-lib-components-sign-in.mjs","sources":["../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.component.ts","../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.component.html","../../../projects/verben-authentication-ui/src/lib/components/sign-in/sign-in.module.ts","../../../projects/verben-authentication-ui/src/lib/components/sign-in/verben-authentication-ui-src-lib-components-sign-in.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { LoginData } from 'verben-authentication-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-authentication-ui/src/lib/services';\nimport { UtilService } from 'verben-authentication-ui/src/lib/services';\nimport { ErrorResponse } from 'verben-authentication-ui/src/lib/models';\nimport { ResponseKeyValue } from 'verben-authentication-ui/src/lib/models';\nimport { EnvironmentService } from 'verben-authentication-ui/src/lib/services';\nimport {\n AuthMechanism,\n MechanismType,\n} from 'verben-authentication-ui/src/lib/models';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IOauthResp } from 'verben-authentication-ui/src/lib/models';\nimport { TenantConfig } from 'verben-authentication-ui/src/lib/models';\nimport { EncryptionService } from 'verben-authentication-ui/src/lib/services';\nimport CryptoJS from 'crypto-js';\nimport { UserAgentType } from 'verben-authentication-ui/src/lib/models';\n@Component({\n selector: 'verben-sign-in',\n templateUrl: './sign-in.component.html',\n styleUrl: './sign-in.component.css',\n})\nexport class SignInComponent implements OnInit {\n @Input() headlingText: string = 'Sign in';\n @Input() width: string = '';\n @Input() maxWidth: string = '';\n @Input() margin: string = '';\n @Input() pd: string = '';\n @Input() customClass: string = '';\n @Input() headlingClass: string = '';\n @Input() bgColor: string = '#fff';\n @Input() boxShadow: string = '4px 4px 4px rgba(0, 0, 0, 0.25)';\n @Input() border: string = '1px solid #66666680';\n @Input() borderRadius: string = '24px';\n @Input() textColor: string = '#333';\n @Input() height: string = 'auto';\n @Input() forgetPasswordClass: string = '';\n @Input() requestAccessClass: string = '';\n @Input() createAccountClass: string = '';\n @Input() createAccountLinkClass: string = '';\n\n // links\n @Input() forgetPasswordLink: string = '';\n @Input() createAccountLink: string = '';\n @Input() requestAccessLink: string = '';\n // button styles\n @Input() btnClass: string = '';\n @Input() btnBgColor: string = '#FFE681';\n @Input() btnColor: string = '';\n @Input() btnBorder: string = '';\n @Input() btnBorderRadius: string = '24px';\n @Input() btnPd: string = '';\n @Input() btnText: string = 'Log in';\n\n //inputStyles\n @Input() inputLabelColor: string = '';\n @Input() inputBgColor: string = 'transparent';\n @Input() inputBorder: string = '1px solid #66666659';\n @Input() inputBorderRadius: string = '12px';\n @Input() termsErrorText: string =\n 'Please agree to the terms of use and privacy policy.';\n @Input() urlKeyOverride: string | null = null;\n\n @Output() formSubmit = new EventEmitter<LoginData>();\n @Output() onSubmitEnd: EventEmitter<ResponseKeyValue | ErrorResponse> =\n new EventEmitter();\n @Output() onGoogleAuthResponse: EventEmitter<\n ResponseKeyValue | ErrorResponse\n > = new EventEmitter();\n @Output() onSubmitGoogleAuth: EventEmitter<ResponseKeyValue | ErrorResponse> =\n new EventEmitter();\n @Output() tenantConfigLoaded = new EventEmitter<TenantConfig | null>();\n @Output() googleClick = new EventEmitter();\n @Output() microsoftClick = new EventEmitter();\n @Output() appleClick = new EventEmitter();\n\n tenantDetails: any | null = null;\n AuthMechanisms: AuthMechanism[] | null = null;\n showform: boolean = false;\n loginForm: FormGroup;\n apiKey: string = '';\n secret: string;\n isLoading: boolean = false;\n code: string = '';\n type: string = '';\n mechanismType: string = '';\n OauthData: IOauthResp = {\n AccessToken: '',\n Email: '',\n FirstName: '',\n LastName: '',\n };\n configData: TenantConfig | null = null;\n\n constructor(\n private fb: FormBuilder,\n private server: HttpWebRequestService,\n private utilService: UtilService,\n private envSvc: EnvironmentService,\n private route: ActivatedRoute,\n private router: Router,\n private encryptionService: EncryptionService\n ) {\n this.loginForm = this.fb.group({\n Email: new FormControl<string | null>(null, [\n Validators.required,\n Validators.email,\n ]),\n Password: new FormControl<string | null>(null, [\n Validators.required,\n Validators.minLength(5),\n ]),\n });\n this.secret = this.envSvc.environment.Secret;\n }\n\n async ngOnInit() {\n await this.getTenantConfig();\n this.route.queryParams.subscribe((params) => {\n this.code = params['code'];\n this.type = params['type'];\n if (this.code) {\n this.verifyUserDetails();\n }\n });\n }\n\n async getTenantConfig() {\n const isLocalhost = window?.location?.hostname === 'localhost';\n const payload = this.urlKeyOverride\n ? {\n Key: 'UrlKey',\n Value: this.urlKeyOverride,\n }\n : isLocalhost\n ? {\n Key: 'UrlKey',\n Value: 'https://bovas.white360.net',\n }\n : undefined;\n\n try {\n const res = await this.server.post<TenantConfig>(\n `Tenant/GetTenantConfigByUrlKey`,\n payload\n );\n this.tenantDetails = res;\n this.apiKey = this.tenantDetails.TenantId;\n this.configData = res;\n\n this.AuthMechanisms = this.tenantDetails?.AuthMechanisms?.filter(\n (m: AuthMechanism) => m.UserAgent === UserAgentType.Web\n );\n\n if (\n !this.AuthMechanisms?.length ||\n !this.AuthMechanisms.some(\n (m) => m.AuthMechanism === MechanismType.InApp\n )\n ) {\n this.showform = false;\n } else {\n this.showform = true;\n }\n\n this.tenantConfigLoaded.emit(this.configData);\n } catch (err) {\n this.tenantConfigLoaded.emit(null);\n }\n }\n\n checkForm(): boolean {\n return this.loginForm.valid;\n }\n\n async verifyUserDetails() {\n if (this.AuthMechanisms !== null && this.apiKey) {\n const data: any = this.AuthMechanisms.find((item) =>\n item.AuthMechanism.includes(this.type)\n );\n const payload = {\n AuthCode: this.code,\n Tenant: this.apiKey,\n AuthMechanism: data.AuthMechanism,\n };\n\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Authentication/GetUserDetails`,\n payload\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return;\n } else {\n var result = res as IOauthResp;\n this.OauthData = {\n AccessToken: result?.AccessToken,\n Email: result?.Email,\n FirstName: result?.FirstName,\n LastName: result?.LastName,\n };\n\n this.submit(data.AuthMechanism);\n }\n }\n }\n\n async submit(type: string) {\n let data: LoginData = {\n MailAddress: '',\n Password: '',\n LoginType: type,\n Tenant: this.tenantDetails.TenantId,\n Secrete: this.secret,\n Token: '',\n };\n\n if (type === MechanismType.InApp && this.checkForm()) {\n data = {\n ...data,\n MailAddress: this.loginForm.controls['Email'].value,\n Password: String(\n CryptoJS.MD5(this.loginForm.controls['Password'].value)\n ),\n };\n } else if (\n type === MechanismType.Google ||\n type === MechanismType.Microsoft\n ) {\n data = {\n ...data,\n MailAddress: this.OauthData?.Email,\n Token: this.OauthData?.AccessToken,\n };\n }\n\n this.formSubmit.emit(data);\n this.utilService.sendBI(true); // Preserving your utilService call\n this.isLoading = true;\n\n try {\n const res = await this.server.post(`Authentication/Login`, data);\n console.log('Response:', res);\n this.utilService.sendBI(false); // Stop utilService tracking on success/failure\n this.isLoading = false;\n\n if (res instanceof ErrorResponse) {\n this.onSubmitEnd.emit(res);\n } else {\n const result = res as ResponseKeyValue;\n this.onSubmitEnd.emit(result);\n }\n } catch (error) {\n this.utilService.sendBI(false); // Stop utilService tracking on error\n this.isLoading = false;\n console.error('Error during login:', error);\n }\n }\n\n get styles() {\n return {\n 'background-color': this.bgColor,\n 'box-shadow': this.boxShadow,\n border: this.border,\n 'border-radius': this.borderRadius,\n color: this.textColor,\n width: this.width,\n 'max-width': this.maxWidth,\n margin: this.margin,\n height: this.height,\n padding: this.pd,\n };\n }\n}\n","<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit('InApp')\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [passLength]=\"5\"\n [customErrorMessages]=\"{\n password:'Password is required'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n \n </div>\n </form>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </section>\n ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SignInComponent } from './sign-in.component';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { VerbenaButtonModule, VerbenaInputModule } from 'verben-ng-ui';\nimport { OAuthModule } from 'verben-authentication-ui/src/lib/components/o-auth';\nimport { ButtonModule } from 'verben-authentication-ui/src/lib/components/button';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [SignInComponent],\n imports: [\n CommonModule,\n FormsModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n RouterLink,\n OAuthModule,\n ButtonModule,\n ReactiveFormsModule,\n ],\n exports: [SignInComponent],\n})\nexport class SignInModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verben-authentication-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^18.2.0",
|
|
6
6
|
"@angular/common": "^14.0.0 || ^18.0.0",
|
|
@@ -101,12 +101,6 @@
|
|
|
101
101
|
"esm": "./esm2022/src/lib/components/reset-password/verben-authentication-ui-src-lib-components-reset-password.mjs",
|
|
102
102
|
"default": "./fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs"
|
|
103
103
|
},
|
|
104
|
-
"./src/lib/components/otp-input": {
|
|
105
|
-
"types": "./src/lib/components/otp-input/index.d.ts",
|
|
106
|
-
"esm2022": "./esm2022/src/lib/components/otp-input/verben-authentication-ui-src-lib-components-otp-input.mjs",
|
|
107
|
-
"esm": "./esm2022/src/lib/components/otp-input/verben-authentication-ui-src-lib-components-otp-input.mjs",
|
|
108
|
-
"default": "./fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs"
|
|
109
|
-
},
|
|
110
104
|
"./src/lib/components/role-control": {
|
|
111
105
|
"types": "./src/lib/components/role-control/index.d.ts",
|
|
112
106
|
"esm2022": "./esm2022/src/lib/components/role-control/verben-authentication-ui-src-lib-components-role-control.mjs",
|
|
@@ -131,6 +125,12 @@
|
|
|
131
125
|
"esm": "./esm2022/src/lib/components/sso/verben-authentication-ui-src-lib-components-sso.mjs",
|
|
132
126
|
"default": "./fesm2022/verben-authentication-ui-src-lib-components-sso.mjs"
|
|
133
127
|
},
|
|
128
|
+
"./src/lib/components/otp-input": {
|
|
129
|
+
"types": "./src/lib/components/otp-input/index.d.ts",
|
|
130
|
+
"esm2022": "./esm2022/src/lib/components/otp-input/verben-authentication-ui-src-lib-components-otp-input.mjs",
|
|
131
|
+
"esm": "./esm2022/src/lib/components/otp-input/verben-authentication-ui-src-lib-components-otp-input.mjs",
|
|
132
|
+
"default": "./fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs"
|
|
133
|
+
},
|
|
134
134
|
"./src/lib/components/two-factor-auth-otp": {
|
|
135
135
|
"types": "./src/lib/components/two-factor-auth-otp/index.d.ts",
|
|
136
136
|
"esm2022": "./esm2022/src/lib/components/two-factor-auth-otp/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs",
|
|
@@ -52,6 +52,7 @@ export declare class SignInComponent implements OnInit {
|
|
|
52
52
|
inputBorder: string;
|
|
53
53
|
inputBorderRadius: string;
|
|
54
54
|
termsErrorText: string;
|
|
55
|
+
urlKeyOverride: string | null;
|
|
55
56
|
formSubmit: EventEmitter<LoginData>;
|
|
56
57
|
onSubmitEnd: EventEmitter<ResponseKeyValue | ErrorResponse>;
|
|
57
58
|
onGoogleAuthResponse: EventEmitter<ResponseKeyValue | ErrorResponse>;
|
|
@@ -91,5 +92,5 @@ export declare class SignInComponent implements OnInit {
|
|
|
91
92
|
padding: string;
|
|
92
93
|
};
|
|
93
94
|
static ɵfac: i0.ɵɵFactoryDeclaration<SignInComponent, never>;
|
|
94
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SignInComponent, "verben-sign-in", never, { "headlingText": { "alias": "headlingText"; "required": false; }; "width": { "alias": "width"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "margin": { "alias": "margin"; "required": false; }; "pd": { "alias": "pd"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "headlingClass": { "alias": "headlingClass"; "required": false; }; "bgColor": { "alias": "bgColor"; "required": false; }; "boxShadow": { "alias": "boxShadow"; "required": false; }; "border": { "alias": "border"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "height": { "alias": "height"; "required": false; }; "forgetPasswordClass": { "alias": "forgetPasswordClass"; "required": false; }; "requestAccessClass": { "alias": "requestAccessClass"; "required": false; }; "createAccountClass": { "alias": "createAccountClass"; "required": false; }; "createAccountLinkClass": { "alias": "createAccountLinkClass"; "required": false; }; "forgetPasswordLink": { "alias": "forgetPasswordLink"; "required": false; }; "createAccountLink": { "alias": "createAccountLink"; "required": false; }; "requestAccessLink": { "alias": "requestAccessLink"; "required": false; }; "btnClass": { "alias": "btnClass"; "required": false; }; "btnBgColor": { "alias": "btnBgColor"; "required": false; }; "btnColor": { "alias": "btnColor"; "required": false; }; "btnBorder": { "alias": "btnBorder"; "required": false; }; "btnBorderRadius": { "alias": "btnBorderRadius"; "required": false; }; "btnPd": { "alias": "btnPd"; "required": false; }; "btnText": { "alias": "btnText"; "required": false; }; "inputLabelColor": { "alias": "inputLabelColor"; "required": false; }; "inputBgColor": { "alias": "inputBgColor"; "required": false; }; "inputBorder": { "alias": "inputBorder"; "required": false; }; "inputBorderRadius": { "alias": "inputBorderRadius"; "required": false; }; "termsErrorText": { "alias": "termsErrorText"; "required": false; }; }, { "formSubmit": "formSubmit"; "onSubmitEnd": "onSubmitEnd"; "onGoogleAuthResponse": "onGoogleAuthResponse"; "onSubmitGoogleAuth": "onSubmitGoogleAuth"; "tenantConfigLoaded": "tenantConfigLoaded"; "googleClick": "googleClick"; "microsoftClick": "microsoftClick"; "appleClick": "appleClick"; }, never, never, false, never>;
|
|
95
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SignInComponent, "verben-sign-in", never, { "headlingText": { "alias": "headlingText"; "required": false; }; "width": { "alias": "width"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "margin": { "alias": "margin"; "required": false; }; "pd": { "alias": "pd"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "headlingClass": { "alias": "headlingClass"; "required": false; }; "bgColor": { "alias": "bgColor"; "required": false; }; "boxShadow": { "alias": "boxShadow"; "required": false; }; "border": { "alias": "border"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "height": { "alias": "height"; "required": false; }; "forgetPasswordClass": { "alias": "forgetPasswordClass"; "required": false; }; "requestAccessClass": { "alias": "requestAccessClass"; "required": false; }; "createAccountClass": { "alias": "createAccountClass"; "required": false; }; "createAccountLinkClass": { "alias": "createAccountLinkClass"; "required": false; }; "forgetPasswordLink": { "alias": "forgetPasswordLink"; "required": false; }; "createAccountLink": { "alias": "createAccountLink"; "required": false; }; "requestAccessLink": { "alias": "requestAccessLink"; "required": false; }; "btnClass": { "alias": "btnClass"; "required": false; }; "btnBgColor": { "alias": "btnBgColor"; "required": false; }; "btnColor": { "alias": "btnColor"; "required": false; }; "btnBorder": { "alias": "btnBorder"; "required": false; }; "btnBorderRadius": { "alias": "btnBorderRadius"; "required": false; }; "btnPd": { "alias": "btnPd"; "required": false; }; "btnText": { "alias": "btnText"; "required": false; }; "inputLabelColor": { "alias": "inputLabelColor"; "required": false; }; "inputBgColor": { "alias": "inputBgColor"; "required": false; }; "inputBorder": { "alias": "inputBorder"; "required": false; }; "inputBorderRadius": { "alias": "inputBorderRadius"; "required": false; }; "termsErrorText": { "alias": "termsErrorText"; "required": false; }; "urlKeyOverride": { "alias": "urlKeyOverride"; "required": false; }; }, { "formSubmit": "formSubmit"; "onSubmitEnd": "onSubmitEnd"; "onGoogleAuthResponse": "onGoogleAuthResponse"; "onSubmitGoogleAuth": "onSubmitGoogleAuth"; "tenantConfigLoaded": "tenantConfigLoaded"; "googleClick": "googleClick"; "microsoftClick": "microsoftClick"; "appleClick": "appleClick"; }, never, never, false, never>;
|
|
95
96
|
}
|