tango-app-ui-manage-settings 3.7.7 → 3.7.8
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.
|
@@ -99,6 +99,7 @@ export class DashboardConfigurationComponent {
|
|
|
99
99
|
isNormalized: [],
|
|
100
100
|
isPasserByData: [],
|
|
101
101
|
isFootfallDirectory: [false],
|
|
102
|
+
isFootfallDirectoryonlyTango: [false],
|
|
102
103
|
isVMS: [false],
|
|
103
104
|
isFootfallDirectoryAudit: [false],
|
|
104
105
|
isFootfallDirectoryLimit: [false],
|
|
@@ -250,10 +251,10 @@ export class DashboardConfigurationComponent {
|
|
|
250
251
|
}
|
|
251
252
|
}
|
|
252
253
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardConfigurationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ClientApiService }, { token: i3.GlobalStateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
253
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardConfigurationComponent, selector: "lib-dashboard-configuration", ngImport: i0, template: "<form [formGroup]=\"featureConfigurationForm\">\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.Global_Configuration_isEdit\" >\r\n <div *ngIf=\"featureConfigurationForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || featureConfigurationForm.get('updateFeatureConfig')?.value === true\">\r\n <button\r\n (click)=\"toggleForm();featureConfigurationForm.disabled ? featureConfigurationForm.enable() : featureConfigurationForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n </ng-container>\r\n\r\n <div class=\"col-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Excluded Area</div>\r\n <div class=\"sub-text\">Choose if you want to view Excluded Area </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isExcludedArea\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isExcludedArea\">\r\n <label class=\"form-check-label toggle-label\" for=\"isExludedArea\"> Show Excluded Area\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Passer-by data</div>\r\n <div class=\"sub-text\">Choose if you want to view Passerby data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isPasserByData\" class=\"form-check-input\" type=\"checkbox\" id=\"isPasserByData\">\r\n <label class=\"form-check-label toggle-label\" for=\"isPasserByData\"> Show Passer-by data\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Normalized data during downtime</div>\r\n <div class=\"sub-text\">Choose if you want to view normalized data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isNormalized\" class=\"form-check-input\" type=\"checkbox\" id=\"isNormalized\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNormalized\"> Show Normalized data\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Billing </div>\r\n <div class=\"sub-text\">Choose if you want to disable Billing</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isbillingDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isbillingDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isbillingDisabled\"> Disable Billing\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Blurring</div>\r\n <div class=\"sub-text\">Choose if you want to blur the Camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraDisabled\"> Enable Blurring\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Settings</div>\r\n <div class=\"sub-text\">Choose if the you want to hide the camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraEdit\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraEdit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraEdit\"> Disable Camera \r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">NOB Status</div>\r\n <div class=\"sub-text\">Choose if the clients are updating NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNOB\" (change)=\"nobDirectory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNOB\">Enable NOB\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Zone-wise NOB Count</div>\r\n <div class=\"sub-text\">Choose if the clients are updating Zone-wise NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isZonewiseNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isZonewiseNOB\">\r\n <label class=\"form-check-label toggle-label\" for=\"isZonewiseNOB\">Enable\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">SSO Status</div>\r\n <div class=\"sub-text\">Choose if you want to restrict login to Microsoft and Google accounts </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"loginSSO\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"loginSSO\">\r\n <label class=\"form-check-label toggle-label\" for=\"loginSSO\">Enable SSO\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-9 col-xl-9 col-xxl-9\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Footfall Directory</div>\r\n <div class=\"sub-text\">Choose if you want to view Footfall directory </div>\r\n </ng-container>\r\n <!-- <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectory\" \r\n value=\"isFootfallDirectory\" \r\n [checked]=\"selectedOption === 'isFootfallDirectory'\"\r\n (change)=\"onSelectionChange('isFootfallDirectory')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label\" for=\"isFootfallDirectory\">\r\n Show Full\r\n </label>\r\n </div> -->\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <!-- <div class=\"col-md-4 mt-4 px-1\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\"> Enable \r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <!-- VMS enable part -->\r\n <!-- <div class=\"col-md-4 mt-4 px-1\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isVMS\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\"> Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryLimit\" \r\n value=\"isFootfallDirectoryLimit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryAudit\" \r\n value=\"isFootfallDirectoryAudit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <div class=\"d-flex align-items-center flex-wrap mt-4\">\r\n <!-- Enable -->\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\">\r\n Enable\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Enable Ticket Flow -->\r\n <div class=\"me-4\" *ngIf=\"featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\" id=\"isVMS\"\r\n [disabled]=\"featureConfigurationForm.disabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\">\r\n Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Show Few -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryLimit\"\r\n value=\"isFootfallDirectoryLimit\" [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n \r\n <!-- Only Audit -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryAudit\"\r\n value=\"isFootfallDirectoryAudit\" [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n \r\n </div>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Show Few\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Only Audit\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div> -->\r\n \r\n </div>\r\n \r\n <div class=\"row mb-5\">\r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Analyze </div>\r\n <div class=\"sub-text\">To enable new dashboard</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNewDashboard\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewDashboard\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewDashboard\"> Enable Analyze\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"col-md-9\"> -->\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewTraffic\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewTraffic\" [disabled]=\"true\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewTraffic\">Traffic\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZone\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewzone\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewzone\">Zone\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZoneV2\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewZoneV2\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewZoneV2\">Zone v2\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isNewReports\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewReports\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewReports\">Reports\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isTrax\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isTrax\">\r\n <label class=\"form-check-label toggle-label\" for=\"isTrax\">Trax\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isRevops\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isRevops\">\r\n <label class=\"form-check-label toggle-label\" for=\"isRevops\">Revops\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManager\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManager\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManager\">AI Manager\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManagerAccessControl\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManagerAccessControl\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManagerAccessControl\">Access Control\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isControlCenter\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isControlCenter\">\r\n <label class=\"form-check-label toggle-label\" for=\"isControlCenter\">Control Center\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n <div class=\"row my-3\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <div class=\"sub-header\">Stream Type</div>\r\n <div class=\"sub-text\">Choose if the Edge App Configurations</div> \r\n <select class=\"form-select h-35px form-select-sm my-3 selct\" placeholder=\"Status\" formControlName=\"streamBy\"\r\n aria-label=\".form-select-sm example\">\r\n <option value=\"Edge\">Edge App</option>\r\n <option value=\"Rtsp\">RTSP</option>\r\n </select>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div>\r\n </div> -->\r\n </div>\r\n\r\n <div *ngIf=\"featureConfigurationForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n</form>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}select[disabled],textarea[disabled]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.sub-text{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.toggle-label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.mock-input{background-color:#f9fafb!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
254
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardConfigurationComponent, selector: "lib-dashboard-configuration", ngImport: i0, template: "<form [formGroup]=\"featureConfigurationForm\">\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.Global_Configuration_isEdit\" >\r\n <div *ngIf=\"featureConfigurationForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || featureConfigurationForm.get('updateFeatureConfig')?.value === true\">\r\n <button\r\n (click)=\"toggleForm();featureConfigurationForm.disabled ? featureConfigurationForm.enable() : featureConfigurationForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n </ng-container>\r\n\r\n <div class=\"col-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Excluded Area</div>\r\n <div class=\"sub-text\">Choose if you want to view Excluded Area </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isExcludedArea\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isExcludedArea\">\r\n <label class=\"form-check-label toggle-label\" for=\"isExludedArea\"> Show Excluded Area\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Passer-by data</div>\r\n <div class=\"sub-text\">Choose if you want to view Passerby data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isPasserByData\" class=\"form-check-input\" type=\"checkbox\" id=\"isPasserByData\">\r\n <label class=\"form-check-label toggle-label\" for=\"isPasserByData\"> Show Passer-by data\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Normalized data during downtime</div>\r\n <div class=\"sub-text\">Choose if you want to view normalized data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isNormalized\" class=\"form-check-input\" type=\"checkbox\" id=\"isNormalized\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNormalized\"> Show Normalized data\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Billing </div>\r\n <div class=\"sub-text\">Choose if you want to disable Billing</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isbillingDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isbillingDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isbillingDisabled\"> Disable Billing\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Blurring</div>\r\n <div class=\"sub-text\">Choose if you want to blur the Camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraDisabled\"> Enable Blurring\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Settings</div>\r\n <div class=\"sub-text\">Choose if the you want to hide the camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraEdit\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraEdit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraEdit\"> Disable Camera \r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">NOB Status</div>\r\n <div class=\"sub-text\">Choose if the clients are updating NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNOB\" (change)=\"nobDirectory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNOB\">Enable NOB\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Zone-wise NOB Count</div>\r\n <div class=\"sub-text\">Choose if the clients are updating Zone-wise NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isZonewiseNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isZonewiseNOB\">\r\n <label class=\"form-check-label toggle-label\" for=\"isZonewiseNOB\">Enable\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">SSO Status</div>\r\n <div class=\"sub-text\">Choose if you want to restrict login to Microsoft and Google accounts </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"loginSSO\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"loginSSO\">\r\n <label class=\"form-check-label toggle-label\" for=\"loginSSO\">Enable SSO\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-9 col-xl-9 col-xxl-9\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Footfall Directory</div>\r\n <div class=\"sub-text\">Choose if you want to view Footfall directory </div>\r\n </ng-container>\r\n <!-- <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectory\" \r\n value=\"isFootfallDirectory\" \r\n [checked]=\"selectedOption === 'isFootfallDirectory'\"\r\n (change)=\"onSelectionChange('isFootfallDirectory')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label\" for=\"isFootfallDirectory\">\r\n Show Full\r\n </label>\r\n </div> -->\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <!-- <div class=\"col-md-4 mt-4 px-1\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\"> Enable \r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <!-- VMS enable part -->\r\n <!-- <div class=\"col-md-4 mt-4 px-1\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isVMS\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\"> Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryLimit\" \r\n value=\"isFootfallDirectoryLimit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryAudit\" \r\n value=\"isFootfallDirectoryAudit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <div class=\"d-flex align-items-center flex-wrap mt-4\">\r\n <!-- Enable -->\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\">\r\n Enable\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectoryonlyTango\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectoryonlyTango\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryonlyTango\">\r\n Only Tango\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Enable Ticket Flow -->\r\n <div class=\"me-4\" *ngIf=\"featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\" id=\"isVMS\"\r\n [disabled]=\"featureConfigurationForm.disabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\">\r\n Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Show Few -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryLimit\"\r\n value=\"isFootfallDirectoryLimit\" [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n \r\n <!-- Only Audit -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryAudit\"\r\n value=\"isFootfallDirectoryAudit\" [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n \r\n </div>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Show Few\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Only Audit\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div> -->\r\n \r\n </div>\r\n \r\n <div class=\"row mb-5\">\r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Analyze </div>\r\n <div class=\"sub-text\">To enable new dashboard</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNewDashboard\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewDashboard\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewDashboard\"> Enable Analyze\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"col-md-9\"> -->\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewTraffic\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewTraffic\" [disabled]=\"true\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewTraffic\">Traffic\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZone\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewzone\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewzone\">Zone\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZoneV2\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewZoneV2\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewZoneV2\">Zone v2\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isNewReports\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewReports\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewReports\">Reports\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isTrax\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isTrax\">\r\n <label class=\"form-check-label toggle-label\" for=\"isTrax\">Trax\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isRevops\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isRevops\">\r\n <label class=\"form-check-label toggle-label\" for=\"isRevops\">Revops\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManager\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManager\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManager\">AI Manager\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManagerAccessControl\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManagerAccessControl\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManagerAccessControl\">Access Control\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isControlCenter\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isControlCenter\">\r\n <label class=\"form-check-label toggle-label\" for=\"isControlCenter\">Control Center\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n <div class=\"row my-3\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <div class=\"sub-header\">Stream Type</div>\r\n <div class=\"sub-text\">Choose if the Edge App Configurations</div> \r\n <select class=\"form-select h-35px form-select-sm my-3 selct\" placeholder=\"Status\" formControlName=\"streamBy\"\r\n aria-label=\".form-select-sm example\">\r\n <option value=\"Edge\">Edge App</option>\r\n <option value=\"Rtsp\">RTSP</option>\r\n </select>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div>\r\n </div> -->\r\n </div>\r\n\r\n <div *ngIf=\"featureConfigurationForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n</form>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}select[disabled],textarea[disabled]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.sub-text{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.toggle-label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.mock-input{background-color:#f9fafb!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
254
255
|
}
|
|
255
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardConfigurationComponent, decorators: [{
|
|
256
257
|
type: Component,
|
|
257
|
-
args: [{ selector: 'lib-dashboard-configuration', template: "<form [formGroup]=\"featureConfigurationForm\">\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.Global_Configuration_isEdit\" >\r\n <div *ngIf=\"featureConfigurationForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || featureConfigurationForm.get('updateFeatureConfig')?.value === true\">\r\n <button\r\n (click)=\"toggleForm();featureConfigurationForm.disabled ? featureConfigurationForm.enable() : featureConfigurationForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n </ng-container>\r\n\r\n <div class=\"col-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Excluded Area</div>\r\n <div class=\"sub-text\">Choose if you want to view Excluded Area </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isExcludedArea\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isExcludedArea\">\r\n <label class=\"form-check-label toggle-label\" for=\"isExludedArea\"> Show Excluded Area\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Passer-by data</div>\r\n <div class=\"sub-text\">Choose if you want to view Passerby data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isPasserByData\" class=\"form-check-input\" type=\"checkbox\" id=\"isPasserByData\">\r\n <label class=\"form-check-label toggle-label\" for=\"isPasserByData\"> Show Passer-by data\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Normalized data during downtime</div>\r\n <div class=\"sub-text\">Choose if you want to view normalized data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isNormalized\" class=\"form-check-input\" type=\"checkbox\" id=\"isNormalized\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNormalized\"> Show Normalized data\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Billing </div>\r\n <div class=\"sub-text\">Choose if you want to disable Billing</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isbillingDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isbillingDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isbillingDisabled\"> Disable Billing\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Blurring</div>\r\n <div class=\"sub-text\">Choose if you want to blur the Camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraDisabled\"> Enable Blurring\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Settings</div>\r\n <div class=\"sub-text\">Choose if the you want to hide the camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraEdit\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraEdit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraEdit\"> Disable Camera \r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">NOB Status</div>\r\n <div class=\"sub-text\">Choose if the clients are updating NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNOB\" (change)=\"nobDirectory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNOB\">Enable NOB\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Zone-wise NOB Count</div>\r\n <div class=\"sub-text\">Choose if the clients are updating Zone-wise NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isZonewiseNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isZonewiseNOB\">\r\n <label class=\"form-check-label toggle-label\" for=\"isZonewiseNOB\">Enable\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">SSO Status</div>\r\n <div class=\"sub-text\">Choose if you want to restrict login to Microsoft and Google accounts </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"loginSSO\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"loginSSO\">\r\n <label class=\"form-check-label toggle-label\" for=\"loginSSO\">Enable SSO\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-9 col-xl-9 col-xxl-9\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Footfall Directory</div>\r\n <div class=\"sub-text\">Choose if you want to view Footfall directory </div>\r\n </ng-container>\r\n <!-- <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectory\" \r\n value=\"isFootfallDirectory\" \r\n [checked]=\"selectedOption === 'isFootfallDirectory'\"\r\n (change)=\"onSelectionChange('isFootfallDirectory')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label\" for=\"isFootfallDirectory\">\r\n Show Full\r\n </label>\r\n </div> -->\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <!-- <div class=\"col-md-4 mt-4 px-1\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\"> Enable \r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <!-- VMS enable part -->\r\n <!-- <div class=\"col-md-4 mt-4 px-1\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isVMS\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\"> Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryLimit\" \r\n value=\"isFootfallDirectoryLimit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryAudit\" \r\n value=\"isFootfallDirectoryAudit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <div class=\"d-flex align-items-center flex-wrap mt-4\">\r\n <!-- Enable -->\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\">\r\n Enable\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Enable Ticket Flow -->\r\n <div class=\"me-4\" *ngIf=\"featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\" id=\"isVMS\"\r\n [disabled]=\"featureConfigurationForm.disabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\">\r\n Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Show Few -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryLimit\"\r\n value=\"isFootfallDirectoryLimit\" [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n \r\n <!-- Only Audit -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryAudit\"\r\n value=\"isFootfallDirectoryAudit\" [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n \r\n </div>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Show Few\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Only Audit\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div> -->\r\n \r\n </div>\r\n \r\n <div class=\"row mb-5\">\r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Analyze </div>\r\n <div class=\"sub-text\">To enable new dashboard</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNewDashboard\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewDashboard\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewDashboard\"> Enable Analyze\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"col-md-9\"> -->\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewTraffic\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewTraffic\" [disabled]=\"true\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewTraffic\">Traffic\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZone\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewzone\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewzone\">Zone\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZoneV2\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewZoneV2\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewZoneV2\">Zone v2\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isNewReports\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewReports\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewReports\">Reports\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isTrax\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isTrax\">\r\n <label class=\"form-check-label toggle-label\" for=\"isTrax\">Trax\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isRevops\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isRevops\">\r\n <label class=\"form-check-label toggle-label\" for=\"isRevops\">Revops\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManager\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManager\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManager\">AI Manager\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManagerAccessControl\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManagerAccessControl\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManagerAccessControl\">Access Control\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isControlCenter\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isControlCenter\">\r\n <label class=\"form-check-label toggle-label\" for=\"isControlCenter\">Control Center\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n <div class=\"row my-3\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <div class=\"sub-header\">Stream Type</div>\r\n <div class=\"sub-text\">Choose if the Edge App Configurations</div> \r\n <select class=\"form-select h-35px form-select-sm my-3 selct\" placeholder=\"Status\" formControlName=\"streamBy\"\r\n aria-label=\".form-select-sm example\">\r\n <option value=\"Edge\">Edge App</option>\r\n <option value=\"Rtsp\">RTSP</option>\r\n </select>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div>\r\n </div> -->\r\n </div>\r\n\r\n <div *ngIf=\"featureConfigurationForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n</form>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}select[disabled],textarea[disabled]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.sub-text{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.toggle-label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.mock-input{background-color:#f9fafb!important}\n"] }]
|
|
258
|
+
args: [{ selector: 'lib-dashboard-configuration', template: "<form [formGroup]=\"featureConfigurationForm\">\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.Global_Configuration_isEdit\" >\r\n <div *ngIf=\"featureConfigurationForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || featureConfigurationForm.get('updateFeatureConfig')?.value === true\">\r\n <button\r\n (click)=\"toggleForm();featureConfigurationForm.disabled ? featureConfigurationForm.enable() : featureConfigurationForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n </ng-container>\r\n\r\n <div class=\"col-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Excluded Area</div>\r\n <div class=\"sub-text\">Choose if you want to view Excluded Area </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isExcludedArea\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isExcludedArea\">\r\n <label class=\"form-check-label toggle-label\" for=\"isExludedArea\"> Show Excluded Area\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Passer-by data</div>\r\n <div class=\"sub-text\">Choose if you want to view Passerby data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isPasserByData\" class=\"form-check-input\" type=\"checkbox\" id=\"isPasserByData\">\r\n <label class=\"form-check-label toggle-label\" for=\"isPasserByData\"> Show Passer-by data\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Normalized data during downtime</div>\r\n <div class=\"sub-text\">Choose if you want to view normalized data. </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isNormalized\" class=\"form-check-input\" type=\"checkbox\" id=\"isNormalized\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNormalized\"> Show Normalized data\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Billing </div>\r\n <div class=\"sub-text\">Choose if you want to disable Billing</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isbillingDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isbillingDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isbillingDisabled\"> Disable Billing\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Blurring</div>\r\n <div class=\"sub-text\">Choose if you want to blur the Camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraDisabled\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraDisabled\"> Enable Blurring\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Camera Settings</div>\r\n <div class=\"sub-text\">Choose if the you want to hide the camera</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch my-6\">\r\n <input formControlName=\"isCameraEdit\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isCameraEdit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isCameraEdit\"> Disable Camera \r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">NOB Status</div>\r\n <div class=\"sub-text\">Choose if the clients are updating NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNOB\" (change)=\"nobDirectory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNOB\">Enable NOB\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">Zone-wise NOB Count</div>\r\n <div class=\"sub-text\">Choose if the clients are updating Zone-wise NOB </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isZonewiseNOB\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isZonewiseNOB\">\r\n <label class=\"form-check-label toggle-label\" for=\"isZonewiseNOB\">Enable\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"sub-header\">SSO Status</div>\r\n <div class=\"sub-text\">Choose if you want to restrict login to Microsoft and Google accounts </div> \r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"loginSSO\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"loginSSO\">\r\n <label class=\"form-check-label toggle-label\" for=\"loginSSO\">Enable SSO\r\n \r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-9 col-xl-9 col-xxl-9\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Footfall Directory</div>\r\n <div class=\"sub-text\">Choose if you want to view Footfall directory </div>\r\n </ng-container>\r\n <!-- <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectory\" \r\n value=\"isFootfallDirectory\" \r\n [checked]=\"selectedOption === 'isFootfallDirectory'\"\r\n (change)=\"onSelectionChange('isFootfallDirectory')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label\" for=\"isFootfallDirectory\">\r\n Show Full\r\n </label>\r\n </div> -->\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <!-- <div class=\"col-md-4 mt-4 px-1\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\"> Enable \r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <!-- VMS enable part -->\r\n <!-- <div class=\"col-md-4 mt-4 px-1\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isVMS\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\"> Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryLimit\" \r\n value=\"isFootfallDirectoryLimit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-4 form-check mt-4 px-1\" *ngIf=\"disValue\">\r\n <div class=\"form-check\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"radio\" \r\n name=\"exampleRadios\" \r\n id=\"isFootfallDirectoryAudit\" \r\n value=\"isFootfallDirectoryAudit\" \r\n [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n </div> -->\r\n \r\n <div class=\"d-flex align-items-center flex-wrap mt-4\">\r\n <!-- Enable -->\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectory\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectory\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectory\">\r\n Enable\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"me-4\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isFootfallDirectoryonlyTango\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isFootfallDirectoryonlyTango\" (change)=\"directory($event)\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryonlyTango\">\r\n Only Tango\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Enable Ticket Flow -->\r\n <div class=\"me-4\" *ngIf=\"featureConfigurationForm.get('isFootfallDirectory')?.value\">\r\n <div class=\"form-check form-switch\">\r\n <input formControlName=\"isVMS\" class=\"form-check-input\" type=\"checkbox\" id=\"isVMS\"\r\n [disabled]=\"featureConfigurationForm.disabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isVMS\">\r\n Enable Ticket Flow\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <!-- Show Few -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryLimit\"\r\n value=\"isFootfallDirectoryLimit\" [checked]=\"selectedOption === 'isFootfallDirectoryLimit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryLimit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryLimit\">\r\n Show Few\r\n </label>\r\n </div>\r\n \r\n <!-- Only Audit -->\r\n <div class=\"me-4\" *ngIf=\"disValue\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"isFootfallDirectoryAudit\"\r\n value=\"isFootfallDirectoryAudit\" [checked]=\"selectedOption === 'isFootfallDirectoryAudit'\"\r\n (change)=\"onSelectionChange('isFootfallDirectoryAudit')\" [disabled]=\"isDisabled\">\r\n <label class=\"form-check-label toggle-label\" for=\"isFootfallDirectoryAudit\">\r\n Only Audit\r\n </label>\r\n </div>\r\n \r\n </div>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Show Few\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-2 col-xl-2 col-xxl-2\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" >\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isFootfallAuditStores\" class=\"form-check-input\" type=\"radio\"\r\n id=\"isAudit\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAudit\"> Only Audit\r\n </label>\r\n </div> \r\n </ng-container>\r\n </div> -->\r\n \r\n </div>\r\n \r\n <div class=\"row mb-5\">\r\n \r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"sub-header\">Analyze </div>\r\n <div class=\"sub-text\">To enable new dashboard</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-5\">\r\n <input formControlName=\"isNewDashboard\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewDashboard\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewDashboard\"> Enable Analyze\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"col-md-9\"> -->\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewTraffic\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewTraffic\" [disabled]=\"true\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewTraffic\">Traffic\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZone\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewzone\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewzone\">Zone\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-18\">\r\n <input formControlName=\"isNewZoneV2\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewZoneV2\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewZoneV2\">Zone v2\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isNewReports\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isNewReports\">\r\n <label class=\"form-check-label toggle-label\" for=\"isNewReports\">Reports\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isTrax\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isTrax\">\r\n <label class=\"form-check-label toggle-label\" for=\"isTrax\">Trax\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isRevops\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isRevops\">\r\n <label class=\"form-check-label toggle-label\" for=\"isRevops\">Revops\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManager\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManager\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManager\">AI Manager\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isAIManagerAccessControl\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isAIManagerAccessControl\">\r\n <label class=\"form-check-label toggle-label\" for=\"isAIManagerAccessControl\">Access Control\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <div class=\"form-check form-switch mt-10\">\r\n <input formControlName=\"isControlCenter\" class=\"form-check-input\" type=\"checkbox\"\r\n id=\"isControlCenter\">\r\n <label class=\"form-check-label toggle-label\" for=\"isControlCenter\">Control Center\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n <div class=\"row my-3\">\r\n <div class=\"col-lg-3 col-xl-3 col-xxl-3\">\r\n <div class=\"sub-header\">Stream Type</div>\r\n <div class=\"sub-text\">Choose if the Edge App Configurations</div> \r\n <select class=\"form-select h-35px form-select-sm my-3 selct\" placeholder=\"Status\" formControlName=\"streamBy\"\r\n aria-label=\".form-select-sm example\">\r\n <option value=\"Edge\">Edge App</option>\r\n <option value=\"Rtsp\">RTSP</option>\r\n </select>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div>\r\n </div> -->\r\n </div>\r\n\r\n <div *ngIf=\"featureConfigurationForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n</form>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}select[disabled],textarea[disabled]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.sub-text{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.toggle-label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.mock-input{background-color:#f9fafb!important}\n"] }]
|
|
258
259
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ClientApiService }, { type: i3.GlobalStateService }, { type: i0.ChangeDetectorRef }] });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBUXZCLE1BQU0sT0FBTywrQkFBK0I7SUErRHRCO0lBQXlCO0lBQXFDO0lBQ3hFO0lBL0RWLHdCQUF3QixDQUFXO0lBQ25DLDBCQUEwQixDQUFTO0lBQ25DLHdCQUF3QixDQUFTO0lBQ2hCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLENBQVU7SUFHdEIsZUFBZSxH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OzRGRHJhTSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCAgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XHJcbmltcG9ydCB0aW1lem9uZSBmcm9tIFwiZGF5anMvcGx1Z2luL3RpbWV6b25lXCI7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZGFzaGJvYXJkLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGZlYXR1cmVDb25maWd1cmF0aW9uRm9ybTogRm9ybUdyb3VwXHJcbiAgbWlzc2VkT3Bwb3J0dW5pdHlTdGFydFRpbWU6IHN0cmluZztcclxuICBtaXNzZWRPcHBvcnR1bml0eUVuZFRpbWU6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGlzVk1TRW5hYmxlZDogYm9vbGVhbjtcclxuXHJcblxyXG4gIGluZnJhQWxlcnRWYWx1ZSA9IFtcclxuICAgIHsgdmFsdWU6IDEsIGxhYmVsOiBcIjEgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDIsIGxhYmVsOiBcIjIgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDMsIGxhYmVsOiBcIjMgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDQsIGxhYmVsOiBcIjQgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDUsIGxhYmVsOiBcIjUgaHJzXCIgfVxyXG4gIF1cclxuXHJcbiAgaW5mcmFBbGVydENvbmRpdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiPFwiLCBsYWJlbDogXCI8XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPlwiLCBsYWJlbDogXCI+XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPCA9XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPT5cIiwgbGFiZWw6IFwiPSA+XCIgfSxcclxuICBdXHJcblxyXG4gIGJvdW5jZWRMaW1pdENvbmRpdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPCA9XCIgfVxyXG4gIF1cclxuXHJcbiAgYm91bmNlZExpbWl0VmFsdWUgPSBbXHJcbiAgICB7IHZhbHVlOiAxLCBsYWJlbDogXCIxIG1pblwiIH0sXHJcbiAgICB7IHZhbHVlOiAyLCBsYWJlbDogXCIyIG1pbnNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMywgbGFiZWw6IFwiMyBtaW5zXCIgfSxcclxuICBdXHJcblxyXG4gIGNvbnZlcnNpb25Db25kaXRpb24gPSBbXHJcbiAgICB7IHZhbHVlOiBcIj5cIiwgbGFiZWw6IFwiPlwiIH1cclxuICBdXHJcblxyXG4gIGNvbnZlcnNpb25WYWx1ZSA9IFtcclxuICAgIHsgdmFsdWU6IDUsIGxhYmVsOiBcIjUgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxMCwgbGFiZWw6IFwiMTAgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxNSwgbGFiZWw6IFwiMTUgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAyMCwgbGFiZWw6IFwiMjAgbWluc1wiIH1cclxuICBdXHJcblxyXG4gIGJpbGxhYmxlQ2FsY3VsYXRpb24gPSBbXHJcbiAgICB7IHZhbHVlOiBcImZvb3RmYWxsLWNvdW50XCIsIGxhYmVsOiBcIkZvb3RmYWxsIENvdW50XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6IFwiRW5nYWdlcnMgQ291bnRcIiB9LFxyXG4gIF1cclxuXHJcbiAgbWlzc2VkT3Bwb3J0dW5pdHlDYWxjdWxhdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiZW5nYWdlcnMtY29udmVyc2lvblwiLCBsYWJlbDogXCJFbmdhZ2VycyAtIENvbnZlcnNpb25cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCJncm91cC1jb252ZXJzaW9uXCIsIGxhYmVsOiBcIkJpbGxhYmxlIEVudGl0aWVzIC0gQ29udmVyc2lvblwiIH0sXHJcbiAgXVxyXG5cclxuICBjb252ZXJzaW9uQ2FsY3VsYXRpb24gPSBbXHJcbiAgICB7dmFsdWU6XCJmb290ZmFsbC1jb3VudFwiLCBsYWJlbDpcIkZvb3RmYWxsIENvdW50XCJ9LFxyXG4gICAge3ZhbHVlOlwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6XCJFbmdhZ2VycyBDb3VudFwifSxcclxuICAgIHt2YWx1ZTpcImJpbGxhYmxlLWVudGl0aWVzXCIsIGxhYmVsOlwiQmlsbGFibGUgRW50aXRpZXNcIn0sXHJcbiAgXVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFwaVNlcnZpY2U6IENsaWVudEFwaVNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDpDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0Rm9ybSgpXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICBpZiAocmVzLnR5cGUgPT09ICdpbnB1dCcgJiYgcmVzLmZvcm0gPT09ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nKSB7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoRm9ybShyZXMudmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgb3BlbjogW10sXHJcbiAgICAgIGNsb3NlOiBbXSxcclxuICAgICAgaW5mcmFBbGVydENvbmRpdGlvbjogW10sXHJcbiAgICAgIGluZnJhQWxlcnRWYWx1ZTogW10sXHJcbiAgICAgIGJvdW5jZWRMaW1pdENvbmRpdGlvbjogW10sXHJcbiAgICAgIGJvdW5jZWRMaW1pdFZhbHVlOiBbXSxcclxuICAgICAgY29udmVyc2lvbkNvbmRpdGlvbjogW10sXHJcbiAgICAgIGNvbnZlcnNpb25WYWx1ZTogW10sXHJcbiAgICAgIGJpbGxhYmxlQ2FsY3VsYXRpb246IFtdLFxyXG4gICAgICBtaXNzZWRPcHBvcnR1bml0eUNhbGN1bGF0aW9uOiBbXSxcclxuICAgICAgY29udmVyc2lvbkNhbGN1bGF0aW9uOiBbXSxcclxuICAgICAgaXNOb3JtYWxpemVkOiBbXSxcclxuICAgICAgaXNQYXNzZXJCeURhdGE6IFtdLFxyXG4gICAgICBpc0Zvb3RmYWxsRGlyZWN0b3J5OiBbZmFsc2VdLFxyXG4gICAgICBpc1ZNUzogW2ZhbHNlXSxcclxuICAgICAgaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0OltmYWxzZV0sXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdDpbZmFsc2VdLFxyXG4gICAgICBpc0V4Y2x1ZGVkQXJlYTpbXSxcclxuICAgICAgaXNDYW1lcmFEaXNhYmxlZDogW2ZhbHNlXSxcclxuICAgICAgaXNiaWxsaW5nRGlzYWJsZWQ6W2ZhbHNlXSxcclxuICAgICAgaXNOZXdEYXNoYm9hcmQ6W2ZhbHNlXSxcclxuICAgICAgdXBkYXRlRmVhdHVyZUNvbmZpZzpbXSxcclxuICAgICAgaXNGb290ZmFsbEF1ZGl0U3RvcmVzOiBbXSxcclxuICAgICAgaXNOZXdUcmFmZmljOiBbeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBpc05ld1pvbmU6IFtmYWxzZV0sXHJcbiAgICAgIGlzTmV3Wm9uZVYyOiBbZmFsc2VdLFxyXG4gICAgICBpc05PQjogW2ZhbHNlXSxcclxuICAgICAgaXNab25ld2lzZU5PQjpbZmFsc2VdLFxyXG4gICAgICBsb2dpblNTTzogW2ZhbHNlXSxcclxuICAgICAgaXNOZXdSZXBvcnRzOiBbZmFsc2VdLFxyXG4gICAgICBpc1RyYXg6W2ZhbHNlXSxcclxuICAgICAgaXNSZXZvcHM6W2ZhbHNlXSxcclxuICAgICAgaXNDb250cm9sQ2VudGVyOltmYWxzZV0sXHJcbiAgICAgIHN0cmVhbUJ5OltdLFxyXG4gICAgICBpc0NhbWVyYUVkaXQ6W2ZhbHNlXSxcclxuICAgICAgaXNBSU1hbmFnZXI6W2ZhbHNlXSxcclxuICAgICAgaXNBSU1hbmFnZXJBY2Nlc3NDb250cm9sOltmYWxzZV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZGlzYWJsZSgpXHJcblxyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdib3VuY2VkTGltaXRWYWx1ZScpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZSkgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5ib3VuY2VkQ29uZmlnVGltZUNoYW5nZShlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2NvbnZlcnNpb25WYWx1ZScpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZSkge1xyXG4gICAgICAgIHRoaXMuY29udmVyc2lvbkNvbmZpZ1RpbWVDaGFuZ2UoZSlcclxuICAgICAgICAvLyB0aGlzLnNldENvbnZlcnNpb25DYWxjdWxhdGlvbihlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0ZWRPcHRpb246IGFueSA9ICcnO1xyXG4gIHBhdGNoRm9ybShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICAuLi5kYXRhXHJcbiAgICAgIH1cclxuICAgIClcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuZGlzVmFsdWUgPSAhIWRhdGEuaXNGb290ZmFsbERpcmVjdG9yeTtcclxuICAgaWYgKGRhdGEuaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSAnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0JztcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5pc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9ICdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnO1xyXG4gICAgfVxyXG4gIFxyXG4gIH1cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIG9wdGlvbiBhbmQgZm9ybSB2YWx1ZXNcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0OiB2YWx1ZSA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCcsXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdDogdmFsdWUgPT09ICdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGJvdW5jZWRDb25maWdUaW1lQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcclxuXHJcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCI+MVwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCI+MlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgdGhpcy5taXNzZWRPcHBvcnR1bml0eVN0YXJ0VGltZSA9IFwiPjNcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb252ZXJzaW9uQ29uZmlnVGltZUNoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgIGNhc2UgNTpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5RW5kVGltZSA9ICc8PTUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDEwOlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MTAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE1OlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MTUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDIwOlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDb252ZXJzaW9uQ2FsY3VsYXRpb24oY29udmVyc2lvblZhbDpudW1iZXIpe1xyXG4gICAgdGhpcy5jb252ZXJzaW9uQ2FsY3VsYXRpb24gPSBbXHJcbiAgICAgIHt2YWx1ZTpcImZvb3RmYWxsLWNvdW50XCIsIGxhYmVsOmAke2NvbnZlcnNpb25WYWx9IG1pbnMvRm9vdGZhbGwgQ291bnRgfSxcclxuICAgICAge3ZhbHVlOlwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6YCR7Y29udmVyc2lvblZhbH0gbWlucy9FbmdhZ2VycyBDb3VudGB9LFxyXG4gICAgICB7dmFsdWU6XCJiaWxsYWJsZS1lbnRpdGllc1wiLCBsYWJlbDpgJHtjb252ZXJzaW9uVmFsfSBtaW5zL0JpbGxhYmxlIEVudGl0aWVzYH0sXHJcbiAgICBdXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2NvbnZlcnNpb25DYWxjdWxhdGlvbicpPy5zZXRWYWx1ZSh0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybT8udmFsdWUuY29udmVyc2lvbkNhbGN1bGF0aW9uKSBcclxuICB9XHJcbiAgZGlzVmFsdWUgPWZhbHNlO1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICB0b2dnbGVGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNWYWx1ZSA9dHJ1ZTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9ICF0aGlzLmlzRGlzYWJsZWQ7ICBcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogbnVsbCwgdHlwZTogJ2NhbmNlbCcsIGZvcm06ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nIH0pXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5kaXNhYmxlKClcclxuICAgIHRoaXMudG9nZ2xlRm9ybSgpO1xyXG4gICAgdGhpcy5kaXNWYWx1ZSA9ZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLm9wZW4gPSB0aGlzLmRheWpzKGAxOTkxLTAxLTAxICR7dGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUub3Blbn1gLCdZWVlZLU1NLUREIEhIOm1tJykuZm9ybWF0KFwiSEg6bW06c3NcIilcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLmNsb3NlID0gdGhpcy5kYXlqcyhgMTk5MS0wMS0wMSAke3RoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLmNsb3NlfWAsJ1lZWVktTU0tREQgSEg6bW0nKS5mb3JtYXQoXCJISDptbTpzc1wiKSAgICBcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlKVxyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUsIHR5cGU6ICdzdWJtaXQnLCBmb3JtOiAnZmVhdHVyZS1jb25maWd1cmF0aW9uJyB9KVxyXG4gIH1cclxuXHJcbiAgZGlyZWN0b3J5KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS52YWx1ZS5pc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXQgPWZhbHNlO1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUuaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0ID1mYWxzZTtcclxuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gIWlzQ2hlY2tlZDtcclxuICAgIGlmKHRoaXMuaXNEaXNhYmxlZCl7XHJcbiAgICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmdldCgnaXNWTVMnKT8uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gbnVsbDsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2lzVk1TJyk/LmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICAvLyAgIHZtcyhlOiBFdmVudCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgaXNDaGVja2VkID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhpc0NoZWNrZWQpO1xyXG4gIC8vICAgaWYoaXNDaGVja2VkKSB7IFxyXG4gIC8vICAgICB0aGlzLmlzVk1TRW5hYmxlZCA9dHJ1ZTtcclxuICAvLyAgICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdjb252ZXJzaW9uQ2FsY3VsYXRpb24nKT8uc2V0VmFsdWUodHJ1ZSk7XHJcbiAgLy8gICB9IGVsc2UgeyBcclxuICAvLyAgICAgdGhpcy5pc1ZNU0VuYWJsZWQgPSBmYWxzZTtcclxuICAvLyAgICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdjb252ZXJzaW9uQ2FsY3VsYXRpb24nKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxubm9iRGlyZWN0b3J5KGV2dDogYW55KSB7XHJcbiAgaWYgKGV2dC50YXJnZXQuY2hlY2tlZCA9PT0gZmFsc2UpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtXHJcbiAgICAgIC5nZXQoJ2lzWm9uZXdpc2VOT0InKVxyXG4gICAgICA/LnNldFZhbHVlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuXHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmZWF0dXJlQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lkdsb2JhbF9Db25maWd1cmF0aW9uX2lzRWRpdFwiID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGVkXCIgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgfHwgZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmdldCgndXBkYXRlRmVhdHVyZUNvbmZpZycpPy52YWx1ZSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGb3JtKCk7ZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGVkID8gZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmVuYWJsZSgpIDogZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NyAyLjQ5OTkzQzE0LjM4NTkgMi4yODEwNiAxNC42NDU3IDIuMTA3NDQgMTQuOTMxNyAxLjk4ODk5QzE1LjIxNzYgMS44NzA1NCAxNS41MjQxIDEuODA5NTcgMTUuODMzNyAxLjgwOTU3QzE2LjE0MzIgMS44MDk1NyAxNi40NDk3IDEuODcwNTQgMTYuNzM1NyAxLjk4ODk5QzE3LjAyMTYgMi4xMDc0NCAxNy4yODE1IDIuMjgxMDYgMTcuNTAwMyAyLjQ5OTkzQzE3LjcxOTIgMi43MTg4IDE3Ljg5MjggMi45Nzg2MyAxOC4wMTEzIDMuMjY0NkMxOC4xMjk3IDMuNTUwNTcgMTguMTkwNyAzLjg1NzA2IDE4LjE5MDcgNC4xNjY1OUMxOC4xOTA3IDQuNDc2MTIgMTguMTI5NyA0Ljc4MjYyIDE4LjAxMTMgNS4wNjg1OUMxNy44OTI4IDUuMzU0NTUgMTcuNzE5MiA1LjYxNDM5IDE3LjUwMDMgNS44MzMyNkw2LjI1MDMzIDE3LjA4MzNMMS42NjY5OSAxOC4zMzMzTDIuOTE2OTkgMTMuNzQ5OUwxNC4xNjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gICAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5FeGNsdWRlZCBBcmVhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB5b3Ugd2FudCB0byB2aWV3IEV4Y2x1ZGVkIEFyZWEgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNFeGNsdWRlZEFyZWFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNFeGNsdWRlZEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNFeGx1ZGVkQXJlYVwiPiBTaG93IEV4Y2x1ZGVkIEFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5QYXNzZXItYnkgZGF0YTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gdmlldyBQYXNzZXJieSBkYXRhLiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXNzZXJCeURhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImlzUGFzc2VyQnlEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzUGFzc2VyQnlEYXRhXCI+IFNob3cgUGFzc2VyLWJ5IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPk5vcm1hbGl6ZWQgZGF0YSBkdXJpbmcgZG93bnRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHlvdSB3YW50IHRvIHZpZXcgbm9ybWFsaXplZCBkYXRhLiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNOb3JtYWxpemVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJpc05vcm1hbGl6ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOb3JtYWxpemVkXCI+IFNob3cgTm9ybWFsaXplZCBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QmlsbGluZyA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgQmlsbGluZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzYmlsbGluZ0Rpc2FibGVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzYmlsbGluZ0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzYmlsbGluZ0Rpc2FibGVkXCI+IERpc2FibGUgQmlsbGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPkNhbWVyYSBCbHVycmluZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gYmx1ciB0aGUgQ2FtZXJhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNDYW1lcmFEaXNhYmxlZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0NhbWVyYURpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQ2FtZXJhRGlzYWJsZWRcIj4gRW5hYmxlIEJsdXJyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+Q2FtZXJhIFNldHRpbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB0aGUgeW91IHdhbnQgdG8gaGlkZSB0aGUgY2FtZXJhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNDYW1lcmFFZGl0XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzQ2FtZXJhRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0NhbWVyYUVkaXRcIj4gRGlzYWJsZSBDYW1lcmEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5OT0IgU3RhdHVzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB0aGUgY2xpZW50cyBhcmUgdXBkYXRpbmcgTk9CIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTk9CXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTk9CXCIgKGNoYW5nZSk9XCJub2JEaXJlY3RvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc05PQlwiPkVuYWJsZSBOT0JcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPlpvbmUtd2lzZSBOT0IgQ291bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHRoZSBjbGllbnRzIGFyZSB1cGRhdGluZyBab25lLXdpc2UgTk9CIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzWm9uZXdpc2VOT0JcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNab25ld2lzZU5PQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc1pvbmV3aXNlTk9CXCI+RW5hYmxlXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+U1NPIFN0YXR1czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgbG9naW4gdG8gTWljcm9zb2Z0IGFuZCBHb29nbGUgYWNjb3VudHMgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibG9naW5TU09cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibG9naW5TU09cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwibG9naW5TU09cIj5FbmFibGUgU1NPXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBjb2wteGwtOSBjb2wteHhsLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+Rm9vdGZhbGwgRGlyZWN0b3J5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB5b3Ugd2FudCB0byB2aWV3IEZvb3RmYWxsIGRpcmVjdG9yeSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdpc0Zvb3RmYWxsRGlyZWN0b3J5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBGdWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtNCBweC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCIgKGNoYW5nZSk9XCJkaXJlY3RvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCI+IEVuYWJsZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZNUyBlbmFibGUgcGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTQgcHgtMVwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nICYmIGZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2lzRm9vdGZhbGxEaXJlY3RvcnknKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzVk1TXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc1ZNU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNWTVNcIj4gRW5hYmxlIFRpY2tldCBGbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tY2hlY2sgbXQtNCBweC0xXCIgKm5nSWY9XCJkaXNWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZXhhbXBsZVJhZGlvc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBGZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZm9ybS1jaGVjayBtdC00IHB4LTFcIiAqbmdJZj1cImRpc1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIiAoY2hhbmdlKT1cImRpcmVjdG9yeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmFibGUgVGlja2V0IEZsb3cgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIiAqbmdJZj1cImZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2lzRm9vdGZhbGxEaXJlY3RvcnknKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc1ZNU1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiaXNWTVNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNWTVNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgVGlja2V0IEZsb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IEZldyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNFwiICpuZ0lmPVwiZGlzVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXRcIiBbY2hlY2tlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0JylcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBGZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT25seSBBdWRpdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNFwiICpuZ0lmPVwiZGlzVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXRcIiBbY2hlY2tlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgnaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0JylcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBBdWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLXhsLTIgY29sLXh4bC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc0Zvb3RmYWxsQXVkaXRTdG9yZXNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNBdWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0F1ZGl0XCI+IFNob3cgRmV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLXhsLTIgY29sLXh4bC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc0Zvb3RmYWxsQXVkaXRTdG9yZXNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNBdWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0F1ZGl0XCI+IE9ubHkgQXVkaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BbmFseXplIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5UbyBlbmFibGUgbmV3IGRhc2hib2FyZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTmV3RGFzaGJvYXJkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTmV3RGFzaGJvYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzTmV3RGFzaGJvYXJkXCI+IEVuYWJsZSBBbmFseXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNOZXdUcmFmZmljXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc05ld1RyYWZmaWNcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOZXdUcmFmZmljXCI+VHJhZmZpY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc05ld1pvbmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTmV3em9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOZXd6b25lXCI+Wm9uZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc05ld1pvbmVWMlwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNOZXdab25lVjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzTmV3Wm9uZVYyXCI+Wm9uZSB2MlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc05ld1JlcG9ydHNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTmV3UmVwb3J0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOZXdSZXBvcnRzXCI+UmVwb3J0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc1RyYXhcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzVHJheFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNUcmF4XCI+VHJheFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc1Jldm9wc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNSZXZvcHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzUmV2b3BzXCI+UmV2b3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzQUlNYW5hZ2VyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0FJTWFuYWdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNBSU1hbmFnZXJcIj5BSSBNYW5hZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzQUlNYW5hZ2VyQWNjZXNzQ29udHJvbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNBSU1hbmFnZXJBY2Nlc3NDb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0FJTWFuYWdlckFjY2Vzc0NvbnRyb2xcIj5BY2Nlc3MgQ29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzQ29udHJvbENlbnRlclwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNDb250cm9sQ2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0NvbnRyb2xDZW50ZXJcIj5Db250cm9sIENlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPlN0cmVhbSBUeXBlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgdGhlIEVkZ2UgQXBwIENvbmZpZ3VyYXRpb25zPC9kaXY+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBoLTM1cHggZm9ybS1zZWxlY3Qtc20gbXktMyBzZWxjdFwiIHBsYWNlaG9sZGVyPVwiU3RhdHVzXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RyZWFtQnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIi5mb3JtLXNlbGVjdC1zbSBleGFtcGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRWRnZVwiPkVkZ2UgQXBwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiUnRzcFwiPlJUU1A8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5lbmFibGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgdy0xMDAgZm9vdGVyLXNlcGVyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbXQtMSBtZS00XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2E+XHJcbiAgICAgICAgICAgIDxhIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IFwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+PHNwYW4+U2F2ZSBDaGFuZ2VzPC9zcGFuPjwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9mb3JtPiJdfQ==
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBUXZCLE1BQU0sT0FBTywrQkFBK0I7SUErRHRCO0lBQXlCO0lBQXFDO0lBQ3hFO0lBL0RWLHdCQUF3QixDQUFXO0lBQ25DLDBCQUEwQixDQUFTO0lBQ25DLHdCQUF3QixDQUFTO0lBQ2hCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLENBQVU7SUFHdEIsZUFBZSxH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Qjs0RkFBL0IsK0JBQStCLG1FQ2xCNUMsNm4vQkFnY087OzRGRDlhTSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCAgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XHJcbmltcG9ydCB0aW1lem9uZSBmcm9tIFwiZGF5anMvcGx1Z2luL3RpbWV6b25lXCI7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZGFzaGJvYXJkLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Rhc2hib2FyZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGZlYXR1cmVDb25maWd1cmF0aW9uRm9ybTogRm9ybUdyb3VwXHJcbiAgbWlzc2VkT3Bwb3J0dW5pdHlTdGFydFRpbWU6IHN0cmluZztcclxuICBtaXNzZWRPcHBvcnR1bml0eUVuZFRpbWU6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGlzVk1TRW5hYmxlZDogYm9vbGVhbjtcclxuXHJcblxyXG4gIGluZnJhQWxlcnRWYWx1ZSA9IFtcclxuICAgIHsgdmFsdWU6IDEsIGxhYmVsOiBcIjEgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDIsIGxhYmVsOiBcIjIgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDMsIGxhYmVsOiBcIjMgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDQsIGxhYmVsOiBcIjQgaHJzXCIgfSxcclxuICAgIHsgdmFsdWU6IDUsIGxhYmVsOiBcIjUgaHJzXCIgfVxyXG4gIF1cclxuXHJcbiAgaW5mcmFBbGVydENvbmRpdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiPFwiLCBsYWJlbDogXCI8XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPlwiLCBsYWJlbDogXCI+XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPCA9XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPT5cIiwgbGFiZWw6IFwiPSA+XCIgfSxcclxuICBdXHJcblxyXG4gIGJvdW5jZWRMaW1pdENvbmRpdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPCA9XCIgfVxyXG4gIF1cclxuXHJcbiAgYm91bmNlZExpbWl0VmFsdWUgPSBbXHJcbiAgICB7IHZhbHVlOiAxLCBsYWJlbDogXCIxIG1pblwiIH0sXHJcbiAgICB7IHZhbHVlOiAyLCBsYWJlbDogXCIyIG1pbnNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMywgbGFiZWw6IFwiMyBtaW5zXCIgfSxcclxuICBdXHJcblxyXG4gIGNvbnZlcnNpb25Db25kaXRpb24gPSBbXHJcbiAgICB7IHZhbHVlOiBcIj5cIiwgbGFiZWw6IFwiPlwiIH1cclxuICBdXHJcblxyXG4gIGNvbnZlcnNpb25WYWx1ZSA9IFtcclxuICAgIHsgdmFsdWU6IDUsIGxhYmVsOiBcIjUgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxMCwgbGFiZWw6IFwiMTAgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxNSwgbGFiZWw6IFwiMTUgbWluc1wiIH0sXHJcbiAgICB7IHZhbHVlOiAyMCwgbGFiZWw6IFwiMjAgbWluc1wiIH1cclxuICBdXHJcblxyXG4gIGJpbGxhYmxlQ2FsY3VsYXRpb24gPSBbXHJcbiAgICB7IHZhbHVlOiBcImZvb3RmYWxsLWNvdW50XCIsIGxhYmVsOiBcIkZvb3RmYWxsIENvdW50XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6IFwiRW5nYWdlcnMgQ291bnRcIiB9LFxyXG4gIF1cclxuXHJcbiAgbWlzc2VkT3Bwb3J0dW5pdHlDYWxjdWxhdGlvbiA9IFtcclxuICAgIHsgdmFsdWU6IFwiZW5nYWdlcnMtY29udmVyc2lvblwiLCBsYWJlbDogXCJFbmdhZ2VycyAtIENvbnZlcnNpb25cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCJncm91cC1jb252ZXJzaW9uXCIsIGxhYmVsOiBcIkJpbGxhYmxlIEVudGl0aWVzIC0gQ29udmVyc2lvblwiIH0sXHJcbiAgXVxyXG5cclxuICBjb252ZXJzaW9uQ2FsY3VsYXRpb24gPSBbXHJcbiAgICB7dmFsdWU6XCJmb290ZmFsbC1jb3VudFwiLCBsYWJlbDpcIkZvb3RmYWxsIENvdW50XCJ9LFxyXG4gICAge3ZhbHVlOlwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6XCJFbmdhZ2VycyBDb3VudFwifSxcclxuICAgIHt2YWx1ZTpcImJpbGxhYmxlLWVudGl0aWVzXCIsIGxhYmVsOlwiQmlsbGFibGUgRW50aXRpZXNcIn0sXHJcbiAgXVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFwaVNlcnZpY2U6IENsaWVudEFwaVNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDpDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0Rm9ybSgpXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICBpZiAocmVzLnR5cGUgPT09ICdpbnB1dCcgJiYgcmVzLmZvcm0gPT09ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nKSB7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoRm9ybShyZXMudmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgb3BlbjogW10sXHJcbiAgICAgIGNsb3NlOiBbXSxcclxuICAgICAgaW5mcmFBbGVydENvbmRpdGlvbjogW10sXHJcbiAgICAgIGluZnJhQWxlcnRWYWx1ZTogW10sXHJcbiAgICAgIGJvdW5jZWRMaW1pdENvbmRpdGlvbjogW10sXHJcbiAgICAgIGJvdW5jZWRMaW1pdFZhbHVlOiBbXSxcclxuICAgICAgY29udmVyc2lvbkNvbmRpdGlvbjogW10sXHJcbiAgICAgIGNvbnZlcnNpb25WYWx1ZTogW10sXHJcbiAgICAgIGJpbGxhYmxlQ2FsY3VsYXRpb246IFtdLFxyXG4gICAgICBtaXNzZWRPcHBvcnR1bml0eUNhbGN1bGF0aW9uOiBbXSxcclxuICAgICAgY29udmVyc2lvbkNhbGN1bGF0aW9uOiBbXSxcclxuICAgICAgaXNOb3JtYWxpemVkOiBbXSxcclxuICAgICAgaXNQYXNzZXJCeURhdGE6IFtdLFxyXG4gICAgICBpc0Zvb3RmYWxsRGlyZWN0b3J5OiBbZmFsc2VdLFxyXG4gICAgICBpc0Zvb3RmYWxsRGlyZWN0b3J5b25seVRhbmdvOiBbZmFsc2VdLFxyXG4gICAgICBpc1ZNUzogW2ZhbHNlXSxcclxuICAgICAgaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0OltmYWxzZV0sXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdDpbZmFsc2VdLFxyXG4gICAgICBpc0V4Y2x1ZGVkQXJlYTpbXSxcclxuICAgICAgaXNDYW1lcmFEaXNhYmxlZDogW2ZhbHNlXSxcclxuICAgICAgaXNiaWxsaW5nRGlzYWJsZWQ6W2ZhbHNlXSxcclxuICAgICAgaXNOZXdEYXNoYm9hcmQ6W2ZhbHNlXSxcclxuICAgICAgdXBkYXRlRmVhdHVyZUNvbmZpZzpbXSxcclxuICAgICAgaXNGb290ZmFsbEF1ZGl0U3RvcmVzOiBbXSxcclxuICAgICAgaXNOZXdUcmFmZmljOiBbeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBpc05ld1pvbmU6IFtmYWxzZV0sXHJcbiAgICAgIGlzTmV3Wm9uZVYyOiBbZmFsc2VdLFxyXG4gICAgICBpc05PQjogW2ZhbHNlXSxcclxuICAgICAgaXNab25ld2lzZU5PQjpbZmFsc2VdLFxyXG4gICAgICBsb2dpblNTTzogW2ZhbHNlXSxcclxuICAgICAgaXNOZXdSZXBvcnRzOiBbZmFsc2VdLFxyXG4gICAgICBpc1RyYXg6W2ZhbHNlXSxcclxuICAgICAgaXNSZXZvcHM6W2ZhbHNlXSxcclxuICAgICAgaXNDb250cm9sQ2VudGVyOltmYWxzZV0sXHJcbiAgICAgIHN0cmVhbUJ5OltdLFxyXG4gICAgICBpc0NhbWVyYUVkaXQ6W2ZhbHNlXSxcclxuICAgICAgaXNBSU1hbmFnZXI6W2ZhbHNlXSxcclxuICAgICAgaXNBSU1hbmFnZXJBY2Nlc3NDb250cm9sOltmYWxzZV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZGlzYWJsZSgpXHJcblxyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdib3VuY2VkTGltaXRWYWx1ZScpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZSkgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5ib3VuY2VkQ29uZmlnVGltZUNoYW5nZShlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2NvbnZlcnNpb25WYWx1ZScpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZSkge1xyXG4gICAgICAgIHRoaXMuY29udmVyc2lvbkNvbmZpZ1RpbWVDaGFuZ2UoZSlcclxuICAgICAgICAvLyB0aGlzLnNldENvbnZlcnNpb25DYWxjdWxhdGlvbihlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0ZWRPcHRpb246IGFueSA9ICcnO1xyXG4gIHBhdGNoRm9ybShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICAuLi5kYXRhXHJcbiAgICAgIH1cclxuICAgIClcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuZGlzVmFsdWUgPSAhIWRhdGEuaXNGb290ZmFsbERpcmVjdG9yeTtcclxuICAgaWYgKGRhdGEuaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSAnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0JztcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5pc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9ICdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnO1xyXG4gICAgfVxyXG4gIFxyXG4gIH1cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIG9wdGlvbiBhbmQgZm9ybSB2YWx1ZXNcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0OiB2YWx1ZSA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCcsXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdDogdmFsdWUgPT09ICdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGJvdW5jZWRDb25maWdUaW1lQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcclxuXHJcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCI+MVwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCI+MlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgdGhpcy5taXNzZWRPcHBvcnR1bml0eVN0YXJ0VGltZSA9IFwiPjNcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5U3RhcnRUaW1lID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb252ZXJzaW9uQ29uZmlnVGltZUNoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgIGNhc2UgNTpcclxuICAgICAgICB0aGlzLm1pc3NlZE9wcG9ydHVuaXR5RW5kVGltZSA9ICc8PTUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDEwOlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MTAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE1OlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MTUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDIwOlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJzw9MjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubWlzc2VkT3Bwb3J0dW5pdHlFbmRUaW1lID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDb252ZXJzaW9uQ2FsY3VsYXRpb24oY29udmVyc2lvblZhbDpudW1iZXIpe1xyXG4gICAgdGhpcy5jb252ZXJzaW9uQ2FsY3VsYXRpb24gPSBbXHJcbiAgICAgIHt2YWx1ZTpcImZvb3RmYWxsLWNvdW50XCIsIGxhYmVsOmAke2NvbnZlcnNpb25WYWx9IG1pbnMvRm9vdGZhbGwgQ291bnRgfSxcclxuICAgICAge3ZhbHVlOlwiZW5nYWdlcnMtY291bnRcIiwgbGFiZWw6YCR7Y29udmVyc2lvblZhbH0gbWlucy9FbmdhZ2VycyBDb3VudGB9LFxyXG4gICAgICB7dmFsdWU6XCJiaWxsYWJsZS1lbnRpdGllc1wiLCBsYWJlbDpgJHtjb252ZXJzaW9uVmFsfSBtaW5zL0JpbGxhYmxlIEVudGl0aWVzYH0sXHJcbiAgICBdXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2NvbnZlcnNpb25DYWxjdWxhdGlvbicpPy5zZXRWYWx1ZSh0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybT8udmFsdWUuY29udmVyc2lvbkNhbGN1bGF0aW9uKSBcclxuICB9XHJcbiAgZGlzVmFsdWUgPWZhbHNlO1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICB0b2dnbGVGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNWYWx1ZSA9dHJ1ZTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9ICF0aGlzLmlzRGlzYWJsZWQ7ICBcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogbnVsbCwgdHlwZTogJ2NhbmNlbCcsIGZvcm06ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nIH0pXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5kaXNhYmxlKClcclxuICAgIHRoaXMudG9nZ2xlRm9ybSgpO1xyXG4gICAgdGhpcy5kaXNWYWx1ZSA9ZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLm9wZW4gPSB0aGlzLmRheWpzKGAxOTkxLTAxLTAxICR7dGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUub3Blbn1gLCdZWVlZLU1NLUREIEhIOm1tJykuZm9ybWF0KFwiSEg6bW06c3NcIilcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLmNsb3NlID0gdGhpcy5kYXlqcyhgMTk5MS0wMS0wMSAke3RoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlLmNsb3NlfWAsJ1lZWVktTU0tREQgSEg6bW0nKS5mb3JtYXQoXCJISDptbTpzc1wiKSAgICBcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlKVxyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUsIHR5cGU6ICdzdWJtaXQnLCBmb3JtOiAnZmVhdHVyZS1jb25maWd1cmF0aW9uJyB9KVxyXG4gIH1cclxuXHJcbiAgZGlyZWN0b3J5KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS52YWx1ZS5pc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXQgPWZhbHNlO1xyXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0udmFsdWUuaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0ID1mYWxzZTtcclxuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gIWlzQ2hlY2tlZDtcclxuICAgIGlmKHRoaXMuaXNEaXNhYmxlZCl7XHJcbiAgICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmdldCgnaXNWTVMnKT8uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gbnVsbDsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2lzVk1TJyk/LmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICAvLyAgIHZtcyhlOiBFdmVudCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgaXNDaGVja2VkID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhpc0NoZWNrZWQpO1xyXG4gIC8vICAgaWYoaXNDaGVja2VkKSB7IFxyXG4gIC8vICAgICB0aGlzLmlzVk1TRW5hYmxlZCA9dHJ1ZTtcclxuICAvLyAgICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdjb252ZXJzaW9uQ2FsY3VsYXRpb24nKT8uc2V0VmFsdWUodHJ1ZSk7XHJcbiAgLy8gICB9IGVsc2UgeyBcclxuICAvLyAgICAgdGhpcy5pc1ZNU0VuYWJsZWQgPSBmYWxzZTtcclxuICAvLyAgICAgdGhpcy5mZWF0dXJlQ29uZmlndXJhdGlvbkZvcm0uZ2V0KCdjb252ZXJzaW9uQ2FsY3VsYXRpb24nKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxubm9iRGlyZWN0b3J5KGV2dDogYW55KSB7XHJcbiAgaWYgKGV2dC50YXJnZXQuY2hlY2tlZCA9PT0gZmFsc2UpIHtcclxuICAgIHRoaXMuZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtXHJcbiAgICAgIC5nZXQoJ2lzWm9uZXdpc2VOT0InKVxyXG4gICAgICA/LnNldFZhbHVlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuXHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmZWF0dXJlQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lkdsb2JhbF9Db25maWd1cmF0aW9uX2lzRWRpdFwiID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGVkXCIgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgfHwgZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmdldCgndXBkYXRlRmVhdHVyZUNvbmZpZycpPy52YWx1ZSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGb3JtKCk7ZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGVkID8gZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmVuYWJsZSgpIDogZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmRpc2FibGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NyAyLjQ5OTkzQzE0LjM4NTkgMi4yODEwNiAxNC42NDU3IDIuMTA3NDQgMTQuOTMxNyAxLjk4ODk5QzE1LjIxNzYgMS44NzA1NCAxNS41MjQxIDEuODA5NTcgMTUuODMzNyAxLjgwOTU3QzE2LjE0MzIgMS44MDk1NyAxNi40NDk3IDEuODcwNTQgMTYuNzM1NyAxLjk4ODk5QzE3LjAyMTYgMi4xMDc0NCAxNy4yODE1IDIuMjgxMDYgMTcuNTAwMyAyLjQ5OTkzQzE3LjcxOTIgMi43MTg4IDE3Ljg5MjggMi45Nzg2MyAxOC4wMTEzIDMuMjY0NkMxOC4xMjk3IDMuNTUwNTcgMTguMTkwNyAzLjg1NzA2IDE4LjE5MDcgNC4xNjY1OUMxOC4xOTA3IDQuNDc2MTIgMTguMTI5NyA0Ljc4MjYyIDE4LjAxMTMgNS4wNjg1OUMxNy44OTI4IDUuMzU0NTUgMTcuNzE5MiA1LjYxNDM5IDE3LjUwMDMgNS44MzMyNkw2LjI1MDMzIDE3LjA4MzNMMS42NjY5OSAxOC4zMzMzTDIuOTE2OTkgMTMuNzQ5OUwxNC4xNjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gICAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5FeGNsdWRlZCBBcmVhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB5b3Ugd2FudCB0byB2aWV3IEV4Y2x1ZGVkIEFyZWEgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNFeGNsdWRlZEFyZWFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNFeGNsdWRlZEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNFeGx1ZGVkQXJlYVwiPiBTaG93IEV4Y2x1ZGVkIEFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5QYXNzZXItYnkgZGF0YTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gdmlldyBQYXNzZXJieSBkYXRhLiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXNzZXJCeURhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImlzUGFzc2VyQnlEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzUGFzc2VyQnlEYXRhXCI+IFNob3cgUGFzc2VyLWJ5IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPk5vcm1hbGl6ZWQgZGF0YSBkdXJpbmcgZG93bnRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHlvdSB3YW50IHRvIHZpZXcgbm9ybWFsaXplZCBkYXRhLiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNOb3JtYWxpemVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJpc05vcm1hbGl6ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOb3JtYWxpemVkXCI+IFNob3cgTm9ybWFsaXplZCBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QmlsbGluZyA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgQmlsbGluZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzYmlsbGluZ0Rpc2FibGVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzYmlsbGluZ0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzYmlsbGluZ0Rpc2FibGVkXCI+IERpc2FibGUgQmlsbGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPkNhbWVyYSBCbHVycmluZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gYmx1ciB0aGUgQ2FtZXJhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNDYW1lcmFEaXNhYmxlZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0NhbWVyYURpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQ2FtZXJhRGlzYWJsZWRcIj4gRW5hYmxlIEJsdXJyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+Q2FtZXJhIFNldHRpbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB0aGUgeW91IHdhbnQgdG8gaGlkZSB0aGUgY2FtZXJhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNDYW1lcmFFZGl0XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzQ2FtZXJhRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0NhbWVyYUVkaXRcIj4gRGlzYWJsZSBDYW1lcmEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5OT0IgU3RhdHVzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB0aGUgY2xpZW50cyBhcmUgdXBkYXRpbmcgTk9CIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTk9CXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTk9CXCIgKGNoYW5nZSk9XCJub2JEaXJlY3RvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc05PQlwiPkVuYWJsZSBOT0JcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPlpvbmUtd2lzZSBOT0IgQ291bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+Q2hvb3NlIGlmIHRoZSBjbGllbnRzIGFyZSB1cGRhdGluZyBab25lLXdpc2UgTk9CIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzWm9uZXdpc2VOT0JcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNab25ld2lzZU5PQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc1pvbmV3aXNlTk9CXCI+RW5hYmxlXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+U1NPIFN0YXR1czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5DaG9vc2UgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgbG9naW4gdG8gTWljcm9zb2Z0IGFuZCBHb29nbGUgYWNjb3VudHMgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibG9naW5TU09cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibG9naW5TU09cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwibG9naW5TU09cIj5FbmFibGUgU1NPXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBjb2wteGwtOSBjb2wteHhsLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+Rm9vdGZhbGwgRGlyZWN0b3J5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB5b3Ugd2FudCB0byB2aWV3IEZvb3RmYWxsIGRpcmVjdG9yeSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdpc0Zvb3RmYWxsRGlyZWN0b3J5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBGdWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtNCBweC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNGb290ZmFsbERpcmVjdG9yeVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCIgKGNoYW5nZSk9XCJkaXJlY3RvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCI+IEVuYWJsZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZNUyBlbmFibGUgcGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTQgcHgtMVwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nICYmIGZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5nZXQoJ2lzRm9vdGZhbGxEaXJlY3RvcnknKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzVk1TXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc1ZNU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNWTVNcIj4gRW5hYmxlIFRpY2tldCBGbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tY2hlY2sgbXQtNCBweC0xXCIgKm5nSWY9XCJkaXNWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZXhhbXBsZVJhZGlvc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gJ2lzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBGZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZm9ybS1jaGVjayBtdC00IHB4LTFcIiAqbmdJZj1cImRpc1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGFtcGxlUmFkaW9zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIiAoY2hhbmdlKT1cImRpcmVjdG9yeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzRm9vdGZhbGxEaXJlY3RvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNGb290ZmFsbERpcmVjdG9yeW9ubHlUYW5nb1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5b25seVRhbmdvXCIgKGNoYW5nZSk9XCJkaXJlY3RvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0Zvb3RmYWxsRGlyZWN0b3J5b25seVRhbmdvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBUYW5nb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVuYWJsZSBUaWNrZXQgRmxvdyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNFwiICpuZ0lmPVwiZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmdldCgnaXNGb290ZmFsbERpcmVjdG9yeScpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzVk1TXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJpc1ZNU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZlYXR1cmVDb25maWd1cmF0aW9uRm9ybS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc1ZNU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBUaWNrZXQgRmxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNob3cgRmV3IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCIgKm5nSWY9XCJkaXNWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImV4YW1wbGVSYWRpb3NcIiBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdFwiIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXQnKVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93IEZld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPbmx5IEF1ZGl0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCIgKm5nSWY9XCJkaXNWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImV4YW1wbGVSYWRpb3NcIiBpZD1cImlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdFwiIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCdpc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQnKVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNGb290ZmFsbERpcmVjdG9yeUF1ZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wteHhsLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzRm9vdGZhbGxBdWRpdFN0b3Jlc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0F1ZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQXVkaXRcIj4gU2hvdyBGZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wteGwtMiBjb2wteHhsLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzRm9vdGZhbGxBdWRpdFN0b3Jlc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0F1ZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQXVkaXRcIj4gT25seSBBdWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlclwiPkFuYWx5emUgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlRvIGVuYWJsZSBuZXcgZGFzaGJvYXJkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNOZXdEYXNoYm9hcmRcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNOZXdEYXNoYm9hcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOZXdEYXNoYm9hcmRcIj4gRW5hYmxlIEFuYWx5emVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtdC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc05ld1RyYWZmaWNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzTmV3VHJhZmZpY1wiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc05ld1RyYWZmaWNcIj5UcmFmZmljXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTmV3Wm9uZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNOZXd6b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc05ld3pvbmVcIj5ab25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTmV3Wm9uZVYyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc05ld1pvbmVWMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNOZXdab25lVjJcIj5ab25lIHYyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzTmV3UmVwb3J0c1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNOZXdSZXBvcnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc05ld1JlcG9ydHNcIj5SZXBvcnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzVHJheFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNUcmF4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc1RyYXhcIj5UcmF4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImlzUmV2b3BzXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc1Jldm9wc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdG9nZ2xlLWxhYmVsXCIgZm9yPVwiaXNSZXZvcHNcIj5SZXZvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNBSU1hbmFnZXJcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzQUlNYW5hZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0b2dnbGUtbGFiZWxcIiBmb3I9XCJpc0FJTWFuYWdlclwiPkFJIE1hbmFnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNBSU1hbmFnZXJBY2Nlc3NDb250cm9sXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0FJTWFuYWdlckFjY2Vzc0NvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQUlNYW5hZ2VyQWNjZXNzQ29udHJvbFwiPkFjY2VzcyBDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNDb250cm9sQ2VudGVyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0NvbnRyb2xDZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRvZ2dsZS1sYWJlbFwiIGZvcj1cImlzQ29udHJvbENlbnRlclwiPkNvbnRyb2wgQ2VudGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+U3RyZWFtIFR5cGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkNob29zZSBpZiB0aGUgRWRnZSBBcHAgQ29uZmlndXJhdGlvbnM8L2Rpdj4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGgtMzVweCBmb3JtLXNlbGVjdC1zbSBteS0zIHNlbGN0XCIgcGxhY2Vob2xkZXI9XCJTdGF0dXNcIiBmb3JtQ29udHJvbE5hbWU9XCJzdHJlYW1CeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiLmZvcm0tc2VsZWN0LXNtIGV4YW1wbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJFZGdlXCI+RWRnZSBBcHA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSdHNwXCI+UlRTUDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmVhdHVyZUNvbmZpZ3VyYXRpb25Gb3JtLmVuYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItNSB3LTEwMCBmb290ZXItc2VwZXJhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxhIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtdC0xIG1lLTRcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYT5cclxuICAgICAgICAgICAgPGEgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj48c3Bhbj5TYXZlIENoYW5nZXM8L3NwYW4+PC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Zvcm0+Il19
|