barsa-novin-ray-core 2.2.21 → 2.2.32

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.
Files changed (35) hide show
  1. package/esm2022/lib/abstract-classes/layout-panel-base.mjs +7 -5
  2. package/esm2022/lib/abstract-classes/report-view-base.component.mjs +4 -2
  3. package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +18 -4
  4. package/esm2022/lib/barsa-novin-ray-core.module.mjs +8 -5
  5. package/esm2022/lib/constants.mjs +12 -1
  6. package/esm2022/lib/controllers/login-verification-controller.mjs +2 -2
  7. package/esm2022/lib/directives/dynamic-style.directive.mjs +10 -2
  8. package/esm2022/lib/directives/fill-empty-space.mjs +8 -3
  9. package/esm2022/lib/directives/index.mjs +2 -1
  10. package/esm2022/lib/directives/save-image.directive.mjs +28 -0
  11. package/esm2022/lib/dynamic-component/base-view-item-props.mjs +10 -5
  12. package/esm2022/lib/login-enter-mobile/login-enter-mobile.component.mjs +5 -16
  13. package/esm2022/lib/login-verification/login-verification.component.mjs +14 -15
  14. package/esm2022/lib/login2/login2.component.mjs +14 -6
  15. package/esm2022/lib/portal-page/portal-sidebar.component.mjs +1 -1
  16. package/esm2022/lib/services/form-panel.service.mjs +10 -3
  17. package/esm2022/lib/services/index.mjs +2 -1
  18. package/esm2022/lib/services/layout-main-content.service.mjs +19 -0
  19. package/fesm2022/barsa-novin-ray-core.mjs +142 -53
  20. package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
  21. package/lib/abstract-classes/layout-panel-base.d.ts +4 -2
  22. package/lib/abstract-classes/report-view-base.component.d.ts +2 -1
  23. package/lib/barsa-novin-ray-core.module.d.ts +7 -6
  24. package/lib/constants.d.ts +1 -0
  25. package/lib/directives/dynamic-style.directive.d.ts +2 -0
  26. package/lib/directives/fill-empty-space.d.ts +3 -2
  27. package/lib/directives/index.d.ts +1 -0
  28. package/lib/directives/save-image.directive.d.ts +8 -0
  29. package/lib/dynamic-component/base-view-item-props.d.ts +3 -2
  30. package/lib/login-enter-mobile/login-enter-mobile.component.d.ts +0 -3
  31. package/lib/login-verification/login-verification.component.d.ts +3 -3
  32. package/lib/login2/login2.component.d.ts +8 -2
  33. package/lib/services/index.d.ts +1 -0
  34. package/lib/services/layout-main-content.service.d.ts +11 -0
  35. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, NgZone, Output, signal, ViewChild, ViewChildren } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { ViewBase, LoginVerificationController } from '../controllers';
4
- import { MessageToastService, ToastBottomCenterPosition } from '@fundamental-ngx/core';
4
+ import { BarsaApi } from '../abstract-classes';
5
+ import { getUniqueId } from '../constants';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/forms";
7
8
  import * as i2 from "../button-loading/button-loading.component";
9
+ import * as i3 from "../pipes/bbb-translate.pipe";
8
10
  export class LoginVerificationComponent extends ViewBase {
9
11
  constructor(fb) {
10
12
  super();
@@ -14,8 +16,7 @@ export class LoginVerificationComponent extends ViewBase {
14
16
  this.capId = signal('-');
15
17
  this.showCaptcha = signal(false);
16
18
  this._ngZone = inject(NgZone);
17
- this.messageToastService = inject(MessageToastService);
18
- this.showCaptcha.set(false);
19
+ this.now = signal(getUniqueId(3));
19
20
  this.form = this.fb.group({
20
21
  in1: ['', Validators.compose([Validators.required, Validators.maxLength(6)])],
21
22
  cap: [''],
@@ -25,19 +26,17 @@ export class LoginVerificationComponent extends ViewBase {
25
26
  }
26
27
  ngOnInit() {
27
28
  super.ngOnInit();
29
+ this.showCaptcha.set(true);
30
+ }
31
+ showError(message, code) {
32
+ super.showError(message, code);
33
+ this.capId.set(BarsaApi.LoginFormData.CaptchaId);
28
34
  }
29
35
  codeVerified() {
30
36
  this.otpVerified.emit();
31
37
  }
32
- showError(message, code) {
33
- super.showError(message, code);
34
- this.messageToastService.open(this.errorTemplate, {
35
- duration: 5000,
36
- positionStrategy: ToastBottomCenterPosition,
37
- data: {
38
- message
39
- }
40
- });
38
+ onRefreshCaptcha() {
39
+ this.now.set(getUniqueId(3));
41
40
  }
42
41
  onVerifyCode() {
43
42
  this._verifyCode();
@@ -56,11 +55,11 @@ export class LoginVerificationComponent extends ViewBase {
56
55
  return this.controller.canVerify();
57
56
  }
58
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginVerificationComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoginVerificationComponent, selector: "bnrc-login-verification", inputs: { mobile: "mobile", errorTemplate: "errorTemplate" }, outputs: { otpVerified: "otpVerified", changeMobile: "changeMobile" }, viewQueries: [{ propertyName: "_loadingBtn", first: true, predicate: ["loadingBtn"], descendants: true }, { propertyName: "_inputsEl", predicate: ["inputv"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-extrabold tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n name=\"in1\"\r\n formControlName=\"in1\"\r\n />\r\n </div>\r\n <div class=\"tw-flex tw-items-center\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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"] }, { kind: "component", type: i2.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoginVerificationComponent, selector: "bnrc-login-verification", inputs: { mobile: "mobile", errorTemplate: "errorTemplate" }, outputs: { otpVerified: "otpVerified", changeMobile: "changeMobile" }, viewQueries: [{ propertyName: "_loadingBtn", first: true, predicate: ["loadingBtn"], descendants: true }, { propertyName: "_inputsEl", predicate: ["inputv"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-extrabold tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n name=\"in1\"\r\n formControlName=\"in1\"\r\n />\r\n </div> \r\n <div class=\"tw-flex tw-items-center tw-mb-4\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-text-sm tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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"] }, { kind: "component", type: i2.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
59
  }
61
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginVerificationComponent, decorators: [{
62
61
  type: Component,
63
- args: [{ selector: 'bnrc-login-verification', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-extrabold tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n name=\"in1\"\r\n formControlName=\"in1\"\r\n />\r\n </div>\r\n <div class=\"tw-flex tw-items-center\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n</form>\r\n" }]
62
+ args: [{ selector: 'bnrc-login-verification', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-extrabold tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n name=\"in1\"\r\n formControlName=\"in1\"\r\n />\r\n </div> \r\n <div class=\"tw-flex tw-items-center tw-mb-4\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-text-sm tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n" }]
64
63
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { _inputsEl: [{
65
64
  type: ViewChildren,
66
65
  args: ['inputv']
@@ -76,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
76
75
  }], errorTemplate: [{
77
76
  type: Input
78
77
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvbG9naW4tdmVyaWZpY2F0aW9uL2xvZ2luLXZlcmlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2xvZ2luLXZlcmlmaWNhdGlvbi9sb2dpbi12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFFTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQTBCLDJCQUEyQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFTdkYsTUFBTSxPQUFPLDBCQUNULFNBQVEsUUFBcUM7SUFnQjdDLFlBQW9CLEVBQWU7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFEUSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBWHpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLNUMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRzlDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUFlLEVBQUUsSUFBWTtRQUNuQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDOUMsUUFBUSxFQUFFLElBQUk7WUFDZCxnQkFBZ0IsRUFBRSx5QkFBeUI7WUFDM0MsSUFBSSxFQUFFO2dCQUNGLE9BQU87YUFDVjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXO1FBQ1AsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQTVEUSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwrWUMxQnZDLDBnRUFtQ0E7OzRGRFRhLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDSSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSztnRkFNTyxTQUFTO3NCQUFoQyxZQUFZO3VCQUFDLFFBQVE7Z0JBQ0csV0FBVztzQkFBbkMsU0FBUzt1QkFBQyxZQUFZO2dCQUNiLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIHNpZ25hbCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFZpZXdCYXNlLCBJTG9naW5WZXJpZmljYXRpb25WaWV3LCBMb2dpblZlcmlmaWNhdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VUb2FzdFNlcnZpY2UsIFRvYXN0Qm90dG9tQ2VudGVyUG9zaXRpb24gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JucmMtbG9naW4tdmVyaWZpY2F0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2xvZ2luLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpblZlcmlmaWNhdGlvbkNvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBWaWV3QmFzZTxMb2dpblZlcmlmaWNhdGlvbkNvbnRyb2xsZXI+XHJcbiAgICBpbXBsZW1lbnRzIElMb2dpblZlcmlmaWNhdGlvblZpZXdcclxue1xyXG4gICAgQFZpZXdDaGlsZHJlbignaW5wdXR2JykgX2lucHV0c0VsOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgICBAVmlld0NoaWxkKCdsb2FkaW5nQnRuJykgX2xvYWRpbmdCdG46IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAT3V0cHV0KCkgb3RwVmVyaWZpZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlTW9iaWxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQElucHV0KCkgbW9iaWxlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBlcnJvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgY29udHJvbGxlcjogTG9naW5WZXJpZmljYXRpb25Db250cm9sbGVyO1xyXG4gICAgZm9ybTogRm9ybUdyb3VwO1xyXG4gICAgY2FwSWQgPSBzaWduYWwoJy0nKTtcclxuXHJcbiAgICBzaG93Q2FwdGNoYSA9IHNpZ25hbChmYWxzZSk7XHJcbiAgICBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XHJcbiAgICBtZXNzYWdlVG9hc3RTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VUb2FzdFNlcnZpY2UpO1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2hvd0NhcHRjaGEuc2V0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgaW4xOiBbJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKV0sXHJcbiAgICAgICAgICAgIGNhcDogWycnXSxcclxuICAgICAgICAgICAgY2FwSWQ6IFt0aGlzLmNhcElkKCksIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gbmV3IExvZ2luVmVyaWZpY2F0aW9uQ29udHJvbGxlcih0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvZGVWZXJpZmllZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm90cFZlcmlmaWVkLmVtaXQoKTtcclxuICAgIH1cclxuICAgIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvZGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLnNob3dFcnJvcihtZXNzYWdlLCBjb2RlKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VUb2FzdFNlcnZpY2Uub3Blbih0aGlzLmVycm9yVGVtcGxhdGUsIHtcclxuICAgICAgICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IFRvYXN0Qm90dG9tQ2VudGVyUG9zaXRpb24sXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25WZXJpZnlDb2RlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZlcmlmeUNvZGUoKTtcclxuICAgIH1cclxuICAgIF92ZXJpZnlDb2RlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHsgaW4xLCBjYXBJZCwgY2FwIH0gPSB0aGlzLmZvcm0udmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLnZlcmlmeUNvZGUoeyBjb2RlOiBgJHtpbjF9YCwgY2FwSWQsIGNhcCB9KTtcclxuICAgIH1cclxuICAgIGdldCBpbnZBcnIoKTogRWxlbWVudFJlZltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRzRWwudG9BcnJheSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5sb2FkaW5nKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgY2FuVmVyaWZ5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuY2FuVmVyaWZ5KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJ0dy1weC04IHR3LXB0LTYgdHctcGItOCB0dy1tYi0yIHR3LW10LTJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInR3LWJsb2NrIHR3LXctZnVsbCB0dy10ZXh0LWdyYXktNTAwIHR3LXRleHQtbWQgdHctZm9udC1ib2xkIHR3LW1iLTQgdHctdGV4dC1zbVwiPlxyXG4gICAgICAgINqp2K8g2KfYsdiz2KfZhCDYtNiv2Ycg2KjZhyDYtNmF2KfYsdmHIDxzdHJvbmc+e3sgbW9iaWxlIH19PC9zdHJvbmc+INix2Kcg2YjYp9ix2K8g2YbZhdin24zbjNivLlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxhXHJcbiAgICAgICAgY2xhc3M9XCJ0dy1pbmxpbmUtZmxleCB0dy1mbGV4IHR3LWdhcC0zIHR3LWl0ZW1zLWNlbnRlciB0dy10ZXh0LWJsdWUtNjAwIHR3LXZpc2l0ZWQ6dHctdGV4dC1wdXJwbGUtNjAwIHR3LXRleHQtc20gdHctZm9udC1leHRyYWJvbGQgdHctbWItNFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1vYmlsZS5lbWl0KClcIlxyXG4gICAgICAgID7ZiNuM2LHYp9uM2LQg2LTZhdin2LHZhyDZh9mF2LHYp9mHXHJcbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwidHctdy02XCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTUsMThIOS4yNGExLDEsMCwwLDAsLjcxLS4yOWw2LjkyLTYuOTNoMEwxOS43MSw4YTEsMSwwLDAsMCwwLTEuNDJMMTUuNDcsMi4yOWExLDEsMCwwLDAtMS40MiwwTDExLjIzLDUuMTJoMEw0LjI5LDEyLjA1YTEsMSwwLDAsMC0uMjkuNzFWMTdBMSwxLDAsMCwwLDUsMThaTTE0Ljc2LDQuNDFsMi44MywyLjgzTDE2LjE3LDguNjYsMTMuMzQsNS44M1pNNiwxMy4xN2w1LjkzLTUuOTMsMi44MywyLjgzTDguODMsMTZINlpNMjEsMjBIM2ExLDEsMCwwLDAsMCwySDIxYTEsMSwwLDAsMCwwLTJaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMzE2YmVjXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWl0ZW1zLWNlbnRlciB0dy1qdXN0aWZ5LWNlbnRlciB0dy1nYXAtMyB0dy1tYi00IHR3LWZsZXgtcm93LXJldmVyc2VcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2lucHV0dlxyXG4gICAgICAgICAgICBjbGFzcz1cInR3LXJvdW5kZWQtbGcgdHctYm9yZGVyIHR3LXctZnVsbCB0dy1weS00IHR3LXB4LTMgdHctdGV4dC1ncmF5LTcwMCB0dy1sZWFkaW5nLXRpZ2h0IHR3LWZvY3VzOnR3LW91dGxpbmUtbm9uZSB0dy1mb2N1czp0dy1zaGFkb3ctb3V0bGluZVwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjZcIlxyXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICBuYW1lPVwiaW4xXCJcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW4xXCJcclxuICAgICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8Ym5yYy1idXR0b24tbG9hZGluZ1xyXG4gICAgICAgICAgICAjbG9hZGluZ0J0blxyXG4gICAgICAgICAgICBbdGV4dF09XCIn2KrYp9uM24zYryDaqdivJ1wiXHJcbiAgICAgICAgICAgIFt2YWxpZF09XCJjYW5WZXJpZnlcIlxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q29kZSgpXCJcclxuICAgICAgICA+PC9ibnJjLWJ1dHRvbi1sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvbG9naW4tdmVyaWZpY2F0aW9uL2xvZ2luLXZlcmlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2xvZ2luLXZlcmlmaWNhdGlvbi9sb2dpbi12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFFTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQTBCLDJCQUEyQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBUzNDLE1BQU0sT0FBTywwQkFDVCxTQUFRLFFBQXFDO0lBaUI3QyxZQUFvQixFQUFlO1FBQy9CLEtBQUssRUFBRSxDQUFDO1FBRFEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVp6QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzVDLFVBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixRQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQ25DLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELFlBQVk7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVztRQUNQLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0F6RFEsMEJBQTBCO21HQUExQiwwQkFBMEIsK1lDM0J2QywrOEVBMkNBOzs0RkRoQmEsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNJLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLO2dGQU1PLFNBQVM7c0JBQWhDLFlBQVk7dUJBQUMsUUFBUTtnQkFDRyxXQUFXO3NCQUFuQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2IsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgTmdab25lLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgc2lnbmFsLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVmlld0Jhc2UsIElMb2dpblZlcmlmaWNhdGlvblZpZXcsIExvZ2luVmVyaWZpY2F0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzJztcclxuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcclxuaW1wb3J0IHsgZ2V0VW5pcXVlSWQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JucmMtbG9naW4tdmVyaWZpY2F0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2xvZ2luLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpblZlcmlmaWNhdGlvbkNvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBWaWV3QmFzZTxMb2dpblZlcmlmaWNhdGlvbkNvbnRyb2xsZXI+XHJcbiAgICBpbXBsZW1lbnRzIElMb2dpblZlcmlmaWNhdGlvblZpZXdcclxue1xyXG4gICAgQFZpZXdDaGlsZHJlbignaW5wdXR2JykgX2lucHV0c0VsOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgICBAVmlld0NoaWxkKCdsb2FkaW5nQnRuJykgX2xvYWRpbmdCdG46IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAT3V0cHV0KCkgb3RwVmVyaWZpZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlTW9iaWxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQElucHV0KCkgbW9iaWxlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBlcnJvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgY29udHJvbGxlcjogTG9naW5WZXJpZmljYXRpb25Db250cm9sbGVyO1xyXG4gICAgZm9ybTogRm9ybUdyb3VwO1xyXG4gICAgY2FwSWQgPSBzaWduYWwoJy0nKTtcclxuXHJcbiAgICBzaG93Q2FwdGNoYSA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gICAgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG4gICAgbm93ID0gc2lnbmFsKGdldFVuaXF1ZUlkKDMpKTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgaW4xOiBbJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKV0sXHJcbiAgICAgICAgICAgIGNhcDogWycnXSxcclxuICAgICAgICAgICAgY2FwSWQ6IFt0aGlzLmNhcElkKCksIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gbmV3IExvZ2luVmVyaWZpY2F0aW9uQ29udHJvbGxlcih0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2hvd0NhcHRjaGEuc2V0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgc2hvd0Vycm9yKG1lc3NhZ2U6IHN0cmluZywgY29kZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuc2hvd0Vycm9yKG1lc3NhZ2UsIGNvZGUpO1xyXG4gICAgICAgIHRoaXMuY2FwSWQuc2V0KEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ2FwdGNoYUlkKTtcclxuICAgIH1cclxuICAgIGNvZGVWZXJpZmllZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm90cFZlcmlmaWVkLmVtaXQoKTtcclxuICAgIH1cclxuICAgIG9uUmVmcmVzaENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ub3cuc2V0KGdldFVuaXF1ZUlkKDMpKTtcclxuICAgIH1cclxuICAgIG9uVmVyaWZ5Q29kZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl92ZXJpZnlDb2RlKCk7XHJcbiAgICB9XHJcbiAgICBfdmVyaWZ5Q29kZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IGluMSwgY2FwSWQsIGNhcCB9ID0gdGhpcy5mb3JtLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlci52ZXJpZnlDb2RlKHsgY29kZTogYCR7aW4xfWAsIGNhcElkLCBjYXAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXQgaW52QXJyKCk6IEVsZW1lbnRSZWZbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0c0VsLnRvQXJyYXkoKTtcclxuICAgIH1cclxuICAgIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIubG9hZGluZygpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGNhblZlcmlmeSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmNhblZlcmlmeSgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwidHctcHgtOCB0dy1wdC02IHR3LXBiLTggdHctbWItMiB0dy1tdC0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0dy1ibG9jayB0dy13LWZ1bGwgdHctdGV4dC1ncmF5LTUwMCB0dy10ZXh0LW1kIHR3LWZvbnQtYm9sZCB0dy1tYi00IHR3LXRleHQtc21cIj5cclxuICAgICAgICDaqdivINin2LHYs9in2YQg2LTYr9mHINio2Ycg2LTZhdin2LHZhyA8c3Ryb25nPnt7IG1vYmlsZSB9fTwvc3Ryb25nPiDYsdinINmI2KfYsdivINmG2YXYp9uM24zYry5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8YVxyXG4gICAgICAgIGNsYXNzPVwidHctaW5saW5lLWZsZXggdHctZmxleCB0dy1nYXAtMyB0dy1pdGVtcy1jZW50ZXIgdHctdGV4dC1ibHVlLTYwMCB0dy12aXNpdGVkOnR3LXRleHQtcHVycGxlLTYwMCB0dy10ZXh0LXNtIHR3LWZvbnQtZXh0cmFib2xkIHR3LW1iLTRcIlxyXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2JpbGUuZW1pdCgpXCJcclxuICAgICAgICA+2YjbjNix2KfbjNi0INi02YXYp9ix2Ycg2YfZhdix2KfZh1xyXG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cInR3LXctNlwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk01LDE4SDkuMjRhMSwxLDAsMCwwLC43MS0uMjlsNi45Mi02LjkzaDBMMTkuNzEsOGExLDEsMCwwLDAsMC0xLjQyTDE1LjQ3LDIuMjlhMSwxLDAsMCwwLTEuNDIsMEwxMS4yMyw1LjEyaDBMNC4yOSwxMi4wNWExLDEsMCwwLDAtLjI5LjcxVjE3QTEsMSwwLDAsMCw1LDE4Wk0xNC43Niw0LjQxbDIuODMsMi44M0wxNi4xNyw4LjY2LDEzLjM0LDUuODNaTTYsMTMuMTdsNS45My01LjkzLDIuODMsMi44M0w4LjgzLDE2SDZaTTIxLDIwSDNhMSwxLDAsMCwwLDAsMkgyMWExLDEsMCwwLDAsMC0yWlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiIzMxNmJlY1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2E+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1pdGVtcy1jZW50ZXIgdHctanVzdGlmeS1jZW50ZXIgdHctZ2FwLTMgdHctbWItNCB0dy1mbGV4LXJvdy1yZXZlcnNlXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dHZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1yb3VuZGVkLWxnIHR3LWJvcmRlciB0dy13LWZ1bGwgdHctcHktNCB0dy1weC0zIHR3LXRleHQtZ3JheS03MDAgdHctbGVhZGluZy10aWdodCB0dy1mb2N1czp0dy1vdXRsaW5lLW5vbmUgdHctZm9jdXM6dHctc2hhZG93LW91dGxpbmVcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI2XCJcclxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgb25rZXlwcmVzcz1cInJldHVybiBldmVudC5jaGFyQ29kZT49NDggJiYgZXZlbnQuY2hhckNvZGU8PTU3XCJcclxuICAgICAgICAgICAgbmFtZT1cImluMVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluMVwiXHJcbiAgICAgICAgLz5cclxuICAgIDwvZGl2PiAgIFxyXG4gICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctaXRlbXMtY2VudGVyIHR3LW1iLTRcIj5cclxuICAgICAgICA8Ym5yYy1idXR0b24tbG9hZGluZ1xyXG4gICAgICAgICAgICAjbG9hZGluZ0J0blxyXG4gICAgICAgICAgICBbdGV4dF09XCIn2KrYp9uM24zYryDaqdivJ1wiXHJcbiAgICAgICAgICAgIFt2YWxpZF09XCJjYW5WZXJpZnlcIlxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q29kZSgpXCJcclxuICAgICAgICA+PC9ibnJjLWJ1dHRvbi1sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dy1wLTQgdHctbWItNCB0dy10ZXh0LXNtIHR3LXRleHQtcmVkLTgwMCB0dy1yb3VuZGVkLWxnIHR3LWJnLXJlZC01MCBkYXJrOnR3LWJnLWdyYXktODAwIGRhcms6dHctdGV4dC1yZWQtNDAwXCJcclxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJlcnJvck1lc3NhZ2UoKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcclxuICAgICAgICByb2xlPVwiYWxlcnRcIlxyXG4gICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHctZm9udC1tZWRpdW1cIj57eyAnRXJyb3InIHwgYmJiVHJhbnNsYXRlIH19ITwvc3Bhbj4ge3sgZXJyb3JNZXNzYWdlKCkgfX1cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, inject, signal, TemplateRef, ViewChild } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { PortalService } from '../services/portal.service';
4
4
  import { BarsaApi } from '../abstract-classes';
@@ -13,6 +13,7 @@ export class Login2Component {
13
13
  this._router = inject(Router);
14
14
  this._portalService = inject(PortalService);
15
15
  this.state = signal('enter-mobile');
16
+ this.errorMessage = signal('');
16
17
  this.appSettings = signal({
17
18
  BackgroundUrl: '',
18
19
  LogoUrl: '',
@@ -20,7 +21,8 @@ export class Login2Component {
20
21
  Section1Title: '',
21
22
  Section1Description: '',
22
23
  Subtitle: '',
23
- Title: ''
24
+ Title: '',
25
+ GovSSOHref: ''
24
26
  });
25
27
  this.logoUrl = '';
26
28
  this.backgroundUrl = '';
@@ -39,6 +41,9 @@ export class Login2Component {
39
41
  onChangeMobile() {
40
42
  this.state.set('enter-mobile');
41
43
  }
44
+ onOtpError(e) {
45
+ this.errorMessage.set(e.message);
46
+ }
42
47
  onOtpVerfied() {
43
48
  this.loading.set(true);
44
49
  this._portalService
@@ -51,10 +56,13 @@ export class Login2Component {
51
56
  .catch(() => this.loading.set(false));
52
57
  }
53
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Login2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: Login2Component, selector: "bnrc-login2", ngImport: i0, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6\">\r\n <div class=\"tw-flex-1\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <img [src]=\"appSettings().LogoUrl\" />\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n </div>\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\r\n </div>\r\n </div>\r\n <div>\r\n @if(state()==='enter-mobile'){\r\n <bnrc-login-enter-mobile\r\n (otpSent)=\"onOtpSent($event)\"\r\n [errorTemplate]=\"template\"\r\n ></bnrc-login-enter-mobile>\r\n }@else{\r\n <bnrc-login-verification\r\n [mobile]=\"mobile()\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onOtpVerfied()\"\r\n [errorTemplate]=\"template\"\r\n ></bnrc-login-verification>\r\n }\r\n </div>\r\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\r\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\">\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span>\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\" href=\"\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template let-messageToast #template>\r\n <p class=\"error\" [dismissible]=\"true\">{{ messageToast.data.message }}</p>\r\n</ng-template>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"], dependencies: [{ kind: "component", type: i1.LoginEnterMobileComponent, selector: "bnrc-login-enter-mobile", inputs: ["errorTemplate"], outputs: ["otpSent"] }, { kind: "component", type: i2.LoginVerificationComponent, selector: "bnrc-login-verification", inputs: ["mobile", "errorTemplate"], outputs: ["otpVerified", "changeMobile"] }, { kind: "directive", type: i3.MobileDirective, selector: "[mobile]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: Login2Component, selector: "bnrc-login2", viewQueries: [{ propertyName: "_errorTemplate", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6 tw-relative\">\r\n <div class=\"tw-flex-1\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <img [src]=\"appSettings().LogoUrl\" />\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n </div>\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\r\n </div>\r\n </div>\r\n <div>\r\n @if(state()==='enter-mobile'){\r\n <bnrc-login-enter-mobile (otpSent)=\"onOtpSent($event)\"></bnrc-login-enter-mobile>\r\n }@else{\r\n <bnrc-login-verification\r\n [mobile]=\"mobile()\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onOtpVerfied()\"\r\n ></bnrc-login-verification>\r\n }\r\n </div>\r\n\r\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\r\n <div class=\"tw-absolute tw-left-0 tw-right-0 tw-pb-safe\">\r\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span\r\n >\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a\r\n class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\"\r\n [attr.href]=\"appSettings().GovSSOHref\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"], dependencies: [{ kind: "component", type: i1.LoginEnterMobileComponent, selector: "bnrc-login-enter-mobile", inputs: ["errorTemplate"], outputs: ["otpSent"] }, { kind: "component", type: i2.LoginVerificationComponent, selector: "bnrc-login-verification", inputs: ["mobile", "errorTemplate"], outputs: ["otpVerified", "changeMobile"] }, { kind: "directive", type: i3.MobileDirective, selector: "[mobile]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
60
  }
56
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Login2Component, decorators: [{
57
62
  type: Component,
58
- args: [{ selector: 'bnrc-login2', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6\">\r\n <div class=\"tw-flex-1\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <img [src]=\"appSettings().LogoUrl\" />\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n </div>\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\r\n </div>\r\n </div>\r\n <div>\r\n @if(state()==='enter-mobile'){\r\n <bnrc-login-enter-mobile\r\n (otpSent)=\"onOtpSent($event)\"\r\n [errorTemplate]=\"template\"\r\n ></bnrc-login-enter-mobile>\r\n }@else{\r\n <bnrc-login-verification\r\n [mobile]=\"mobile()\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onOtpVerfied()\"\r\n [errorTemplate]=\"template\"\r\n ></bnrc-login-verification>\r\n }\r\n </div>\r\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\r\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\">\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span>\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\" href=\"\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template let-messageToast #template>\r\n <p class=\"error\" [dismissible]=\"true\">{{ messageToast.data.message }}</p>\r\n</ng-template>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"] }]
59
- }], ctorParameters: () => [] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvbG9naW4yL2xvZ2luMi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2xvZ2luMi9sb2dpbjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFTL0MsTUFBTSxPQUFPLGVBQWU7SUFtQnhCO1FBbEJBLFdBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLFVBQUssR0FBK0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELGdCQUFXLEdBQTZCLE1BQU0sQ0FBQztZQUMzQyxhQUFhLEVBQUUsRUFBRTtZQUNqQixPQUFPLEVBQUUsRUFBRTtZQUNYLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsUUFBUSxFQUFFLEVBQUU7WUFDWixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZUFBVSxHQUFHLEtBQUssQ0FBQztJQUNKLENBQUM7SUFDaEIsUUFBUTtRQUNKLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3BFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELGNBQWM7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjO2FBQ2QscUJBQXFCLEVBQUU7YUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDNUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUN2RCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQTFDUSxlQUFlO21HQUFmLGVBQWUsbURDYjVCLGdrSEFnRUE7OzRGRG5EYSxlQUFlO2tCQVAzQixTQUFTOytCQUNJLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUG9ydGFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BvcnRhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9naW5TdGF0ZSB9IGZyb20gJy4uL2NvbnRyb2xsZXJzJztcclxuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdibnJjLWxvZ2luMicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9naW4yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9sb2dpbjIuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW4yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIG1vYmlsZSA9IHNpZ25hbCgnJyk7XHJcbiAgICBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIF9wb3J0YWxTZXJ2aWNlID0gaW5qZWN0KFBvcnRhbFNlcnZpY2UpO1xyXG4gICAgc3RhdGU6IFdyaXRhYmxlU2lnbmFsPExvZ2luU3RhdGU+ID0gc2lnbmFsKCdlbnRlci1tb2JpbGUnKTtcclxuICAgIGFwcFNldHRpbmdzOiBXcml0YWJsZVNpZ25hbDxTZXR0aW5ncz4gPSBzaWduYWwoe1xyXG4gICAgICAgIEJhY2tncm91bmRVcmw6ICcnLFxyXG4gICAgICAgIExvZ29Vcmw6ICcnLFxyXG4gICAgICAgIEhpZGVHb3ZTc286IHRydWUsXHJcbiAgICAgICAgU2VjdGlvbjFUaXRsZTogJycsXHJcbiAgICAgICAgU2VjdGlvbjFEZXNjcmlwdGlvbjogJycsXHJcbiAgICAgICAgU3VidGl0bGU6ICcnLFxyXG4gICAgICAgIFRpdGxlOiAnJ1xyXG4gICAgfSk7XHJcbiAgICBsb2dvVXJsID0gJyc7XHJcbiAgICBiYWNrZ3JvdW5kVXJsID0gJyc7XHJcbiAgICB0aXRsZSA9ICcnO1xyXG4gICAgaGlkZUdvdlNzbyA9IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgZmV0Y2goYC9hc3NldHMvbG9naW4yLmpzb24/eD0ke0JhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ2hhbmdlS2V5VmVyc2lvbn1gKVxyXG4gICAgICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxyXG4gICAgICAgICAgICAudGhlbigocmVzKSA9PiB0aGlzLmFwcFNldHRpbmdzLnNldChyZXMpKTtcclxuICAgIH1cclxuICAgIG9uT3RwU2VudChtb2JpbGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubW9iaWxlLnNldChtb2JpbGUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KCd2ZXJpZmljYXRpb24nKTtcclxuICAgIH1cclxuICAgIG9uQ2hhbmdlTW9iaWxlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KCdlbnRlci1tb2JpbGUnKTtcclxuICAgIH1cclxuICAgIG9uT3RwVmVyZmllZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxvYWRTZXJ2ZXJTdGFydHVwRGF0YSgpXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3BvcnRhbFNlcnZpY2UubG9hZFN5c3RlbSgpKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvYWRVc2VyUG9ydGFsU2V0dGluZygpKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX3BvcnRhbFNlcnZpY2UuRGVmYXVsdFBhZ2U/LlJvdXRlIHx8ICcvJ10pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpO1xyXG4gICAgfVxyXG59XHJcbmludGVyZmFjZSBTZXR0aW5ncyB7XHJcbiAgICBUaXRsZTogc3RyaW5nO1xyXG4gICAgU3VidGl0bGU6IHN0cmluZztcclxuICAgIFNlY3Rpb24xVGl0bGU6IHN0cmluZztcclxuICAgIFNlY3Rpb24xRGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIExvZ29Vcmw6IHN0cmluZztcclxuICAgIEJhY2tncm91bmRVcmw6IHN0cmluZztcclxuICAgIEhpZGVHb3ZTc286IGJvb2xlYW47XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInR3LWJnLXdoaXRlIGRhcms6dHctYmctZ3JheS05MDAgdHctdy1mdWxsIHR3LWgtZnVsbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctanVzdGlmeS1jZW50ZXIgdHctaC1zY3JlZW5cIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHctaGlkZGVuIHR3LWJnLWNvdmVyIGxnOnR3LWJsb2NrIGxnOnR3LXctMi8zXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgYXBwU2V0dGluZ3MoKS5CYWNrZ3JvdW5kVXJsICsgJyknXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWl0ZW1zLWNlbnRlciB0dy1oLWZ1bGwgdHctcHgtMjAgdHctYmctZ3JheS05MDAgdHctYmctb3BhY2l0eS00MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0dy10ZXh0LTR4bCB0dy1mb250LWJvbGQgdHctdGV4dC13aGl0ZVwiPnt7IGFwcFNldHRpbmdzKCkuU2VjdGlvbjFUaXRsZSB9fTwvaDI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidHctbWF4LXcteGwgdHctbXQtMyB0dy10ZXh0LWdyYXktMzAwXCI+e3sgYXBwU2V0dGluZ3MoKS5TZWN0aW9uMURlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1pdGVtcy1jZW50ZXIgdHctdy1mdWxsIHR3LW1heC13LW1kIHR3LXB4LTYgdHctbXgtYXV0byBsZzp0dy13LTIvNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctdGV4dC1jZW50ZXIgdHctZmxleCB0dy1mbGV4LWNvbCB0dy1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1nYXAtMiB0dy1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcFNldHRpbmdzKCkuTG9nb1VybFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInR3LXRleHQtNHhsIHR3LWZvbnQtYm9sZCB0dy10ZXh0LWNlbnRlciB0dy10ZXh0LWdyYXktNzAwIGRhcms6dHctdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwU2V0dGluZ3MoKS5UaXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWdhcC0yIHR3LWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInR3LW10LTMgdHctdGV4dC1ncmF5LTUwMCBkYXJrOnR3LXRleHQtZ3JheS0zMDBcIj57eyBhcHBTZXR0aW5ncygpLlN1YnRpdGxlIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihzdGF0ZSgpPT09J2VudGVyLW1vYmlsZScpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxibnJjLWxvZ2luLWVudGVyLW1vYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3RwU2VudCk9XCJvbk90cFNlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvclRlbXBsYXRlXT1cInRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9ibnJjLWxvZ2luLWVudGVyLW1vYmlsZT5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJucmMtbG9naW4tdmVyaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlTW9iaWxlKT1cIm9uQ2hhbmdlTW9iaWxlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3RwVmVyaWZpZWQpPVwib25PdHBWZXJmaWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JUZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYm5yYy1sb2dpbi12ZXJpZmljYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYoc3RhdGUoKT09PSdlbnRlci1tb2JpbGUnICYmICFhcHBTZXR0aW5ncygpLkhpZGVHb3ZTc28pe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LXJlbGF0aXZlIHR3LWZsZXggdHctcHktNSB0dy1pdGVtcy1jZW50ZXIgdHctcHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4LWdyb3cgdHctYm9yZGVyLXQgdHctYm9yZGVyLWdyYXktNDAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0dy1mb250LVtJUkFOWWVrYW5dIHR3LWZsZXgtc2hyaW5rIHR3LW14LTQgdHctdGV4dC1ncmF5LTQwMFwiPtmI2LHZiNivINin2LIg2LfYsduM2YIg2K/Ysdqv2KfZhzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleC1ncm93IHR3LWJvcmRlci10IHR3LWJvcmRlci1ncmF5LTQwMFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctcm91bmRlZC1sZyBiYWNrLWJveC1jb2xvciB0dy13LWZ1bGwgdHctcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWl0ZW1zLWNlbnRlciB0dy10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInR3LXctZnVsbCB0dy10ZXh0LWJsdWUtNjAwIHR3LXZpc2l0ZWQ6dHctdGV4dC1wdXJwbGUtNjAwIHR3LXRleHQtc21cIiBocmVmPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID7ZiNix2YjYryDYp9iyINi32LHbjNmCINiv2LHar9in2Ycg2K/ZiNmE2Kog2YXZhlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZVRvYXN0ICN0ZW1wbGF0ZT5cclxuICAgIDxwIGNsYXNzPVwiZXJyb3JcIiBbZGlzbWlzc2libGVdPVwidHJ1ZVwiPnt7IG1lc3NhZ2VUb2FzdC5kYXRhLm1lc3NhZ2UgfX08L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
63
+ args: [{ selector: 'bnrc-login2', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6 tw-relative\">\r\n <div class=\"tw-flex-1\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <img [src]=\"appSettings().LogoUrl\" />\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n </div>\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\r\n </div>\r\n </div>\r\n <div>\r\n @if(state()==='enter-mobile'){\r\n <bnrc-login-enter-mobile (otpSent)=\"onOtpSent($event)\"></bnrc-login-enter-mobile>\r\n }@else{\r\n <bnrc-login-verification\r\n [mobile]=\"mobile()\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onOtpVerfied()\"\r\n ></bnrc-login-verification>\r\n }\r\n </div>\r\n\r\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\r\n <div class=\"tw-absolute tw-left-0 tw-right-0 tw-pb-safe\">\r\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span\r\n >\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a\r\n class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\"\r\n [attr.href]=\"appSettings().GovSSOHref\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"] }]
64
+ }], propDecorators: { _errorTemplate: [{
65
+ type: ViewChild,
66
+ args: ['template', { static: true, read: TemplateRef }]
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvbG9naW4yL2xvZ2luMi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2xvZ2luMi9sb2dpbjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFHTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVMvQyxNQUFNLE9BQU8sZUFBZTtJQVA1QjtRQVNJLFdBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLFVBQUssR0FBK0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLGdCQUFXLEdBQTZCLE1BQU0sQ0FBQztZQUMzQyxhQUFhLEVBQUUsRUFBRTtZQUNqQixPQUFPLEVBQUUsRUFBRTtZQUNYLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsUUFBUSxFQUFFLEVBQUU7WUFDWixLQUFLLEVBQUUsRUFBRTtZQUNULFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZUFBVSxHQUFHLEtBQUssQ0FBQztLQTRCdEI7SUExQkcsUUFBUTtRQUNKLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3BFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELGNBQWM7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLENBQW9DO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjO2FBQ2QscUJBQXFCLEVBQUU7YUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDNUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUN2RCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQWhEUSxlQUFlO21HQUFmLGVBQWUsMElBQ3FCLFdBQVcsMkNDdkI1RCxvbEhBZ0VBOzs0RkQxQ2EsZUFBZTtrQkFQM0IsU0FBUzsrQkFDSSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHMkMsY0FBYztzQkFBekUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBpbmplY3QsXHJcbiAgICBzaWduYWwsXHJcbiAgICBXcml0YWJsZVNpZ25hbCxcclxuICAgIE9uSW5pdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFBvcnRhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wb3J0YWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU3RhdGUgfSBmcm9tICcuLi9jb250cm9sbGVycyc7XHJcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYm5yYy1sb2dpbjInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luMi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vbG9naW4yLmNvbXBvbmVudC5zY3NzJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfZXJyb3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIG1vYmlsZSA9IHNpZ25hbCgnJyk7XHJcbiAgICBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIF9wb3J0YWxTZXJ2aWNlID0gaW5qZWN0KFBvcnRhbFNlcnZpY2UpO1xyXG4gICAgc3RhdGU6IFdyaXRhYmxlU2lnbmFsPExvZ2luU3RhdGU+ID0gc2lnbmFsKCdlbnRlci1tb2JpbGUnKTtcclxuICAgIGVycm9yTWVzc2FnZSA9IHNpZ25hbCgnJyk7XHJcbiAgICBhcHBTZXR0aW5nczogV3JpdGFibGVTaWduYWw8U2V0dGluZ3M+ID0gc2lnbmFsKHtcclxuICAgICAgICBCYWNrZ3JvdW5kVXJsOiAnJyxcclxuICAgICAgICBMb2dvVXJsOiAnJyxcclxuICAgICAgICBIaWRlR292U3NvOiB0cnVlLFxyXG4gICAgICAgIFNlY3Rpb24xVGl0bGU6ICcnLFxyXG4gICAgICAgIFNlY3Rpb24xRGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgIFN1YnRpdGxlOiAnJyxcclxuICAgICAgICBUaXRsZTogJycsXHJcbiAgICAgICAgR292U1NPSHJlZjogJydcclxuICAgIH0pO1xyXG4gICAgbG9nb1VybCA9ICcnO1xyXG4gICAgYmFja2dyb3VuZFVybCA9ICcnO1xyXG4gICAgdGl0bGUgPSAnJztcclxuICAgIGhpZGVHb3ZTc28gPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBmZXRjaChgL2Fzc2V0cy9sb2dpbjIuanNvbj94PSR7QmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DaGFuZ2VLZXlWZXJzaW9ufWApXHJcbiAgICAgICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5qc29uKCkpXHJcbiAgICAgICAgICAgIC50aGVuKChyZXMpID0+IHRoaXMuYXBwU2V0dGluZ3Muc2V0KHJlcykpO1xyXG4gICAgfVxyXG4gICAgb25PdHBTZW50KG1vYmlsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb2JpbGUuc2V0KG1vYmlsZSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ3ZlcmlmaWNhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgb25DaGFuZ2VNb2JpbGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ2VudGVyLW1vYmlsZScpO1xyXG4gICAgfVxyXG4gICAgb25PdHBFcnJvcihlOiB7IG1lc3NhZ2U6IHN0cmluZzsgY29kZTogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoZS5tZXNzYWdlKTtcclxuICAgIH1cclxuICAgIG9uT3RwVmVyZmllZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxvYWRTZXJ2ZXJTdGFydHVwRGF0YSgpXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3BvcnRhbFNlcnZpY2UubG9hZFN5c3RlbSgpKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvYWRVc2VyUG9ydGFsU2V0dGluZygpKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX3BvcnRhbFNlcnZpY2UuRGVmYXVsdFBhZ2U/LlJvdXRlIHx8ICcvJ10pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpO1xyXG4gICAgfVxyXG59XHJcbmludGVyZmFjZSBTZXR0aW5ncyB7XHJcbiAgICBUaXRsZTogc3RyaW5nO1xyXG4gICAgU3VidGl0bGU6IHN0cmluZztcclxuICAgIFNlY3Rpb24xVGl0bGU6IHN0cmluZztcclxuICAgIFNlY3Rpb24xRGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIExvZ29Vcmw6IHN0cmluZztcclxuICAgIEJhY2tncm91bmRVcmw6IHN0cmluZztcclxuICAgIEhpZGVHb3ZTc286IGJvb2xlYW47XHJcbiAgICBHb3ZTU09IcmVmOiBzdHJpbmc7XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInR3LWJnLXdoaXRlIGRhcms6dHctYmctZ3JheS05MDAgdHctdy1mdWxsIHR3LWgtZnVsbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctanVzdGlmeS1jZW50ZXIgdHctaC1zY3JlZW5cIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHctaGlkZGVuIHR3LWJnLWNvdmVyIGxnOnR3LWJsb2NrIGxnOnR3LXctMi8zXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgYXBwU2V0dGluZ3MoKS5CYWNrZ3JvdW5kVXJsICsgJyknXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWl0ZW1zLWNlbnRlciB0dy1oLWZ1bGwgdHctcHgtMjAgdHctYmctZ3JheS05MDAgdHctYmctb3BhY2l0eS00MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0dy10ZXh0LTR4bCB0dy1mb250LWJvbGQgdHctdGV4dC13aGl0ZVwiPnt7IGFwcFNldHRpbmdzKCkuU2VjdGlvbjFUaXRsZSB9fTwvaDI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidHctbWF4LXcteGwgdHctbXQtMyB0dy10ZXh0LWdyYXktMzAwXCI+e3sgYXBwU2V0dGluZ3MoKS5TZWN0aW9uMURlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1pdGVtcy1jZW50ZXIgdHctdy1mdWxsIHR3LW1heC13LW1kIHR3LXB4LTYgdHctbXgtYXV0byBsZzp0dy13LTIvNiB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctdGV4dC1jZW50ZXIgdHctZmxleCB0dy1mbGV4LWNvbCB0dy1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1nYXAtMiB0dy1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcFNldHRpbmdzKCkuTG9nb1VybFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInR3LXRleHQtNHhsIHR3LWZvbnQtYm9sZCB0dy10ZXh0LWNlbnRlciB0dy10ZXh0LWdyYXktNzAwIGRhcms6dHctdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwU2V0dGluZ3MoKS5UaXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWdhcC0yIHR3LWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInR3LW10LTMgdHctdGV4dC1ncmF5LTUwMCBkYXJrOnR3LXRleHQtZ3JheS0zMDBcIj57eyBhcHBTZXR0aW5ncygpLlN1YnRpdGxlIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihzdGF0ZSgpPT09J2VudGVyLW1vYmlsZScpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxibnJjLWxvZ2luLWVudGVyLW1vYmlsZSAob3RwU2VudCk9XCJvbk90cFNlbnQoJGV2ZW50KVwiPjwvYm5yYy1sb2dpbi1lbnRlci1tb2JpbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgfUBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIDxibnJjLWxvZ2luLXZlcmlmaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbW9iaWxlXT1cIm1vYmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZU1vYmlsZSk9XCJvbkNoYW5nZU1vYmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG90cFZlcmlmaWVkKT1cIm9uT3RwVmVyZmllZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9ibnJjLWxvZ2luLXZlcmlmaWNhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoc3RhdGUoKT09PSdlbnRlci1tb2JpbGUnICYmICFhcHBTZXR0aW5ncygpLkhpZGVHb3ZTc28pe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWFic29sdXRlIHR3LWxlZnQtMCB0dy1yaWdodC0wIHR3LXBiLXNhZmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctcmVsYXRpdmUgdHctZmxleCB0dy1weS01IHR3LWl0ZW1zLWNlbnRlciB0dy1weC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4LWdyb3cgdHctYm9yZGVyLXQgdHctYm9yZGVyLWdyYXktNDAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctZm9udC1bSVJBTllla2FuXSB0dy1mbGV4LXNocmluayB0dy1teC00IHR3LXRleHQtZ3JheS00MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPtmI2LHZiNivINin2LIg2LfYsduM2YIg2K/Ysdqv2KfZhzwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4LWdyb3cgdHctYm9yZGVyLXQgdHctYm9yZGVyLWdyYXktNDAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LXJvdW5kZWQtbGcgYmFjay1ib3gtY29sb3IgdHctdy1mdWxsIHR3LXB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctaXRlbXMtY2VudGVyIHR3LXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctdy1mdWxsIHR3LXRleHQtYmx1ZS02MDAgdHctdmlzaXRlZDp0dy10ZXh0LXB1cnBsZS02MDAgdHctdGV4dC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJhcHBTZXR0aW5ncygpLkdvdlNTT0hyZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID7ZiNix2YjYryDYp9iyINi32LHbjNmCINiv2LHar9in2Ycg2K/ZiNmE2Kog2YXZhlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -18,7 +18,7 @@ export class PortalPageSidebarComponent extends PageBaseComponent {
18
18
  <div class="sidebar" fillEmptySpace><ng-container #containerRef></ng-container></div>
19
19
  <div class="mainside"><router-outlet name="mainside"></router-outlet></div>
20
20
  </div>
21
- <router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
+ <router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PortalPageSidebarComponent, decorators: [{
24
24
  type: Component,
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
2
- import { debounceTime, delay, distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';
2
+ import { debounceTime, delay, distinctUntilChanged, filter, map, takeUntil, tap, withLatestFrom } from 'rxjs/operators';
3
3
  import { BarsaApi } from '../abstract-classes/barsa-api';
4
4
  import { BaseComponent } from '../abstract-classes/base.component';
5
5
  import { DeviceWidth, FindLayoutSettingFromLayout94, getDeviceIsMobile, getHeaderValue, getDeviceIsTablet } from '../constants';
@@ -49,7 +49,14 @@ export class FormPanelService extends BaseComponent {
49
49
  this.fieldDict$ = this.mo$.pipe(map((c) => c.$FieldDict), takeUntil(this._onDestroy$));
50
50
  this.view$ = this._viewSource.asObservable().pipe(tap((view) => this._prepareView(view)), takeUntil(this._onDestroy$));
51
51
  this.toolbarItems$ = this._toolbarItemsSource.asObservable().pipe(map((items) => this._filterToolbarItems(items)), takeUntil(this._onDestroy$));
52
- this.workflowButtons$ = this._toolbarItemsSource.asObservable().pipe(map((items) => this._filterToolbarItems(items)), map((items) => items.filter((c) => c.isWorkflow)), takeUntil(this._onDestroy$));
52
+ this.workflowButtons$ = this.workflowPanelUi$.pipe(map((c) => c?.buttonList || []), withLatestFrom(this._toolbarItemsSource.asObservable().pipe(map((items) => this._filterToolbarItems(items)), map((items) => items.filter((c) => c.isWorkflow)))), map(([items1, items2]) => [...items2, ...items1]), takeUntil(this._onDestroy$));
53
+ // this._toolbarItemsSource.asObservable().pipe(
54
+ // map((items) => this._filterToolbarItems(items)),
55
+ // map((items) => items.filter((c) => c.isWorkflow)),
56
+ // withLatestFrom(this.workflowPanelUi$.pipe(map((c) => c?.buttonList || []))),
57
+ // map(([items1, items2]) => (items1.length > 0 ? items1 : items2)),
58
+ // takeUntil(this._onDestroy$)
59
+ // );
53
60
  this.maxContentWidth$ = this._maxContentWidthSource.asObservable().pipe(map((width) => (width ? width + 'px' : 'auto')), takeUntil(this._onDestroy$));
54
61
  this.wizardNextStep$ = this._wizardNextStepSource.asObservable().pipe(takeUntil(this._onDestroy$));
55
62
  this.wizardPreviousStep$ = this._wizardPreviousStepSource.asObservable().pipe(takeUntil(this._onDestroy$));
@@ -384,4 +391,4 @@ export class FormPanelService extends BaseComponent {
384
391
  this._context = context;
385
392
  }
386
393
  }
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYW5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mb3JtLXBhbmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUNILFdBQVcsRUFDWCw2QkFBNkIsRUFDN0IsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxpQkFBaUIsRUFDcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUErRC9DO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUE1Q1osZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVl4QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2hELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFVLEtB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QU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdELFFBQVEsR0FBRztZQUNQLEdBQUcsZUFBZTtZQUNsQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7WUFDMUQsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1NBQzNDLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFFBQVEsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDekUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQixRQUFRLENBQUMs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QUFDO0lBQ1MsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBQ1MsU0FBUyxDQUFDLE9BQU87UUFDdkIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNTLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ1Msa0JBQWtCLENBQUMsU0FBd0I7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ1MsZUFBZSxDQUFDLE9BQU87UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb3JtVmlld1NldHRpbmcsIElIZWFkZXJMYXlvdXQsIExheW91dFNldHRpbmcsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XHJcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9iYXJzYS1hcGknO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBEZXZpY2VXaWR0aCxcclxuICAgIEZpbmRMYXlvdXRTZXR0aW5nRnJvbUxheW91dDk0LFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXHJcbiAgICBnZXRIZWFkZXJWYWx1ZSxcclxuICAgIGdldERldmljZUlzVGFibGV0XHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtUGFuZWxTZXJ2aWNlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBjb250ZXh0JDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgc2VhcmNoUGFuZWxJc09iamVjdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBpc1NlYXJjaFBhbmVsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgd29ya2Zsb3dQYW5lbFVpJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgbW8kOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG4gICAgdmlldyQ6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHRvb2xiYXJJdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgd29ya2Zsb3dCdXR0b25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBtYXhDb250ZW50V2lkdGgkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICB3aXphcmROZXh0U3RlcCQ6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICB3aXphcmRQcmV2aW91c1N0ZXAkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgZm9yY2VDbG9zZSQ6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBncm91cExheW91dCQ6IE9ic2VydmFibGU8TGF5b3V0U2V0dGluZz47XHJcbiAgICBpc1NpbXBsZUZvcm0kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgZm9ybVdpZHRoJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgdG9vbGJhclZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaGVhZGVyTGF5b3V0JDogT2JzZXJ2YWJsZTxJSGVhZGVyTGF5b3V0PjtcclxuICAgIF9oaWRlQ2xvc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBfaGlkZVRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgX2hpZGVQaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIGhlYWRlckRlc2NyaXB0aW9uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgaGVhZGVyUmVtb3ZlQ29udGVudFBhZGRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaGVhZGVyU3VidGl0bGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICBhdmF0YXIkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBjaXJjbGVBdmF0YXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgbWFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBmb3JtSGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgZmllbGREaWN0JDogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgICBwcml2YXRlIF9jb250ZXh0O1xyXG4gICAgcHJpdmF0ZSBfY29udGV4dFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX2Zvcm1IZWlnaHRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICBwcml2YXRlIF9zZWFyY2hQYW5lbElzT2JqZWN0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9pc1NlYXJjaFBhbmVsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF93b3JrZmxvd1BhbmVsVWlTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgICBwcml2YXRlIF9tb1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX3ZpZXdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgICBwcml2YXRlIF9zaWRlYmFyU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnY2xvc2UnIHwgJ29wZW4nPignY2xvc2UnKTtcclxuICAgIHByaXZhdGUgX3Rvb2xiYXJJdGVtc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHByaXZhdGUgX21heENvbnRlbnRXaWR0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignYXV0bycpO1xyXG4gICAgcHJpdmF0ZSBfd2l6YXJkTmV4dFN0ZXBTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfd2l6YXJkUHJldmlvdXNTdGVwU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2xheW91dFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX2ZvcmNlQ2xvc2VTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfZ3JvdXBCUnVsZVNvdXJjZSA9IG5ldyBTdWJqZWN0PExheW91dFNldHRpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9pc1NpbXBsZUZvcm1Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgX2Zvcm1XaWR0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHJpdmF0ZSBfdG9vbGJhclZpc2libGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyTGF5b3V0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyVGl0bGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyUmVtb3ZlQ29udGVudFBhZGRpbmdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgX2hlYWRlckRlc2NyaXB0aW9uU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHByaXZhdGUgX2hpZGVGb290ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9jYW5TZW5kJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgZm9ybUNvbnRhaW5lckRvbTogSFRNTEVsZW1lbnQ7XHJcbiAgICBDb2xvbkluTGFiZWwgPSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGNvbnRleHQpID0+IHRoaXMuX3ByZXBhcmVDb250ZXh0KGNvbnRleHQpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbElzT2JqZWN0JCA9IHRoaXMuX3NlYXJjaFBhbmVsSXNPYmplY3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbCQgPSB0aGlzLl9pc1NlYXJjaFBhbmVsU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLmlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQkID0gdGhpcy5faXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudFxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93UGFuZWxVaSQgPSB0aGlzLl93b3JrZmxvd1BhbmVsVWlTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuZm9ybUhlaWdodCQgPSB0aGlzLl9mb3JtSGVpZ2h0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMubW8kID0gdGhpcy5fbW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuZmllbGREaWN0JCA9IHRoaXMubW8kLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoYykgPT4gYy4kRmllbGREaWN0KSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy52aWV3JCA9IHRoaXMuX3ZpZXdTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgdGFwKCh2aWV3KSA9PiB0aGlzLl9wcmVwYXJlVmlldyh2aWV3KSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMudG9vbGJhckl0ZW1zJCA9IHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB0aGlzLl9maWx0ZXJUb29sYmFySXRlbXMoaXRlbXMpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9ucyQgPSB0aGlzLl90b29sYmFySXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gdGhpcy5fZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zKSksXHJcbiAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoYykgPT4gYy5pc1dvcmtmbG93KSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMubWF4Q29udGVudFdpZHRoJCA9IHRoaXMuX21heENvbnRlbnRXaWR0aFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHdpZHRoKSA9PiAod2lkdGggPyB3aWR0aCArICdweCcgOiAnYXV0bycpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy53aXphcmROZXh0U3RlcCQgPSB0aGlzLl93aXphcmROZXh0U3RlcFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XHJcbiAgICAgICAgdGhpcy53aXphcmRQcmV2aW91c1N0ZXAkID0gdGhpcy5fd2l6YXJkUHJldmlvdXNTdGVwU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9sYXlvdXRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgbWFwKChsYXlvdXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghbGF5b3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRldmljZVdpZHRoID0gRGV2aWNlV2lkdGgoKTtcclxuICAgICAgICAgICAgICAgIGlmIChkZXZpY2VXaWR0aCA8IGxheW91dC5Cb3VuZHMud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQuQm91bmRzLndpZHRoID0gZGV2aWNlV2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5sYXlvdXQgfTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9yY2VDbG9zZSQgPSB0aGlzLl9mb3JjZUNsb3NlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5ncm91cExheW91dCQgPSB0aGlzLl9ncm91cEJSdWxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1NpbXBsZUZvcm0kID0gdGhpcy5faXNTaW1wbGVGb3JtU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtV2lkdGgkID0gdGhpcy5fZm9ybVdpZHRoU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy50b29sYmFyVmlzaWJsZSQgPSB0aGlzLl90b29sYmFyVmlzaWJsZVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XHJcbiAgICAgICAgdGhpcy50aXRsZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9oZWFkZXJUaXRsZVNvdXJjZS5hc09ic2VydmFibGUoKSwgdGhpcy5fdGl0bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCldKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKFtoZWFkZXJUaXRsZSwgdGl0bGVdKSA9PiAoaGVhZGVyVGl0bGUgPyBoZWFkZXJUaXRsZSA6IHRpdGxlKSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJMYXlvdXQkID0gdGhpcy5faGVhZGVyTGF5b3V0U291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcigoaGVhZGVyTGF5b3V0KSA9PiAhIWhlYWRlckxheW91dCksXHJcbiAgICAgICAgICAgIHRhcCgoaGVhZGVyTGF5b3V0KSA9PiB0aGlzLl9oZWFkZXJUaXRsZVNvdXJjZS5uZXh0KGdldEhlYWRlclZhbHVlKGhlYWRlckxheW91dD8uVGl0bGUpKSksXHJcbiAgICAgICAgICAgIHRhcCgoaGVhZGVyTGF5b3V0KSA9PiB0aGlzLl9oaWRlQ2xvc2UkLm5leHQoaGVhZGVyTGF5b3V0Py5IaWRlQ2xvc2UpKSxcclxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hpZGVUaXRsZSQubmV4dChoZWFkZXJMYXlvdXQ/LkhpZGVUaXRsZSkpLFxyXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT4gdGhpcy5faGlkZVBpbiQubmV4dChoZWFkZXJMYXlvdXQ/LkhpZGVQaW4pKSxcclxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hlYWRlckRlc2NyaXB0aW9uU291cmNlLm5leHQoZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5EZXNjcmlwdGlvbikpKSxcclxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJSZW1vdmVDb250ZW50UGFkZGluZ1NvdXJjZS5uZXh0KGdldEhlYWRlclZhbHVlKGhlYWRlckxheW91dD8uUmVtb3ZlQ29udGVudFBhZGRpbmcpKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmhlYWRlckRlc2NyaXB0aW9uJCA9IHRoaXMuX2hlYWRlckRlc2NyaXB0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5oZWFkZXJSZW1vdmVDb250ZW50UGFkZGluZyQgPSB0aGlzLl9oZWFkZXJSZW1vdmVDb250ZW50UGFkZGluZ1NvdXJjZVxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUoZGVsYXkoMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XHJcblxyXG4gICAgICAgIHRoaXMuaGVhZGVyU3VidGl0bGUkID0gdGhpcy5oZWFkZXJMYXlvdXQkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaGVhZGVyTGF5b3V0KSA9PiBnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LlN1YlRpdGxlKSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuYXZhdGFyJCA9IHRoaXMuaGVhZGVyTGF5b3V0JC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGhlYWRlckxheW91dCkgPT4gZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5BdmF0YXIsIHRydWUpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaXJjbGVBdmF0YXIkID0gdGhpcy5oZWFkZXJMYXlvdXQkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaGVhZGVyTGF5b3V0KSA9PiBnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LkNpcmNsZUF2YXRhcikpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMubWFzayQgPSB0aGlzLl9tYXNrU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgaGlkZUZvb3RlciQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVGb290ZXIkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgc2lkZWJhclN0YXRlJCgpOiBPYnNlcnZhYmxlPCdvcGVuJyB8ICdjbG9zZSc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZWJhclN0YXRlJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldCBoaWRlUGluJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZVBpbiQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgaGlkZUNsb3NlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUNsb3NlJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldCBoaWRlVGl0bGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlVGl0bGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGNhblNlbmQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5TZW5kJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldCBtbygpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbW9Tb3VyY2UuZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuICAgIHNldCBjb250ZXh0KHZhbDogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRleHQpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NvbnRleHRTb3VyY2UubmV4dCh2YWwpO1xyXG4gICAgfVxyXG4gICAgaGlkZUZvb3RlcihoaWRlRm9vdGVyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZUZvb3RlciQubmV4dChoaWRlRm9vdGVyKTtcclxuICAgIH1cclxuICAgIHNldEZvcm1IZWlnaHQodmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9mb3JtSGVpZ2h0U291cmNlLm5leHQodmFsKTtcclxuICAgIH1cclxuICAgIGRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9jb250ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignQ2xvc2VTaWRlTmF2aWdhdG9yJywgdGhpcy5fY2xvc2VTaWRlTmF2aWdhdG9yKTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdHcm91cEJSdWxlQ2hhbmdlZCcsIHRoaXMuX2dyb3VwQlJ1bGVDaGFuZ2VkKTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdUaXRsZUNoYW5nZWQnLCB0aGlzLl90aXRsZUNoYW5nZWQpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ1dpemFyZE5leHRTdGVwJywgdGhpcy5fd2l6YXJkTmV4dFN0ZXApO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ1dpemFyZFByZXZpb3VzU3RlcCcsIHRoaXMuX3dpemFyZFByZXZpb3VzU3RlcCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignRG9MYXlvdXQnLCB0aGlzLl9kb0xheW91dCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignTWFza0NoYW5nZWQnLCB0aGlzLl9tYXNrQ2hhbmdlZCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignRm9yY2VDbG9zZScsIHRoaXMuX2ZvcmNlQ2xvc2UpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQudG9vbGJhci51bignVG9vbGJhckl0ZW1zQ2hhbmdlZCcsIHRoaXMuX3Rvb2xiYXJJdGVtc0NoYW5nZWQpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xheW91dFNvdXJjZS5uZXh0KG51bGwpO1xyXG4gICAgICAgIC8vIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvb2xiYXJDbGljayhidG4pOiB2b2lkIHtcclxuICAgICAgICBidG4uaGFuZGxlcihidG4sIHRoaXMuX2NvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgd2ZDaG9pY2UoYnRuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC5maXJlRXZlbnQoJ1RyYW5zaXRpb25TZWxlY3QnLCB0aGlzLl9jb250ZXh0LCBidG4pO1xyXG4gICAgfVxyXG4gICAgY2hhbmdlU2lkZWJhclN0YXRlKHN0YXRlOiAnb3BlbicgfCAnY2xvc2UnKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2lkZWJhclN0YXRlJC5uZXh0KHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2luaXRpYWxpemUoY29udGV4dDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dQYW5lbFVpU291cmNlLm5leHQoY29udGV4dD8uV29ya2Zsb3dQYW5lbFVpKTtcclxuICAgICAgICB0aGlzLl9pc1NlYXJjaFBhbmVsU291cmNlLm5leHQoY29udGV4dD8uU2V0dGluZz8uSXNTZWFyY2hQYW5lbCk7XHJcbiAgICAgICAgdGhpcy5faXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudC5uZXh0KGNvbnRleHQ/LlNldHRpbmc/LklzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQpO1xyXG4gICAgICAgIHRoaXMuX2NhblNlbmQkLm5leHQoY29udGV4dD8uU2V0dGluZz8uQ2FuU2VuZCk7XHJcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxJc09iamVjdFNvdXJjZS5uZXh0KGNvbnRleHQ/LlNldHRpbmc/LlBhcmFtZXRlclR5cGVJc09iamVjdCk7XHJcbiAgICAgICAgdGhpcy5fbW9Tb3VyY2UubmV4dChjb250ZXh0Py5Nbyk7XHJcbiAgICAgICAgdGhpcy5fdmlld1NvdXJjZS5uZXh0KGNvbnRleHQ/LlNldHRpbmc/LlZpZXcpO1xyXG4gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5uZXh0KGNvbnRleHQ/LnRvb2xiYXI/Lml0ZW1zKTtcclxuICAgICAgICBpZiAoY29udGV4dD8udG9vbGJhcikge1xyXG4gICAgICAgICAgICBjb250ZXh0LnRvb2xiYXIub24oe1xyXG4gICAgICAgICAgICAgICAgVG9vbGJhckl0ZW1zQ2hhbmdlZDogdGhpcy5fdG9vbGJhckl0ZW1zQ2hhbmdlZC5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl90aXRsZVNvdXJjZT8ubmV4dChjb250ZXh0Py50aXRsZSk7XHJcbiAgICAgICAgdGhpcy5fdG9vbGJhclZpc2libGVTb3VyY2UubmV4dCh0aGlzLl9nZXRUb29sYmFyVmlzaWJpbGl0eShjb250ZXh0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9wcmVwYXJlVmlldyh2aWV3KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U291cmNlLm5leHQodmlldz8uTGF5b3V0OTQpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVMYXlvdXRDb21wb25lbnQodmlldyk7XHJcbiAgICAgICAgdGhpcy5fbWF4Q29udGVudFdpZHRoU291cmNlLm5leHQodGhpcy5fZ2V0TWF4Q29udGVudFdpZHRoKHZpZXcpKTtcclxuICAgICAgICB0aGlzLl9pc1NpbXBsZUZvcm1Tb3VyY2UubmV4dCh0aGlzLl9nZXRJc1NpbXBsZUZvcm0odmlldykpO1xyXG4gICAgICAgIHRoaXMuX2hlYWRlckxheW91dFNvdXJjZS5uZXh0KHRoaXMuX2dldEhlYWRlckxheW91dCh2aWV3KSk7XHJcbiAgICAgICAgaWYgKHZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5Db2xvbkluTGFiZWwgPSB2aWV3LkNvbG9uSW5MYWJlbCAhPT0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2Zvcm1XaWR0aFNvdXJjZS5uZXh0KHZpZXc/LmluRGlhbG9nID8gdmlldy5MYXlvdXQ5NC5Cb3VuZHMud2lkdGggKyAncHgnIDogJzEwMCUnKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zOiBBcnJheTxhbnk+KTogQXJyYXk8YW55PiB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vINiv2LEg2LXZiNix2KrbjCDaqdmHINiv2LEg2YXZiNio2KfbjNmEINio2KfYtNivINiv2Ygg2K/aqdmF2Ycg2YbZhdin24zYtCDYr9in2K/ZhyDYtNmI2K8g2KfYsiDYr9qp2YXZhyDZh9in24wg2qnYp9ix2KjYsSDZiCDZgdix2KLbjNmG2K/bjFxyXG4gICAgICAgIC8vINiv2LEg2LXZiNix2KrbjCDaqdmHINiv2qnZhdmHINuMINmI2KzZiNivINmG2K/Yp9i02Kog2YHZgti3INiv2qnZhdmHINiw2K7bjNix2Ycg2YbZhdin24zYtCDYr9in2K/ZhyDYtNmI2K9cclxuICAgICAgICAvLyDYr9ixINit2KfZhNiq2YfYp9uMINiv24zar9ixINin2KjYqtiv2Kcg2K/aqdmF2Ycg2YfYp9uMINqp2KfYsdio2LHbjCDZiCDZgdix2KLbjNmG2K/bjCDZiCDYqNi52K8g2K/aqdmF2Ycg2YfYp9uMINiq2LnYsduM2YEg2LTYr9mHINiz24zYs9iq2YUg2YbZhdin24zYtCDYr9in2K/ZhyDZhduM2LTZiNivLlxyXG4gICAgICAgIGNvbnN0IGlzTW9iaWxlID0gZ2V0RGV2aWNlSXNNb2JpbGUoKTtcclxuICAgICAgICBjb25zdCBpc1RhYmxldCA9IGdldERldmljZUlzVGFibGV0KCk7XHJcbiAgICAgICAgbGV0IG5ld0l0ZW1zID0gaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoYykgPT5cclxuICAgICAgICAgICAgICAgICFjLmhpZGRlbiAmJlxyXG4gICAgICAgICAgICAgICAgIShcclxuICAgICAgICAgICAgICAgICAgICAoaXNNb2JpbGUgfHwgaXNUYWJsZXQgfHwgQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1NlcnZpY2VEZXNrKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChjLml0ZW1JZCA9PT0gJ05leHQnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnUHJldmlvdXMnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnTW92ZU5leHQnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnTW92ZVByZXYnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnTW92ZVByZXZpb3VzJylcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBuZXdJdGVtcy5zb3J0KChjLCBkKTogbnVtYmVyID0+IChOdW1iZXIoYz8uRGF0YT8uVGFiT3JkZXJOdW1iZXIpIDwgTnVtYmVyKGQ/LkRhdGE/LlRhYk9yZGVyTnVtYmVyKSA/IDEgOiAtMSkpO1xyXG4gICAgICAgIGNvbnN0IG5vblN0cmluZ0l0ZW1zID0gbmV3SXRlbXMuZmlsdGVyKChjKSA9PiB0eXBlb2YgYyAhPT0gJ3N0cmluZycpO1xyXG5cclxuICAgICAgICBjb25zdCB0ID0gbm9uU3RyaW5nSXRlbXMuZmluZCgoYykgPT4gIWMuaXNCdWlsdGluICYmICFjLklBbU1lbnUpO1xyXG4gICAgICAgIGlmICh0KSB7XHJcbiAgICAgICAgICAgIHQucHJpb3JpdHkgPSAnaGlnaCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBub25CdWlsdGluQ291bnQgPSAwO1xyXG4gICAgICAgIC8vIG5vblN0cmluZ0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGNvbnN0IGluRm9vdGVyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoaXRlbSwgJ0RhdGEuQ3VzdG9tVWkuUGFyYW1ldGVycy5JbkZvb3RlcicsIGZhbHNlKTtcclxuICAgICAgICAvLyAgICAgaWYgKGl0ZW0uaXNCdWlsdGluIHx8IGluRm9vdGVyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyDYs9uM2LPYqtmF24xcclxuICAgICAgICAvLyAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnYWx3YXlzJztcclxuICAgICAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIGlmIChub25CdWlsdGluQ291bnQgPiAxKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgLy8g2K/aqdmF2Ycg2YfYp9uMINqp2KfYsdio2LHbjCDaqdmHINio24zYtNiq2LEg2KfYsiDYr9mIINmH2LPYqtmG2K9cclxuICAgICAgICAvLyAgICAgICAgICAgICBpdGVtLnByaW9yaXR5ID0gJ2xvdyc7XHJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnbG93JztcclxuICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAvLyAgICAgICAgIG5vbkJ1aWx0aW5Db3VudCsrO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgY29uc3Qgbm9CdWlsdGluSXRlbXMgPSBub25TdHJpbmdJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChjKSA9PlxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIGMgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgICAhYy5pc0J1aWx0aW4gJiZcclxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsICdEYXRhLkN1c3RvbVVpLlBhcmFtZXRlcnMuSW5Gb290ZXInLCBmYWxzZSkgIT09IHRydWVcclxuICAgICAgICApO1xyXG4gICAgICAgIG5vQnVpbHRpbkl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGluZGV4ID09PSAwID8gKGl0ZW0ucHJpb3JpdHkgPSAnaGlnaHQnKSA6IChpdGVtLnByaW9yaXR5ID0gJ2xvdycpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG5vbkJ1aWx0aW5Db3VudCA9IG5vQnVpbHRpbkl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBpZiAobm9uQnVpbHRpbkNvdW50ID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vINin2q/YsSDZh9uM2oYg2K/aqdmF2Ycg2qnYp9ix2KjYsduMINmI2KzZiNivINmG2K/Yp9i02KpcclxuICAgICAgICAgICAgbm9uU3RyaW5nSXRlbXMuZm9yRWFjaCgoaXRlbSwgXykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbUlkID09PSAnU2F2ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnByaW9yaXR5ID0gJ25ldmVyJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNhdmVBbmROZXcgPSBuZXdJdGVtcy5maW5kKChjKSA9PiBjLml0ZW1JZCA9PT0gJ1NhdmVBbmROZXcnKTtcclxuICAgICAgICBjb25zdCBzYXZlQW5kQ2xvc2UgPSBuZXdJdGVtcy5maW5kKChjKSA9PiBjLml0ZW1JZCA9PT0gJ1NhdmVBbmRDbG9zZScpO1xyXG4gICAgICAgIGlmIChzYXZlQW5kQ2xvc2UgJiYgc2F2ZUFuZENsb3NlLm1lbnUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2F2ZSA9IHNhdmVBbmRDbG9zZS5tZW51Lml0ZW1zWzBdO1xyXG4gICAgICAgICAgICBpZiAoc2F2ZSkge1xyXG4gICAgICAgICAgICAgICAgc2F2ZS5pc0J1aWx0aW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2F2ZS5wcmlvcml0eSA9IG5vbkJ1aWx0aW5Db3VudCA9PT0gMCA/ICduZXZlcicgOiAnYWx3YXlzJztcclxuXHJcbiAgICAgICAgICAgICAgICBuZXdJdGVtcy5wdXNoKHNhdmUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNhdmVBbmROZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlLklBbU1lbnUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHNhdmUubWVudSA9IHsgaXRlbXM6IFt7IC4uLnNhdmVBbmROZXcgfV0gfTtcclxuICAgICAgICAgICAgICAgICAgICBuZXdJdGVtcyA9IG5ld0l0ZW1zLmZpbHRlcigoYykgPT4gYy5pdGVtSWQgIT09ICdTYXZlQW5kTmV3Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5tZW51KSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLm1lbnUuaXRlbXMgPSBpdGVtLm1lbnUuaXRlbXMuZmlsdGVyKChjKSA9PiAhYy5oaWRkZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgYnVpbHRpbnNCdXR0b25zID0gbmV3SXRlbXMuZmlsdGVyKChjKSA9PiBjPy5pc0J1aWx0aW4pO1xyXG4gICAgICAgIG5ld0l0ZW1zID0gW1xyXG4gICAgICAgICAgICAuLi5idWlsdGluc0J1dHRvbnMsXHJcbiAgICAgICAgICAgIC4uLm5ld0l0ZW1zLmZpbHRlcigoYykgPT4gIWM/LmlzQnVpbHRpbiAmJiAhYz8uaXNXb3JrZmxvdyksXHJcbiAgICAgICAgICAgIC4uLm5ld0l0ZW1zLmZpbHRlcigoYykgPT4gYz8uaXNXb3JrZmxvdylcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IG1vdmVOZXh0SW5kZXggPSBuZXdJdGVtcy5maW5kSW5kZXgoKGMpID0+IGMuaXRlbUlkID09PSAnTW92ZU5leHQnKTtcclxuICAgICAgICBpZiAobW92ZU5leHRJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld0l0ZW1zW21vdmVOZXh0SW5kZXhdLnByaW9yaXR5ID0gJ2Fsd2F5cyc7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vcyA9IG5ld0l0ZW1zLnNwbGljZShtb3ZlTmV4dEluZGV4IC0gMSwgMik7XHJcbiAgICAgICAgICAgIG5ld0l0ZW1zID0gWy4uLm1vcywgLi4ubmV3SXRlbXNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb3ZlUHJldkluZGV4ID0gbmV3SXRlbXMuZmluZEluZGV4KChjKSA9PiBjLml0ZW1JZCA9PT0gJ01vdmVQcmV2Jyk7XHJcbiAgICAgICAgaWYgKG1vdmVQcmV2SW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICBuZXdJdGVtc1ttb3ZlUHJldkluZGV4XS5wcmlvcml0eSA9ICdhbHdheXMnO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjaGVjayB0b29sYmFyaXRlbXMgaW4gZm9vdGVyIHByb3BlcnR5XHJcbiAgICAgICAgbmV3SXRlbXMuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbkZvb3RlciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsICdEYXRhLkN1c3RvbVVpLlBhcmFtZXRlcnMuSW5Gb290ZXInLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChpbkZvb3Rlcikge1xyXG4gICAgICAgICAgICAgICAgYy5pbkZvb3RlciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ld0l0ZW1zLnJldmVyc2UoKTtcclxuICAgICAgICAvLyByZXR1cm4gbmV3SXRlbXMuc29ydCgoYSk6IG51bWJlciA9PiAodHlwZW9mIGEgPT0gJ3N0cmluZycgPyAwIDogYS5JQW1NZW51ID8gMSA6IC0xKSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2dldEhlYWRlckxheW91dCh2aWV3KTogSUhlYWRlckxheW91dCB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyTGF5b3V0ID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodmlldywgJ0hlYWRlckxheW91dCcsIG51bGwpO1xyXG5cclxuICAgICAgICBpZiAoaGVhZGVyTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc2V0SGVhZGVyVGl0bGVBbmRTdWJ0aXRsZUFuZEF2YXRhcihoZWFkZXJMYXlvdXQpO1xyXG4gICAgICAgICAgICBjb25zdCB0OiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICBoZWFkZXJMYXlvdXQuRmFjZXRMaXN0Lk1vRGF0YUxpc3QuZm9yRWFjaCgoZmFjZXRDb2x1bW4pID0+IHtcclxuICAgICAgICAgICAgICAgIHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZmFjZXRDb2x1bW4uQ29sdW1uU2V0dGluZ3MuJEZvcm1QYW5lbFNldHRpbmcuRGF0YS5Nby5UeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vOiBmYWNldENvbHVtbi5Db2x1bW5TZXR0aW5ncy4kRm9ybVBhbmVsU2V0dGluZy5EYXRhLk1vXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGhlYWRlckxheW91dC5GYWNldExpc3QyID0gdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhlYWRlckxheW91dDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcHJlcGFyZUxheW91dENvbXBvbmVudCh2aWV3OiBGb3JtVmlld1NldHRpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXZpZXcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYXlvdXRDb21wb25lbnRzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodmlldywgJ0V4dHJhSnNvblByb3AuQ29tcG9uZW50cycsIG51bGwpO1xyXG4gICAgICAgIGlmICghbGF5b3V0Q29tcG9uZW50cykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShsYXlvdXRDb21wb25lbnRzKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxheW91dENvbXBvbmVudHMuZm9yRWFjaCgobGF5b3V0Q29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxheW91dFNldHRpbmcgPSBGaW5kTGF5b3V0U2V0dGluZ0Zyb21MYXlvdXQ5NCh2aWV3LkxheW91dDk0LCBsYXlvdXRDb21wb25lbnQuTGF5b3V0VGl0bGUpO1xyXG4gICAgICAgICAgICBpZiAobGF5b3V0U2V0dGluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGF5b3V0U2V0dGluZy5jb21wb25lbnQgPSB7IC4uLmxheW91dENvbXBvbmVudCB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9nZXRJc1NpbXBsZUZvcm0odmlldzogRm9ybVZpZXdTZXR0aW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgaXNTaW1wbGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnRXh0cmFKc29uUHJvcC5Jc1NpbXBsZScsIGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gaXNTaW1wbGU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2dldFRvb2xiYXJWaXNpYmlsaXR5KGNvbnRleHQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWNvbnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoaWRlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICd0b29sYmFyLmhpZGVUb29sYmFyJywgZmFsc2UpO1xyXG4gICAgICAgIGlmIChoaWRlVG9vbGJhcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgRm9ybVNldHRpbmdzIH0gPSBjb250ZXh0LlNldHRpbmcuVmlldztcclxuICAgICAgICBpZiAoRm9ybVNldHRpbmdzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3dUb29sYmFyID0gRm9ybVNldHRpbmdzLlNob3dUb29sYmFyID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgZmVhdHVyZVRvb2xiYXIgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnRmVhdHVyZXMuVG9vbGJhcicsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGUgPSAoZmVhdHVyZVRvb2xiYXIgJiYgc2hvd1Rvb2xiYXIpICE9PSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIHZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9nZXRNYXhDb250ZW50V2lkdGgodmlldyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbWF4Q29udGVudFdpZHRoID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodmlldywgJ0V4dHJhSnNvblByb3AuTWF4V2lkdGgnLCAnMCcpO1xyXG4gICAgICAgIHJldHVybiBtYXhDb250ZW50V2lkdGg7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2FkZExpc3RlbmVyKGNvbnRleHQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWNvbnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm9uKHtcclxuICAgICAgICAgICAgQ2xvc2VTaWRlTmF2aWdhdG9yOiB0aGlzLl9jbG9zZVNpZGVOYXZpZ2F0b3IuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgR3JvdXBCUnVsZUNoYW5nZWQ6IHRoaXMuX2dyb3VwQlJ1bGVDaGFuZ2VkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIFRpdGxlQ2hhbmdlZDogdGhpcy5fdGl0bGVDaGFuZ2VkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIFdpemFyZE5leHRTdGVwOiB0aGlzLl93aXphcmROZXh0U3RlcC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBXaXphcmRQcmV2aW91c1N0ZXA6IHRoaXMuX3dpemFyZFByZXZpb3VzU3RlcC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBEb0xheW91dDogdGhpcy5fZG9MYXlvdXQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgTWFza0NoYW5nZWQ6IHRoaXMuX21hc2tDaGFuZ2VkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIEZvcmNlQ2xvc2U6IHRoaXMuX2ZvcmNlQ2xvc2UuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgUmVmcmVzaDogdGhpcy5fcmVmcmVzaC5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29udGV4dC50b29sYmFyLm9uKHtcclxuICAgICAgICAgICAgVG9vbGJhckl0ZW1zQ2hhbmdlZDogdGhpcy5fdG9vbGJhckl0ZW1zQ2hhbmdlZC5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSh0aGlzLl9jb250ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLl9wcmVwYXJlVmlldyh0aGlzLl9jb250ZXh0LlNldHRpbmcuVmlldyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZvcmNlQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZm9yY2VDbG9zZVNvdXJjZS5uZXh0KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX21hc2tDaGFuZ2VkKG1hc2spOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tYXNrU291cmNlLm5leHQobWFzayk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3Rvb2xiYXJJdGVtc0NoYW5nZWQoaXRlbXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90b29sYmFySXRlbXNTb3VyY2UubmV4dChpdGVtcyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3RpdGxlQ2hhbmdlZCh0aXRsZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RpdGxlU291cmNlLm5leHQodGl0bGUpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF93aXphcmROZXh0U3RlcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl93aXphcmROZXh0U3RlcFNvdXJjZS5uZXh0KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3dpemFyZFByZXZpb3VzU3RlcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl93aXphcmRQcmV2aW91c1N0ZXBTb3VyY2UubmV4dCgpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9kb0xheW91dChjb250ZXh0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdmlldyA9IGNvbnRleHQuU2V0dGluZy5WaWV3O1xyXG4gICAgICAgIHRoaXMuX3ZpZXdTb3VyY2UubmV4dCh2aWV3KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY2xvc2VTaWRlTmF2aWdhdG9yKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NpZGViYXJTdGF0ZSQubmV4dCgnY2xvc2UnKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZ3JvdXBCUnVsZUNoYW5nZWQoZ3JvdXBJdGVtOiBMYXlvdXRTZXR0aW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBCUnVsZVNvdXJjZS5uZXh0KGdyb3VwSXRlbSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3ByZXBhcmVDb250ZXh0KGNvbnRleHQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hZGRMaXN0ZW5lcihjb250ZXh0KTtcclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplKGNvbnRleHQpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYW5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mb3JtLXBhbmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFDSCxXQUFXLEVBQ1gsNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxhQUFhO0lBK0QvQztRQUNJLEtBQUssRUFBRSxDQUFDO1FBNUNaLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFZeEMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRCwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqRSx5QkFBb0IsR0FBRyxJQUFJLGVB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cnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb3JtVmlld1NldHRpbmcsIElIZWFkZXJMYXlvdXQsIExheW91dFNldHRpbmcsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XHJcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9iYXJzYS1hcGknO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBEZXZpY2VXaWR0aCxcclxuICAgIEZpbmRMYXlvdXRTZXR0aW5nRnJvbUxheW91dDk0LFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXHJcbiAgICBnZXRIZWFkZXJWYWx1ZSxcclxuICAgIGdldERldmljZUlzVGFibGV0XHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtUGFuZWxTZXJ2aWNlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBjb250ZXh0JDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgc2VhcmNoUGFuZWxJc09iamVjdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBpc1NlYXJjaFBhbmVsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgd29ya2Zsb3dQYW5lbFVpJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgbW8kOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG4gICAgdmlldyQ6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHRvb2xiYXJJdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgd29ya2Zsb3dCdXR0b25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBtYXhDb250ZW50V2lkdGgkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICB3aXphcmROZXh0U3RlcCQ6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICB3aXphcmRQcmV2aW91c1N0ZXAkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgZm9yY2VDbG9zZSQ6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBncm91cExheW91dCQ6IE9ic2VydmFibGU8TGF5b3V0U2V0dGluZz47XHJcbiAgICBpc1NpbXBsZUZvcm0kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgZm9ybVdpZHRoJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgdG9vbGJhclZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaGVhZGVyTGF5b3V0JDogT2JzZXJ2YWJsZTxJSGVhZGVyTGF5b3V0PjtcclxuICAgIF9oaWRlQ2xvc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBfaGlkZVRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgX2hpZGVQaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIGhlYWRlckRlc2NyaXB0aW9uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgaGVhZGVyUmVtb3ZlQ29udGVudFBhZGRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaGVhZGVyU3VidGl0bGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICBhdmF0YXIkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBjaXJjbGVBdmF0YXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgbWFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBmb3JtSGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgZmllbGREaWN0JDogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgICBwcml2YXRlIF9jb250ZXh0O1xyXG4gICAgcHJpdmF0ZSBfY29udGV4dFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX2Zvcm1IZWlnaHRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICBwcml2YXRlIF9zZWFyY2hQYW5lbElzT2JqZWN0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9pc1NlYXJjaFBhbmVsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF93b3JrZmxvd1BhbmVsVWlTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgICBwcml2YXRlIF9tb1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX3ZpZXdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgICBwcml2YXRlIF9zaWRlYmFyU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnY2xvc2UnIHwgJ29wZW4nPignY2xvc2UnKTtcclxuICAgIHByaXZhdGUgX3Rvb2xiYXJJdGVtc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHByaXZhdGUgX21heENvbnRlbnRXaWR0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignYXV0bycpO1xyXG4gICAgcHJpdmF0ZSBfd2l6YXJkTmV4dFN0ZXBTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfd2l6YXJkUHJldmlvdXNTdGVwU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2xheW91dFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIHByaXZhdGUgX2ZvcmNlQ2xvc2VTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfZ3JvdXBCUnVsZVNvdXJjZSA9IG5ldyBTdWJqZWN0PExheW91dFNldHRpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9pc1NpbXBsZUZvcm1Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgX2Zvcm1XaWR0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHJpdmF0ZSBfdG9vbGJhclZpc2libGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyTGF5b3V0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyVGl0bGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyUmVtb3ZlQ29udGVudFBhZGRpbmdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgX2hlYWRlckRlc2NyaXB0aW9uU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHByaXZhdGUgX2hpZGVGb290ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9jYW5TZW5kJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgZm9ybUNvbnRhaW5lckRvbTogSFRNTEVsZW1lbnQ7XHJcbiAgICBDb2xvbkluTGFiZWwgPSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGNvbnRleHQpID0+IHRoaXMuX3ByZXBhcmVDb250ZXh0KGNvbnRleHQpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbElzT2JqZWN0JCA9IHRoaXMuX3NlYXJjaFBhbmVsSXNPYmplY3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbCQgPSB0aGlzLl9pc1NlYXJjaFBhbmVsU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLmlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQkID0gdGhpcy5faXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudFxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93UGFuZWxVaSQgPSB0aGlzLl93b3JrZmxvd1BhbmVsVWlTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuZm9ybUhlaWdodCQgPSB0aGlzLl9mb3JtSGVpZ2h0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMubW8kID0gdGhpcy5fbW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMuZmllbGREaWN0JCA9IHRoaXMubW8kLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoYykgPT4gYy4kRmllbGREaWN0KSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy52aWV3JCA9IHRoaXMuX3ZpZXdTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgdGFwKCh2aWV3KSA9PiB0aGlzLl9wcmVwYXJlVmlldyh2aWV3KSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMudG9vbGJhckl0ZW1zJCA9IHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB0aGlzLl9maWx0ZXJUb29sYmFySXRlbXMoaXRlbXMpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMkID0gdGhpcy53b3JrZmxvd1BhbmVsVWkkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoYykgPT4gYz8uYnV0dG9uTGlzdCB8fCBbXSksXHJcbiAgICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW1zU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gdGhpcy5fZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zKSksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChjKSA9PiBjLmlzV29ya2Zsb3cpKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBtYXAoKFtpdGVtczEsIGl0ZW1zMl0pID0+IFsuLi5pdGVtczIsIC4uLml0ZW1zMV0pLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyB0aGlzLl90b29sYmFySXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAvLyAgICAgbWFwKChpdGVtcykgPT4gdGhpcy5fZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zKSksXHJcbiAgICAgICAgLy8gICAgIG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoYykgPT4gYy5pc1dvcmtmbG93KSksXHJcbiAgICAgICAgLy8gICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMud29ya2Zsb3dQYW5lbFVpJC5waXBlKG1hcCgoYykgPT4gYz8uYnV0dG9uTGlzdCB8fCBbXSkpKSxcclxuICAgICAgICAvLyAgICAgbWFwKChbaXRlbXMxLCBpdGVtczJdKSA9PiAoaXRlbXMxLmxlbmd0aCA+IDAgPyBpdGVtczEgOiBpdGVtczIpKSxcclxuICAgICAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgLy8gKTtcclxuXHJcbiAgICAgICAgdGhpcy5tYXhDb250ZW50V2lkdGgkID0gdGhpcy5fbWF4Q29udGVudFdpZHRoU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgod2lkdGgpID0+ICh3aWR0aCA/IHdpZHRoICsgJ3B4JyA6ICdhdXRvJykpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLndpemFyZE5leHRTdGVwJCA9IHRoaXMuX3dpemFyZE5leHRTdGVwU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLndpemFyZFByZXZpb3VzU3RlcCQgPSB0aGlzLl93aXphcmRQcmV2aW91c1N0ZXBTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuX2xheW91dFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGxheW91dCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZGV2aWNlV2lkdGggPSBEZXZpY2VXaWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRldmljZVdpZHRoIDwgbGF5b3V0LkJvdW5kcy53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5Cb3VuZHMud2lkdGggPSBkZXZpY2VXaWR0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmxheW91dCB9O1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JjZUNsb3NlJCA9IHRoaXMuX2ZvcmNlQ2xvc2VTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLmdyb3VwTGF5b3V0JCA9IHRoaXMuX2dyb3VwQlJ1bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLmlzU2ltcGxlRm9ybSQgPSB0aGlzLl9pc1NpbXBsZUZvcm1Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1XaWR0aCQgPSB0aGlzLl9mb3JtV2lkdGhTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLnRvb2xiYXJWaXNpYmxlJCA9IHRoaXMuX3Rvb2xiYXJWaXNpYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgICAgICB0aGlzLnRpdGxlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2hlYWRlclRpdGxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLCB0aGlzLl90aXRsZVNvdXJjZS5hc09ic2VydmFibGUoKV0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoW2hlYWRlclRpdGxlLCB0aXRsZV0pID0+IChoZWFkZXJUaXRsZSA/IGhlYWRlclRpdGxlIDogdGl0bGUpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmhlYWRlckxheW91dCQgPSB0aGlzLl9oZWFkZXJMYXlvdXRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKChoZWFkZXJMYXlvdXQpID0+ICEhaGVhZGVyTGF5b3V0KSxcclxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hlYWRlclRpdGxlU291cmNlLm5leHQoZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5UaXRsZSkpKSxcclxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hpZGVDbG9zZSQubmV4dChoZWFkZXJMYXlvdXQ/LkhpZGVDbG9zZSkpLFxyXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT4gdGhpcy5faGlkZVRpdGxlJC5uZXh0KGhlYWRlckxheW91dD8uSGlkZVRpdGxlKSksXHJcbiAgICAgICAgICAgIHRhcCgoaGVhZGVyTGF5b3V0KSA9PiB0aGlzLl9oaWRlUGluJC5uZXh0KGhlYWRlckxheW91dD8uSGlkZVBpbikpLFxyXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT4gdGhpcy5faGVhZGVyRGVzY3JpcHRpb25Tb3VyY2UubmV4dChnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LkRlc2NyaXB0aW9uKSkpLFxyXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nU291cmNlLm5leHQoZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5SZW1vdmVDb250ZW50UGFkZGluZykpXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuaGVhZGVyRGVzY3JpcHRpb24kID0gdGhpcy5faGVhZGVyRGVzY3JpcHRpb25Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLmhlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nJCA9IHRoaXMuX2hlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nU291cmNlXHJcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShkZWxheSgwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5oZWFkZXJTdWJ0aXRsZSQgPSB0aGlzLmhlYWRlckxheW91dCQucGlwZShcclxuICAgICAgICAgICAgbWFwKChoZWFkZXJMYXlvdXQpID0+IGdldEhlYWRlclZhbHVlKGhlYWRlckxheW91dD8uU3ViVGl0bGUpKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdmF0YXIkID0gdGhpcy5oZWFkZXJMYXlvdXQkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaGVhZGVyTGF5b3V0KSA9PiBnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LkF2YXRhciwgdHJ1ZSkpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmNpcmNsZUF2YXRhciQgPSB0aGlzLmhlYWRlckxheW91dCQucGlwZShcclxuICAgICAgICAgICAgbWFwKChoZWFkZXJMYXlvdXQpID0+IGdldEhlYWRlclZhbHVlKGhlYWRlckxheW91dD8uQ2lyY2xlQXZhdGFyKSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tYXNrJCA9IHRoaXMuX21hc2tTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuICAgIH1cclxuICAgIGdldCBoaWRlRm9vdGVyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZvb3RlciQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuICAgIGdldCBzaWRlYmFyU3RhdGUkKCk6IE9ic2VydmFibGU8J29wZW4nIHwgJ2Nsb3NlJz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWRlYmFyU3RhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGhpZGVQaW4kKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlUGluJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldCBoaWRlQ2xvc2UkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlQ2xvc2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGhpZGVUaXRsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVUaXRsZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgY2FuU2VuZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhblNlbmQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IG1vKCk6IE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tb1NvdXJjZS5nZXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbnRleHQodmFsOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY29udGV4dFNvdXJjZS5uZXh0KHZhbCk7XHJcbiAgICB9XHJcbiAgICBoaWRlRm9vdGVyKGhpZGVGb290ZXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oaWRlRm9vdGVyJC5uZXh0KGhpZGVGb290ZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0Rm9ybUhlaWdodCh2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Zvcm1IZWlnaHRTb3VyY2UubmV4dCh2YWwpO1xyXG4gICAgfVxyXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NvbnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdDbG9zZVNpZGVOYXZpZ2F0b3InLCB0aGlzLl9jbG9zZVNpZGVOYXZpZ2F0b3IpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ0dyb3VwQlJ1bGVDaGFuZ2VkJywgdGhpcy5fZ3JvdXBCUnVsZUNoYW5nZWQpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ1RpdGxlQ2hhbmdlZCcsIHRoaXMuX3RpdGxlQ2hhbmdlZCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignV2l6YXJkTmV4dFN0ZXAnLCB0aGlzLl93aXphcmROZXh0U3RlcCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignV2l6YXJkUHJldmlvdXNTdGVwJywgdGhpcy5fd2l6YXJkUHJldmlvdXNTdGVwKTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdEb0xheW91dCcsIHRoaXMuX2RvTGF5b3V0KTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdNYXNrQ2hhbmdlZCcsIHRoaXMuX21hc2tDaGFuZ2VkKTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdGb3JjZUNsb3NlJywgdGhpcy5fZm9yY2VDbG9zZSk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dC50b29sYmFyLnVuKCdUb29sYmFySXRlbXNDaGFuZ2VkJywgdGhpcy5fdG9vbGJhckl0ZW1zQ2hhbmdlZCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U291cmNlLm5leHQobnVsbCk7XHJcbiAgICAgICAgLy8gdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9vbGJhckNsaWNrKGJ0bik6IHZvaWQge1xyXG4gICAgICAgIGJ0bi5oYW5kbGVyKGJ0biwgdGhpcy5fY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICB3ZkNob2ljZShidG4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LmZpcmVFdmVudCgnVHJhbnNpdGlvblNlbGVjdCcsIHRoaXMuX2NvbnRleHQsIGJ0bik7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VTaWRlYmFyU3RhdGUoc3RhdGU6ICdvcGVuJyB8ICdjbG9zZScpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zaWRlYmFyU3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaW5pdGlhbGl6ZShjb250ZXh0OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl93b3JrZmxvd1BhbmVsVWlTb3VyY2UubmV4dChjb250ZXh0Py5Xb3JrZmxvd1BhbmVsVWkpO1xyXG4gICAgICAgIHRoaXMuX2lzU2VhcmNoUGFuZWxTb3VyY2UubmV4dChjb250ZXh0Py5TZXR0aW5nPy5Jc1NlYXJjaFBhbmVsKTtcclxuICAgICAgICB0aGlzLl9pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50Lm5leHQoY29udGV4dD8uU2V0dGluZz8uSXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCk7XHJcbiAgICAgICAgdGhpcy5fY2FuU2VuZCQubmV4dChjb250ZXh0Py5TZXR0aW5nPy5DYW5TZW5kKTtcclxuICAgICAgICB0aGlzLl9zZWFyY2hQYW5lbElzT2JqZWN0U291cmNlLm5leHQoY29udGV4dD8uU2V0dGluZz8uUGFyYW1ldGVyVHlwZUlzT2JqZWN0KTtcclxuICAgICAgICB0aGlzLl9tb1NvdXJjZS5uZXh0KGNvbnRleHQ/Lk1vKTtcclxuICAgICAgICB0aGlzLl92aWV3U291cmNlLm5leHQoY29udGV4dD8uU2V0dGluZz8uVmlldyk7XHJcbiAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW1zU291cmNlLm5leHQoY29udGV4dD8udG9vbGJhcj8uaXRlbXMpO1xyXG4gICAgICAgIGlmIChjb250ZXh0Py50b29sYmFyKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQudG9vbGJhci5vbih7XHJcbiAgICAgICAgICAgICAgICBUb29sYmFySXRlbXNDaGFuZ2VkOiB0aGlzLl90b29sYmFySXRlbXNDaGFuZ2VkLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3RpdGxlU291cmNlPy5uZXh0KGNvbnRleHQ/LnRpdGxlKTtcclxuICAgICAgICB0aGlzLl90b29sYmFyVmlzaWJsZVNvdXJjZS5uZXh0KHRoaXMuX2dldFRvb2xiYXJWaXNpYmlsaXR5KGNvbnRleHQpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3ByZXBhcmVWaWV3KHZpZXcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTb3VyY2UubmV4dCh2aWV3Py5MYXlvdXQ5NCk7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUxheW91dENvbXBvbmVudCh2aWV3KTtcclxuICAgICAgICB0aGlzLl9tYXhDb250ZW50V2lkdGhTb3VyY2UubmV4dCh0aGlzLl9nZXRNYXhDb250ZW50V2lkdGgodmlldykpO1xyXG4gICAgICAgIHRoaXMuX2lzU2ltcGxlRm9ybVNvdXJjZS5uZXh0KHRoaXMuX2dldElzU2ltcGxlRm9ybSh2aWV3KSk7XHJcbiAgICAgICAgdGhpcy5faGVhZGVyTGF5b3V0U291cmNlLm5leHQodGhpcy5fZ2V0SGVhZGVyTGF5b3V0KHZpZXcpKTtcclxuICAgICAgICBpZiAodmlldykge1xyXG4gICAgICAgICAgICB0aGlzLkNvbG9uSW5MYWJlbCA9IHZpZXcuQ29sb25JbkxhYmVsICE9PSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZm9ybVdpZHRoU291cmNlLm5leHQodmlldz8uaW5EaWFsb2cgPyB2aWV3LkxheW91dDk0LkJvdW5kcy53aWR0aCArICdweCcgOiAnMTAwJScpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maWx0ZXJUb29sYmFySXRlbXMoaXRlbXM6IEFycmF5PGFueT4pOiBBcnJheTxhbnk+IHtcclxuICAgICAgICBpZiAoIWl0ZW1zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g2K/YsSDYtdmI2LHYqtuMINqp2Ycg2K/YsSDZhdmI2KjYp9uM2YQg2KjYp9i02K8g2K/ZiCDYr9qp2YXZhyDZhtmF2KfbjNi0INiv2KfYr9mHINi02YjYryDYp9iyINiv2qnZhdmHINmH2KfbjCDaqdin2LHYqNixINmIINmB2LHYotuM2YbYr9uMXHJcbiAgICAgICAgLy8g2K/YsSDYtdmI2LHYqtuMINqp2Ycg2K/aqdmF2Ycg24wg2YjYrNmI2K8g2YbYr9in2LTYqiDZgdmC2Lcg2K/aqdmF2Ycg2LDYrtuM2LHZhyDZhtmF2KfbjNi0INiv2KfYr9mHINi02YjYr1xyXG4gICAgICAgIC8vINiv2LEg2K3Yp9mE2KrZh9in24wg2K/bjNqv2LEg2KfYqNiq2K/YpyDYr9qp2YXZhyDZh9in24wg2qnYp9ix2KjYsduMINmIINmB2LHYotuM2YbYr9uMINmIINio2LnYryDYr9qp2YXZhyDZh9in24wg2KrYudix24zZgSDYtNiv2Ycg2LPbjNiz2KrZhSDZhtmF2KfbjNi0INiv2KfYr9mHINmF24zYtNmI2K8uXHJcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgICAgIGNvbnN0IGlzVGFibGV0ID0gZ2V0RGV2aWNlSXNUYWJsZXQoKTtcclxuICAgICAgICBsZXQgbmV3SXRlbXMgPSBpdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChjKSA9PlxyXG4gICAgICAgICAgICAgICAgIWMuaGlkZGVuICYmXHJcbiAgICAgICAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAgICAgICAgIChpc01vYmlsZSB8fCBpc1RhYmxldCB8fCBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2spICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGMuaXRlbUlkID09PSAnTmV4dCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pdGVtSWQgPT09ICdQcmV2aW91cycgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pdGVtSWQgPT09ICdNb3ZlTmV4dCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pdGVtSWQgPT09ICdNb3ZlUHJldicgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pdGVtSWQgPT09ICdNb3ZlUHJldmlvdXMnKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIG5ld0l0ZW1zLnNvcnQoKGMsIGQpOiBudW1iZXIgPT4gKE51bWJlcihjPy5EYXRhPy5UYWJPcmRlck51bWJlcikgPCBOdW1iZXIoZD8uRGF0YT8uVGFiT3JkZXJOdW1iZXIpID8gMSA6IC0xKSk7XHJcbiAgICAgICAgY29uc3Qgbm9uU3RyaW5nSXRlbXMgPSBuZXdJdGVtcy5maWx0ZXIoKGMpID0+IHR5cGVvZiBjICE9PSAnc3RyaW5nJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHQgPSBub25TdHJpbmdJdGVtcy5maW5kKChjKSA9PiAhYy5pc0J1aWx0aW4gJiYgIWMuSUFtTWVudSk7XHJcbiAgICAgICAgaWYgKHQpIHtcclxuICAgICAgICAgICAgdC5wcmlvcml0eSA9ICdoaWdoJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IG5vbkJ1aWx0aW5Db3VudCA9IDA7XHJcbiAgICAgICAgLy8gbm9uU3RyaW5nSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgY29uc3QgaW5Gb290ZXIgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShpdGVtLCAnRGF0YS5DdXN0b21VaS5QYXJhbWV0ZXJzLkluRm9vdGVyJywgZmFsc2UpO1xyXG4gICAgICAgIC8vICAgICBpZiAoaXRlbS5pc0J1aWx0aW4gfHwgaW5Gb290ZXIpIHtcclxuICAgICAgICAvLyAgICAgICAgIC8vINiz24zYs9iq2YXbjFxyXG4gICAgICAgIC8vICAgICAgICAgaXRlbS5wcmlvcml0eSA9ICdhbHdheXMnO1xyXG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICAgICAgaWYgKG5vbkJ1aWx0aW5Db3VudCA+IDEpIHtcclxuICAgICAgICAvLyAgICAgICAgICAgICAvLyDYr9qp2YXZhyDZh9in24wg2qnYp9ix2KjYsduMINqp2Ycg2KjbjNi02KrYsSDYp9iyINiv2Ygg2YfYs9iq2YbYr1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnbG93JztcclxuICAgICAgICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgaXRlbS5wcmlvcml0eSA9ICdsb3cnO1xyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICAgICAgbm9uQnVpbHRpbkNvdW50Kys7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICBjb25zdCBub0J1aWx0aW5JdGVtcyA9IG5vblN0cmluZ0l0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgKGMpID0+XHJcbiAgICAgICAgICAgICAgICB0eXBlb2YgYyA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgICAgICFjLmlzQnVpbHRpbiAmJlxyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYywgJ0RhdGEuQ3VzdG9tVWkuUGFyYW1ldGVycy5JbkZvb3RlcicsIGZhbHNlKSAhPT0gdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbm9CdWlsdGluSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaW5kZXggPT09IDAgPyAoaXRlbS5wcmlvcml0eSA9ICdoaWdodCcpIDogKGl0ZW0ucHJpb3JpdHkgPSAnbG93Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgbm9uQnVpbHRpbkNvdW50ID0gbm9CdWlsdGluSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChub25CdWlsdGluQ291bnQgPT09IDApIHtcclxuICAgICAgICAgICAgLy8g2Kfar9ixINmH24zahiDYr9qp2YXZhyDaqdin2LHYqNix24wg2YjYrNmI2K8g2YbYr9in2LTYqlxyXG4gICAgICAgICAgICBub25TdHJpbmdJdGVtcy5mb3JFYWNoKChpdGVtLCBfKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT09ICdTYXZlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnbmV2ZXInO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2F2ZUFuZE5ldyA9IG5ld0l0ZW1zLmZpbmQoKGMpID0+IGMuaXRlbUlkID09PSAnU2F2ZUFuZE5ldycpO1xyXG4gICAgICAgIGNvbnN0IHNhdmVBbmRDbG9zZSA9IG5ld0l0ZW1zLmZpbmQoKGMpID0+IGMuaXRlbUlkID09PSAnU2F2ZUFuZENsb3NlJyk7XHJcbiAgICAgICAgaWYgKHNhdmVBbmRDbG9zZSAmJiBzYXZlQW5kQ2xvc2UubWVudSkge1xyXG4gICAgICAgICAgICBjb25zdCBzYXZlID0gc2F2ZUFuZENsb3NlLm1lbnUuaXRlbXNbMF07XHJcbiAgICAgICAgICAgIGlmIChzYXZlKSB7XHJcbiAgICAgICAgICAgICAgICBzYXZlLmlzQnVpbHRpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzYXZlLnByaW9yaXR5ID0gbm9uQnVpbHRpbkNvdW50ID09PSAwID8gJ25ldmVyJyA6ICdhbHdheXMnO1xyXG5cclxuICAgICAgICAgICAgICAgIG5ld0l0ZW1zLnB1c2goc2F2ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2F2ZUFuZE5ldykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNhdmUuSUFtTWVudSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F2ZS5tZW51ID0geyBpdGVtczogW3sgLi4uc2F2ZUFuZE5ldyB9XSB9O1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1zID0gbmV3SXRlbXMuZmlsdGVyKChjKSA9PiBjLml0ZW1JZCAhPT0gJ1NhdmVBbmROZXcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLm1lbnUpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0ubWVudS5pdGVtcyA9IGl0ZW0ubWVudS5pdGVtcy5maWx0ZXIoKGMpID0+ICFjLmhpZGRlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBidWlsdGluc0J1dHRvbnMgPSBuZXdJdGVtcy5maWx0ZXIoKGMpID0+IGM/LmlzQnVpbHRpbik7XHJcbiAgICAgICAgbmV3SXRlbXMgPSBbXHJcbiAgICAgICAgICAgIC4uLmJ1aWx0aW5zQnV0dG9ucyxcclxuICAgICAgICAgICAgLi4ubmV3SXRlbXMuZmlsdGVyKChjKSA9PiAhYz8uaXNCdWlsdGluICYmICFjPy5pc1dvcmtmbG93KSxcclxuICAgICAgICAgICAgLi4ubmV3SXRlbXMuZmlsdGVyKChjKSA9PiBjPy5pc1dvcmtmbG93KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3QgbW92ZU5leHRJbmRleCA9IG5ld0l0ZW1zLmZpbmRJbmRleCgoYykgPT4gYy5pdGVtSWQgPT09ICdNb3ZlTmV4dCcpO1xyXG4gICAgICAgIGlmIChtb3ZlTmV4dEluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgbmV3SXRlbXNbbW92ZU5leHRJbmRleF0ucHJpb3JpdHkgPSAnYWx3YXlzJztcclxuICAgICAgICAgICAgY29uc3QgbW9zID0gbmV3SXRlbXMuc3BsaWNlKG1vdmVOZXh0SW5kZXggLSAxLCAyKTtcclxuICAgICAgICAgICAgbmV3SXRlbXMgPSBbLi4ubW9zLCAuLi5uZXdJdGVtc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vdmVQcmV2SW5kZXggPSBuZXdJdGVtcy5maW5kSW5kZXgoKGMpID0+IGMuaXRlbUlkID09PSAnTW92ZVByZXYnKTtcclxuICAgICAgICBpZiAobW92ZVByZXZJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld0l0ZW1zW21vdmVQcmV2SW5kZXhdLnByaW9yaXR5ID0gJ2Fsd2F5cyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIHRvb2xiYXJpdGVtcyBpbiBmb290ZXIgcHJvcGVydHlcclxuICAgICAgICBuZXdJdGVtcy5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluRm9vdGVyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYywgJ0RhdGEuQ3VzdG9tVWkuUGFyYW1ldGVycy5JbkZvb3RlcicsIGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKGluRm9vdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBjLmluRm9vdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3SXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIC8vIHJldHVybiBuZXdJdGVtcy5zb3J0KChhKTogbnVtYmVyID0+ICh0eXBlb2YgYSA9PSAnc3RyaW5nJyA/IDAgOiBhLklBbU1lbnUgPyAxIDogLTEpKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZ2V0SGVhZGVyTGF5b3V0KHZpZXcpOiBJSGVhZGVyTGF5b3V0IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJMYXlvdXQgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnSGVhZGVyTGF5b3V0JywgbnVsbCk7XHJcblxyXG4gICAgICAgIGlmIChoZWFkZXJMYXlvdXQpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5zZXRIZWFkZXJUaXRsZUFuZFN1YnRpdGxlQW5kQXZhdGFyKGhlYWRlckxheW91dCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHQ6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIGhlYWRlckxheW91dC5GYWNldExpc3QuTW9EYXRhTGlzdC5mb3JFYWNoKChmYWNldENvbHVtbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmYWNldENvbHVtbi5Db2x1bW5TZXR0aW5ncy4kRm9ybVBhbmVsU2V0dGluZy5EYXRhLk1vLlR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgbW86IGZhY2V0Q29sdW1uLkNvbHVtblNldHRpbmdzLiRGb3JtUGFuZWxTZXR0aW5nLkRhdGEuTW9cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaGVhZGVyTGF5b3V0LkZhY2V0TGlzdDIgPSB0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGVhZGVyTGF5b3V0O1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9wcmVwYXJlTGF5b3V0Q29tcG9uZW50KHZpZXc6IEZvcm1WaWV3U2V0dGluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdmlldykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxheW91dENvbXBvbmVudHMgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnRXh0cmFKc29uUHJvcC5Db21wb25lbnRzJywgbnVsbCk7XHJcbiAgICAgICAgaWYgKCFsYXlvdXRDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxheW91dENvbXBvbmVudHMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGF5b3V0Q29tcG9uZW50cy5mb3JFYWNoKChsYXlvdXRDb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbGF5b3V0U2V0dGluZyA9IEZpbmRMYXlvdXRTZXR0aW5nRnJvbUxheW91dDk0KHZpZXcuTGF5b3V0OTQsIGxheW91dENvbXBvbmVudC5MYXlvdXRUaXRsZSk7XHJcbiAgICAgICAgICAgIGlmIChsYXlvdXRTZXR0aW5nID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXlvdXRTZXR0aW5nLmNvbXBvbmVudCA9IHsgLi4ubGF5b3V0Q29tcG9uZW50IH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2dldElzU2ltcGxlRm9ybSh2aWV3OiBGb3JtVmlld1NldHRpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpc1NpbXBsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHZpZXcsICdFeHRyYUpzb25Qcm9wLklzU2ltcGxlJywgZmFsc2UpO1xyXG4gICAgICAgIHJldHVybiBpc1NpbXBsZTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZ2V0VG9vbGJhclZpc2liaWxpdHkoY29udGV4dCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghY29udGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGhpZGVUb29sYmFyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dCwgJ3Rvb2xiYXIuaGlkZVRvb2xiYXInLCBmYWxzZSk7XHJcbiAgICAgICAgaWYgKGhpZGVUb29sYmFyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBGb3JtU2V0dGluZ3MgfSA9IGNvbnRleHQuU2V0dGluZy5WaWV3O1xyXG4gICAgICAgIGlmIChGb3JtU2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2hvd1Rvb2xiYXIgPSBGb3JtU2V0dGluZ3MuU2hvd1Rvb2xiYXIgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdGZWF0dXJlcy5Ub29sYmFyJywgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZSA9IChmZWF0dXJlVG9vbGJhciAmJiBzaG93VG9vbGJhcikgIT09IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gdmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2dldE1heENvbnRlbnRXaWR0aCh2aWV3KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBtYXhDb250ZW50V2lkdGggPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnRXh0cmFKc29uUHJvcC5NYXhXaWR0aCcsICcwJyk7XHJcbiAgICAgICAgcmV0dXJuIG1heENvbnRlbnRXaWR0aDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfYWRkTGlzdGVuZXIoY29udGV4dCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghY29udGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQub24oe1xyXG4gICAgICAgICAgICBDbG9zZVNpZGVOYXZpZ2F0b3I6IHRoaXMuX2Nsb3NlU2lkZU5hdmlnYXRvci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBHcm91cEJSdWxlQ2hhbmdlZDogdGhpcy5fZ3JvdXBCUnVsZUNoYW5nZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgVGl0bGVDaGFuZ2VkOiB0aGlzLl90aXRsZUNoYW5nZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgV2l6YXJkTmV4dFN0ZXA6IHRoaXMuX3dpemFyZE5leHRTdGVwLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIFdpemFyZFByZXZpb3VzU3RlcDogdGhpcy5fd2l6YXJkUHJldmlvdXNTdGVwLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIERvTGF5b3V0OiB0aGlzLl9kb0xheW91dC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBNYXNrQ2hhbmdlZDogdGhpcy5fbWFza0NoYW5nZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgRm9yY2VDbG9zZTogdGhpcy5fZm9yY2VDbG9zZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBSZWZyZXNoOiB0aGlzLl9yZWZyZXNoLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250ZXh0LnRvb2xiYXIub24oe1xyXG4gICAgICAgICAgICBUb29sYmFySXRlbXNDaGFuZ2VkOiB0aGlzLl90b29sYmFySXRlbXNDaGFuZ2VkLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplKHRoaXMuX2NvbnRleHQpO1xyXG4gICAgICAgIC8vIHRoaXMuX3ByZXBhcmVWaWV3KHRoaXMuX2NvbnRleHQuU2V0dGluZy5WaWV3KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZm9yY2VDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9mb3JjZUNsb3NlU291cmNlLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfbWFza0NoYW5nZWQobWFzayk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX21hc2tTb3VyY2UubmV4dChtYXNrKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdG9vbGJhckl0ZW1zQ2hhbmdlZChpdGVtcyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5uZXh0KGl0ZW1zKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdGl0bGVDaGFuZ2VkKHRpdGxlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh0aXRsZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3dpemFyZE5leHRTdGVwKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3dpemFyZE5leHRTdGVwU291cmNlLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfd2l6YXJkUHJldmlvdXNTdGVwKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3dpemFyZFByZXZpb3VzU3RlcFNvdXJjZS5uZXh0KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2RvTGF5b3V0KGNvbnRleHQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2aWV3ID0gY29udGV4dC5TZXR0aW5nLlZpZXc7XHJcbiAgICAgICAgdGhpcy5fdmlld1NvdXJjZS5uZXh0KHZpZXcpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9jbG9zZVNpZGVOYXZpZ2F0b3IoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2lkZWJhclN0YXRlJC5uZXh0KCdjbG9zZScpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9ncm91cEJSdWxlQ2hhbmdlZChncm91cEl0ZW06IExheW91dFNldHRpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9ncm91cEJSdWxlU291cmNlLm5leHQoZ3JvdXBJdGVtKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcHJlcGFyZUNvbnRleHQoY29udGV4dCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZExpc3RlbmVyKGNvbnRleHQpO1xyXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemUoY29udGV4dCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB9XHJcbn1cclxuIl19