tango-app-ui-analyse-trax 4.0.62 → 4.0.63

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.
@@ -1840,11 +1840,11 @@ export class EyeTestComponent {
1840
1840
  });
1841
1841
  }
1842
1842
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EyeTestComponent, deps: [{ token: i1.PageInfoService }, { token: i2.FormBuilder }, { token: i3.TraxService }, { token: i4.EyeTestAuditService }, { token: i5.Router }, { token: i0.ChangeDetectorRef }, { token: i1.GlobalStateService }, { token: i6.ToastService }, { token: i7.NgbModal }, { token: i5.ActivatedRoute }, { token: i8.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1843
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EyeTestComponent, selector: "lib-eye-test", host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "tooltipContent", first: true, predicate: ["tooltipContent"], descendants: true }, { propertyName: "viewHistory", first: true, predicate: ["viewHistory"], descendants: true }, { propertyName: "viewCancel", first: true, predicate: ["viewCancel"], descendants: true }, { propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<section *ngIf=\"!eyeView\" class=\"container-fluid\">\r\n<div class=\"card mb-2\">\r\n <div *ngIf=\"loading1\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <form *ngIf=\"!loading1\" [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2 mb-4' : 'col-2 mb-4'\" class=\"col-1 mb-4\" style=\"z-index: 33 !important;\" >\r\n <lib-reactive-select formControlName=\"dateType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"dateType\" (itemChange)=\"dateTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-10 z-2\" style=\"min-width: 150px !important;\" type=\"text\"\r\n matInput ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"false\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" [ngModelOptions]=\"{standalone: true}\"\r\n (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\"\r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"type\"\r\n (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n \r\n <!-- </div>\r\n </div> -->\r\n <!-- *ngIf=\"users?.role ==='superadmin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('RmList')?.value?.length)\">\r\n Select RM\r\n </div>\r\n <lib-group-select [items]=\"RmList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onRmSelect($event)\" [selectedValues]=\"eyeTestForm.get('RmList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n \r\n </div>\r\n <!-- *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n \r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" >\r\n \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n \r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('complianceScore')?.value?.length)\">\r\n Select Score\r\n </div>\r\n <lib-select-drop [items]=\"typePercentageArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typePercentageChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('complianceScore')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-1 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"auditType\"\r\n (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('auditStatus')?.value?.length)\">\r\n Audit Status\r\n </div>\r\n <lib-select-drop [items]=\"auditStatusArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typeAuditStatusChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('auditStatus')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"nearAddition\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"nearAdditionArray\" (itemChange)=\"nearAdditionChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"category\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"categoryArray\" (itemChange)=\"categoryTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div \r\n *ngIf=\"users?.role\" \r\n class=\"text-end\"\r\n [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-1 mb-4' : 'col-1 mb-4'\"\r\n>\r\n<!-- [ngClass]=\"getApplyButtonClass(users?.role, eyeTestForm.get('type')?.value)\" -->\r\n\r\n <a (click)=\"onSubmit();\" type=\"submit\" class=\"btn btn-sm btn-primary py-3 \">\r\n <span>Apply</span>\r\n </a>\r\n\r\n</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n <div *ngIf=\"showEyeTest\" class=\"ms-6 mb-3\">\r\n\r\n <h3 class=\"card-title dashed w-100 row\">\r\n <span class=\"col-10 title-text py-3\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\" />\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path\r\n d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\"\r\n stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 30 days. Audit data\r\n remains accessible, but videos will not be retained beyond this period.</span></span>\r\n <span class=\"col-2 pt-2 text-end cursor-pointer\" (click)=\"closeEyeTest()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <path d=\"M25 15L15 25M15 15L25 25\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </h3>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"row\">\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"col\">\r\n <div class=\"card p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Regional Managers</h5>\r\n <span class=\"text-value\">{{RmListData ?? '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card mt-5 p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Clusters</h5>\r\n <span class=\"text-value\">{{groups?.length ?? '--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType !=='rm' || users?.role ==='admin'\" class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Clusters</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ groups?.length ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Total Tango AI Files</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.totalFiles ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Audit Completed</h5>\r\n </div>\r\n <div class=\"card-body py-3 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.completedFiles ?? '-' }}</span>\r\n\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-sub\">{{ (eyeTestCardData?.completedRatio ?? '-') + '%' }} <span\r\n class=\"test-sub\">Completed</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Tango Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.tangoScore ?? '-' }}</span>\r\n </div>\r\n <div class=\"card-footer pe-0 ps-3 py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span>\r\n <svg *ngIf=\"eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"!eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_760_9776)\">\r\n <path d=\"M11.575 9L6.82495 4.25L4.32495 6.75L0.574951 3M11.575 9H8.57495M11.575 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_760_9776\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.0749512)\" />\r\n </clipPath>\r\n </defs>\r\n </svg> \r\n <span class=\"text-sub ms-2\">{{ eyeTestCardData?.tangoScoreTrend !== null \r\n ? (getAbsValue(eyeTestCardData.tangoScoreTrend) | number:'1.0-0':'en-US') + '%' \r\n : '-' }}\r\n <span\r\n class=\"test-sub1\">vs previous week</span></span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.trustScore && eyeTestCardData?.trustScore !== 'NA' \r\n ? eyeTestCardData.trustScore + '%' \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Human Audited Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.humanScore && eyeTestCardData?.humanScore !== 'NA' \r\n ? eyeTestCardData.humanScore \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span *ngIf=\"users?.role === 'superadmin' && keyType ==='rm'\" class=\"title-text mb-2\">\r\n Audit Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n\r\n <!-- Admin + cluster present \u2192 RM Summary -->\r\n <div class=\"d-flex\">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='cluster' && users?.role === 'superadmin'\" (click)=\"typeVal1('rm','')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"users?.role === 'admin' && keyType ==='cluster' || users?.role === 'superadmin' && keyType ==='cluster'\" class=\"title-text my-4 mb-2\">\r\n RM Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary text-capitalize\">{{ eyeTestData[0]?.RMName ? eyeTestData[0]?.RMName : '' }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- All other cases \u2192 Eye Test -->\r\n <div class=\"d-flex \">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'superadmin')\"\r\n (click)=\"typeVal1('cluster',this.rmEmail)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'admin')\"\r\n (click)=\"typeVal1('cluster',this.groups)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!(users?.role === 'superadmin' && keyType ==='rm') && !(users?.role === 'superadmin' && keyType ==='cluster') \r\n && !(users?.role === 'admin' && keyType ==='cluster')\" class=\"title-text my-4 mb-2\">\r\n Eye Test\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n </div>\r\n <span *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='admin' && keyType ==='cluster'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='user' && keyType ==='store'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\"\r\n [placeholder]=\"\r\n keyType === 'rm'\r\n ? 'Search by RMName'\r\n : keyType === 'cluster'\r\n ? 'Search by Cluster'\r\n : 'Search'\r\n \" />\r\n\r\n\r\n <span class=\"cursor-pointer\" *ngIf=\"users?.role ==='superadmin'\" (click)=\"settingsView()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45\" height=\"46\"\r\n viewBox=\"0 0 45 46\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_760_9988)\">\r\n <rect x=\"2.71973\" y=\"1.98047\" width=\"40.04\" height=\"40.04\" rx=\"7.28\" fill=\"white\" />\r\n <rect x=\"3.17473\" y=\"2.43547\" width=\"39.13\" height=\"39.13\" rx=\"6.825\" stroke=\"#D0D5DD\"\r\n stroke-width=\"0.91\" />\r\n <g clip-path=\"url(#clip0_760_9988)\">\r\n <path\r\n d=\"M22.7396 24.2749C23.9961 24.2749 25.0146 23.2563 25.0146 21.9999C25.0146 20.7434 23.9961 19.7249 22.7396 19.7249C21.4832 19.7249 20.4646 20.7434 20.4646 21.9999C20.4646 23.2563 21.4832 24.2749 22.7396 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M28.3513 24.2749C28.2503 24.5036 28.2202 24.7573 28.2648 25.0033C28.3094 25.2493 28.4267 25.4763 28.6015 25.655L28.647 25.7005C28.788 25.8414 28.8999 26.0087 28.9762 26.1928C29.0526 26.3769 29.0919 26.5743 29.0919 26.7736C29.0919 26.9729 29.0526 27.1703 28.9762 27.3544C28.8999 27.5385 28.788 27.7058 28.647 27.8466C28.5062 27.9876 28.3389 28.0995 28.1548 28.1758C27.9707 28.2522 27.7733 28.2914 27.574 28.2914C27.3747 28.2914 27.1773 28.2522 26.9932 28.1758C26.8091 28.0995 26.6418 27.9876 26.5009 27.8466L26.4554 27.8011C26.2767 27.6263 26.0497 27.509 25.8037 27.4644C25.5577 27.4198 25.304 27.4499 25.0753 27.5509C24.851 27.647 24.6597 27.8066 24.525 28.0101C24.3902 28.2135 24.3179 28.4519 24.3169 28.696V28.8249C24.3169 29.2271 24.1572 29.6129 23.8727 29.8973C23.5883 30.1817 23.2025 30.3415 22.8003 30.3415C22.398 30.3415 22.0123 30.1817 21.7278 29.8973C21.4434 29.6129 21.2836 29.2271 21.2836 28.8249V28.7566C21.2777 28.5056 21.1965 28.2622 21.0504 28.058C20.9044 27.8538 20.7003 27.6982 20.4646 27.6115C20.2359 27.5106 19.9822 27.4805 19.7362 27.5251C19.4902 27.5697 19.2632 27.687 19.0844 27.8618L19.0389 27.9073C18.8981 28.0483 18.7308 28.1602 18.5467 28.2365C18.3626 28.3128 18.1652 28.3521 17.9659 28.3521C17.7666 28.3521 17.5692 28.3128 17.3851 28.2365C17.201 28.1602 17.0337 28.0483 16.8929 27.9073C16.7519 27.7664 16.64 27.5992 16.5637 27.415C16.4873 27.2309 16.448 27.0336 16.448 26.8342C16.448 26.6349 16.4873 26.4376 16.5637 26.2535C16.64 26.0693 16.7519 25.9021 16.8929 25.7612L16.9384 25.7157C17.1132 25.537 17.2305 25.31 17.2751 25.064C17.3197 24.818 17.2896 24.5643 17.1886 24.3355C17.0925 24.1112 16.9329 23.92 16.7294 23.7852C16.526 23.6505 16.2876 23.5782 16.0435 23.5772H15.9146C15.5124 23.5772 15.1266 23.4174 14.8422 23.133C14.5577 22.8486 14.3979 22.4628 14.3979 22.0605C14.3979 21.6583 14.5577 21.2725 14.8422 20.9881C15.1266 20.7037 15.5124 20.5439 15.9146 20.5439H15.9829C16.2339 20.538 16.4773 20.4568 16.6815 20.3107C16.8857 20.1646 17.0413 19.9605 17.1279 19.7249C17.2289 19.4961 17.259 19.2424 17.2144 18.9964C17.1698 18.7504 17.0525 18.5234 16.8777 18.3447L16.8322 18.2992C16.6912 18.1583 16.5793 17.9911 16.503 17.807C16.4267 17.6228 16.3874 17.4255 16.3874 17.2262C16.3874 17.0268 16.4267 16.8295 16.503 16.6454C16.5793 16.4612 16.6912 16.294 16.8322 16.1531C16.9731 16.0121 17.1403 15.9002 17.3244 15.8239C17.5086 15.7476 17.7059 15.7083 17.9052 15.7083C18.1046 15.7083 18.3019 15.7476 18.486 15.8239C18.6702 15.9002 18.8374 16.0121 18.9783 16.1531L19.0238 16.1986C19.2025 16.3734 19.4295 16.4907 19.6755 16.5353C19.9215 16.5799 20.1752 16.5498 20.4039 16.4489H20.4646C20.6889 16.3527 20.8802 16.1931 21.0149 15.9897C21.1497 15.7862 21.222 15.5478 21.2229 15.3038V15.1749C21.2229 14.7726 21.3827 14.3869 21.6672 14.1024C21.9516 13.818 22.3374 13.6582 22.7396 13.6582C23.1419 13.6582 23.5276 13.818 23.8121 14.1024C24.0965 14.3869 24.2563 14.7726 24.2563 15.1749V15.2431C24.2573 15.4871 24.3296 15.7256 24.4643 15.929C24.599 16.1325 24.7903 16.2921 25.0146 16.3882C25.2433 16.4891 25.4971 16.5193 25.7431 16.4747C25.9891 16.4301 26.2161 16.3128 26.3948 16.138L26.4403 16.0925C26.5811 15.9514 26.7484 15.8396 26.9325 15.7632C27.1167 15.6869 27.314 15.6476 27.5133 15.6476C27.7126 15.6476 27.91 15.6869 28.0941 15.7632C28.2782 15.8396 28.4455 15.9514 28.5864 16.0925C28.7274 16.2333 28.8392 16.4006 28.9156 16.5847C28.9919 16.7688 29.0312 16.9662 29.0312 17.1655C29.0312 17.3648 28.9919 17.5622 28.9156 17.7463C28.8392 17.9304 28.7274 18.0977 28.5864 18.2385L28.5409 18.284C28.366 18.4628 28.2488 18.6898 28.2042 18.9358C28.1596 19.1818 28.1897 19.4355 28.2906 19.6642V19.7249C28.3867 19.9492 28.5464 20.1404 28.7498 20.2752C28.9533 20.4099 29.1917 20.4822 29.4357 20.4832H29.5646C29.9669 20.4832 30.3526 20.643 30.6371 20.9274C30.9215 21.2119 31.0813 21.5976 31.0813 21.9999C31.0813 22.4021 30.9215 22.7879 30.6371 23.0723C30.3526 23.3567 29.9669 23.5165 29.5646 23.5165H29.4964C29.2523 23.5175 29.0139 23.5898 28.8105 23.7246C28.607 23.8593 28.4474 24.0506 28.3513 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_760_9988\" x=\"0.719727\" y=\"0.980469\" width=\"44.04\" height=\"44.04\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_760_9988\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_760_9988\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_760_9988\">\r\n <rect width=\"18.2\" height=\"18.2\" fill=\"white\"\r\n transform=\"translate(13.6396 12.9004)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\r\n <path d=\"M7.53369 12.8441H15.0241L13.5568 14.3172L14.3587 15.1191L17.2024 12.2754L14.3587 9.43164L13.5568 10.2336L15.0241 11.7066H7.53369V12.8441Z\" fill=\"black\"/>\r\n <path d=\"M12.6526 8.8631V6.5881C12.653 6.51325 12.6387 6.43904 12.6104 6.36975C12.5821 6.30045 12.5404 6.23743 12.4877 6.18428L8.5064 2.20303C8.45326 2.15032 8.39023 2.10862 8.32094 2.08031C8.25164 2.05201 8.17744 2.03766 8.10259 2.0381H2.41509C2.1134 2.0381 1.82408 2.15794 1.61075 2.37126C1.39743 2.58458 1.27759 2.87391 1.27759 3.1756V16.8256C1.27759 17.1273 1.39743 17.4166 1.61075 17.6299C1.82408 17.8433 2.1134 17.9631 2.41509 17.9631H11.5151C11.8168 17.9631 12.1061 17.8433 12.3194 17.6299C12.5327 17.4166 12.6526 17.1273 12.6526 16.8256V15.6881H11.5151V16.8256H2.41509V3.1756H6.96509V6.5881C6.96509 6.88978 7.08493 7.17911 7.29826 7.39243C7.51158 7.60575 7.80091 7.7256 8.10259 7.7256H11.5151V8.8631H12.6526ZM8.10259 6.5881V3.40878L11.2819 6.5881H8.10259Z\" fill=\"black\"/>\r\n</svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Tango AI Section (Audit Summary + RM Summary only) \u2500\u2500 -->\r\n <div class=\"px-6 pb-4\" *ngIf=\"(users?.role === 'superadmin' && keyType === 'rm') || keyType === 'cluster'\">\r\n <!-- Header -->\r\n <div class=\"text-center mb-3\">\r\n <h3 class=\"fw-bold mb-1\" style=\"color: #0591FF;\">\r\n Tango AI\r\n <sup>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 26 23\" fill=\"none\">\r\n <path d=\"M5.40634 1.88184L5.61168 2.76648C5.75884 3.40173 6.09183 3.99315 6.57843 4.48348C7.06503 4.97382 7.68876 5.34646 8.38923 5.56534L8.64861 5.64628L8.38923 5.72721C7.68876 5.94609 7.06503 6.31874 6.57843 6.80907C6.09183 7.2994 5.75884 7.89082 5.61168 8.52607L5.40634 9.41072L5.20099 8.52607C5.05384 7.89082 4.72084 7.2994 4.23425 6.80907C3.74765 6.31874 3.12392 5.94609 2.42344 5.72721L2.16406 5.64628L2.42344 5.56534C3.12392 5.34646 3.74765 4.97382 4.23425 4.48348C4.72084 3.99315 5.05384 3.40173 5.20099 2.76648L5.40634 1.88184ZM17.2947 2.82295L17.8956 5.32065C18.2018 6.59405 18.8818 7.77662 19.8692 8.75304C20.8566 9.72945 22.1177 10.4664 23.5296 10.892L24.86 11.2929L23.5296 11.6938C22.1177 12.1195 20.8566 12.8564 19.8692 13.8328C18.8818 14.8093 18.2018 15.9918 17.8956 17.2652L17.2947 19.7629L16.6938 17.2652C16.3875 15.9918 15.7076 14.8093 14.7202 13.8328C13.7328 12.8564 12.4717 12.1195 11.0598 11.6938L9.72937 11.2929L11.0598 10.892C12.4717 10.4664 13.7328 9.72945 14.7202 8.75304C15.7076 7.77662 16.3875 6.59405 16.6938 5.32065L17.2947 2.82295Z\" fill=\"url(#eyeTestAiGrad)\"/>\r\n <defs>\r\n <linearGradient id=\"eyeTestAiGrad\" x1=\"13.512\" y1=\"19.7629\" x2=\"13.512\" y2=\"1.88184\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"white\"/>\r\n <stop offset=\"1\" stop-color=\"#0591FF\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </sup>\r\n </h3>\r\n <p class=\"text-dark mb-0\" style=\"font-size: 13px;\">Ask the Tango AI on what you want..</p>\r\n </div>\r\n\r\n <!-- Input -->\r\n <div class=\"d-flex justify-content-center mb-3\">\r\n <div style=\"width: 60%; min-width: 300px;\">\r\n\r\n <div class=\"position-relative\">\r\n\r\n <!-- Plus Button with Model Popup (inside input, left side) -->\r\n <div class=\"plus-menu-wrap position-absolute top-50 translate-middle-y ps-2\" style=\"left: 4px; z-index: 10;\">\r\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\r\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\r\n <div class=\"plus-popup-section-label\">Model</div>\r\n <button class=\"plus-popup-item\" type=\"button\"\r\n *ngFor=\"let m of modelOptions\"\r\n [class.selected]=\"selectedModel === m.value\"\r\n (click)=\"selectModel(m.value); closePlusMenu()\">\r\n <span class=\"model-hint fw-bold text-dark\">{{ m.label }}</span>\r\n <!-- <span class=\"text-muted ms-1\" style=\"font-size:11px;\">{{ m.value }}</span> -->\r\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"form-control rounded-pill\" placeholder=\"Ask anything...\"\r\n style=\"padding-left: 46px;\"\r\n [(ngModel)]=\"eyeTestChatQuery\" [ngModelOptions]=\"{standalone: true}\"\r\n (keyup.enter)=\"onEyeTestAiSearch()\" />\r\n <div class=\"position-absolute end-0 top-50 translate-middle-y d-flex align-items-center gap-2 pe-3\">\r\n <!-- <span class=\"model-version-tag me-1\">{{ selectedModelVersion }}</span> -->\r\n <button class=\"btn btn-link p-0\" title=\"History\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path d=\"M3.93772 10.3551L3.35767 10.6484L2.77763 10.9417L3.31874 12.0117L3.89878 11.7184L4.47883 11.4251L3.93772 10.3551Z\" fill=\"#667085\"/>\r\n </svg>\r\n </button>\r\n <button class=\"btn btn-link p-0\" title=\"Send\" (click)=\"onEyeTestAiSearch()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10.0003H15.8346M15.8346 10.0003L10.0013 4.16699M15.8346 10.0003L10.0013 15.8337\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div><!-- /position-relative -->\r\n </div><!-- /width wrapper -->\r\n </div>\r\n\r\n <!-- AI Response -->\r\n <div *ngIf=\"showEyeTestAiMessage\" class=\"rounded-3 p-4 mx-auto\" style=\"background: #EAF8FF;\">\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <span class=\"ai-avatar-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\r\n <mask id=\"path-1-inside-1_1849_13120\" fill=\"white\">\r\n <path\r\n d=\"M19.9948 18.0752L19.2779 17.3583L11.5533 9.63369L13.8448 7.34219L14.3938 6.79206C14.4462 6.73892 14.4758 6.66742 14.4762 6.5928C14.476 6.55591 14.4685 6.51941 14.4542 6.4854C14.4399 6.4514 14.419 6.42055 14.3928 6.39462L13.8426 5.84449L11.4125 3.41004L10.8624 2.85991C10.8364 2.83346 10.8054 2.81244 10.7712 2.7981C10.7369 2.78375 10.7002 2.77637 10.6631 2.77637C10.626 2.77637 10.5893 2.78375 10.5551 2.7981C10.5209 2.81244 10.4899 2.83346 10.4639 2.85991L9.91374 3.41113L6.93566 6.38921C6.90923 6.41512 6.88824 6.44604 6.87391 6.48016C6.85958 6.51428 6.8522 6.55092 6.8522 6.58793C6.8522 6.62493 6.85958 6.66157 6.87391 6.69569C6.88824 6.72981 6.90923 6.76073 6.93566 6.78664L9.78053 9.63261L2.05485 17.3583L1.3412 18.0752C1.28828 18.1276 1.2583 18.1989 1.25781 18.2734C1.25812 18.3454 1.28558 18.4146 1.3347 18.4672C1.36093 18.4952 1.39262 18.5176 1.42783 18.5328C1.46303 18.5481 1.501 18.556 1.53938 18.556H8.48859C8.56318 18.5557 8.63463 18.526 8.68737 18.4732C8.74011 18.4205 8.76987 18.349 8.77015 18.2745V17.5835C8.77015 17.5088 8.74052 17.437 8.68775 17.3841C8.63498 17.3311 8.56336 17.3012 8.48859 17.3009H3.8861L10.6664 10.5206L17.4466 17.3009H12.8041C12.7293 17.3012 12.6577 17.3311 12.6049 17.3841C12.5522 17.437 12.5225 17.5088 12.5225 17.5835V18.2745C12.5224 18.3116 12.5297 18.3483 12.544 18.3825C12.5583 18.4168 12.5794 18.4478 12.6059 18.4737C12.6585 18.5262 12.7298 18.5558 12.8041 18.556H19.7955C19.8341 18.5562 19.8723 18.5483 19.9077 18.5331C19.9431 18.5178 19.975 18.4954 20.0013 18.4672C20.0519 18.4141 20.0796 18.3432 20.0784 18.2699C20.0771 18.1965 20.0471 18.1266 19.9948 18.0752ZM10.662 4.43559L12.8203 6.59388L10.6675 8.74676L8.50917 6.58847L10.662 4.43559Z\" />\r\n </mask>\r\n <path\r\n d=\"M19.9948 18.0752L-17.969 56.039L-17.8004 56.2076L-17.6303 56.3746L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055V-20.6055L19.2779 17.3583ZM11.5533 9.63369L-26.4105 -28.3301L-64.3743 9.63369L-26.4105 47.5975L11.5533 9.63369ZM13.8448 7.34219L51.8086 45.306L51.8273 45.2873L51.846 45.2685L13.8448 7.34219ZM14.3938 6.79206L52.3951 44.7184L52.511 44.6022L52.6262 44.4854L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.86661L68.1657 6.59731L68.1644 6.32801L14.4762 6.5928ZM14.3928 6.39462L-23.571 44.3584L-23.4528 44.4766L-23.3339 44.594L14.3928 6.39462ZM13.8426 5.84449L-24.1549 43.7744L-24.1381 43.7914L-24.1212 43.8083L13.8426 5.84449ZM11.4125 3.41004L49.4101 -34.5199L49.3932 -34.5368L49.3763 -34.5538L11.4125 3.41004ZM10.8624 2.85991L-27.4274 40.4949L-27.2651 40.66L-27.1014 40.8237L10.8624 2.85991ZM10.4639 2.85991L48.4649 40.7864L48.6098 40.6412L48.7536 40.4949L10.4639 2.85991ZM9.91374 3.41113L47.8775 41.3749L47.8962 41.3563L47.9148 41.3376L9.91374 3.41113ZM6.93566 6.38921L44.5253 44.7235L44.7133 44.5392L44.8994 44.353L6.93566 6.38921ZM6.8522 6.58793H60.5411H6.8522ZM6.93566 6.78664L44.9067 -31.1699L44.7169 -31.3597L44.5253 -31.5476L6.93566 6.78664ZM9.78053 9.63261L47.7443 47.5964L85.7009 9.63983L47.7515 -28.3239L9.78053 9.63261ZM2.05485 17.3583L-35.9089 -20.6055L-35.952 -20.5624L-35.995 -20.5192L2.05485 17.3583ZM1.3412 18.0752L39.1288 56.2144L39.2604 56.084L39.3911 55.9527L1.3412 18.0752ZM1.25781 18.2734L-52.4299 17.9229L-52.4318 18.2134L-52.4306 18.5038L1.25781 18.2734ZM1.3347 18.4672L-37.9146 55.1003L-37.8877 55.1292L-37.8607 55.1581L1.3347 18.4672ZM1.53938 18.556L1.52238 72.2449H1.53088H1.53938V18.556ZM8.48859 18.556V72.2449H8.59125L8.6939 72.2445L8.48859 18.556ZM8.77015 18.2745L62.4587 18.4798L62.459 18.3771V18.2745H8.77015ZM8.77015 17.5835L-44.9187 17.5831V17.5835H8.77015ZM8.48859 17.3009L8.69429 -36.3876L8.59144 -36.388H8.48859V17.3009ZM3.8861 17.3009L-34.0777 -20.6629L-125.73 70.9898H3.8861V17.3009ZM10.6664 10.5206L48.6302 -27.4432L10.6664 -65.407L-27.2974 -27.4432L10.6664 10.5206ZM17.4466 17.3009V70.9898H147.063L55.4104 -20.6629L17.4466 17.3009ZM12.8041 17.3009V-36.388H12.7012L12.5984 -36.3876L12.8041 17.3009ZM12.5225 17.5835H66.2114V17.5831L12.5225 17.5835ZM12.5225 18.2745L66.211 18.4803L66.2114 18.3774V18.2745H12.5225ZM12.6059 18.4737L50.5384 -19.5213L50.3431 -19.7163L50.1458 -19.9093L12.6059 18.4737ZM12.8041 18.556L12.6603 72.2447L12.7322 72.2449H12.8041V18.556ZM19.7955 18.556L19.9855 -35.1325L19.8905 -35.1329H19.7955V18.556ZM20.0013 18.4672L-18.8724 -18.5643L-19.0342 -18.3945L-19.1944 -18.2233L20.0013 18.4672ZM10.662 4.43559L48.6258 -33.5282L10.662 -71.492L-27.3017 -33.5282L10.662 4.43559ZM12.8203 6.59388L50.7841 44.5577L88.7479 6.59389L50.7841 -31.3699L12.8203 6.59388ZM10.6675 8.74676L-27.2963 46.7105L10.6674 84.6743L48.6312 46.7105L10.6675 8.74676ZM8.50917 6.58847L-29.4546 -31.3753L-67.4184 6.58847L-29.4546 44.5522L8.50917 6.58847ZM19.9948 18.0752L57.9586 -19.8886L57.2417 -20.6055L19.2779 17.3583L-18.6859 55.3221L-17.969 56.039L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055L49.5171 -28.3301L11.5533 9.63369L-26.4105 47.5975L-18.6859 55.3221L19.2779 17.3583ZM11.5533 9.63369L49.5171 47.5975L51.8086 45.306L13.8448 7.34219L-24.119 -30.6216L-26.4105 -28.3301L11.5533 9.63369ZM13.8448 7.34219L51.846 45.2685L52.3951 44.7184L14.3938 6.79206L-23.6074 -31.1343L-24.1564 -30.5841L13.8448 7.34219ZM14.3938 6.79206L52.6262 44.4854C62.5164 34.4538 68.0925 20.9532 68.1644 6.86661L14.4762 6.5928L-39.212 6.31898C-39.141 -7.61836 -33.6239 -20.9759 -23.8385 -30.9013L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.32801C68.1294 -0.770107 66.6945 -7.79255 63.9409 -14.3369L14.4542 6.4854L-35.0325 27.3077C-37.7575 20.8314 -39.1774 13.8819 -39.2121 6.85759L14.4762 6.5928ZM14.4542 6.4854L63.9409 -14.3369C61.1877 -20.8802 57.1705 -26.8162 52.1194 -31.8048L14.3928 6.39462L-23.3339 44.594C-28.3325 39.6573 -32.3079 33.783 -35.0325 27.3077L14.4542 6.4854ZM14.3928 6.39462L52.3566 -31.5692L51.8064 -32.1193L13.8426 5.84449L-24.1212 43.8083L-23.571 44.3584L14.3928 6.39462ZM13.8426 5.84449L51.8402 -32.0855L49.4101 -34.5199L11.4125 3.41004L-26.5851 41.34L-24.1549 43.7744L13.8426 5.84449ZM11.4125 3.41004L49.3763 -34.5538L48.8261 -35.1039L10.8624 2.85991L-27.1014 40.8237L-26.5512 41.3739L11.4125 3.41004ZM10.8624 2.85991L49.1521 -34.7751C44.1297 -39.8848 38.1396 -43.944 31.5307 -46.7149L10.7712 2.7981L-9.98838 52.3111C-16.5289 49.5689 -22.457 45.5518 -27.4274 40.4949L10.8624 2.85991ZM10.7712 2.7981L31.5307 -46.7149C24.9223 -49.4857 17.8285 -50.9125 10.6631 -50.9125V2.77637V56.4653C3.57198 56.4653 -3.44839 55.0532 -9.98838 52.3111L10.7712 2.7981ZM10.6631 2.77637V-50.9125C3.49762 -50.9125 -3.59619 -49.4856 -10.2044 -46.7149L10.5551 2.7981L31.3146 52.3111C24.7748 55.0531 17.7544 56.4653 10.6631 56.4653V2.77637ZM10.5551 2.7981L-10.2044 -46.7149C-16.8129 -43.9442 -22.8032 -39.8852 -27.8259 -34.7751L10.4639 2.85991L48.7536 40.4949C43.7829 45.5521 37.8547 49.569 31.3146 52.3111L10.5551 2.7981ZM10.4639 2.85991L-27.5372 -35.0665L-28.0873 -34.5153L9.91374 3.41113L47.9148 41.3376L48.4649 40.7864L10.4639 2.85991ZM9.91374 3.41113L-28.05 -34.5527L-31.0281 -31.5746L6.93566 6.38921L44.8994 44.353L47.8775 41.3749L9.91374 3.41113ZM6.93566 6.38921L-30.654 -31.9451C-35.7777 -26.9209 -39.8481 -20.9252 -42.6268 -14.3087L6.87391 6.48016L56.3746 27.269C53.6246 33.8172 49.5962 39.7511 44.5253 44.7235L6.93566 6.38921ZM6.87391 6.48016L-42.6268 -14.3087C-45.4052 -7.69299 -46.8367 -0.588947 -46.8367 6.58793H6.8522H60.5411C60.5411 13.6908 59.1244 20.7215 56.3746 27.269L6.87391 6.48016ZM6.8522 6.58793H-46.8367C-46.8367 13.7647 -45.4052 20.8688 -42.6268 27.4845L6.87391 6.69569L56.3746 -14.0932C59.1244 -7.54562 60.5411 -0.514848 60.5411 6.58793H6.8522ZM6.87391 6.69569L-42.6268 27.4845C-39.848 34.1012 -35.7775 40.0969 -30.654 45.1209L6.93566 6.78664L44.5253 -31.5476C49.596 -26.5754 53.6245 -20.6416 56.3746 -14.0932L6.87391 6.69569ZM6.93566 6.78664L-31.0354 44.7432L-28.1905 47.5892L9.78053 9.63261L47.7515 -28.3239L44.9067 -31.1699L6.93566 6.78664ZM9.78053 9.63261L-28.1833 -28.3312L-35.9089 -20.6055L2.05485 17.3583L40.0186 55.3221L47.7443 47.5964L9.78053 9.63261ZM2.05485 17.3583L-35.995 -20.5192L-36.7087 -19.8023L1.3412 18.0752L39.3911 55.9527L40.1047 55.2358L2.05485 17.3583ZM1.3412 18.0752L-36.4464 -20.064C-46.5894 -10.0145 -52.3367 3.64485 -52.4299 17.9229L1.25781 18.2734L54.9456 18.6238C54.8533 32.7529 49.1659 46.2697 39.1288 56.2144L1.3412 18.0752ZM1.25781 18.2734L-52.4306 18.5038C-52.3723 32.0955 -47.1883 45.1644 -37.9146 55.1003L1.3347 18.4672L40.584 -18.1659C49.7594 -8.33528 54.8885 4.59526 54.9462 18.0429L1.25781 18.2734ZM1.3347 18.4672L-37.8607 55.1581C-32.8148 60.5484 -26.716 64.8465 -19.9412 67.7859L1.42783 18.5328L22.7969 -30.7202C29.5012 -27.8114 35.5366 -23.5579 40.5301 -18.2236L1.3347 18.4672ZM1.42783 18.5328L-19.9412 67.7859C-13.1678 70.7246 -5.8627 72.2426 1.52238 72.2449L1.53938 18.556L1.55638 -35.1329C8.8647 -35.1306 16.0939 -33.6284 22.7969 -30.7202L1.42783 18.5328ZM1.53938 18.556V72.2449H8.48859V18.556V-35.1329H1.53938V18.556ZM8.48859 18.556L8.6939 72.2445C22.9367 72.1901 36.5802 66.5079 46.6512 56.437L8.68737 18.4732L-29.2764 -19.4905C-19.311 -29.456 -5.8103 -35.0786 8.28328 -35.1325L8.48859 18.556ZM8.68737 18.4732L46.6512 56.437C56.7229 46.3652 62.4042 32.7213 62.4587 18.4798L8.77015 18.2745L-44.9184 18.0691C-44.8645 3.97681 -39.2427 -9.52424 -29.2764 -19.4905L8.68737 18.4732ZM8.77015 18.2745H62.459V17.5835H8.77015H-44.9187V18.2745H8.77015ZM8.77015 17.5835L62.459 17.5839C62.4592 3.30545 56.8012 -10.3911 46.7243 -20.5068L8.68775 17.3841L-29.3488 55.2749C-39.3202 45.2652 -44.9188 31.7121 -44.9187 17.5831L8.77015 17.5835ZM8.68775 17.3841L46.7243 -20.5068C36.648 -30.6218 22.9735 -36.3329 8.69429 -36.3876L8.48859 17.3009L8.28288 70.9894C-5.84679 70.9353 -19.3781 65.284 -29.3488 55.2749L8.68775 17.3841ZM8.48859 17.3009V-36.388H3.8861V17.3009V70.9898H8.48859V17.3009ZM3.8861 17.3009L41.8499 55.2647L48.6302 48.4844L10.6664 10.5206L-27.2974 -27.4432L-34.0777 -20.6629L3.8861 17.3009ZM10.6664 10.5206L-27.2974 48.4844L-20.5171 55.2647L17.4466 17.3009L55.4104 -20.6629L48.6302 -27.4432L10.6664 10.5206ZM17.4466 17.3009V-36.388H12.8041V17.3009V70.9898H17.4466V17.3009ZM12.8041 17.3009L12.5984 -36.3876C-1.68066 -36.3329 -15.3552 -30.6219 -25.4316 -20.5068L12.6049 17.3841L50.6415 55.2749C40.6707 65.2841 27.1393 70.9353 13.0098 70.9894L12.8041 17.3009ZM12.6049 17.3841L-25.4316 -20.5068C-35.5082 -10.3914 -41.1665 3.30504 -41.1664 17.5839L12.5225 17.5835L66.2114 17.5831C66.2115 31.7125 60.6126 45.2655 50.6415 55.2749L12.6049 17.3841ZM12.5225 17.5835H-41.1664V18.2745H12.5225H66.2114V17.5835H12.5225ZM12.5225 18.2745L-41.166 18.0686C-41.1937 25.2913 -39.7712 32.4459 -36.983 39.1085L12.544 18.3825L62.0711 -2.34346C64.8306 4.25071 66.2384 11.3318 66.211 18.4803L12.5225 18.2745ZM12.544 18.3825L-36.983 39.1085C-34.1947 45.7716 -30.0973 51.8068 -24.934 56.8567L12.6059 18.4737L50.1458 -19.9093C55.2561 -14.9113 59.3114 -8.93809 62.0711 -2.34346L12.544 18.3825ZM12.6059 18.4737L-25.3266 56.4687C-15.2435 66.5353 -1.58846 72.2066 12.6603 72.2447L12.8041 18.556L12.9479 -35.1327C27.048 -35.0949 40.5605 -29.4828 50.5384 -19.5213L12.6059 18.4737ZM12.8041 18.556V72.2449H19.7955V18.556V-35.1329H12.8041V18.556ZM19.7955 18.556L19.6056 72.2446C27.0267 72.2708 34.3716 70.7663 41.1819 67.8271L19.9077 18.5331L-1.3666 -30.761C5.37297 -33.6696 12.6415 -35.1585 19.9855 -35.1325L19.7955 18.556ZM19.9077 18.5331L41.1819 67.8271C47.9943 64.887 54.1269 60.574 59.197 55.1577L20.0013 18.4672L-19.1944 -18.2233C-14.177 -23.5833 -8.10817 -27.8515 -1.3666 -30.761L19.9077 18.5331ZM20.0013 18.4672L58.875 55.4987C68.6475 45.24 73.9947 31.5488 73.7599 17.3801L20.0784 18.2699L-33.6032 19.1596C-33.8356 5.13766 -28.5437 -8.41183 -18.8724 -18.5643L20.0013 18.4672ZM20.0784 18.2699L73.7599 17.3801C73.5251 3.21192 67.7274 -10.2947 57.6199 -20.2242L19.9948 18.0752L-17.6303 56.3746C-27.6331 46.5479 -33.3708 33.1811 -33.6032 19.1596L20.0784 18.2699ZM10.662 4.43559L-27.3017 42.3994L-25.1434 44.5577L12.8203 6.59388L50.7841 -31.3699L48.6258 -33.5282L10.662 4.43559ZM12.8203 6.59388L-25.1434 -31.3699L-27.2963 -29.217L10.6675 8.74676L48.6312 46.7105L50.7841 44.5577L12.8203 6.59388ZM10.6675 8.74676L48.6313 -29.217L46.473 -31.3753L8.50917 6.58847L-29.4546 44.5522L-27.2963 46.7105L10.6675 8.74676ZM8.50917 6.58847L46.473 44.5522L48.6258 42.3994L10.662 4.43559L-27.3017 -33.5282L-29.4546 -31.3753L8.50917 6.58847Z\"\r\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13120)\" />\r\n </svg>\r\n </span>\r\n <strong>AI Assistant</strong>\r\n </div>\r\n <div *ngIf=\"eyeTestAiMessage; else aiLoading\" [innerHTML]=\"parseAiMarkdown(eyeTestAiMessage)\"></div>\r\n <ng-template #aiLoading>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\" style=\"font-size: 13px;\">AI is thinking...</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"keyType ==='store'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg\r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('auditedDate')\">Audited Date <svg\r\n [ngClass]=\"sortedColumn === 'auditedDate' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin'\" class=\"text-start\">\r\n RM Name\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"text-start\">\r\n Cluster Name\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th class=\"text-start\">Optom ID</th>\r\n <th class=\"text-start\">Optom Email ID</th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Optom Name</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Token No</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Power Types</th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('ComplianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'ComplianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'ComplianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> \r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg\r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n<th><span class=\"cursor-pointer\" (click)=\"onSort('auditedSteps')\">Steps Covered By Human <svg\r\n [ngClass]=\"sortedColumn === 'auditedSteps' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedSteps' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th>Human Audited Score</th>\r\n\r\n \r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('visitorsType')\">Visitor Type <svg\r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th class=\"text-start\" *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('comment')\">Eye Test Status <svg\r\n [ngClass]=\"sortedColumn === 'comment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'comment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('subComment')\">Comments <svg\r\n [ngClass]=\"sortedColumn === 'subComment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'subComment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg\r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.date | date:'dd MMM, yyyy'}}</td>\r\n <td>{{obj?.auditedDate}}</td>\r\n <td *ngIf=\"users?.role === 'superadmin'\">\r\n <ng-container *ngIf=\"obj?.RMName\">\r\n <!-- Split and show the first value -->\r\n {{ obj.RMName.split(',')[0] }}\r\n\r\n <!-- Show +N badge if more values exist -->\r\n <span *ngIf=\"obj.RMName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.RMName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n</td>\r\n\r\n <td *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\">\r\n <ng-container *ngIf=\"obj?.clusterName\">\r\n {{ obj.clusterName.split(',')[0] }}\r\n <span *ngIf=\"obj.clusterName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.clusterName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n \r\n \r\n </td>\r\n <td>{{obj?.storeName}}</td>\r\n <td>{{obj?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\"><span *ngIf=\"obj?.optumId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optumId}}</span>\r\n <td *ngIf=\"this.typeValue ==='remote'\"><span *ngIf=\"obj?.optm_userId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optm_userId}}</span>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.salesmanEmailId ? obj?.salesmanEmailId :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.userEmail ? obj?.userEmail :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.displayName ? obj?.displayName :''}}\r\n </td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.tokenNo ?\r\n obj?.tokenNo:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.queueId ?\r\n obj?.queueId:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" >{{obj?.nearAddition ?\r\n obj?.nearAddition === \"true\"? \"With Near Addition\" :\"Without Near Addition\":'--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>{{obj?.coveredStepsAI ? obj?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?.trustScore ?? '--'}}</td>\r\n <td>{{obj?.auditedSteps ? obj?.auditedSteps:'--'}}</td>\r\n <td>{{obj?.humanComplianceScore ? obj?.humanComplianceScore :'--'}}</td>\r\n <td class=\"text-capitalize\" *ngIf=\"this.typeValue !=='remote'\">{{obj?.visitorsType ?\r\n obj?.visitorsType:'--'}}</td>\r\n <td>{{obj?.min ? obj?.min :'0'}} mins {{obj?.sec ?\r\n obj?.sec:'0'}} secs</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">\r\n <span \r\n class=\"badge\" \r\n [ngClass]=\"obj?.comment ? 'badge-light-danger' : 'badge-light-success'\">\r\n {{ obj?.comment ? 'Fake' : 'Genuine' }}\r\n </span>\r\n</td>\r\n <td>{{obj?.subComment ? obj?.subComment:'--'}}</td>\r\n <td><span class=\"badge badge-light-primary\"\r\n *ngIf=\"obj?.auditStatus ==='Yet-to-Audit'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\"\r\n *ngIf=\"obj?.auditStatus ==='Re-Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\"\r\n *ngIf=\"obj?.auditStatus ==='Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\"\r\n *ngIf=\"obj?.auditStatus ==='In-Progress'\">{{obj?.auditStatus}}</span>\r\n </td>\r\n <td>{{obj?.auditedBy?obj?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='rm'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\"> Clusters Count <svg\r\n [ngClass]=\"sortedColumn === 'clusterCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed \r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score \r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score \r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.RMName ? obj?.RMName:'--'}}</td>\r\n <td>{{obj?.clusterCount ? obj?.clusterCount:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>{{obj.complianceScore ?? '--'}}\r\n \r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('cluster',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='cluster'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n \r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Clusters Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed\r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score\r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.clusterName ? obj?.clusterName:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('store',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n</div>\r\n</section>\r\n\r\n\r\n<section *ngIf=\"eyeView\" class=\"container-fluid new1 mt-4\">\r\n<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName ? auditDetails?.displayName:'--'}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId ?auditDetails?.engagementId:'--'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore : 0}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div [ngClass]=\"eyeTestType ==='fake' ? 'col-md-12' : 'col-md-6'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestType !=='fake'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-start\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-start\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-start\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-start\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Conversation Recording + Transcript \u2500\u2500 -->\r\n<div class=\"row mt-3\" *ngIf=\"conversationData\">\r\n <!-- Left: Recording + Transcript -->\r\n <div class=\"col-md-6 d-flex flex-column gap-3\">\r\n <!-- Conversation Recording -->\r\n <div class=\"recording-box\">\r\n <div class=\"recording-title\">Conversation Recording</div>\r\n <!-- Audio element -->\r\n <audio id=\"conv-audio\" [src]=\"conversationData?.audio_url\"\r\n (timeupdate)=\"onConvTimeUpdate()\"\r\n (loadedmetadata)=\"onConvLoaded()\"\r\n (ended)=\"convIsPlaying = false\">\r\n </audio>\r\n <!-- Waveform bars -->\r\n <div class=\"waveform-bars\" [class.is-playing]=\"convIsPlaying\">\r\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\"\r\n [style.height.px]=\"h\"\r\n [class.wf-bar--played]=\"convProgress > i / waveformHeights.length\">\r\n </div>\r\n </div>\r\n <!-- Player controls -->\r\n <div class=\"player-row\">\r\n <div class=\"play-btn-wrap\">\r\n <button class=\"play-btn-circle\" (click)=\"toggleConvPlay()\" type=\"button\">\r\n <svg *ngIf=\"!convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n <svg *ngIf=\"convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/></svg>\r\n </button>\r\n </div>\r\n <div class=\"player-progress w-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"player-time start-time\">{{ convCurrentTime }}</span>\r\n <span class=\"player-time end-time\">{{ convDuration }}</span>\r\n </div>\r\n <div class=\"progress-track\" (click)=\"seekConvAudio($event)\" style=\"cursor:pointer;\">\r\n <div class=\"progress-fill\" [style.width.%]=\"convProgress * 100\"></div>\r\n </div>\r\n </div>\r\n <button class=\"mute-btn\" (click)=\"toggleConvMute()\" [title]=\"convIsMuted ? 'Unmute' : 'Mute'\" type=\"button\">\r\n <svg *ngIf=\"!convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"/></svg>\r\n <svg *ngIf=\"convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"/></svg>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- Conversation Transcript -->\r\n <div class=\"card p-4 flex-grow-1\">\r\n <div class=\"recording-title mb-3\">Conversation Transcript</div>\r\n <div style=\"overflow-y: auto; font-size: 14px; color: #344054; line-height: 1.6; max-height: 180px;\">\r\n <span *ngIf=\"conversationData?.transcript_summary; else noTranscript\">{{ conversationData?.transcript_summary }}</span>\r\n <ng-template #noTranscript><span class=\"text-muted\">No transcript available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Step tabs + audio info + evidence -->\r\n <div class=\"col-md-6\">\r\n <div class=\"card p-4\" style=\"min-height: 100%;\">\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-center gap-2 mb-1\">\r\n <span class=\"conv-card-title\">Step-wise Breakdown</span>\r\n <span class=\"badge badge-light-primary ms-1\">Audio</span>\r\n </div>\r\n <!-- Recently Audited By -->\r\n <div class=\"d-flex align-items-center gap-3 mb-3 pb-2 border-bottom\" *ngIf=\"auditDetails?.auditedBy || auditDetails?.auditedDate\" style=\"font-size: 12px; color: #667085;\">\r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"d-flex gap-3 mt-10\" style=\"min-height: 280px;\">\r\n <!-- Step pill list -->\r\n <div style=\"min-width: 190px; max-height: 320px; overflow-y: auto; border-right: 1px solid #EAECF0; padding-right: 12px;\">\r\n <div *ngFor=\"let step of conversationData?.metrics_results; let i = index\"\r\n class=\"conv-step-pill\"\r\n [class.active]=\"selectedStepIndex === i\"\r\n (click)=\"selectedStepIndex = i\">\r\n {{ step?.metricName }}\r\n </div>\r\n </div>\r\n <!-- Selected step detail -->\r\n <div class=\"flex-grow-1 ps-2\" *ngIf=\"conversationData?.metrics_results?.[selectedStepIndex] as step\">\r\n <!-- Click to Play -->\r\n <div class=\"conv-play-row\" *ngIf=\"step?.startTime\" (click)=\"playFromStep(step)\">\r\n <div class=\"conv-play-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n </div>\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 600; color: #101828;\">Click to Play</div>\r\n <div style=\"font-size: 12px; color: #667085;\">\r\n Audio Starts at {{ step?.startTime }}\r\n <!-- <span *ngIf=\"step?.endTime\"> \u2013 {{ step?.endTime }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Summary -->\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 700; color: #101828; margin-bottom: 8px;\">Summary</div>\r\n <div style=\"font-size: 13px; color: #344054; line-height: 1.6;\">\r\n <span *ngIf=\"step?.evidence_quote; else noEvidence\">{{ step?.evidence_quote }}</span>\r\n <ng-template #noEvidence><span class=\"text-muted\">No evidence available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\" >Audited Date</th>\r\n <th class=\"text-start\" >Time Stamp</th>\r\n <th class=\"text-start\" >View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th class=\"text-start\">Status changed from</th>\r\n <th class=\"text-start\">Noted Time Range</th>\r\n <th class=\"text-start\">Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n</section>", styles: ["@charset \"UTF-8\";:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.card-title{font-size:1.15rem!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}table th,table td{height:44px!important;padding:12px 24px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}table td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}.rotate{rotate:180deg;transition:1s}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.dashed{border-radius:4px;border:1px dashed var(--Error-500, #F04438)!important;background:var(--Error-25, #FFFBFA)}.dashed-desc{color:var(--Error-600, #3F4254)!important;font-size:14px;font-weight:600;line-height:24px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.text-value{color:var(--Black, #101828);font-size:24px;font-weight:600;line-height:32px}.text-sub{color:var(--Error-600, #667085)!important;font-size:16px;font-weight:600;line-height:18px}.test-sub1{color:var(--Gray-800, #1D2939);font-size:11px;font-weight:400;line-height:18px}.new1 .header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.new1 .text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.new1 .bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.new1 .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.new1 .video-position{position:absolute;top:50%;transform:translateY(-50%)}.new1 .btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 .btn.btn-success:hover:not(.btn-active),.new1 .btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 table tr{vertical-align:middle}.new1 table tr td{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:500;line-height:20px}.new1 .custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.new1 .dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .scroll-container{display:flex;width:100%}.new1 .scroll-container .item{width:100%;text-align:start}.new1 .scroll-container .items:hover,.new1 .scroll-container .tems.focus,.new1 .scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.new1 .label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.new1 .scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.new1 .scroll-section:last-child{border-right:none}.new1 .scroll-section div{padding:8px;cursor:pointer}.new1 .scroll-section div.selected{background:#007bff;color:#fff}.new1 .bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.new1 .bg-danger{background:var(--Primary-500, #D92D20)!important}.new1 .text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.new1 .text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.new1 .text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.new1 .custom-tooltip-content{font-size:12px!important;text-align:left!important}.new1 ::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.new1 .test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.new1 .engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.new1 .disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.new1 .h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.new1 .h-500px{height:600px!important}.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.new1 .h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.new1 .h-auto{height:370px!important;object-fit:fill}}.new1 .ts700px{min-height:auto!important;max-height:700px!important}.new1 .conv-card-title{font-size:14px;font-weight:700;color:#101828;line-height:24px}.new1 .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:10px;box-shadow:0 1px 2px #1018280d}.new1 .recording-title{font-size:16px;font-weight:600;padding:8px 16px;border-bottom-width:2px;border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.new1 .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.new1 .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.new1 .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.new1 .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.new1 .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.new1 .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.new1 .player-row{display:flex;align-items:center;gap:16px}.new1 .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.new1 .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.new1 .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.new1 .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.new1 .player-row .mute-btn:hover{color:#101828}.new1 .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.new1 .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.new1 .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.new1 .player-row .player-progress .player-time.start-time{color:#00a3ff}.new1 .conv-step-pill{padding:8px 12px;margin-bottom:18px;border-radius:8px;border:1.5px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:400;line-height:20px;cursor:pointer;transition:all .15s}.new1 .conv-step-pill:hover{border-color:#84adff;background:#f5f8ff}.new1 .conv-step-pill.active{border-color:#6bcaff;color:#009bf3;font-weight:600}.new1 .conv-play-row{display:flex;align-items:center;gap:14px;margin-bottom:20px;cursor:pointer;-webkit-user-select:none;user-select:none}.new1 .conv-play-row .conv-play-icon{width:48px;height:48px;border-radius:50%;background:#00a3ff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}.new1 .conv-play-row:hover .conv-play-icon{background:#0087d5}::ng-deep .plus-menu-wrap{position:relative;flex-shrink:0}::ng-deep .plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%!important;border:1.5px solid #D0D5DD;background:#fff;display:flex!important;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;padding:0;transition:background .15s,border-color .15s}::ng-deep .plus-menu-wrap .btn-plus:hover,::ng-deep .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup{position:absolute;top:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:9999}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px;display:block}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item{display:flex!important;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}::ng-deep .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap}@keyframes eyePopupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i12.CustomSelectComponent, selector: "lib-stores-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i13.GroupSelectComponent, selector: "lib-group-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i14.SelectDropComponent, selector: "lib-select-drop", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i9.DatePipe, name: "date" }] });
1843
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EyeTestComponent, selector: "lib-eye-test", host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "tooltipContent", first: true, predicate: ["tooltipContent"], descendants: true }, { propertyName: "viewHistory", first: true, predicate: ["viewHistory"], descendants: true }, { propertyName: "viewCancel", first: true, predicate: ["viewCancel"], descendants: true }, { propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<section *ngIf=\"!eyeView\" class=\"container-fluid\">\r\n<div class=\"card mb-2\">\r\n <div *ngIf=\"loading1\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <form *ngIf=\"!loading1\" [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2 mb-4' : 'col-2 mb-4'\" class=\"col-1 mb-4\" style=\"z-index: 33 !important;\" >\r\n <lib-reactive-select formControlName=\"dateType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"dateType\" (itemChange)=\"dateTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-10 z-2\" style=\"min-width: 150px !important;\" type=\"text\"\r\n matInput ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"false\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" [ngModelOptions]=\"{standalone: true}\"\r\n (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\"\r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"type\"\r\n (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n \r\n <!-- </div>\r\n </div> -->\r\n <!-- *ngIf=\"users?.role ==='superadmin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('RmList')?.value?.length)\">\r\n Select RM\r\n </div>\r\n <lib-group-select [items]=\"RmList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onRmSelect($event)\" [selectedValues]=\"eyeTestForm.get('RmList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n \r\n </div>\r\n <!-- *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n \r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" >\r\n \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n \r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('complianceScore')?.value?.length)\">\r\n Select Score\r\n </div>\r\n <lib-select-drop [items]=\"typePercentageArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typePercentageChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('complianceScore')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-1 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"auditType\"\r\n (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('auditStatus')?.value?.length)\">\r\n Audit Status\r\n </div>\r\n <lib-select-drop [items]=\"auditStatusArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typeAuditStatusChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('auditStatus')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"nearAddition\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"nearAdditionArray\" (itemChange)=\"nearAdditionChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"category\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"categoryArray\" (itemChange)=\"categoryTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div \r\n *ngIf=\"users?.role\" \r\n class=\"text-end\"\r\n [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-1 mb-4' : 'col-1 mb-4'\"\r\n>\r\n<!-- [ngClass]=\"getApplyButtonClass(users?.role, eyeTestForm.get('type')?.value)\" -->\r\n\r\n <a (click)=\"onSubmit();\" type=\"submit\" class=\"btn btn-sm btn-primary py-3 \">\r\n <span>Apply</span>\r\n </a>\r\n\r\n</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n <div *ngIf=\"showEyeTest\" class=\"ms-6 mb-3\">\r\n\r\n <h3 class=\"card-title dashed w-100 row\">\r\n <span class=\"col-10 title-text py-3\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\" />\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path\r\n d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\"\r\n stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 30 days. Audit data\r\n remains accessible, but videos will not be retained beyond this period.</span></span>\r\n <span class=\"col-2 pt-2 text-end cursor-pointer\" (click)=\"closeEyeTest()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <path d=\"M25 15L15 25M15 15L25 25\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </h3>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"row\">\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"col\">\r\n <div class=\"card p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Regional Managers</h5>\r\n <span class=\"text-value\">{{RmListData ?? '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card mt-5 p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Clusters</h5>\r\n <span class=\"text-value\">{{groups?.length ?? '--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType !=='rm' || users?.role ==='admin'\" class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Clusters</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ groups?.length ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Total Tango AI Files</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.totalFiles ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Audit Completed</h5>\r\n </div>\r\n <div class=\"card-body py-3 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.completedFiles ?? '-' }}</span>\r\n\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-sub\">{{ (eyeTestCardData?.completedRatio ?? '-') + '%' }} <span\r\n class=\"test-sub\">Completed</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Tango Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.tangoScore ?? '-' }}</span>\r\n </div>\r\n <div class=\"card-footer pe-0 ps-3 py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span>\r\n <svg *ngIf=\"eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"!eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_760_9776)\">\r\n <path d=\"M11.575 9L6.82495 4.25L4.32495 6.75L0.574951 3M11.575 9H8.57495M11.575 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_760_9776\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.0749512)\" />\r\n </clipPath>\r\n </defs>\r\n </svg> \r\n <span class=\"text-sub ms-2\">{{ eyeTestCardData?.tangoScoreTrend !== null \r\n ? (getAbsValue(eyeTestCardData.tangoScoreTrend) | number:'1.0-0':'en-US') + '%' \r\n : '-' }}\r\n <span\r\n class=\"test-sub1\">vs previous week</span></span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.trustScore && eyeTestCardData?.trustScore !== 'NA' \r\n ? eyeTestCardData.trustScore + '%' \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Human Audited Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.humanScore && eyeTestCardData?.humanScore !== 'NA' \r\n ? eyeTestCardData.humanScore \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span *ngIf=\"users?.role === 'superadmin' && keyType ==='rm'\" class=\"title-text mb-2\">\r\n Audit Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n\r\n <!-- Admin + cluster present \u2192 RM Summary -->\r\n <div class=\"d-flex\">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='cluster' && users?.role === 'superadmin'\" (click)=\"typeVal1('rm','')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"users?.role === 'admin' && keyType ==='cluster' || users?.role === 'superadmin' && keyType ==='cluster'\" class=\"title-text my-4 mb-2\">\r\n RM Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary text-capitalize\">{{ eyeTestData[0]?.RMName ? eyeTestData[0]?.RMName : '' }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- All other cases \u2192 Eye Test -->\r\n <div class=\"d-flex \">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'superadmin')\"\r\n (click)=\"typeVal1('cluster',this.rmEmail)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'admin')\"\r\n (click)=\"typeVal1('cluster',this.groups)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!(users?.role === 'superadmin' && keyType ==='rm') && !(users?.role === 'superadmin' && keyType ==='cluster') \r\n && !(users?.role === 'admin' && keyType ==='cluster')\" class=\"title-text my-4 mb-2\">\r\n Eye Test\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n </div>\r\n <span *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='admin' && keyType ==='cluster'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='user' && keyType ==='store'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\"\r\n [placeholder]=\"\r\n keyType === 'rm'\r\n ? 'Search by RMName'\r\n : keyType === 'cluster'\r\n ? 'Search by Cluster'\r\n : 'Search'\r\n \" />\r\n\r\n\r\n <span class=\"cursor-pointer\" *ngIf=\"users?.role ==='superadmin'\" (click)=\"settingsView()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45\" height=\"46\"\r\n viewBox=\"0 0 45 46\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_760_9988)\">\r\n <rect x=\"2.71973\" y=\"1.98047\" width=\"40.04\" height=\"40.04\" rx=\"7.28\" fill=\"white\" />\r\n <rect x=\"3.17473\" y=\"2.43547\" width=\"39.13\" height=\"39.13\" rx=\"6.825\" stroke=\"#D0D5DD\"\r\n stroke-width=\"0.91\" />\r\n <g clip-path=\"url(#clip0_760_9988)\">\r\n <path\r\n d=\"M22.7396 24.2749C23.9961 24.2749 25.0146 23.2563 25.0146 21.9999C25.0146 20.7434 23.9961 19.7249 22.7396 19.7249C21.4832 19.7249 20.4646 20.7434 20.4646 21.9999C20.4646 23.2563 21.4832 24.2749 22.7396 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M28.3513 24.2749C28.2503 24.5036 28.2202 24.7573 28.2648 25.0033C28.3094 25.2493 28.4267 25.4763 28.6015 25.655L28.647 25.7005C28.788 25.8414 28.8999 26.0087 28.9762 26.1928C29.0526 26.3769 29.0919 26.5743 29.0919 26.7736C29.0919 26.9729 29.0526 27.1703 28.9762 27.3544C28.8999 27.5385 28.788 27.7058 28.647 27.8466C28.5062 27.9876 28.3389 28.0995 28.1548 28.1758C27.9707 28.2522 27.7733 28.2914 27.574 28.2914C27.3747 28.2914 27.1773 28.2522 26.9932 28.1758C26.8091 28.0995 26.6418 27.9876 26.5009 27.8466L26.4554 27.8011C26.2767 27.6263 26.0497 27.509 25.8037 27.4644C25.5577 27.4198 25.304 27.4499 25.0753 27.5509C24.851 27.647 24.6597 27.8066 24.525 28.0101C24.3902 28.2135 24.3179 28.4519 24.3169 28.696V28.8249C24.3169 29.2271 24.1572 29.6129 23.8727 29.8973C23.5883 30.1817 23.2025 30.3415 22.8003 30.3415C22.398 30.3415 22.0123 30.1817 21.7278 29.8973C21.4434 29.6129 21.2836 29.2271 21.2836 28.8249V28.7566C21.2777 28.5056 21.1965 28.2622 21.0504 28.058C20.9044 27.8538 20.7003 27.6982 20.4646 27.6115C20.2359 27.5106 19.9822 27.4805 19.7362 27.5251C19.4902 27.5697 19.2632 27.687 19.0844 27.8618L19.0389 27.9073C18.8981 28.0483 18.7308 28.1602 18.5467 28.2365C18.3626 28.3128 18.1652 28.3521 17.9659 28.3521C17.7666 28.3521 17.5692 28.3128 17.3851 28.2365C17.201 28.1602 17.0337 28.0483 16.8929 27.9073C16.7519 27.7664 16.64 27.5992 16.5637 27.415C16.4873 27.2309 16.448 27.0336 16.448 26.8342C16.448 26.6349 16.4873 26.4376 16.5637 26.2535C16.64 26.0693 16.7519 25.9021 16.8929 25.7612L16.9384 25.7157C17.1132 25.537 17.2305 25.31 17.2751 25.064C17.3197 24.818 17.2896 24.5643 17.1886 24.3355C17.0925 24.1112 16.9329 23.92 16.7294 23.7852C16.526 23.6505 16.2876 23.5782 16.0435 23.5772H15.9146C15.5124 23.5772 15.1266 23.4174 14.8422 23.133C14.5577 22.8486 14.3979 22.4628 14.3979 22.0605C14.3979 21.6583 14.5577 21.2725 14.8422 20.9881C15.1266 20.7037 15.5124 20.5439 15.9146 20.5439H15.9829C16.2339 20.538 16.4773 20.4568 16.6815 20.3107C16.8857 20.1646 17.0413 19.9605 17.1279 19.7249C17.2289 19.4961 17.259 19.2424 17.2144 18.9964C17.1698 18.7504 17.0525 18.5234 16.8777 18.3447L16.8322 18.2992C16.6912 18.1583 16.5793 17.9911 16.503 17.807C16.4267 17.6228 16.3874 17.4255 16.3874 17.2262C16.3874 17.0268 16.4267 16.8295 16.503 16.6454C16.5793 16.4612 16.6912 16.294 16.8322 16.1531C16.9731 16.0121 17.1403 15.9002 17.3244 15.8239C17.5086 15.7476 17.7059 15.7083 17.9052 15.7083C18.1046 15.7083 18.3019 15.7476 18.486 15.8239C18.6702 15.9002 18.8374 16.0121 18.9783 16.1531L19.0238 16.1986C19.2025 16.3734 19.4295 16.4907 19.6755 16.5353C19.9215 16.5799 20.1752 16.5498 20.4039 16.4489H20.4646C20.6889 16.3527 20.8802 16.1931 21.0149 15.9897C21.1497 15.7862 21.222 15.5478 21.2229 15.3038V15.1749C21.2229 14.7726 21.3827 14.3869 21.6672 14.1024C21.9516 13.818 22.3374 13.6582 22.7396 13.6582C23.1419 13.6582 23.5276 13.818 23.8121 14.1024C24.0965 14.3869 24.2563 14.7726 24.2563 15.1749V15.2431C24.2573 15.4871 24.3296 15.7256 24.4643 15.929C24.599 16.1325 24.7903 16.2921 25.0146 16.3882C25.2433 16.4891 25.4971 16.5193 25.7431 16.4747C25.9891 16.4301 26.2161 16.3128 26.3948 16.138L26.4403 16.0925C26.5811 15.9514 26.7484 15.8396 26.9325 15.7632C27.1167 15.6869 27.314 15.6476 27.5133 15.6476C27.7126 15.6476 27.91 15.6869 28.0941 15.7632C28.2782 15.8396 28.4455 15.9514 28.5864 16.0925C28.7274 16.2333 28.8392 16.4006 28.9156 16.5847C28.9919 16.7688 29.0312 16.9662 29.0312 17.1655C29.0312 17.3648 28.9919 17.5622 28.9156 17.7463C28.8392 17.9304 28.7274 18.0977 28.5864 18.2385L28.5409 18.284C28.366 18.4628 28.2488 18.6898 28.2042 18.9358C28.1596 19.1818 28.1897 19.4355 28.2906 19.6642V19.7249C28.3867 19.9492 28.5464 20.1404 28.7498 20.2752C28.9533 20.4099 29.1917 20.4822 29.4357 20.4832H29.5646C29.9669 20.4832 30.3526 20.643 30.6371 20.9274C30.9215 21.2119 31.0813 21.5976 31.0813 21.9999C31.0813 22.4021 30.9215 22.7879 30.6371 23.0723C30.3526 23.3567 29.9669 23.5165 29.5646 23.5165H29.4964C29.2523 23.5175 29.0139 23.5898 28.8105 23.7246C28.607 23.8593 28.4474 24.0506 28.3513 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_760_9988\" x=\"0.719727\" y=\"0.980469\" width=\"44.04\" height=\"44.04\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_760_9988\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_760_9988\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_760_9988\">\r\n <rect width=\"18.2\" height=\"18.2\" fill=\"white\"\r\n transform=\"translate(13.6396 12.9004)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\r\n <path d=\"M7.53369 12.8441H15.0241L13.5568 14.3172L14.3587 15.1191L17.2024 12.2754L14.3587 9.43164L13.5568 10.2336L15.0241 11.7066H7.53369V12.8441Z\" fill=\"black\"/>\r\n <path d=\"M12.6526 8.8631V6.5881C12.653 6.51325 12.6387 6.43904 12.6104 6.36975C12.5821 6.30045 12.5404 6.23743 12.4877 6.18428L8.5064 2.20303C8.45326 2.15032 8.39023 2.10862 8.32094 2.08031C8.25164 2.05201 8.17744 2.03766 8.10259 2.0381H2.41509C2.1134 2.0381 1.82408 2.15794 1.61075 2.37126C1.39743 2.58458 1.27759 2.87391 1.27759 3.1756V16.8256C1.27759 17.1273 1.39743 17.4166 1.61075 17.6299C1.82408 17.8433 2.1134 17.9631 2.41509 17.9631H11.5151C11.8168 17.9631 12.1061 17.8433 12.3194 17.6299C12.5327 17.4166 12.6526 17.1273 12.6526 16.8256V15.6881H11.5151V16.8256H2.41509V3.1756H6.96509V6.5881C6.96509 6.88978 7.08493 7.17911 7.29826 7.39243C7.51158 7.60575 7.80091 7.7256 8.10259 7.7256H11.5151V8.8631H12.6526ZM8.10259 6.5881V3.40878L11.2819 6.5881H8.10259Z\" fill=\"black\"/>\r\n</svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Tango AI Section (Audit Summary + RM Summary only) \u2500\u2500 -->\r\n <div class=\"px-6 pb-4\" *ngIf=\"(users?.role === 'superadmin' && keyType === 'rm') || keyType === 'cluster'\">\r\n <!-- Header -->\r\n <div class=\"text-center mb-3\">\r\n <h3 class=\"fw-bold mb-1\" style=\"color: #0591FF;\">\r\n Tango AI\r\n <sup>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 26 23\" fill=\"none\">\r\n <path d=\"M5.40634 1.88184L5.61168 2.76648C5.75884 3.40173 6.09183 3.99315 6.57843 4.48348C7.06503 4.97382 7.68876 5.34646 8.38923 5.56534L8.64861 5.64628L8.38923 5.72721C7.68876 5.94609 7.06503 6.31874 6.57843 6.80907C6.09183 7.2994 5.75884 7.89082 5.61168 8.52607L5.40634 9.41072L5.20099 8.52607C5.05384 7.89082 4.72084 7.2994 4.23425 6.80907C3.74765 6.31874 3.12392 5.94609 2.42344 5.72721L2.16406 5.64628L2.42344 5.56534C3.12392 5.34646 3.74765 4.97382 4.23425 4.48348C4.72084 3.99315 5.05384 3.40173 5.20099 2.76648L5.40634 1.88184ZM17.2947 2.82295L17.8956 5.32065C18.2018 6.59405 18.8818 7.77662 19.8692 8.75304C20.8566 9.72945 22.1177 10.4664 23.5296 10.892L24.86 11.2929L23.5296 11.6938C22.1177 12.1195 20.8566 12.8564 19.8692 13.8328C18.8818 14.8093 18.2018 15.9918 17.8956 17.2652L17.2947 19.7629L16.6938 17.2652C16.3875 15.9918 15.7076 14.8093 14.7202 13.8328C13.7328 12.8564 12.4717 12.1195 11.0598 11.6938L9.72937 11.2929L11.0598 10.892C12.4717 10.4664 13.7328 9.72945 14.7202 8.75304C15.7076 7.77662 16.3875 6.59405 16.6938 5.32065L17.2947 2.82295Z\" fill=\"url(#eyeTestAiGrad)\"/>\r\n <defs>\r\n <linearGradient id=\"eyeTestAiGrad\" x1=\"13.512\" y1=\"19.7629\" x2=\"13.512\" y2=\"1.88184\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"white\"/>\r\n <stop offset=\"1\" stop-color=\"#0591FF\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </sup>\r\n </h3>\r\n <p class=\"text-dark mb-0\" style=\"font-size: 13px;\">Ask the Tango AI on what you want..</p>\r\n </div>\r\n\r\n <!-- Input -->\r\n <div class=\"d-flex justify-content-center mb-3\">\r\n <div style=\"width: 60%; min-width: 300px;\">\r\n\r\n <div class=\"position-relative\">\r\n\r\n <!-- Plus Button with Model Popup (inside input, left side) -->\r\n <div class=\"plus-menu-wrap position-absolute top-50 translate-middle-y ps-2\" style=\"left: 4px; z-index: 10;\">\r\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\r\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\r\n <div class=\"plus-popup-section-label\">Model</div>\r\n <button class=\"plus-popup-item\" type=\"button\"\r\n *ngFor=\"let m of modelOptions\"\r\n [class.selected]=\"selectedModel === m.value\"\r\n (click)=\"selectModel(m.value); closePlusMenu()\">\r\n <span class=\"model-hint fw-bold text-dark\">{{ m.label }}</span>\r\n <!-- <span class=\"text-muted ms-1\" style=\"font-size:11px;\">{{ m.value }}</span> -->\r\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"form-control rounded-pill\" placeholder=\"Ask anything...\"\r\n style=\"padding-left: 46px;\"\r\n [(ngModel)]=\"eyeTestChatQuery\" [ngModelOptions]=\"{standalone: true}\"\r\n (keyup.enter)=\"onEyeTestAiSearch()\" />\r\n <div class=\"position-absolute end-0 top-50 translate-middle-y d-flex align-items-center gap-2 pe-3\">\r\n <!-- <span class=\"model-version-tag me-1\">{{ selectedModelVersion }}</span> -->\r\n <button class=\"btn btn-link p-0\" title=\"History\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path d=\"M3.93772 10.3551L3.35767 10.6484L2.77763 10.9417L3.31874 12.0117L3.89878 11.7184L4.47883 11.4251L3.93772 10.3551Z\" fill=\"#667085\"/>\r\n </svg>\r\n </button>\r\n <button class=\"btn btn-link p-0\" title=\"Send\" (click)=\"onEyeTestAiSearch()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10.0003H15.8346M15.8346 10.0003L10.0013 4.16699M15.8346 10.0003L10.0013 15.8337\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div><!-- /position-relative -->\r\n </div><!-- /width wrapper -->\r\n </div>\r\n\r\n <!-- AI Response -->\r\n <div *ngIf=\"showEyeTestAiMessage\" class=\"rounded-3 p-4 mx-auto\" style=\"background: #EAF8FF;\">\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <span class=\"ai-avatar-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\r\n <mask id=\"path-1-inside-1_1849_13120\" fill=\"white\">\r\n <path\r\n d=\"M19.9948 18.0752L19.2779 17.3583L11.5533 9.63369L13.8448 7.34219L14.3938 6.79206C14.4462 6.73892 14.4758 6.66742 14.4762 6.5928C14.476 6.55591 14.4685 6.51941 14.4542 6.4854C14.4399 6.4514 14.419 6.42055 14.3928 6.39462L13.8426 5.84449L11.4125 3.41004L10.8624 2.85991C10.8364 2.83346 10.8054 2.81244 10.7712 2.7981C10.7369 2.78375 10.7002 2.77637 10.6631 2.77637C10.626 2.77637 10.5893 2.78375 10.5551 2.7981C10.5209 2.81244 10.4899 2.83346 10.4639 2.85991L9.91374 3.41113L6.93566 6.38921C6.90923 6.41512 6.88824 6.44604 6.87391 6.48016C6.85958 6.51428 6.8522 6.55092 6.8522 6.58793C6.8522 6.62493 6.85958 6.66157 6.87391 6.69569C6.88824 6.72981 6.90923 6.76073 6.93566 6.78664L9.78053 9.63261L2.05485 17.3583L1.3412 18.0752C1.28828 18.1276 1.2583 18.1989 1.25781 18.2734C1.25812 18.3454 1.28558 18.4146 1.3347 18.4672C1.36093 18.4952 1.39262 18.5176 1.42783 18.5328C1.46303 18.5481 1.501 18.556 1.53938 18.556H8.48859C8.56318 18.5557 8.63463 18.526 8.68737 18.4732C8.74011 18.4205 8.76987 18.349 8.77015 18.2745V17.5835C8.77015 17.5088 8.74052 17.437 8.68775 17.3841C8.63498 17.3311 8.56336 17.3012 8.48859 17.3009H3.8861L10.6664 10.5206L17.4466 17.3009H12.8041C12.7293 17.3012 12.6577 17.3311 12.6049 17.3841C12.5522 17.437 12.5225 17.5088 12.5225 17.5835V18.2745C12.5224 18.3116 12.5297 18.3483 12.544 18.3825C12.5583 18.4168 12.5794 18.4478 12.6059 18.4737C12.6585 18.5262 12.7298 18.5558 12.8041 18.556H19.7955C19.8341 18.5562 19.8723 18.5483 19.9077 18.5331C19.9431 18.5178 19.975 18.4954 20.0013 18.4672C20.0519 18.4141 20.0796 18.3432 20.0784 18.2699C20.0771 18.1965 20.0471 18.1266 19.9948 18.0752ZM10.662 4.43559L12.8203 6.59388L10.6675 8.74676L8.50917 6.58847L10.662 4.43559Z\" />\r\n </mask>\r\n <path\r\n d=\"M19.9948 18.0752L-17.969 56.039L-17.8004 56.2076L-17.6303 56.3746L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055V-20.6055L19.2779 17.3583ZM11.5533 9.63369L-26.4105 -28.3301L-64.3743 9.63369L-26.4105 47.5975L11.5533 9.63369ZM13.8448 7.34219L51.8086 45.306L51.8273 45.2873L51.846 45.2685L13.8448 7.34219ZM14.3938 6.79206L52.3951 44.7184L52.511 44.6022L52.6262 44.4854L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.86661L68.1657 6.59731L68.1644 6.32801L14.4762 6.5928ZM14.3928 6.39462L-23.571 44.3584L-23.4528 44.4766L-23.3339 44.594L14.3928 6.39462ZM13.8426 5.84449L-24.1549 43.7744L-24.1381 43.7914L-24.1212 43.8083L13.8426 5.84449ZM11.4125 3.41004L49.4101 -34.5199L49.3932 -34.5368L49.3763 -34.5538L11.4125 3.41004ZM10.8624 2.85991L-27.4274 40.4949L-27.2651 40.66L-27.1014 40.8237L10.8624 2.85991ZM10.4639 2.85991L48.4649 40.7864L48.6098 40.6412L48.7536 40.4949L10.4639 2.85991ZM9.91374 3.41113L47.8775 41.3749L47.8962 41.3563L47.9148 41.3376L9.91374 3.41113ZM6.93566 6.38921L44.5253 44.7235L44.7133 44.5392L44.8994 44.353L6.93566 6.38921ZM6.8522 6.58793H60.5411H6.8522ZM6.93566 6.78664L44.9067 -31.1699L44.7169 -31.3597L44.5253 -31.5476L6.93566 6.78664ZM9.78053 9.63261L47.7443 47.5964L85.7009 9.63983L47.7515 -28.3239L9.78053 9.63261ZM2.05485 17.3583L-35.9089 -20.6055L-35.952 -20.5624L-35.995 -20.5192L2.05485 17.3583ZM1.3412 18.0752L39.1288 56.2144L39.2604 56.084L39.3911 55.9527L1.3412 18.0752ZM1.25781 18.2734L-52.4299 17.9229L-52.4318 18.2134L-52.4306 18.5038L1.25781 18.2734ZM1.3347 18.4672L-37.9146 55.1003L-37.8877 55.1292L-37.8607 55.1581L1.3347 18.4672ZM1.53938 18.556L1.52238 72.2449H1.53088H1.53938V18.556ZM8.48859 18.556V72.2449H8.59125L8.6939 72.2445L8.48859 18.556ZM8.77015 18.2745L62.4587 18.4798L62.459 18.3771V18.2745H8.77015ZM8.77015 17.5835L-44.9187 17.5831V17.5835H8.77015ZM8.48859 17.3009L8.69429 -36.3876L8.59144 -36.388H8.48859V17.3009ZM3.8861 17.3009L-34.0777 -20.6629L-125.73 70.9898H3.8861V17.3009ZM10.6664 10.5206L48.6302 -27.4432L10.6664 -65.407L-27.2974 -27.4432L10.6664 10.5206ZM17.4466 17.3009V70.9898H147.063L55.4104 -20.6629L17.4466 17.3009ZM12.8041 17.3009V-36.388H12.7012L12.5984 -36.3876L12.8041 17.3009ZM12.5225 17.5835H66.2114V17.5831L12.5225 17.5835ZM12.5225 18.2745L66.211 18.4803L66.2114 18.3774V18.2745H12.5225ZM12.6059 18.4737L50.5384 -19.5213L50.3431 -19.7163L50.1458 -19.9093L12.6059 18.4737ZM12.8041 18.556L12.6603 72.2447L12.7322 72.2449H12.8041V18.556ZM19.7955 18.556L19.9855 -35.1325L19.8905 -35.1329H19.7955V18.556ZM20.0013 18.4672L-18.8724 -18.5643L-19.0342 -18.3945L-19.1944 -18.2233L20.0013 18.4672ZM10.662 4.43559L48.6258 -33.5282L10.662 -71.492L-27.3017 -33.5282L10.662 4.43559ZM12.8203 6.59388L50.7841 44.5577L88.7479 6.59389L50.7841 -31.3699L12.8203 6.59388ZM10.6675 8.74676L-27.2963 46.7105L10.6674 84.6743L48.6312 46.7105L10.6675 8.74676ZM8.50917 6.58847L-29.4546 -31.3753L-67.4184 6.58847L-29.4546 44.5522L8.50917 6.58847ZM19.9948 18.0752L57.9586 -19.8886L57.2417 -20.6055L19.2779 17.3583L-18.6859 55.3221L-17.969 56.039L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055L49.5171 -28.3301L11.5533 9.63369L-26.4105 47.5975L-18.6859 55.3221L19.2779 17.3583ZM11.5533 9.63369L49.5171 47.5975L51.8086 45.306L13.8448 7.34219L-24.119 -30.6216L-26.4105 -28.3301L11.5533 9.63369ZM13.8448 7.34219L51.846 45.2685L52.3951 44.7184L14.3938 6.79206L-23.6074 -31.1343L-24.1564 -30.5841L13.8448 7.34219ZM14.3938 6.79206L52.6262 44.4854C62.5164 34.4538 68.0925 20.9532 68.1644 6.86661L14.4762 6.5928L-39.212 6.31898C-39.141 -7.61836 -33.6239 -20.9759 -23.8385 -30.9013L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.32801C68.1294 -0.770107 66.6945 -7.79255 63.9409 -14.3369L14.4542 6.4854L-35.0325 27.3077C-37.7575 20.8314 -39.1774 13.8819 -39.2121 6.85759L14.4762 6.5928ZM14.4542 6.4854L63.9409 -14.3369C61.1877 -20.8802 57.1705 -26.8162 52.1194 -31.8048L14.3928 6.39462L-23.3339 44.594C-28.3325 39.6573 -32.3079 33.783 -35.0325 27.3077L14.4542 6.4854ZM14.3928 6.39462L52.3566 -31.5692L51.8064 -32.1193L13.8426 5.84449L-24.1212 43.8083L-23.571 44.3584L14.3928 6.39462ZM13.8426 5.84449L51.8402 -32.0855L49.4101 -34.5199L11.4125 3.41004L-26.5851 41.34L-24.1549 43.7744L13.8426 5.84449ZM11.4125 3.41004L49.3763 -34.5538L48.8261 -35.1039L10.8624 2.85991L-27.1014 40.8237L-26.5512 41.3739L11.4125 3.41004ZM10.8624 2.85991L49.1521 -34.7751C44.1297 -39.8848 38.1396 -43.944 31.5307 -46.7149L10.7712 2.7981L-9.98838 52.3111C-16.5289 49.5689 -22.457 45.5518 -27.4274 40.4949L10.8624 2.85991ZM10.7712 2.7981L31.5307 -46.7149C24.9223 -49.4857 17.8285 -50.9125 10.6631 -50.9125V2.77637V56.4653C3.57198 56.4653 -3.44839 55.0532 -9.98838 52.3111L10.7712 2.7981ZM10.6631 2.77637V-50.9125C3.49762 -50.9125 -3.59619 -49.4856 -10.2044 -46.7149L10.5551 2.7981L31.3146 52.3111C24.7748 55.0531 17.7544 56.4653 10.6631 56.4653V2.77637ZM10.5551 2.7981L-10.2044 -46.7149C-16.8129 -43.9442 -22.8032 -39.8852 -27.8259 -34.7751L10.4639 2.85991L48.7536 40.4949C43.7829 45.5521 37.8547 49.569 31.3146 52.3111L10.5551 2.7981ZM10.4639 2.85991L-27.5372 -35.0665L-28.0873 -34.5153L9.91374 3.41113L47.9148 41.3376L48.4649 40.7864L10.4639 2.85991ZM9.91374 3.41113L-28.05 -34.5527L-31.0281 -31.5746L6.93566 6.38921L44.8994 44.353L47.8775 41.3749L9.91374 3.41113ZM6.93566 6.38921L-30.654 -31.9451C-35.7777 -26.9209 -39.8481 -20.9252 -42.6268 -14.3087L6.87391 6.48016L56.3746 27.269C53.6246 33.8172 49.5962 39.7511 44.5253 44.7235L6.93566 6.38921ZM6.87391 6.48016L-42.6268 -14.3087C-45.4052 -7.69299 -46.8367 -0.588947 -46.8367 6.58793H6.8522H60.5411C60.5411 13.6908 59.1244 20.7215 56.3746 27.269L6.87391 6.48016ZM6.8522 6.58793H-46.8367C-46.8367 13.7647 -45.4052 20.8688 -42.6268 27.4845L6.87391 6.69569L56.3746 -14.0932C59.1244 -7.54562 60.5411 -0.514848 60.5411 6.58793H6.8522ZM6.87391 6.69569L-42.6268 27.4845C-39.848 34.1012 -35.7775 40.0969 -30.654 45.1209L6.93566 6.78664L44.5253 -31.5476C49.596 -26.5754 53.6245 -20.6416 56.3746 -14.0932L6.87391 6.69569ZM6.93566 6.78664L-31.0354 44.7432L-28.1905 47.5892L9.78053 9.63261L47.7515 -28.3239L44.9067 -31.1699L6.93566 6.78664ZM9.78053 9.63261L-28.1833 -28.3312L-35.9089 -20.6055L2.05485 17.3583L40.0186 55.3221L47.7443 47.5964L9.78053 9.63261ZM2.05485 17.3583L-35.995 -20.5192L-36.7087 -19.8023L1.3412 18.0752L39.3911 55.9527L40.1047 55.2358L2.05485 17.3583ZM1.3412 18.0752L-36.4464 -20.064C-46.5894 -10.0145 -52.3367 3.64485 -52.4299 17.9229L1.25781 18.2734L54.9456 18.6238C54.8533 32.7529 49.1659 46.2697 39.1288 56.2144L1.3412 18.0752ZM1.25781 18.2734L-52.4306 18.5038C-52.3723 32.0955 -47.1883 45.1644 -37.9146 55.1003L1.3347 18.4672L40.584 -18.1659C49.7594 -8.33528 54.8885 4.59526 54.9462 18.0429L1.25781 18.2734ZM1.3347 18.4672L-37.8607 55.1581C-32.8148 60.5484 -26.716 64.8465 -19.9412 67.7859L1.42783 18.5328L22.7969 -30.7202C29.5012 -27.8114 35.5366 -23.5579 40.5301 -18.2236L1.3347 18.4672ZM1.42783 18.5328L-19.9412 67.7859C-13.1678 70.7246 -5.8627 72.2426 1.52238 72.2449L1.53938 18.556L1.55638 -35.1329C8.8647 -35.1306 16.0939 -33.6284 22.7969 -30.7202L1.42783 18.5328ZM1.53938 18.556V72.2449H8.48859V18.556V-35.1329H1.53938V18.556ZM8.48859 18.556L8.6939 72.2445C22.9367 72.1901 36.5802 66.5079 46.6512 56.437L8.68737 18.4732L-29.2764 -19.4905C-19.311 -29.456 -5.8103 -35.0786 8.28328 -35.1325L8.48859 18.556ZM8.68737 18.4732L46.6512 56.437C56.7229 46.3652 62.4042 32.7213 62.4587 18.4798L8.77015 18.2745L-44.9184 18.0691C-44.8645 3.97681 -39.2427 -9.52424 -29.2764 -19.4905L8.68737 18.4732ZM8.77015 18.2745H62.459V17.5835H8.77015H-44.9187V18.2745H8.77015ZM8.77015 17.5835L62.459 17.5839C62.4592 3.30545 56.8012 -10.3911 46.7243 -20.5068L8.68775 17.3841L-29.3488 55.2749C-39.3202 45.2652 -44.9188 31.7121 -44.9187 17.5831L8.77015 17.5835ZM8.68775 17.3841L46.7243 -20.5068C36.648 -30.6218 22.9735 -36.3329 8.69429 -36.3876L8.48859 17.3009L8.28288 70.9894C-5.84679 70.9353 -19.3781 65.284 -29.3488 55.2749L8.68775 17.3841ZM8.48859 17.3009V-36.388H3.8861V17.3009V70.9898H8.48859V17.3009ZM3.8861 17.3009L41.8499 55.2647L48.6302 48.4844L10.6664 10.5206L-27.2974 -27.4432L-34.0777 -20.6629L3.8861 17.3009ZM10.6664 10.5206L-27.2974 48.4844L-20.5171 55.2647L17.4466 17.3009L55.4104 -20.6629L48.6302 -27.4432L10.6664 10.5206ZM17.4466 17.3009V-36.388H12.8041V17.3009V70.9898H17.4466V17.3009ZM12.8041 17.3009L12.5984 -36.3876C-1.68066 -36.3329 -15.3552 -30.6219 -25.4316 -20.5068L12.6049 17.3841L50.6415 55.2749C40.6707 65.2841 27.1393 70.9353 13.0098 70.9894L12.8041 17.3009ZM12.6049 17.3841L-25.4316 -20.5068C-35.5082 -10.3914 -41.1665 3.30504 -41.1664 17.5839L12.5225 17.5835L66.2114 17.5831C66.2115 31.7125 60.6126 45.2655 50.6415 55.2749L12.6049 17.3841ZM12.5225 17.5835H-41.1664V18.2745H12.5225H66.2114V17.5835H12.5225ZM12.5225 18.2745L-41.166 18.0686C-41.1937 25.2913 -39.7712 32.4459 -36.983 39.1085L12.544 18.3825L62.0711 -2.34346C64.8306 4.25071 66.2384 11.3318 66.211 18.4803L12.5225 18.2745ZM12.544 18.3825L-36.983 39.1085C-34.1947 45.7716 -30.0973 51.8068 -24.934 56.8567L12.6059 18.4737L50.1458 -19.9093C55.2561 -14.9113 59.3114 -8.93809 62.0711 -2.34346L12.544 18.3825ZM12.6059 18.4737L-25.3266 56.4687C-15.2435 66.5353 -1.58846 72.2066 12.6603 72.2447L12.8041 18.556L12.9479 -35.1327C27.048 -35.0949 40.5605 -29.4828 50.5384 -19.5213L12.6059 18.4737ZM12.8041 18.556V72.2449H19.7955V18.556V-35.1329H12.8041V18.556ZM19.7955 18.556L19.6056 72.2446C27.0267 72.2708 34.3716 70.7663 41.1819 67.8271L19.9077 18.5331L-1.3666 -30.761C5.37297 -33.6696 12.6415 -35.1585 19.9855 -35.1325L19.7955 18.556ZM19.9077 18.5331L41.1819 67.8271C47.9943 64.887 54.1269 60.574 59.197 55.1577L20.0013 18.4672L-19.1944 -18.2233C-14.177 -23.5833 -8.10817 -27.8515 -1.3666 -30.761L19.9077 18.5331ZM20.0013 18.4672L58.875 55.4987C68.6475 45.24 73.9947 31.5488 73.7599 17.3801L20.0784 18.2699L-33.6032 19.1596C-33.8356 5.13766 -28.5437 -8.41183 -18.8724 -18.5643L20.0013 18.4672ZM20.0784 18.2699L73.7599 17.3801C73.5251 3.21192 67.7274 -10.2947 57.6199 -20.2242L19.9948 18.0752L-17.6303 56.3746C-27.6331 46.5479 -33.3708 33.1811 -33.6032 19.1596L20.0784 18.2699ZM10.662 4.43559L-27.3017 42.3994L-25.1434 44.5577L12.8203 6.59388L50.7841 -31.3699L48.6258 -33.5282L10.662 4.43559ZM12.8203 6.59388L-25.1434 -31.3699L-27.2963 -29.217L10.6675 8.74676L48.6312 46.7105L50.7841 44.5577L12.8203 6.59388ZM10.6675 8.74676L48.6313 -29.217L46.473 -31.3753L8.50917 6.58847L-29.4546 44.5522L-27.2963 46.7105L10.6675 8.74676ZM8.50917 6.58847L46.473 44.5522L48.6258 42.3994L10.662 4.43559L-27.3017 -33.5282L-29.4546 -31.3753L8.50917 6.58847Z\"\r\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13120)\" />\r\n </svg>\r\n </span>\r\n <strong>AI Assistant</strong>\r\n </div>\r\n <div *ngIf=\"eyeTestAiMessage; else aiLoading\" [innerHTML]=\"parseAiMarkdown(eyeTestAiMessage)\"></div>\r\n <ng-template #aiLoading>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\" style=\"font-size: 13px;\">AI is thinking...</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"keyType ==='store'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg\r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('auditedDate')\">Audited Date <svg\r\n [ngClass]=\"sortedColumn === 'auditedDate' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin'\" class=\"text-start\">\r\n RM Name\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"text-start\">\r\n Cluster Name\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th class=\"text-start\">Optom ID</th>\r\n <th class=\"text-start\">Optom Email ID</th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Optom Name</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Token No</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Power Types</th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('ComplianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'ComplianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'ComplianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> \r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg\r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n<th><span class=\"cursor-pointer\" (click)=\"onSort('auditedSteps')\">Steps Covered By Human <svg\r\n [ngClass]=\"sortedColumn === 'auditedSteps' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedSteps' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th>Human Audited Score</th>\r\n\r\n \r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('visitorsType')\">Visitor Type <svg\r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th class=\"text-start\" *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('comment')\">Eye Test Status <svg\r\n [ngClass]=\"sortedColumn === 'comment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'comment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('subComment')\">Comments <svg\r\n [ngClass]=\"sortedColumn === 'subComment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'subComment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg\r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.date | date:'dd MMM, yyyy'}}</td>\r\n <td>{{obj?.auditedDate}}</td>\r\n <td *ngIf=\"users?.role === 'superadmin'\">\r\n <ng-container *ngIf=\"obj?.RMName\">\r\n <!-- Split and show the first value -->\r\n {{ obj.RMName.split(',')[0] }}\r\n\r\n <!-- Show +N badge if more values exist -->\r\n <span *ngIf=\"obj.RMName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.RMName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n</td>\r\n\r\n <td *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\">\r\n <ng-container *ngIf=\"obj?.clusterName\">\r\n {{ obj.clusterName.split(',')[0] }}\r\n <span *ngIf=\"obj.clusterName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.clusterName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n \r\n \r\n </td>\r\n <td>{{obj?.storeName}}</td>\r\n <td>{{obj?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\"><span *ngIf=\"obj?.optumId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optumId}}</span>\r\n <td *ngIf=\"this.typeValue ==='remote'\"><span *ngIf=\"obj?.optm_userId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optm_userId}}</span>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.salesmanEmailId ? obj?.salesmanEmailId :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.userEmail ? obj?.userEmail :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.displayName ? obj?.displayName :''}}\r\n </td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.queueId ?\r\n obj?.queueId:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.tokenNo ?\r\n obj?.tokenNo:'--'}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" >{{obj?.nearAddition ?\r\n obj?.nearAddition === \"true\"? \"With Near Addition\" :\"Without Near Addition\":'--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>{{obj?.coveredStepsAI ? obj?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?.trustScore ?? '--'}}</td>\r\n <td>{{obj?.auditedSteps ? obj?.auditedSteps:'--'}}</td>\r\n <td>{{obj?.humanComplianceScore ? obj?.humanComplianceScore :'--'}}</td>\r\n <td class=\"text-capitalize\" *ngIf=\"this.typeValue !=='remote'\">{{obj?.visitorsType ?\r\n obj?.visitorsType:'--'}}</td>\r\n <td>{{obj?.min ? obj?.min :'0'}} mins {{obj?.sec ?\r\n obj?.sec:'0'}} secs</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">\r\n <span \r\n class=\"badge\" \r\n [ngClass]=\"obj?.comment ? 'badge-light-danger' : 'badge-light-success'\">\r\n {{ obj?.comment ? 'Fake' : 'Genuine' }}\r\n </span>\r\n</td>\r\n <td>{{obj?.subComment ? obj?.subComment:'--'}}</td>\r\n <td><span class=\"badge badge-light-primary\"\r\n *ngIf=\"obj?.auditStatus ==='Yet-to-Audit'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\"\r\n *ngIf=\"obj?.auditStatus ==='Re-Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\"\r\n *ngIf=\"obj?.auditStatus ==='Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\"\r\n *ngIf=\"obj?.auditStatus ==='In-Progress'\">{{obj?.auditStatus}}</span>\r\n </td>\r\n <td>{{obj?.auditedBy?obj?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='rm'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\"> Clusters Count <svg\r\n [ngClass]=\"sortedColumn === 'clusterCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed \r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score \r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score \r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.RMName ? obj?.RMName:'--'}}</td>\r\n <td>{{obj?.clusterCount ? obj?.clusterCount:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>{{obj.complianceScore ?? '--'}}\r\n \r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('cluster',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='cluster'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n \r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Clusters Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed\r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score\r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.clusterName ? obj?.clusterName:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('store',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n</div>\r\n</section>\r\n\r\n\r\n<section *ngIf=\"eyeView\" class=\"container-fluid new1 mt-4\">\r\n<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName ? auditDetails?.displayName:'--'}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId ?auditDetails?.engagementId:'--'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore : 0}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div [ngClass]=\"eyeTestType ==='fake' ? 'col-md-12' : 'col-md-6'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestType !=='fake'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-start\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-start\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-start\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-start\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Conversation Recording + Transcript \u2500\u2500 -->\r\n<div class=\"row mt-3\" *ngIf=\"conversationData\">\r\n <!-- Left: Recording + Transcript -->\r\n <div class=\"col-md-6 d-flex flex-column gap-3\">\r\n <!-- Conversation Recording -->\r\n <div class=\"recording-box\">\r\n <div class=\"recording-title\">Conversation Recording</div>\r\n <!-- Audio element -->\r\n <audio id=\"conv-audio\" [src]=\"conversationData?.audio_url\"\r\n (timeupdate)=\"onConvTimeUpdate()\"\r\n (loadedmetadata)=\"onConvLoaded()\"\r\n (ended)=\"convIsPlaying = false\">\r\n </audio>\r\n <!-- Waveform bars -->\r\n <div class=\"waveform-bars\" [class.is-playing]=\"convIsPlaying\">\r\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\"\r\n [style.height.px]=\"h\"\r\n [class.wf-bar--played]=\"convProgress > i / waveformHeights.length\">\r\n </div>\r\n </div>\r\n <!-- Player controls -->\r\n <div class=\"player-row\">\r\n <div class=\"play-btn-wrap\">\r\n <button class=\"play-btn-circle\" (click)=\"toggleConvPlay()\" type=\"button\">\r\n <svg *ngIf=\"!convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n <svg *ngIf=\"convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/></svg>\r\n </button>\r\n </div>\r\n <div class=\"player-progress w-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"player-time start-time\">{{ convCurrentTime }}</span>\r\n <span class=\"player-time end-time\">{{ convDuration }}</span>\r\n </div>\r\n <div class=\"progress-track\" (click)=\"seekConvAudio($event)\" style=\"cursor:pointer;\">\r\n <div class=\"progress-fill\" [style.width.%]=\"convProgress * 100\"></div>\r\n </div>\r\n </div>\r\n <button class=\"mute-btn\" (click)=\"toggleConvMute()\" [title]=\"convIsMuted ? 'Unmute' : 'Mute'\" type=\"button\">\r\n <svg *ngIf=\"!convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"/></svg>\r\n <svg *ngIf=\"convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"/></svg>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- Conversation Transcript -->\r\n <div class=\"card p-4 flex-grow-1\">\r\n <div class=\"recording-title mb-3\">Conversation Transcript</div>\r\n <div style=\"overflow-y: auto; font-size: 14px; color: #344054; line-height: 1.6; max-height: 180px;\">\r\n <span *ngIf=\"conversationData?.transcript_summary; else noTranscript\">{{ conversationData?.transcript_summary }}</span>\r\n <ng-template #noTranscript><span class=\"text-muted\">No transcript available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Step tabs + audio info + evidence -->\r\n <div class=\"col-md-6\">\r\n <div class=\"card p-4\" style=\"min-height: 100%;\">\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-center gap-2 mb-1\">\r\n <span class=\"conv-card-title\">Step-wise Breakdown</span>\r\n <span class=\"badge badge-light-primary ms-1\">Audio</span>\r\n </div>\r\n <!-- Recently Audited By -->\r\n <div class=\"d-flex align-items-center gap-3 mb-3 pb-2 border-bottom\" *ngIf=\"auditDetails?.auditedBy || auditDetails?.auditedDate\" style=\"font-size: 12px; color: #667085;\">\r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"d-flex gap-3 mt-10\" style=\"min-height: 280px;\">\r\n <!-- Step pill list -->\r\n <div style=\"min-width: 190px; max-height: 320px; overflow-y: auto; border-right: 1px solid #EAECF0; padding-right: 12px;\">\r\n <div *ngFor=\"let step of conversationData?.metrics_results; let i = index\"\r\n class=\"conv-step-pill\"\r\n [class.active]=\"selectedStepIndex === i\"\r\n (click)=\"selectedStepIndex = i\">\r\n {{ step?.metricName }}\r\n </div>\r\n </div>\r\n <!-- Selected step detail -->\r\n <div class=\"flex-grow-1 ps-2\" *ngIf=\"conversationData?.metrics_results?.[selectedStepIndex] as step\">\r\n <!-- Click to Play -->\r\n <div class=\"conv-play-row\" *ngIf=\"step?.startTime\" (click)=\"playFromStep(step)\">\r\n <div class=\"conv-play-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n </div>\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 600; color: #101828;\">Click to Play</div>\r\n <div style=\"font-size: 12px; color: #667085;\">\r\n Audio Starts at {{ step?.startTime }}\r\n <!-- <span *ngIf=\"step?.endTime\"> \u2013 {{ step?.endTime }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Summary -->\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 700; color: #101828; margin-bottom: 8px;\">Summary</div>\r\n <div style=\"font-size: 13px; color: #344054; line-height: 1.6;\">\r\n <span *ngIf=\"step?.evidence_quote; else noEvidence\">{{ step?.evidence_quote }}</span>\r\n <ng-template #noEvidence><span class=\"text-muted\">No evidence available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\" >Audited Date</th>\r\n <th class=\"text-start\" >Time Stamp</th>\r\n <th class=\"text-start\" >View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th class=\"text-start\">Status changed from</th>\r\n <th class=\"text-start\">Noted Time Range</th>\r\n <th class=\"text-start\">Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n</section>", styles: ["@charset \"UTF-8\";:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.card-title{font-size:1.15rem!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}table th,table td{height:44px!important;padding:12px 24px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}table td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}.rotate{rotate:180deg;transition:1s}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.dashed{border-radius:4px;border:1px dashed var(--Error-500, #F04438)!important;background:var(--Error-25, #FFFBFA)}.dashed-desc{color:var(--Error-600, #3F4254)!important;font-size:14px;font-weight:600;line-height:24px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.text-value{color:var(--Black, #101828);font-size:24px;font-weight:600;line-height:32px}.text-sub{color:var(--Error-600, #667085)!important;font-size:16px;font-weight:600;line-height:18px}.test-sub1{color:var(--Gray-800, #1D2939);font-size:11px;font-weight:400;line-height:18px}.new1 .header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.new1 .text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.new1 .bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.new1 .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.new1 .video-position{position:absolute;top:50%;transform:translateY(-50%)}.new1 .btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 .btn.btn-success:hover:not(.btn-active),.new1 .btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 table tr{vertical-align:middle}.new1 table tr td{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:500;line-height:20px}.new1 .custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.new1 .dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .scroll-container{display:flex;width:100%}.new1 .scroll-container .item{width:100%;text-align:start}.new1 .scroll-container .items:hover,.new1 .scroll-container .tems.focus,.new1 .scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.new1 .label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.new1 .scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.new1 .scroll-section:last-child{border-right:none}.new1 .scroll-section div{padding:8px;cursor:pointer}.new1 .scroll-section div.selected{background:#007bff;color:#fff}.new1 .bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.new1 .bg-danger{background:var(--Primary-500, #D92D20)!important}.new1 .text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.new1 .text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.new1 .text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.new1 .custom-tooltip-content{font-size:12px!important;text-align:left!important}.new1 ::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.new1 .test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.new1 .engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.new1 .disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.new1 .h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.new1 .h-500px{height:600px!important}.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.new1 .h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.new1 .h-auto{height:370px!important;object-fit:fill}}.new1 .ts700px{min-height:auto!important;max-height:700px!important}.new1 .conv-card-title{font-size:14px;font-weight:700;color:#101828;line-height:24px}.new1 .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:10px;box-shadow:0 1px 2px #1018280d}.new1 .recording-title{font-size:16px;font-weight:600;padding:8px 16px;border-bottom-width:2px;border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.new1 .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.new1 .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.new1 .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.new1 .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.new1 .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.new1 .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.new1 .player-row{display:flex;align-items:center;gap:16px}.new1 .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.new1 .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.new1 .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.new1 .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.new1 .player-row .mute-btn:hover{color:#101828}.new1 .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.new1 .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.new1 .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.new1 .player-row .player-progress .player-time.start-time{color:#00a3ff}.new1 .conv-step-pill{padding:8px 12px;margin-bottom:18px;border-radius:8px;border:1.5px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:400;line-height:20px;cursor:pointer;transition:all .15s}.new1 .conv-step-pill:hover{border-color:#84adff;background:#f5f8ff}.new1 .conv-step-pill.active{border-color:#6bcaff;color:#009bf3;font-weight:600}.new1 .conv-play-row{display:flex;align-items:center;gap:14px;margin-bottom:20px;cursor:pointer;-webkit-user-select:none;user-select:none}.new1 .conv-play-row .conv-play-icon{width:48px;height:48px;border-radius:50%;background:#00a3ff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}.new1 .conv-play-row:hover .conv-play-icon{background:#0087d5}::ng-deep .plus-menu-wrap{position:relative;flex-shrink:0}::ng-deep .plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%!important;border:1.5px solid #D0D5DD;background:#fff;display:flex!important;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;padding:0;transition:background .15s,border-color .15s}::ng-deep .plus-menu-wrap .btn-plus:hover,::ng-deep .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup{position:absolute;top:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:9999}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px;display:block}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item{display:flex!important;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}::ng-deep .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap}@keyframes eyePopupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i12.CustomSelectComponent, selector: "lib-stores-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i13.GroupSelectComponent, selector: "lib-group-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "component", type: i14.SelectDropComponent, selector: "lib-select-drop", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i9.DatePipe, name: "date" }] });
1844
1844
  }
1845
1845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EyeTestComponent, decorators: [{
1846
1846
  type: Component,
1847
- args: [{ selector: "lib-eye-test", template: "<section *ngIf=\"!eyeView\" class=\"container-fluid\">\r\n<div class=\"card mb-2\">\r\n <div *ngIf=\"loading1\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <form *ngIf=\"!loading1\" [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2 mb-4' : 'col-2 mb-4'\" class=\"col-1 mb-4\" style=\"z-index: 33 !important;\" >\r\n <lib-reactive-select formControlName=\"dateType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"dateType\" (itemChange)=\"dateTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-10 z-2\" style=\"min-width: 150px !important;\" type=\"text\"\r\n matInput ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"false\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" [ngModelOptions]=\"{standalone: true}\"\r\n (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\"\r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"type\"\r\n (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n \r\n <!-- </div>\r\n </div> -->\r\n <!-- *ngIf=\"users?.role ==='superadmin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('RmList')?.value?.length)\">\r\n Select RM\r\n </div>\r\n <lib-group-select [items]=\"RmList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onRmSelect($event)\" [selectedValues]=\"eyeTestForm.get('RmList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n \r\n </div>\r\n <!-- *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n \r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" >\r\n \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n \r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('complianceScore')?.value?.length)\">\r\n Select Score\r\n </div>\r\n <lib-select-drop [items]=\"typePercentageArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typePercentageChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('complianceScore')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-1 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"auditType\"\r\n (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('auditStatus')?.value?.length)\">\r\n Audit Status\r\n </div>\r\n <lib-select-drop [items]=\"auditStatusArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typeAuditStatusChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('auditStatus')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"nearAddition\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"nearAdditionArray\" (itemChange)=\"nearAdditionChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"category\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"categoryArray\" (itemChange)=\"categoryTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div \r\n *ngIf=\"users?.role\" \r\n class=\"text-end\"\r\n [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-1 mb-4' : 'col-1 mb-4'\"\r\n>\r\n<!-- [ngClass]=\"getApplyButtonClass(users?.role, eyeTestForm.get('type')?.value)\" -->\r\n\r\n <a (click)=\"onSubmit();\" type=\"submit\" class=\"btn btn-sm btn-primary py-3 \">\r\n <span>Apply</span>\r\n </a>\r\n\r\n</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n <div *ngIf=\"showEyeTest\" class=\"ms-6 mb-3\">\r\n\r\n <h3 class=\"card-title dashed w-100 row\">\r\n <span class=\"col-10 title-text py-3\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\" />\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path\r\n d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\"\r\n stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 30 days. Audit data\r\n remains accessible, but videos will not be retained beyond this period.</span></span>\r\n <span class=\"col-2 pt-2 text-end cursor-pointer\" (click)=\"closeEyeTest()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <path d=\"M25 15L15 25M15 15L25 25\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </h3>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"row\">\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"col\">\r\n <div class=\"card p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Regional Managers</h5>\r\n <span class=\"text-value\">{{RmListData ?? '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card mt-5 p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Clusters</h5>\r\n <span class=\"text-value\">{{groups?.length ?? '--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType !=='rm' || users?.role ==='admin'\" class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Clusters</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ groups?.length ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Total Tango AI Files</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.totalFiles ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Audit Completed</h5>\r\n </div>\r\n <div class=\"card-body py-3 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.completedFiles ?? '-' }}</span>\r\n\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-sub\">{{ (eyeTestCardData?.completedRatio ?? '-') + '%' }} <span\r\n class=\"test-sub\">Completed</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Tango Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.tangoScore ?? '-' }}</span>\r\n </div>\r\n <div class=\"card-footer pe-0 ps-3 py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span>\r\n <svg *ngIf=\"eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"!eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_760_9776)\">\r\n <path d=\"M11.575 9L6.82495 4.25L4.32495 6.75L0.574951 3M11.575 9H8.57495M11.575 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_760_9776\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.0749512)\" />\r\n </clipPath>\r\n </defs>\r\n </svg> \r\n <span class=\"text-sub ms-2\">{{ eyeTestCardData?.tangoScoreTrend !== null \r\n ? (getAbsValue(eyeTestCardData.tangoScoreTrend) | number:'1.0-0':'en-US') + '%' \r\n : '-' }}\r\n <span\r\n class=\"test-sub1\">vs previous week</span></span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.trustScore && eyeTestCardData?.trustScore !== 'NA' \r\n ? eyeTestCardData.trustScore + '%' \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Human Audited Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.humanScore && eyeTestCardData?.humanScore !== 'NA' \r\n ? eyeTestCardData.humanScore \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span *ngIf=\"users?.role === 'superadmin' && keyType ==='rm'\" class=\"title-text mb-2\">\r\n Audit Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n\r\n <!-- Admin + cluster present \u2192 RM Summary -->\r\n <div class=\"d-flex\">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='cluster' && users?.role === 'superadmin'\" (click)=\"typeVal1('rm','')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"users?.role === 'admin' && keyType ==='cluster' || users?.role === 'superadmin' && keyType ==='cluster'\" class=\"title-text my-4 mb-2\">\r\n RM Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary text-capitalize\">{{ eyeTestData[0]?.RMName ? eyeTestData[0]?.RMName : '' }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- All other cases \u2192 Eye Test -->\r\n <div class=\"d-flex \">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'superadmin')\"\r\n (click)=\"typeVal1('cluster',this.rmEmail)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'admin')\"\r\n (click)=\"typeVal1('cluster',this.groups)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!(users?.role === 'superadmin' && keyType ==='rm') && !(users?.role === 'superadmin' && keyType ==='cluster') \r\n && !(users?.role === 'admin' && keyType ==='cluster')\" class=\"title-text my-4 mb-2\">\r\n Eye Test\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n </div>\r\n <span *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='admin' && keyType ==='cluster'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='user' && keyType ==='store'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\"\r\n [placeholder]=\"\r\n keyType === 'rm'\r\n ? 'Search by RMName'\r\n : keyType === 'cluster'\r\n ? 'Search by Cluster'\r\n : 'Search'\r\n \" />\r\n\r\n\r\n <span class=\"cursor-pointer\" *ngIf=\"users?.role ==='superadmin'\" (click)=\"settingsView()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45\" height=\"46\"\r\n viewBox=\"0 0 45 46\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_760_9988)\">\r\n <rect x=\"2.71973\" y=\"1.98047\" width=\"40.04\" height=\"40.04\" rx=\"7.28\" fill=\"white\" />\r\n <rect x=\"3.17473\" y=\"2.43547\" width=\"39.13\" height=\"39.13\" rx=\"6.825\" stroke=\"#D0D5DD\"\r\n stroke-width=\"0.91\" />\r\n <g clip-path=\"url(#clip0_760_9988)\">\r\n <path\r\n d=\"M22.7396 24.2749C23.9961 24.2749 25.0146 23.2563 25.0146 21.9999C25.0146 20.7434 23.9961 19.7249 22.7396 19.7249C21.4832 19.7249 20.4646 20.7434 20.4646 21.9999C20.4646 23.2563 21.4832 24.2749 22.7396 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M28.3513 24.2749C28.2503 24.5036 28.2202 24.7573 28.2648 25.0033C28.3094 25.2493 28.4267 25.4763 28.6015 25.655L28.647 25.7005C28.788 25.8414 28.8999 26.0087 28.9762 26.1928C29.0526 26.3769 29.0919 26.5743 29.0919 26.7736C29.0919 26.9729 29.0526 27.1703 28.9762 27.3544C28.8999 27.5385 28.788 27.7058 28.647 27.8466C28.5062 27.9876 28.3389 28.0995 28.1548 28.1758C27.9707 28.2522 27.7733 28.2914 27.574 28.2914C27.3747 28.2914 27.1773 28.2522 26.9932 28.1758C26.8091 28.0995 26.6418 27.9876 26.5009 27.8466L26.4554 27.8011C26.2767 27.6263 26.0497 27.509 25.8037 27.4644C25.5577 27.4198 25.304 27.4499 25.0753 27.5509C24.851 27.647 24.6597 27.8066 24.525 28.0101C24.3902 28.2135 24.3179 28.4519 24.3169 28.696V28.8249C24.3169 29.2271 24.1572 29.6129 23.8727 29.8973C23.5883 30.1817 23.2025 30.3415 22.8003 30.3415C22.398 30.3415 22.0123 30.1817 21.7278 29.8973C21.4434 29.6129 21.2836 29.2271 21.2836 28.8249V28.7566C21.2777 28.5056 21.1965 28.2622 21.0504 28.058C20.9044 27.8538 20.7003 27.6982 20.4646 27.6115C20.2359 27.5106 19.9822 27.4805 19.7362 27.5251C19.4902 27.5697 19.2632 27.687 19.0844 27.8618L19.0389 27.9073C18.8981 28.0483 18.7308 28.1602 18.5467 28.2365C18.3626 28.3128 18.1652 28.3521 17.9659 28.3521C17.7666 28.3521 17.5692 28.3128 17.3851 28.2365C17.201 28.1602 17.0337 28.0483 16.8929 27.9073C16.7519 27.7664 16.64 27.5992 16.5637 27.415C16.4873 27.2309 16.448 27.0336 16.448 26.8342C16.448 26.6349 16.4873 26.4376 16.5637 26.2535C16.64 26.0693 16.7519 25.9021 16.8929 25.7612L16.9384 25.7157C17.1132 25.537 17.2305 25.31 17.2751 25.064C17.3197 24.818 17.2896 24.5643 17.1886 24.3355C17.0925 24.1112 16.9329 23.92 16.7294 23.7852C16.526 23.6505 16.2876 23.5782 16.0435 23.5772H15.9146C15.5124 23.5772 15.1266 23.4174 14.8422 23.133C14.5577 22.8486 14.3979 22.4628 14.3979 22.0605C14.3979 21.6583 14.5577 21.2725 14.8422 20.9881C15.1266 20.7037 15.5124 20.5439 15.9146 20.5439H15.9829C16.2339 20.538 16.4773 20.4568 16.6815 20.3107C16.8857 20.1646 17.0413 19.9605 17.1279 19.7249C17.2289 19.4961 17.259 19.2424 17.2144 18.9964C17.1698 18.7504 17.0525 18.5234 16.8777 18.3447L16.8322 18.2992C16.6912 18.1583 16.5793 17.9911 16.503 17.807C16.4267 17.6228 16.3874 17.4255 16.3874 17.2262C16.3874 17.0268 16.4267 16.8295 16.503 16.6454C16.5793 16.4612 16.6912 16.294 16.8322 16.1531C16.9731 16.0121 17.1403 15.9002 17.3244 15.8239C17.5086 15.7476 17.7059 15.7083 17.9052 15.7083C18.1046 15.7083 18.3019 15.7476 18.486 15.8239C18.6702 15.9002 18.8374 16.0121 18.9783 16.1531L19.0238 16.1986C19.2025 16.3734 19.4295 16.4907 19.6755 16.5353C19.9215 16.5799 20.1752 16.5498 20.4039 16.4489H20.4646C20.6889 16.3527 20.8802 16.1931 21.0149 15.9897C21.1497 15.7862 21.222 15.5478 21.2229 15.3038V15.1749C21.2229 14.7726 21.3827 14.3869 21.6672 14.1024C21.9516 13.818 22.3374 13.6582 22.7396 13.6582C23.1419 13.6582 23.5276 13.818 23.8121 14.1024C24.0965 14.3869 24.2563 14.7726 24.2563 15.1749V15.2431C24.2573 15.4871 24.3296 15.7256 24.4643 15.929C24.599 16.1325 24.7903 16.2921 25.0146 16.3882C25.2433 16.4891 25.4971 16.5193 25.7431 16.4747C25.9891 16.4301 26.2161 16.3128 26.3948 16.138L26.4403 16.0925C26.5811 15.9514 26.7484 15.8396 26.9325 15.7632C27.1167 15.6869 27.314 15.6476 27.5133 15.6476C27.7126 15.6476 27.91 15.6869 28.0941 15.7632C28.2782 15.8396 28.4455 15.9514 28.5864 16.0925C28.7274 16.2333 28.8392 16.4006 28.9156 16.5847C28.9919 16.7688 29.0312 16.9662 29.0312 17.1655C29.0312 17.3648 28.9919 17.5622 28.9156 17.7463C28.8392 17.9304 28.7274 18.0977 28.5864 18.2385L28.5409 18.284C28.366 18.4628 28.2488 18.6898 28.2042 18.9358C28.1596 19.1818 28.1897 19.4355 28.2906 19.6642V19.7249C28.3867 19.9492 28.5464 20.1404 28.7498 20.2752C28.9533 20.4099 29.1917 20.4822 29.4357 20.4832H29.5646C29.9669 20.4832 30.3526 20.643 30.6371 20.9274C30.9215 21.2119 31.0813 21.5976 31.0813 21.9999C31.0813 22.4021 30.9215 22.7879 30.6371 23.0723C30.3526 23.3567 29.9669 23.5165 29.5646 23.5165H29.4964C29.2523 23.5175 29.0139 23.5898 28.8105 23.7246C28.607 23.8593 28.4474 24.0506 28.3513 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_760_9988\" x=\"0.719727\" y=\"0.980469\" width=\"44.04\" height=\"44.04\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_760_9988\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_760_9988\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_760_9988\">\r\n <rect width=\"18.2\" height=\"18.2\" fill=\"white\"\r\n transform=\"translate(13.6396 12.9004)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\r\n <path d=\"M7.53369 12.8441H15.0241L13.5568 14.3172L14.3587 15.1191L17.2024 12.2754L14.3587 9.43164L13.5568 10.2336L15.0241 11.7066H7.53369V12.8441Z\" fill=\"black\"/>\r\n <path d=\"M12.6526 8.8631V6.5881C12.653 6.51325 12.6387 6.43904 12.6104 6.36975C12.5821 6.30045 12.5404 6.23743 12.4877 6.18428L8.5064 2.20303C8.45326 2.15032 8.39023 2.10862 8.32094 2.08031C8.25164 2.05201 8.17744 2.03766 8.10259 2.0381H2.41509C2.1134 2.0381 1.82408 2.15794 1.61075 2.37126C1.39743 2.58458 1.27759 2.87391 1.27759 3.1756V16.8256C1.27759 17.1273 1.39743 17.4166 1.61075 17.6299C1.82408 17.8433 2.1134 17.9631 2.41509 17.9631H11.5151C11.8168 17.9631 12.1061 17.8433 12.3194 17.6299C12.5327 17.4166 12.6526 17.1273 12.6526 16.8256V15.6881H11.5151V16.8256H2.41509V3.1756H6.96509V6.5881C6.96509 6.88978 7.08493 7.17911 7.29826 7.39243C7.51158 7.60575 7.80091 7.7256 8.10259 7.7256H11.5151V8.8631H12.6526ZM8.10259 6.5881V3.40878L11.2819 6.5881H8.10259Z\" fill=\"black\"/>\r\n</svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Tango AI Section (Audit Summary + RM Summary only) \u2500\u2500 -->\r\n <div class=\"px-6 pb-4\" *ngIf=\"(users?.role === 'superadmin' && keyType === 'rm') || keyType === 'cluster'\">\r\n <!-- Header -->\r\n <div class=\"text-center mb-3\">\r\n <h3 class=\"fw-bold mb-1\" style=\"color: #0591FF;\">\r\n Tango AI\r\n <sup>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 26 23\" fill=\"none\">\r\n <path d=\"M5.40634 1.88184L5.61168 2.76648C5.75884 3.40173 6.09183 3.99315 6.57843 4.48348C7.06503 4.97382 7.68876 5.34646 8.38923 5.56534L8.64861 5.64628L8.38923 5.72721C7.68876 5.94609 7.06503 6.31874 6.57843 6.80907C6.09183 7.2994 5.75884 7.89082 5.61168 8.52607L5.40634 9.41072L5.20099 8.52607C5.05384 7.89082 4.72084 7.2994 4.23425 6.80907C3.74765 6.31874 3.12392 5.94609 2.42344 5.72721L2.16406 5.64628L2.42344 5.56534C3.12392 5.34646 3.74765 4.97382 4.23425 4.48348C4.72084 3.99315 5.05384 3.40173 5.20099 2.76648L5.40634 1.88184ZM17.2947 2.82295L17.8956 5.32065C18.2018 6.59405 18.8818 7.77662 19.8692 8.75304C20.8566 9.72945 22.1177 10.4664 23.5296 10.892L24.86 11.2929L23.5296 11.6938C22.1177 12.1195 20.8566 12.8564 19.8692 13.8328C18.8818 14.8093 18.2018 15.9918 17.8956 17.2652L17.2947 19.7629L16.6938 17.2652C16.3875 15.9918 15.7076 14.8093 14.7202 13.8328C13.7328 12.8564 12.4717 12.1195 11.0598 11.6938L9.72937 11.2929L11.0598 10.892C12.4717 10.4664 13.7328 9.72945 14.7202 8.75304C15.7076 7.77662 16.3875 6.59405 16.6938 5.32065L17.2947 2.82295Z\" fill=\"url(#eyeTestAiGrad)\"/>\r\n <defs>\r\n <linearGradient id=\"eyeTestAiGrad\" x1=\"13.512\" y1=\"19.7629\" x2=\"13.512\" y2=\"1.88184\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"white\"/>\r\n <stop offset=\"1\" stop-color=\"#0591FF\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </sup>\r\n </h3>\r\n <p class=\"text-dark mb-0\" style=\"font-size: 13px;\">Ask the Tango AI on what you want..</p>\r\n </div>\r\n\r\n <!-- Input -->\r\n <div class=\"d-flex justify-content-center mb-3\">\r\n <div style=\"width: 60%; min-width: 300px;\">\r\n\r\n <div class=\"position-relative\">\r\n\r\n <!-- Plus Button with Model Popup (inside input, left side) -->\r\n <div class=\"plus-menu-wrap position-absolute top-50 translate-middle-y ps-2\" style=\"left: 4px; z-index: 10;\">\r\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\r\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\r\n <div class=\"plus-popup-section-label\">Model</div>\r\n <button class=\"plus-popup-item\" type=\"button\"\r\n *ngFor=\"let m of modelOptions\"\r\n [class.selected]=\"selectedModel === m.value\"\r\n (click)=\"selectModel(m.value); closePlusMenu()\">\r\n <span class=\"model-hint fw-bold text-dark\">{{ m.label }}</span>\r\n <!-- <span class=\"text-muted ms-1\" style=\"font-size:11px;\">{{ m.value }}</span> -->\r\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"form-control rounded-pill\" placeholder=\"Ask anything...\"\r\n style=\"padding-left: 46px;\"\r\n [(ngModel)]=\"eyeTestChatQuery\" [ngModelOptions]=\"{standalone: true}\"\r\n (keyup.enter)=\"onEyeTestAiSearch()\" />\r\n <div class=\"position-absolute end-0 top-50 translate-middle-y d-flex align-items-center gap-2 pe-3\">\r\n <!-- <span class=\"model-version-tag me-1\">{{ selectedModelVersion }}</span> -->\r\n <button class=\"btn btn-link p-0\" title=\"History\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path d=\"M3.93772 10.3551L3.35767 10.6484L2.77763 10.9417L3.31874 12.0117L3.89878 11.7184L4.47883 11.4251L3.93772 10.3551Z\" fill=\"#667085\"/>\r\n </svg>\r\n </button>\r\n <button class=\"btn btn-link p-0\" title=\"Send\" (click)=\"onEyeTestAiSearch()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10.0003H15.8346M15.8346 10.0003L10.0013 4.16699M15.8346 10.0003L10.0013 15.8337\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div><!-- /position-relative -->\r\n </div><!-- /width wrapper -->\r\n </div>\r\n\r\n <!-- AI Response -->\r\n <div *ngIf=\"showEyeTestAiMessage\" class=\"rounded-3 p-4 mx-auto\" style=\"background: #EAF8FF;\">\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <span class=\"ai-avatar-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\r\n <mask id=\"path-1-inside-1_1849_13120\" fill=\"white\">\r\n <path\r\n d=\"M19.9948 18.0752L19.2779 17.3583L11.5533 9.63369L13.8448 7.34219L14.3938 6.79206C14.4462 6.73892 14.4758 6.66742 14.4762 6.5928C14.476 6.55591 14.4685 6.51941 14.4542 6.4854C14.4399 6.4514 14.419 6.42055 14.3928 6.39462L13.8426 5.84449L11.4125 3.41004L10.8624 2.85991C10.8364 2.83346 10.8054 2.81244 10.7712 2.7981C10.7369 2.78375 10.7002 2.77637 10.6631 2.77637C10.626 2.77637 10.5893 2.78375 10.5551 2.7981C10.5209 2.81244 10.4899 2.83346 10.4639 2.85991L9.91374 3.41113L6.93566 6.38921C6.90923 6.41512 6.88824 6.44604 6.87391 6.48016C6.85958 6.51428 6.8522 6.55092 6.8522 6.58793C6.8522 6.62493 6.85958 6.66157 6.87391 6.69569C6.88824 6.72981 6.90923 6.76073 6.93566 6.78664L9.78053 9.63261L2.05485 17.3583L1.3412 18.0752C1.28828 18.1276 1.2583 18.1989 1.25781 18.2734C1.25812 18.3454 1.28558 18.4146 1.3347 18.4672C1.36093 18.4952 1.39262 18.5176 1.42783 18.5328C1.46303 18.5481 1.501 18.556 1.53938 18.556H8.48859C8.56318 18.5557 8.63463 18.526 8.68737 18.4732C8.74011 18.4205 8.76987 18.349 8.77015 18.2745V17.5835C8.77015 17.5088 8.74052 17.437 8.68775 17.3841C8.63498 17.3311 8.56336 17.3012 8.48859 17.3009H3.8861L10.6664 10.5206L17.4466 17.3009H12.8041C12.7293 17.3012 12.6577 17.3311 12.6049 17.3841C12.5522 17.437 12.5225 17.5088 12.5225 17.5835V18.2745C12.5224 18.3116 12.5297 18.3483 12.544 18.3825C12.5583 18.4168 12.5794 18.4478 12.6059 18.4737C12.6585 18.5262 12.7298 18.5558 12.8041 18.556H19.7955C19.8341 18.5562 19.8723 18.5483 19.9077 18.5331C19.9431 18.5178 19.975 18.4954 20.0013 18.4672C20.0519 18.4141 20.0796 18.3432 20.0784 18.2699C20.0771 18.1965 20.0471 18.1266 19.9948 18.0752ZM10.662 4.43559L12.8203 6.59388L10.6675 8.74676L8.50917 6.58847L10.662 4.43559Z\" />\r\n </mask>\r\n <path\r\n d=\"M19.9948 18.0752L-17.969 56.039L-17.8004 56.2076L-17.6303 56.3746L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055V-20.6055L19.2779 17.3583ZM11.5533 9.63369L-26.4105 -28.3301L-64.3743 9.63369L-26.4105 47.5975L11.5533 9.63369ZM13.8448 7.34219L51.8086 45.306L51.8273 45.2873L51.846 45.2685L13.8448 7.34219ZM14.3938 6.79206L52.3951 44.7184L52.511 44.6022L52.6262 44.4854L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.86661L68.1657 6.59731L68.1644 6.32801L14.4762 6.5928ZM14.3928 6.39462L-23.571 44.3584L-23.4528 44.4766L-23.3339 44.594L14.3928 6.39462ZM13.8426 5.84449L-24.1549 43.7744L-24.1381 43.7914L-24.1212 43.8083L13.8426 5.84449ZM11.4125 3.41004L49.4101 -34.5199L49.3932 -34.5368L49.3763 -34.5538L11.4125 3.41004ZM10.8624 2.85991L-27.4274 40.4949L-27.2651 40.66L-27.1014 40.8237L10.8624 2.85991ZM10.4639 2.85991L48.4649 40.7864L48.6098 40.6412L48.7536 40.4949L10.4639 2.85991ZM9.91374 3.41113L47.8775 41.3749L47.8962 41.3563L47.9148 41.3376L9.91374 3.41113ZM6.93566 6.38921L44.5253 44.7235L44.7133 44.5392L44.8994 44.353L6.93566 6.38921ZM6.8522 6.58793H60.5411H6.8522ZM6.93566 6.78664L44.9067 -31.1699L44.7169 -31.3597L44.5253 -31.5476L6.93566 6.78664ZM9.78053 9.63261L47.7443 47.5964L85.7009 9.63983L47.7515 -28.3239L9.78053 9.63261ZM2.05485 17.3583L-35.9089 -20.6055L-35.952 -20.5624L-35.995 -20.5192L2.05485 17.3583ZM1.3412 18.0752L39.1288 56.2144L39.2604 56.084L39.3911 55.9527L1.3412 18.0752ZM1.25781 18.2734L-52.4299 17.9229L-52.4318 18.2134L-52.4306 18.5038L1.25781 18.2734ZM1.3347 18.4672L-37.9146 55.1003L-37.8877 55.1292L-37.8607 55.1581L1.3347 18.4672ZM1.53938 18.556L1.52238 72.2449H1.53088H1.53938V18.556ZM8.48859 18.556V72.2449H8.59125L8.6939 72.2445L8.48859 18.556ZM8.77015 18.2745L62.4587 18.4798L62.459 18.3771V18.2745H8.77015ZM8.77015 17.5835L-44.9187 17.5831V17.5835H8.77015ZM8.48859 17.3009L8.69429 -36.3876L8.59144 -36.388H8.48859V17.3009ZM3.8861 17.3009L-34.0777 -20.6629L-125.73 70.9898H3.8861V17.3009ZM10.6664 10.5206L48.6302 -27.4432L10.6664 -65.407L-27.2974 -27.4432L10.6664 10.5206ZM17.4466 17.3009V70.9898H147.063L55.4104 -20.6629L17.4466 17.3009ZM12.8041 17.3009V-36.388H12.7012L12.5984 -36.3876L12.8041 17.3009ZM12.5225 17.5835H66.2114V17.5831L12.5225 17.5835ZM12.5225 18.2745L66.211 18.4803L66.2114 18.3774V18.2745H12.5225ZM12.6059 18.4737L50.5384 -19.5213L50.3431 -19.7163L50.1458 -19.9093L12.6059 18.4737ZM12.8041 18.556L12.6603 72.2447L12.7322 72.2449H12.8041V18.556ZM19.7955 18.556L19.9855 -35.1325L19.8905 -35.1329H19.7955V18.556ZM20.0013 18.4672L-18.8724 -18.5643L-19.0342 -18.3945L-19.1944 -18.2233L20.0013 18.4672ZM10.662 4.43559L48.6258 -33.5282L10.662 -71.492L-27.3017 -33.5282L10.662 4.43559ZM12.8203 6.59388L50.7841 44.5577L88.7479 6.59389L50.7841 -31.3699L12.8203 6.59388ZM10.6675 8.74676L-27.2963 46.7105L10.6674 84.6743L48.6312 46.7105L10.6675 8.74676ZM8.50917 6.58847L-29.4546 -31.3753L-67.4184 6.58847L-29.4546 44.5522L8.50917 6.58847ZM19.9948 18.0752L57.9586 -19.8886L57.2417 -20.6055L19.2779 17.3583L-18.6859 55.3221L-17.969 56.039L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055L49.5171 -28.3301L11.5533 9.63369L-26.4105 47.5975L-18.6859 55.3221L19.2779 17.3583ZM11.5533 9.63369L49.5171 47.5975L51.8086 45.306L13.8448 7.34219L-24.119 -30.6216L-26.4105 -28.3301L11.5533 9.63369ZM13.8448 7.34219L51.846 45.2685L52.3951 44.7184L14.3938 6.79206L-23.6074 -31.1343L-24.1564 -30.5841L13.8448 7.34219ZM14.3938 6.79206L52.6262 44.4854C62.5164 34.4538 68.0925 20.9532 68.1644 6.86661L14.4762 6.5928L-39.212 6.31898C-39.141 -7.61836 -33.6239 -20.9759 -23.8385 -30.9013L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.32801C68.1294 -0.770107 66.6945 -7.79255 63.9409 -14.3369L14.4542 6.4854L-35.0325 27.3077C-37.7575 20.8314 -39.1774 13.8819 -39.2121 6.85759L14.4762 6.5928ZM14.4542 6.4854L63.9409 -14.3369C61.1877 -20.8802 57.1705 -26.8162 52.1194 -31.8048L14.3928 6.39462L-23.3339 44.594C-28.3325 39.6573 -32.3079 33.783 -35.0325 27.3077L14.4542 6.4854ZM14.3928 6.39462L52.3566 -31.5692L51.8064 -32.1193L13.8426 5.84449L-24.1212 43.8083L-23.571 44.3584L14.3928 6.39462ZM13.8426 5.84449L51.8402 -32.0855L49.4101 -34.5199L11.4125 3.41004L-26.5851 41.34L-24.1549 43.7744L13.8426 5.84449ZM11.4125 3.41004L49.3763 -34.5538L48.8261 -35.1039L10.8624 2.85991L-27.1014 40.8237L-26.5512 41.3739L11.4125 3.41004ZM10.8624 2.85991L49.1521 -34.7751C44.1297 -39.8848 38.1396 -43.944 31.5307 -46.7149L10.7712 2.7981L-9.98838 52.3111C-16.5289 49.5689 -22.457 45.5518 -27.4274 40.4949L10.8624 2.85991ZM10.7712 2.7981L31.5307 -46.7149C24.9223 -49.4857 17.8285 -50.9125 10.6631 -50.9125V2.77637V56.4653C3.57198 56.4653 -3.44839 55.0532 -9.98838 52.3111L10.7712 2.7981ZM10.6631 2.77637V-50.9125C3.49762 -50.9125 -3.59619 -49.4856 -10.2044 -46.7149L10.5551 2.7981L31.3146 52.3111C24.7748 55.0531 17.7544 56.4653 10.6631 56.4653V2.77637ZM10.5551 2.7981L-10.2044 -46.7149C-16.8129 -43.9442 -22.8032 -39.8852 -27.8259 -34.7751L10.4639 2.85991L48.7536 40.4949C43.7829 45.5521 37.8547 49.569 31.3146 52.3111L10.5551 2.7981ZM10.4639 2.85991L-27.5372 -35.0665L-28.0873 -34.5153L9.91374 3.41113L47.9148 41.3376L48.4649 40.7864L10.4639 2.85991ZM9.91374 3.41113L-28.05 -34.5527L-31.0281 -31.5746L6.93566 6.38921L44.8994 44.353L47.8775 41.3749L9.91374 3.41113ZM6.93566 6.38921L-30.654 -31.9451C-35.7777 -26.9209 -39.8481 -20.9252 -42.6268 -14.3087L6.87391 6.48016L56.3746 27.269C53.6246 33.8172 49.5962 39.7511 44.5253 44.7235L6.93566 6.38921ZM6.87391 6.48016L-42.6268 -14.3087C-45.4052 -7.69299 -46.8367 -0.588947 -46.8367 6.58793H6.8522H60.5411C60.5411 13.6908 59.1244 20.7215 56.3746 27.269L6.87391 6.48016ZM6.8522 6.58793H-46.8367C-46.8367 13.7647 -45.4052 20.8688 -42.6268 27.4845L6.87391 6.69569L56.3746 -14.0932C59.1244 -7.54562 60.5411 -0.514848 60.5411 6.58793H6.8522ZM6.87391 6.69569L-42.6268 27.4845C-39.848 34.1012 -35.7775 40.0969 -30.654 45.1209L6.93566 6.78664L44.5253 -31.5476C49.596 -26.5754 53.6245 -20.6416 56.3746 -14.0932L6.87391 6.69569ZM6.93566 6.78664L-31.0354 44.7432L-28.1905 47.5892L9.78053 9.63261L47.7515 -28.3239L44.9067 -31.1699L6.93566 6.78664ZM9.78053 9.63261L-28.1833 -28.3312L-35.9089 -20.6055L2.05485 17.3583L40.0186 55.3221L47.7443 47.5964L9.78053 9.63261ZM2.05485 17.3583L-35.995 -20.5192L-36.7087 -19.8023L1.3412 18.0752L39.3911 55.9527L40.1047 55.2358L2.05485 17.3583ZM1.3412 18.0752L-36.4464 -20.064C-46.5894 -10.0145 -52.3367 3.64485 -52.4299 17.9229L1.25781 18.2734L54.9456 18.6238C54.8533 32.7529 49.1659 46.2697 39.1288 56.2144L1.3412 18.0752ZM1.25781 18.2734L-52.4306 18.5038C-52.3723 32.0955 -47.1883 45.1644 -37.9146 55.1003L1.3347 18.4672L40.584 -18.1659C49.7594 -8.33528 54.8885 4.59526 54.9462 18.0429L1.25781 18.2734ZM1.3347 18.4672L-37.8607 55.1581C-32.8148 60.5484 -26.716 64.8465 -19.9412 67.7859L1.42783 18.5328L22.7969 -30.7202C29.5012 -27.8114 35.5366 -23.5579 40.5301 -18.2236L1.3347 18.4672ZM1.42783 18.5328L-19.9412 67.7859C-13.1678 70.7246 -5.8627 72.2426 1.52238 72.2449L1.53938 18.556L1.55638 -35.1329C8.8647 -35.1306 16.0939 -33.6284 22.7969 -30.7202L1.42783 18.5328ZM1.53938 18.556V72.2449H8.48859V18.556V-35.1329H1.53938V18.556ZM8.48859 18.556L8.6939 72.2445C22.9367 72.1901 36.5802 66.5079 46.6512 56.437L8.68737 18.4732L-29.2764 -19.4905C-19.311 -29.456 -5.8103 -35.0786 8.28328 -35.1325L8.48859 18.556ZM8.68737 18.4732L46.6512 56.437C56.7229 46.3652 62.4042 32.7213 62.4587 18.4798L8.77015 18.2745L-44.9184 18.0691C-44.8645 3.97681 -39.2427 -9.52424 -29.2764 -19.4905L8.68737 18.4732ZM8.77015 18.2745H62.459V17.5835H8.77015H-44.9187V18.2745H8.77015ZM8.77015 17.5835L62.459 17.5839C62.4592 3.30545 56.8012 -10.3911 46.7243 -20.5068L8.68775 17.3841L-29.3488 55.2749C-39.3202 45.2652 -44.9188 31.7121 -44.9187 17.5831L8.77015 17.5835ZM8.68775 17.3841L46.7243 -20.5068C36.648 -30.6218 22.9735 -36.3329 8.69429 -36.3876L8.48859 17.3009L8.28288 70.9894C-5.84679 70.9353 -19.3781 65.284 -29.3488 55.2749L8.68775 17.3841ZM8.48859 17.3009V-36.388H3.8861V17.3009V70.9898H8.48859V17.3009ZM3.8861 17.3009L41.8499 55.2647L48.6302 48.4844L10.6664 10.5206L-27.2974 -27.4432L-34.0777 -20.6629L3.8861 17.3009ZM10.6664 10.5206L-27.2974 48.4844L-20.5171 55.2647L17.4466 17.3009L55.4104 -20.6629L48.6302 -27.4432L10.6664 10.5206ZM17.4466 17.3009V-36.388H12.8041V17.3009V70.9898H17.4466V17.3009ZM12.8041 17.3009L12.5984 -36.3876C-1.68066 -36.3329 -15.3552 -30.6219 -25.4316 -20.5068L12.6049 17.3841L50.6415 55.2749C40.6707 65.2841 27.1393 70.9353 13.0098 70.9894L12.8041 17.3009ZM12.6049 17.3841L-25.4316 -20.5068C-35.5082 -10.3914 -41.1665 3.30504 -41.1664 17.5839L12.5225 17.5835L66.2114 17.5831C66.2115 31.7125 60.6126 45.2655 50.6415 55.2749L12.6049 17.3841ZM12.5225 17.5835H-41.1664V18.2745H12.5225H66.2114V17.5835H12.5225ZM12.5225 18.2745L-41.166 18.0686C-41.1937 25.2913 -39.7712 32.4459 -36.983 39.1085L12.544 18.3825L62.0711 -2.34346C64.8306 4.25071 66.2384 11.3318 66.211 18.4803L12.5225 18.2745ZM12.544 18.3825L-36.983 39.1085C-34.1947 45.7716 -30.0973 51.8068 -24.934 56.8567L12.6059 18.4737L50.1458 -19.9093C55.2561 -14.9113 59.3114 -8.93809 62.0711 -2.34346L12.544 18.3825ZM12.6059 18.4737L-25.3266 56.4687C-15.2435 66.5353 -1.58846 72.2066 12.6603 72.2447L12.8041 18.556L12.9479 -35.1327C27.048 -35.0949 40.5605 -29.4828 50.5384 -19.5213L12.6059 18.4737ZM12.8041 18.556V72.2449H19.7955V18.556V-35.1329H12.8041V18.556ZM19.7955 18.556L19.6056 72.2446C27.0267 72.2708 34.3716 70.7663 41.1819 67.8271L19.9077 18.5331L-1.3666 -30.761C5.37297 -33.6696 12.6415 -35.1585 19.9855 -35.1325L19.7955 18.556ZM19.9077 18.5331L41.1819 67.8271C47.9943 64.887 54.1269 60.574 59.197 55.1577L20.0013 18.4672L-19.1944 -18.2233C-14.177 -23.5833 -8.10817 -27.8515 -1.3666 -30.761L19.9077 18.5331ZM20.0013 18.4672L58.875 55.4987C68.6475 45.24 73.9947 31.5488 73.7599 17.3801L20.0784 18.2699L-33.6032 19.1596C-33.8356 5.13766 -28.5437 -8.41183 -18.8724 -18.5643L20.0013 18.4672ZM20.0784 18.2699L73.7599 17.3801C73.5251 3.21192 67.7274 -10.2947 57.6199 -20.2242L19.9948 18.0752L-17.6303 56.3746C-27.6331 46.5479 -33.3708 33.1811 -33.6032 19.1596L20.0784 18.2699ZM10.662 4.43559L-27.3017 42.3994L-25.1434 44.5577L12.8203 6.59388L50.7841 -31.3699L48.6258 -33.5282L10.662 4.43559ZM12.8203 6.59388L-25.1434 -31.3699L-27.2963 -29.217L10.6675 8.74676L48.6312 46.7105L50.7841 44.5577L12.8203 6.59388ZM10.6675 8.74676L48.6313 -29.217L46.473 -31.3753L8.50917 6.58847L-29.4546 44.5522L-27.2963 46.7105L10.6675 8.74676ZM8.50917 6.58847L46.473 44.5522L48.6258 42.3994L10.662 4.43559L-27.3017 -33.5282L-29.4546 -31.3753L8.50917 6.58847Z\"\r\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13120)\" />\r\n </svg>\r\n </span>\r\n <strong>AI Assistant</strong>\r\n </div>\r\n <div *ngIf=\"eyeTestAiMessage; else aiLoading\" [innerHTML]=\"parseAiMarkdown(eyeTestAiMessage)\"></div>\r\n <ng-template #aiLoading>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\" style=\"font-size: 13px;\">AI is thinking...</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"keyType ==='store'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg\r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('auditedDate')\">Audited Date <svg\r\n [ngClass]=\"sortedColumn === 'auditedDate' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin'\" class=\"text-start\">\r\n RM Name\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"text-start\">\r\n Cluster Name\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th class=\"text-start\">Optom ID</th>\r\n <th class=\"text-start\">Optom Email ID</th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Optom Name</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Token No</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Power Types</th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('ComplianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'ComplianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'ComplianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> \r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg\r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n<th><span class=\"cursor-pointer\" (click)=\"onSort('auditedSteps')\">Steps Covered By Human <svg\r\n [ngClass]=\"sortedColumn === 'auditedSteps' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedSteps' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th>Human Audited Score</th>\r\n\r\n \r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('visitorsType')\">Visitor Type <svg\r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th class=\"text-start\" *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('comment')\">Eye Test Status <svg\r\n [ngClass]=\"sortedColumn === 'comment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'comment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('subComment')\">Comments <svg\r\n [ngClass]=\"sortedColumn === 'subComment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'subComment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg\r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.date | date:'dd MMM, yyyy'}}</td>\r\n <td>{{obj?.auditedDate}}</td>\r\n <td *ngIf=\"users?.role === 'superadmin'\">\r\n <ng-container *ngIf=\"obj?.RMName\">\r\n <!-- Split and show the first value -->\r\n {{ obj.RMName.split(',')[0] }}\r\n\r\n <!-- Show +N badge if more values exist -->\r\n <span *ngIf=\"obj.RMName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.RMName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n</td>\r\n\r\n <td *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\">\r\n <ng-container *ngIf=\"obj?.clusterName\">\r\n {{ obj.clusterName.split(',')[0] }}\r\n <span *ngIf=\"obj.clusterName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.clusterName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n \r\n \r\n </td>\r\n <td>{{obj?.storeName}}</td>\r\n <td>{{obj?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\"><span *ngIf=\"obj?.optumId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optumId}}</span>\r\n <td *ngIf=\"this.typeValue ==='remote'\"><span *ngIf=\"obj?.optm_userId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optm_userId}}</span>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.salesmanEmailId ? obj?.salesmanEmailId :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.userEmail ? obj?.userEmail :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.displayName ? obj?.displayName :''}}\r\n </td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.tokenNo ?\r\n obj?.tokenNo:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.queueId ?\r\n obj?.queueId:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" >{{obj?.nearAddition ?\r\n obj?.nearAddition === \"true\"? \"With Near Addition\" :\"Without Near Addition\":'--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>{{obj?.coveredStepsAI ? obj?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?.trustScore ?? '--'}}</td>\r\n <td>{{obj?.auditedSteps ? obj?.auditedSteps:'--'}}</td>\r\n <td>{{obj?.humanComplianceScore ? obj?.humanComplianceScore :'--'}}</td>\r\n <td class=\"text-capitalize\" *ngIf=\"this.typeValue !=='remote'\">{{obj?.visitorsType ?\r\n obj?.visitorsType:'--'}}</td>\r\n <td>{{obj?.min ? obj?.min :'0'}} mins {{obj?.sec ?\r\n obj?.sec:'0'}} secs</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">\r\n <span \r\n class=\"badge\" \r\n [ngClass]=\"obj?.comment ? 'badge-light-danger' : 'badge-light-success'\">\r\n {{ obj?.comment ? 'Fake' : 'Genuine' }}\r\n </span>\r\n</td>\r\n <td>{{obj?.subComment ? obj?.subComment:'--'}}</td>\r\n <td><span class=\"badge badge-light-primary\"\r\n *ngIf=\"obj?.auditStatus ==='Yet-to-Audit'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\"\r\n *ngIf=\"obj?.auditStatus ==='Re-Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\"\r\n *ngIf=\"obj?.auditStatus ==='Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\"\r\n *ngIf=\"obj?.auditStatus ==='In-Progress'\">{{obj?.auditStatus}}</span>\r\n </td>\r\n <td>{{obj?.auditedBy?obj?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='rm'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\"> Clusters Count <svg\r\n [ngClass]=\"sortedColumn === 'clusterCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed \r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score \r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score \r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.RMName ? obj?.RMName:'--'}}</td>\r\n <td>{{obj?.clusterCount ? obj?.clusterCount:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>{{obj.complianceScore ?? '--'}}\r\n \r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('cluster',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='cluster'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n \r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Clusters Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed\r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score\r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.clusterName ? obj?.clusterName:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('store',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n</div>\r\n</section>\r\n\r\n\r\n<section *ngIf=\"eyeView\" class=\"container-fluid new1 mt-4\">\r\n<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName ? auditDetails?.displayName:'--'}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId ?auditDetails?.engagementId:'--'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore : 0}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div [ngClass]=\"eyeTestType ==='fake' ? 'col-md-12' : 'col-md-6'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestType !=='fake'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-start\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-start\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-start\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-start\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Conversation Recording + Transcript \u2500\u2500 -->\r\n<div class=\"row mt-3\" *ngIf=\"conversationData\">\r\n <!-- Left: Recording + Transcript -->\r\n <div class=\"col-md-6 d-flex flex-column gap-3\">\r\n <!-- Conversation Recording -->\r\n <div class=\"recording-box\">\r\n <div class=\"recording-title\">Conversation Recording</div>\r\n <!-- Audio element -->\r\n <audio id=\"conv-audio\" [src]=\"conversationData?.audio_url\"\r\n (timeupdate)=\"onConvTimeUpdate()\"\r\n (loadedmetadata)=\"onConvLoaded()\"\r\n (ended)=\"convIsPlaying = false\">\r\n </audio>\r\n <!-- Waveform bars -->\r\n <div class=\"waveform-bars\" [class.is-playing]=\"convIsPlaying\">\r\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\"\r\n [style.height.px]=\"h\"\r\n [class.wf-bar--played]=\"convProgress > i / waveformHeights.length\">\r\n </div>\r\n </div>\r\n <!-- Player controls -->\r\n <div class=\"player-row\">\r\n <div class=\"play-btn-wrap\">\r\n <button class=\"play-btn-circle\" (click)=\"toggleConvPlay()\" type=\"button\">\r\n <svg *ngIf=\"!convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n <svg *ngIf=\"convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/></svg>\r\n </button>\r\n </div>\r\n <div class=\"player-progress w-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"player-time start-time\">{{ convCurrentTime }}</span>\r\n <span class=\"player-time end-time\">{{ convDuration }}</span>\r\n </div>\r\n <div class=\"progress-track\" (click)=\"seekConvAudio($event)\" style=\"cursor:pointer;\">\r\n <div class=\"progress-fill\" [style.width.%]=\"convProgress * 100\"></div>\r\n </div>\r\n </div>\r\n <button class=\"mute-btn\" (click)=\"toggleConvMute()\" [title]=\"convIsMuted ? 'Unmute' : 'Mute'\" type=\"button\">\r\n <svg *ngIf=\"!convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"/></svg>\r\n <svg *ngIf=\"convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"/></svg>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- Conversation Transcript -->\r\n <div class=\"card p-4 flex-grow-1\">\r\n <div class=\"recording-title mb-3\">Conversation Transcript</div>\r\n <div style=\"overflow-y: auto; font-size: 14px; color: #344054; line-height: 1.6; max-height: 180px;\">\r\n <span *ngIf=\"conversationData?.transcript_summary; else noTranscript\">{{ conversationData?.transcript_summary }}</span>\r\n <ng-template #noTranscript><span class=\"text-muted\">No transcript available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Step tabs + audio info + evidence -->\r\n <div class=\"col-md-6\">\r\n <div class=\"card p-4\" style=\"min-height: 100%;\">\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-center gap-2 mb-1\">\r\n <span class=\"conv-card-title\">Step-wise Breakdown</span>\r\n <span class=\"badge badge-light-primary ms-1\">Audio</span>\r\n </div>\r\n <!-- Recently Audited By -->\r\n <div class=\"d-flex align-items-center gap-3 mb-3 pb-2 border-bottom\" *ngIf=\"auditDetails?.auditedBy || auditDetails?.auditedDate\" style=\"font-size: 12px; color: #667085;\">\r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"d-flex gap-3 mt-10\" style=\"min-height: 280px;\">\r\n <!-- Step pill list -->\r\n <div style=\"min-width: 190px; max-height: 320px; overflow-y: auto; border-right: 1px solid #EAECF0; padding-right: 12px;\">\r\n <div *ngFor=\"let step of conversationData?.metrics_results; let i = index\"\r\n class=\"conv-step-pill\"\r\n [class.active]=\"selectedStepIndex === i\"\r\n (click)=\"selectedStepIndex = i\">\r\n {{ step?.metricName }}\r\n </div>\r\n </div>\r\n <!-- Selected step detail -->\r\n <div class=\"flex-grow-1 ps-2\" *ngIf=\"conversationData?.metrics_results?.[selectedStepIndex] as step\">\r\n <!-- Click to Play -->\r\n <div class=\"conv-play-row\" *ngIf=\"step?.startTime\" (click)=\"playFromStep(step)\">\r\n <div class=\"conv-play-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n </div>\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 600; color: #101828;\">Click to Play</div>\r\n <div style=\"font-size: 12px; color: #667085;\">\r\n Audio Starts at {{ step?.startTime }}\r\n <!-- <span *ngIf=\"step?.endTime\"> \u2013 {{ step?.endTime }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Summary -->\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 700; color: #101828; margin-bottom: 8px;\">Summary</div>\r\n <div style=\"font-size: 13px; color: #344054; line-height: 1.6;\">\r\n <span *ngIf=\"step?.evidence_quote; else noEvidence\">{{ step?.evidence_quote }}</span>\r\n <ng-template #noEvidence><span class=\"text-muted\">No evidence available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\" >Audited Date</th>\r\n <th class=\"text-start\" >Time Stamp</th>\r\n <th class=\"text-start\" >View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th class=\"text-start\">Status changed from</th>\r\n <th class=\"text-start\">Noted Time Range</th>\r\n <th class=\"text-start\">Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n</section>", styles: ["@charset \"UTF-8\";:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.card-title{font-size:1.15rem!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}table th,table td{height:44px!important;padding:12px 24px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}table td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}.rotate{rotate:180deg;transition:1s}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.dashed{border-radius:4px;border:1px dashed var(--Error-500, #F04438)!important;background:var(--Error-25, #FFFBFA)}.dashed-desc{color:var(--Error-600, #3F4254)!important;font-size:14px;font-weight:600;line-height:24px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.text-value{color:var(--Black, #101828);font-size:24px;font-weight:600;line-height:32px}.text-sub{color:var(--Error-600, #667085)!important;font-size:16px;font-weight:600;line-height:18px}.test-sub1{color:var(--Gray-800, #1D2939);font-size:11px;font-weight:400;line-height:18px}.new1 .header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.new1 .text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.new1 .bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.new1 .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.new1 .video-position{position:absolute;top:50%;transform:translateY(-50%)}.new1 .btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 .btn.btn-success:hover:not(.btn-active),.new1 .btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 table tr{vertical-align:middle}.new1 table tr td{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:500;line-height:20px}.new1 .custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.new1 .dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .scroll-container{display:flex;width:100%}.new1 .scroll-container .item{width:100%;text-align:start}.new1 .scroll-container .items:hover,.new1 .scroll-container .tems.focus,.new1 .scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.new1 .label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.new1 .scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.new1 .scroll-section:last-child{border-right:none}.new1 .scroll-section div{padding:8px;cursor:pointer}.new1 .scroll-section div.selected{background:#007bff;color:#fff}.new1 .bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.new1 .bg-danger{background:var(--Primary-500, #D92D20)!important}.new1 .text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.new1 .text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.new1 .text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.new1 .custom-tooltip-content{font-size:12px!important;text-align:left!important}.new1 ::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.new1 .test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.new1 .engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.new1 .disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.new1 .h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.new1 .h-500px{height:600px!important}.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.new1 .h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.new1 .h-auto{height:370px!important;object-fit:fill}}.new1 .ts700px{min-height:auto!important;max-height:700px!important}.new1 .conv-card-title{font-size:14px;font-weight:700;color:#101828;line-height:24px}.new1 .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:10px;box-shadow:0 1px 2px #1018280d}.new1 .recording-title{font-size:16px;font-weight:600;padding:8px 16px;border-bottom-width:2px;border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.new1 .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.new1 .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.new1 .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.new1 .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.new1 .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.new1 .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.new1 .player-row{display:flex;align-items:center;gap:16px}.new1 .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.new1 .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.new1 .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.new1 .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.new1 .player-row .mute-btn:hover{color:#101828}.new1 .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.new1 .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.new1 .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.new1 .player-row .player-progress .player-time.start-time{color:#00a3ff}.new1 .conv-step-pill{padding:8px 12px;margin-bottom:18px;border-radius:8px;border:1.5px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:400;line-height:20px;cursor:pointer;transition:all .15s}.new1 .conv-step-pill:hover{border-color:#84adff;background:#f5f8ff}.new1 .conv-step-pill.active{border-color:#6bcaff;color:#009bf3;font-weight:600}.new1 .conv-play-row{display:flex;align-items:center;gap:14px;margin-bottom:20px;cursor:pointer;-webkit-user-select:none;user-select:none}.new1 .conv-play-row .conv-play-icon{width:48px;height:48px;border-radius:50%;background:#00a3ff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}.new1 .conv-play-row:hover .conv-play-icon{background:#0087d5}::ng-deep .plus-menu-wrap{position:relative;flex-shrink:0}::ng-deep .plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%!important;border:1.5px solid #D0D5DD;background:#fff;display:flex!important;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;padding:0;transition:background .15s,border-color .15s}::ng-deep .plus-menu-wrap .btn-plus:hover,::ng-deep .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup{position:absolute;top:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:9999}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px;display:block}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item{display:flex!important;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}::ng-deep .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap}@keyframes eyePopupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1847
+ args: [{ selector: "lib-eye-test", template: "<section *ngIf=\"!eyeView\" class=\"container-fluid\">\r\n<div class=\"card mb-2\">\r\n <div *ngIf=\"loading1\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <form *ngIf=\"!loading1\" [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2 mb-4' : 'col-2 mb-4'\" class=\"col-1 mb-4\" style=\"z-index: 33 !important;\" >\r\n <lib-reactive-select formControlName=\"dateType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"dateType\" (itemChange)=\"dateTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-10 z-2\" style=\"min-width: 150px !important;\" type=\"text\"\r\n matInput ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"false\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" [ngModelOptions]=\"{standalone: true}\"\r\n (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\"\r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"type\"\r\n (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n \r\n <!-- </div>\r\n </div> -->\r\n <!-- *ngIf=\"users?.role ==='superadmin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('RmList')?.value?.length)\">\r\n Select RM\r\n </div>\r\n <lib-group-select [items]=\"RmList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onRmSelect($event)\" [selectedValues]=\"eyeTestForm.get('RmList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n \r\n </div>\r\n <!-- *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" -->\r\n <div class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n \r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3 mb-4' : 'col-2 mb-4'\" >\r\n \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n \r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('complianceScore')?.value?.length)\">\r\n Select Score\r\n </div>\r\n <lib-select-drop [items]=\"typePercentageArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typePercentageChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('complianceScore')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-1 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"auditType\"\r\n (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-3' : 'col-2'\">\r\n <div class=\"select-wrapper mb-4\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('auditStatus')?.value?.length)\">\r\n Audit Status\r\n </div>\r\n <lib-select-drop [items]=\"auditStatusArray\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'label'\"\r\n [idField]=\"'value'\" (selected)=\"typeAuditStatusChange($event)\"\r\n [selectedValues]=\"eyeTestForm.get('auditStatus')?.value\">\r\n </lib-select-drop>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"nearAddition\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"nearAdditionArray\" (itemChange)=\"nearAdditionChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"category\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"categoryArray\" (itemChange)=\"categoryTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div \r\n *ngIf=\"users?.role\" \r\n class=\"text-end\"\r\n [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-1 mb-4' : 'col-1 mb-4'\"\r\n>\r\n<!-- [ngClass]=\"getApplyButtonClass(users?.role, eyeTestForm.get('type')?.value)\" -->\r\n\r\n <a (click)=\"onSubmit();\" type=\"submit\" class=\"btn btn-sm btn-primary py-3 \">\r\n <span>Apply</span>\r\n </a>\r\n\r\n</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n <div *ngIf=\"showEyeTest\" class=\"ms-6 mb-3\">\r\n\r\n <h3 class=\"card-title dashed w-100 row\">\r\n <span class=\"col-10 title-text py-3\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\" />\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path\r\n d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\"\r\n stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 30 days. Audit data\r\n remains accessible, but videos will not be retained beyond this period.</span></span>\r\n <span class=\"col-2 pt-2 text-end cursor-pointer\" (click)=\"closeEyeTest()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <path d=\"M25 15L15 25M15 15L25 25\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </h3>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"row\">\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"col\">\r\n <div class=\"card p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Regional Managers</h5>\r\n <span class=\"text-value\">{{RmListData ?? '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card mt-5 p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Clusters</h5>\r\n <span class=\"text-value\">{{groups?.length ?? '--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType !=='rm' || users?.role ==='admin'\" class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Clusters</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ groups?.length ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Total Tango AI Files</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.totalFiles ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Audit Completed</h5>\r\n </div>\r\n <div class=\"card-body py-3 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.completedFiles ?? '-' }}</span>\r\n\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-sub\">{{ (eyeTestCardData?.completedRatio ?? '-') + '%' }} <span\r\n class=\"test-sub\">Completed</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Tango Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.tangoScore ?? '-' }}</span>\r\n </div>\r\n <div class=\"card-footer pe-0 ps-3 py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span>\r\n <svg *ngIf=\"eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"!eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_760_9776)\">\r\n <path d=\"M11.575 9L6.82495 4.25L4.32495 6.75L0.574951 3M11.575 9H8.57495M11.575 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_760_9776\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.0749512)\" />\r\n </clipPath>\r\n </defs>\r\n </svg> \r\n <span class=\"text-sub ms-2\">{{ eyeTestCardData?.tangoScoreTrend !== null \r\n ? (getAbsValue(eyeTestCardData.tangoScoreTrend) | number:'1.0-0':'en-US') + '%' \r\n : '-' }}\r\n <span\r\n class=\"test-sub1\">vs previous week</span></span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.trustScore && eyeTestCardData?.trustScore !== 'NA' \r\n ? eyeTestCardData.trustScore + '%' \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Human Audited Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.humanScore && eyeTestCardData?.humanScore !== 'NA' \r\n ? eyeTestCardData.humanScore \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span *ngIf=\"users?.role === 'superadmin' && keyType ==='rm'\" class=\"title-text mb-2\">\r\n Audit Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n\r\n <!-- Admin + cluster present \u2192 RM Summary -->\r\n <div class=\"d-flex\">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='cluster' && users?.role === 'superadmin'\" (click)=\"typeVal1('rm','')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"users?.role === 'admin' && keyType ==='cluster' || users?.role === 'superadmin' && keyType ==='cluster'\" class=\"title-text my-4 mb-2\">\r\n RM Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary text-capitalize\">{{ eyeTestData[0]?.RMName ? eyeTestData[0]?.RMName : '' }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- All other cases \u2192 Eye Test -->\r\n <div class=\"d-flex \">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'superadmin')\"\r\n (click)=\"typeVal1('cluster',this.rmEmail)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'admin')\"\r\n (click)=\"typeVal1('cluster',this.groups)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!(users?.role === 'superadmin' && keyType ==='rm') && !(users?.role === 'superadmin' && keyType ==='cluster') \r\n && !(users?.role === 'admin' && keyType ==='cluster')\" class=\"title-text my-4 mb-2\">\r\n Eye Test\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n </div>\r\n <span *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='admin' && keyType ==='cluster'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='user' && keyType ==='store'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\"\r\n [placeholder]=\"\r\n keyType === 'rm'\r\n ? 'Search by RMName'\r\n : keyType === 'cluster'\r\n ? 'Search by Cluster'\r\n : 'Search'\r\n \" />\r\n\r\n\r\n <span class=\"cursor-pointer\" *ngIf=\"users?.role ==='superadmin'\" (click)=\"settingsView()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45\" height=\"46\"\r\n viewBox=\"0 0 45 46\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_760_9988)\">\r\n <rect x=\"2.71973\" y=\"1.98047\" width=\"40.04\" height=\"40.04\" rx=\"7.28\" fill=\"white\" />\r\n <rect x=\"3.17473\" y=\"2.43547\" width=\"39.13\" height=\"39.13\" rx=\"6.825\" stroke=\"#D0D5DD\"\r\n stroke-width=\"0.91\" />\r\n <g clip-path=\"url(#clip0_760_9988)\">\r\n <path\r\n d=\"M22.7396 24.2749C23.9961 24.2749 25.0146 23.2563 25.0146 21.9999C25.0146 20.7434 23.9961 19.7249 22.7396 19.7249C21.4832 19.7249 20.4646 20.7434 20.4646 21.9999C20.4646 23.2563 21.4832 24.2749 22.7396 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M28.3513 24.2749C28.2503 24.5036 28.2202 24.7573 28.2648 25.0033C28.3094 25.2493 28.4267 25.4763 28.6015 25.655L28.647 25.7005C28.788 25.8414 28.8999 26.0087 28.9762 26.1928C29.0526 26.3769 29.0919 26.5743 29.0919 26.7736C29.0919 26.9729 29.0526 27.1703 28.9762 27.3544C28.8999 27.5385 28.788 27.7058 28.647 27.8466C28.5062 27.9876 28.3389 28.0995 28.1548 28.1758C27.9707 28.2522 27.7733 28.2914 27.574 28.2914C27.3747 28.2914 27.1773 28.2522 26.9932 28.1758C26.8091 28.0995 26.6418 27.9876 26.5009 27.8466L26.4554 27.8011C26.2767 27.6263 26.0497 27.509 25.8037 27.4644C25.5577 27.4198 25.304 27.4499 25.0753 27.5509C24.851 27.647 24.6597 27.8066 24.525 28.0101C24.3902 28.2135 24.3179 28.4519 24.3169 28.696V28.8249C24.3169 29.2271 24.1572 29.6129 23.8727 29.8973C23.5883 30.1817 23.2025 30.3415 22.8003 30.3415C22.398 30.3415 22.0123 30.1817 21.7278 29.8973C21.4434 29.6129 21.2836 29.2271 21.2836 28.8249V28.7566C21.2777 28.5056 21.1965 28.2622 21.0504 28.058C20.9044 27.8538 20.7003 27.6982 20.4646 27.6115C20.2359 27.5106 19.9822 27.4805 19.7362 27.5251C19.4902 27.5697 19.2632 27.687 19.0844 27.8618L19.0389 27.9073C18.8981 28.0483 18.7308 28.1602 18.5467 28.2365C18.3626 28.3128 18.1652 28.3521 17.9659 28.3521C17.7666 28.3521 17.5692 28.3128 17.3851 28.2365C17.201 28.1602 17.0337 28.0483 16.8929 27.9073C16.7519 27.7664 16.64 27.5992 16.5637 27.415C16.4873 27.2309 16.448 27.0336 16.448 26.8342C16.448 26.6349 16.4873 26.4376 16.5637 26.2535C16.64 26.0693 16.7519 25.9021 16.8929 25.7612L16.9384 25.7157C17.1132 25.537 17.2305 25.31 17.2751 25.064C17.3197 24.818 17.2896 24.5643 17.1886 24.3355C17.0925 24.1112 16.9329 23.92 16.7294 23.7852C16.526 23.6505 16.2876 23.5782 16.0435 23.5772H15.9146C15.5124 23.5772 15.1266 23.4174 14.8422 23.133C14.5577 22.8486 14.3979 22.4628 14.3979 22.0605C14.3979 21.6583 14.5577 21.2725 14.8422 20.9881C15.1266 20.7037 15.5124 20.5439 15.9146 20.5439H15.9829C16.2339 20.538 16.4773 20.4568 16.6815 20.3107C16.8857 20.1646 17.0413 19.9605 17.1279 19.7249C17.2289 19.4961 17.259 19.2424 17.2144 18.9964C17.1698 18.7504 17.0525 18.5234 16.8777 18.3447L16.8322 18.2992C16.6912 18.1583 16.5793 17.9911 16.503 17.807C16.4267 17.6228 16.3874 17.4255 16.3874 17.2262C16.3874 17.0268 16.4267 16.8295 16.503 16.6454C16.5793 16.4612 16.6912 16.294 16.8322 16.1531C16.9731 16.0121 17.1403 15.9002 17.3244 15.8239C17.5086 15.7476 17.7059 15.7083 17.9052 15.7083C18.1046 15.7083 18.3019 15.7476 18.486 15.8239C18.6702 15.9002 18.8374 16.0121 18.9783 16.1531L19.0238 16.1986C19.2025 16.3734 19.4295 16.4907 19.6755 16.5353C19.9215 16.5799 20.1752 16.5498 20.4039 16.4489H20.4646C20.6889 16.3527 20.8802 16.1931 21.0149 15.9897C21.1497 15.7862 21.222 15.5478 21.2229 15.3038V15.1749C21.2229 14.7726 21.3827 14.3869 21.6672 14.1024C21.9516 13.818 22.3374 13.6582 22.7396 13.6582C23.1419 13.6582 23.5276 13.818 23.8121 14.1024C24.0965 14.3869 24.2563 14.7726 24.2563 15.1749V15.2431C24.2573 15.4871 24.3296 15.7256 24.4643 15.929C24.599 16.1325 24.7903 16.2921 25.0146 16.3882C25.2433 16.4891 25.4971 16.5193 25.7431 16.4747C25.9891 16.4301 26.2161 16.3128 26.3948 16.138L26.4403 16.0925C26.5811 15.9514 26.7484 15.8396 26.9325 15.7632C27.1167 15.6869 27.314 15.6476 27.5133 15.6476C27.7126 15.6476 27.91 15.6869 28.0941 15.7632C28.2782 15.8396 28.4455 15.9514 28.5864 16.0925C28.7274 16.2333 28.8392 16.4006 28.9156 16.5847C28.9919 16.7688 29.0312 16.9662 29.0312 17.1655C29.0312 17.3648 28.9919 17.5622 28.9156 17.7463C28.8392 17.9304 28.7274 18.0977 28.5864 18.2385L28.5409 18.284C28.366 18.4628 28.2488 18.6898 28.2042 18.9358C28.1596 19.1818 28.1897 19.4355 28.2906 19.6642V19.7249C28.3867 19.9492 28.5464 20.1404 28.7498 20.2752C28.9533 20.4099 29.1917 20.4822 29.4357 20.4832H29.5646C29.9669 20.4832 30.3526 20.643 30.6371 20.9274C30.9215 21.2119 31.0813 21.5976 31.0813 21.9999C31.0813 22.4021 30.9215 22.7879 30.6371 23.0723C30.3526 23.3567 29.9669 23.5165 29.5646 23.5165H29.4964C29.2523 23.5175 29.0139 23.5898 28.8105 23.7246C28.607 23.8593 28.4474 24.0506 28.3513 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_760_9988\" x=\"0.719727\" y=\"0.980469\" width=\"44.04\" height=\"44.04\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_760_9988\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_760_9988\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_760_9988\">\r\n <rect width=\"18.2\" height=\"18.2\" fill=\"white\"\r\n transform=\"translate(13.6396 12.9004)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\r\n <path d=\"M7.53369 12.8441H15.0241L13.5568 14.3172L14.3587 15.1191L17.2024 12.2754L14.3587 9.43164L13.5568 10.2336L15.0241 11.7066H7.53369V12.8441Z\" fill=\"black\"/>\r\n <path d=\"M12.6526 8.8631V6.5881C12.653 6.51325 12.6387 6.43904 12.6104 6.36975C12.5821 6.30045 12.5404 6.23743 12.4877 6.18428L8.5064 2.20303C8.45326 2.15032 8.39023 2.10862 8.32094 2.08031C8.25164 2.05201 8.17744 2.03766 8.10259 2.0381H2.41509C2.1134 2.0381 1.82408 2.15794 1.61075 2.37126C1.39743 2.58458 1.27759 2.87391 1.27759 3.1756V16.8256C1.27759 17.1273 1.39743 17.4166 1.61075 17.6299C1.82408 17.8433 2.1134 17.9631 2.41509 17.9631H11.5151C11.8168 17.9631 12.1061 17.8433 12.3194 17.6299C12.5327 17.4166 12.6526 17.1273 12.6526 16.8256V15.6881H11.5151V16.8256H2.41509V3.1756H6.96509V6.5881C6.96509 6.88978 7.08493 7.17911 7.29826 7.39243C7.51158 7.60575 7.80091 7.7256 8.10259 7.7256H11.5151V8.8631H12.6526ZM8.10259 6.5881V3.40878L11.2819 6.5881H8.10259Z\" fill=\"black\"/>\r\n</svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Tango AI Section (Audit Summary + RM Summary only) \u2500\u2500 -->\r\n <div class=\"px-6 pb-4\" *ngIf=\"(users?.role === 'superadmin' && keyType === 'rm') || keyType === 'cluster'\">\r\n <!-- Header -->\r\n <div class=\"text-center mb-3\">\r\n <h3 class=\"fw-bold mb-1\" style=\"color: #0591FF;\">\r\n Tango AI\r\n <sup>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 26 23\" fill=\"none\">\r\n <path d=\"M5.40634 1.88184L5.61168 2.76648C5.75884 3.40173 6.09183 3.99315 6.57843 4.48348C7.06503 4.97382 7.68876 5.34646 8.38923 5.56534L8.64861 5.64628L8.38923 5.72721C7.68876 5.94609 7.06503 6.31874 6.57843 6.80907C6.09183 7.2994 5.75884 7.89082 5.61168 8.52607L5.40634 9.41072L5.20099 8.52607C5.05384 7.89082 4.72084 7.2994 4.23425 6.80907C3.74765 6.31874 3.12392 5.94609 2.42344 5.72721L2.16406 5.64628L2.42344 5.56534C3.12392 5.34646 3.74765 4.97382 4.23425 4.48348C4.72084 3.99315 5.05384 3.40173 5.20099 2.76648L5.40634 1.88184ZM17.2947 2.82295L17.8956 5.32065C18.2018 6.59405 18.8818 7.77662 19.8692 8.75304C20.8566 9.72945 22.1177 10.4664 23.5296 10.892L24.86 11.2929L23.5296 11.6938C22.1177 12.1195 20.8566 12.8564 19.8692 13.8328C18.8818 14.8093 18.2018 15.9918 17.8956 17.2652L17.2947 19.7629L16.6938 17.2652C16.3875 15.9918 15.7076 14.8093 14.7202 13.8328C13.7328 12.8564 12.4717 12.1195 11.0598 11.6938L9.72937 11.2929L11.0598 10.892C12.4717 10.4664 13.7328 9.72945 14.7202 8.75304C15.7076 7.77662 16.3875 6.59405 16.6938 5.32065L17.2947 2.82295Z\" fill=\"url(#eyeTestAiGrad)\"/>\r\n <defs>\r\n <linearGradient id=\"eyeTestAiGrad\" x1=\"13.512\" y1=\"19.7629\" x2=\"13.512\" y2=\"1.88184\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"white\"/>\r\n <stop offset=\"1\" stop-color=\"#0591FF\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </sup>\r\n </h3>\r\n <p class=\"text-dark mb-0\" style=\"font-size: 13px;\">Ask the Tango AI on what you want..</p>\r\n </div>\r\n\r\n <!-- Input -->\r\n <div class=\"d-flex justify-content-center mb-3\">\r\n <div style=\"width: 60%; min-width: 300px;\">\r\n\r\n <div class=\"position-relative\">\r\n\r\n <!-- Plus Button with Model Popup (inside input, left side) -->\r\n <div class=\"plus-menu-wrap position-absolute top-50 translate-middle-y ps-2\" style=\"left: 4px; z-index: 10;\">\r\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\r\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\r\n <div class=\"plus-popup-section-label\">Model</div>\r\n <button class=\"plus-popup-item\" type=\"button\"\r\n *ngFor=\"let m of modelOptions\"\r\n [class.selected]=\"selectedModel === m.value\"\r\n (click)=\"selectModel(m.value); closePlusMenu()\">\r\n <span class=\"model-hint fw-bold text-dark\">{{ m.label }}</span>\r\n <!-- <span class=\"text-muted ms-1\" style=\"font-size:11px;\">{{ m.value }}</span> -->\r\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"form-control rounded-pill\" placeholder=\"Ask anything...\"\r\n style=\"padding-left: 46px;\"\r\n [(ngModel)]=\"eyeTestChatQuery\" [ngModelOptions]=\"{standalone: true}\"\r\n (keyup.enter)=\"onEyeTestAiSearch()\" />\r\n <div class=\"position-absolute end-0 top-50 translate-middle-y d-flex align-items-center gap-2 pe-3\">\r\n <!-- <span class=\"model-version-tag me-1\">{{ selectedModelVersion }}</span> -->\r\n <button class=\"btn btn-link p-0\" title=\"History\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path d=\"M3.93772 10.3551L3.35767 10.6484L2.77763 10.9417L3.31874 12.0117L3.89878 11.7184L4.47883 11.4251L3.93772 10.3551Z\" fill=\"#667085\"/>\r\n </svg>\r\n </button>\r\n <button class=\"btn btn-link p-0\" title=\"Send\" (click)=\"onEyeTestAiSearch()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10.0003H15.8346M15.8346 10.0003L10.0013 4.16699M15.8346 10.0003L10.0013 15.8337\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div><!-- /position-relative -->\r\n </div><!-- /width wrapper -->\r\n </div>\r\n\r\n <!-- AI Response -->\r\n <div *ngIf=\"showEyeTestAiMessage\" class=\"rounded-3 p-4 mx-auto\" style=\"background: #EAF8FF;\">\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <span class=\"ai-avatar-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\r\n <mask id=\"path-1-inside-1_1849_13120\" fill=\"white\">\r\n <path\r\n d=\"M19.9948 18.0752L19.2779 17.3583L11.5533 9.63369L13.8448 7.34219L14.3938 6.79206C14.4462 6.73892 14.4758 6.66742 14.4762 6.5928C14.476 6.55591 14.4685 6.51941 14.4542 6.4854C14.4399 6.4514 14.419 6.42055 14.3928 6.39462L13.8426 5.84449L11.4125 3.41004L10.8624 2.85991C10.8364 2.83346 10.8054 2.81244 10.7712 2.7981C10.7369 2.78375 10.7002 2.77637 10.6631 2.77637C10.626 2.77637 10.5893 2.78375 10.5551 2.7981C10.5209 2.81244 10.4899 2.83346 10.4639 2.85991L9.91374 3.41113L6.93566 6.38921C6.90923 6.41512 6.88824 6.44604 6.87391 6.48016C6.85958 6.51428 6.8522 6.55092 6.8522 6.58793C6.8522 6.62493 6.85958 6.66157 6.87391 6.69569C6.88824 6.72981 6.90923 6.76073 6.93566 6.78664L9.78053 9.63261L2.05485 17.3583L1.3412 18.0752C1.28828 18.1276 1.2583 18.1989 1.25781 18.2734C1.25812 18.3454 1.28558 18.4146 1.3347 18.4672C1.36093 18.4952 1.39262 18.5176 1.42783 18.5328C1.46303 18.5481 1.501 18.556 1.53938 18.556H8.48859C8.56318 18.5557 8.63463 18.526 8.68737 18.4732C8.74011 18.4205 8.76987 18.349 8.77015 18.2745V17.5835C8.77015 17.5088 8.74052 17.437 8.68775 17.3841C8.63498 17.3311 8.56336 17.3012 8.48859 17.3009H3.8861L10.6664 10.5206L17.4466 17.3009H12.8041C12.7293 17.3012 12.6577 17.3311 12.6049 17.3841C12.5522 17.437 12.5225 17.5088 12.5225 17.5835V18.2745C12.5224 18.3116 12.5297 18.3483 12.544 18.3825C12.5583 18.4168 12.5794 18.4478 12.6059 18.4737C12.6585 18.5262 12.7298 18.5558 12.8041 18.556H19.7955C19.8341 18.5562 19.8723 18.5483 19.9077 18.5331C19.9431 18.5178 19.975 18.4954 20.0013 18.4672C20.0519 18.4141 20.0796 18.3432 20.0784 18.2699C20.0771 18.1965 20.0471 18.1266 19.9948 18.0752ZM10.662 4.43559L12.8203 6.59388L10.6675 8.74676L8.50917 6.58847L10.662 4.43559Z\" />\r\n </mask>\r\n <path\r\n d=\"M19.9948 18.0752L-17.969 56.039L-17.8004 56.2076L-17.6303 56.3746L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055V-20.6055L19.2779 17.3583ZM11.5533 9.63369L-26.4105 -28.3301L-64.3743 9.63369L-26.4105 47.5975L11.5533 9.63369ZM13.8448 7.34219L51.8086 45.306L51.8273 45.2873L51.846 45.2685L13.8448 7.34219ZM14.3938 6.79206L52.3951 44.7184L52.511 44.6022L52.6262 44.4854L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.86661L68.1657 6.59731L68.1644 6.32801L14.4762 6.5928ZM14.3928 6.39462L-23.571 44.3584L-23.4528 44.4766L-23.3339 44.594L14.3928 6.39462ZM13.8426 5.84449L-24.1549 43.7744L-24.1381 43.7914L-24.1212 43.8083L13.8426 5.84449ZM11.4125 3.41004L49.4101 -34.5199L49.3932 -34.5368L49.3763 -34.5538L11.4125 3.41004ZM10.8624 2.85991L-27.4274 40.4949L-27.2651 40.66L-27.1014 40.8237L10.8624 2.85991ZM10.4639 2.85991L48.4649 40.7864L48.6098 40.6412L48.7536 40.4949L10.4639 2.85991ZM9.91374 3.41113L47.8775 41.3749L47.8962 41.3563L47.9148 41.3376L9.91374 3.41113ZM6.93566 6.38921L44.5253 44.7235L44.7133 44.5392L44.8994 44.353L6.93566 6.38921ZM6.8522 6.58793H60.5411H6.8522ZM6.93566 6.78664L44.9067 -31.1699L44.7169 -31.3597L44.5253 -31.5476L6.93566 6.78664ZM9.78053 9.63261L47.7443 47.5964L85.7009 9.63983L47.7515 -28.3239L9.78053 9.63261ZM2.05485 17.3583L-35.9089 -20.6055L-35.952 -20.5624L-35.995 -20.5192L2.05485 17.3583ZM1.3412 18.0752L39.1288 56.2144L39.2604 56.084L39.3911 55.9527L1.3412 18.0752ZM1.25781 18.2734L-52.4299 17.9229L-52.4318 18.2134L-52.4306 18.5038L1.25781 18.2734ZM1.3347 18.4672L-37.9146 55.1003L-37.8877 55.1292L-37.8607 55.1581L1.3347 18.4672ZM1.53938 18.556L1.52238 72.2449H1.53088H1.53938V18.556ZM8.48859 18.556V72.2449H8.59125L8.6939 72.2445L8.48859 18.556ZM8.77015 18.2745L62.4587 18.4798L62.459 18.3771V18.2745H8.77015ZM8.77015 17.5835L-44.9187 17.5831V17.5835H8.77015ZM8.48859 17.3009L8.69429 -36.3876L8.59144 -36.388H8.48859V17.3009ZM3.8861 17.3009L-34.0777 -20.6629L-125.73 70.9898H3.8861V17.3009ZM10.6664 10.5206L48.6302 -27.4432L10.6664 -65.407L-27.2974 -27.4432L10.6664 10.5206ZM17.4466 17.3009V70.9898H147.063L55.4104 -20.6629L17.4466 17.3009ZM12.8041 17.3009V-36.388H12.7012L12.5984 -36.3876L12.8041 17.3009ZM12.5225 17.5835H66.2114V17.5831L12.5225 17.5835ZM12.5225 18.2745L66.211 18.4803L66.2114 18.3774V18.2745H12.5225ZM12.6059 18.4737L50.5384 -19.5213L50.3431 -19.7163L50.1458 -19.9093L12.6059 18.4737ZM12.8041 18.556L12.6603 72.2447L12.7322 72.2449H12.8041V18.556ZM19.7955 18.556L19.9855 -35.1325L19.8905 -35.1329H19.7955V18.556ZM20.0013 18.4672L-18.8724 -18.5643L-19.0342 -18.3945L-19.1944 -18.2233L20.0013 18.4672ZM10.662 4.43559L48.6258 -33.5282L10.662 -71.492L-27.3017 -33.5282L10.662 4.43559ZM12.8203 6.59388L50.7841 44.5577L88.7479 6.59389L50.7841 -31.3699L12.8203 6.59388ZM10.6675 8.74676L-27.2963 46.7105L10.6674 84.6743L48.6312 46.7105L10.6675 8.74676ZM8.50917 6.58847L-29.4546 -31.3753L-67.4184 6.58847L-29.4546 44.5522L8.50917 6.58847ZM19.9948 18.0752L57.9586 -19.8886L57.2417 -20.6055L19.2779 17.3583L-18.6859 55.3221L-17.969 56.039L19.9948 18.0752ZM19.2779 17.3583L57.2417 -20.6055L49.5171 -28.3301L11.5533 9.63369L-26.4105 47.5975L-18.6859 55.3221L19.2779 17.3583ZM11.5533 9.63369L49.5171 47.5975L51.8086 45.306L13.8448 7.34219L-24.119 -30.6216L-26.4105 -28.3301L11.5533 9.63369ZM13.8448 7.34219L51.846 45.2685L52.3951 44.7184L14.3938 6.79206L-23.6074 -31.1343L-24.1564 -30.5841L13.8448 7.34219ZM14.3938 6.79206L52.6262 44.4854C62.5164 34.4538 68.0925 20.9532 68.1644 6.86661L14.4762 6.5928L-39.212 6.31898C-39.141 -7.61836 -33.6239 -20.9759 -23.8385 -30.9013L14.3938 6.79206ZM14.4762 6.5928L68.1644 6.32801C68.1294 -0.770107 66.6945 -7.79255 63.9409 -14.3369L14.4542 6.4854L-35.0325 27.3077C-37.7575 20.8314 -39.1774 13.8819 -39.2121 6.85759L14.4762 6.5928ZM14.4542 6.4854L63.9409 -14.3369C61.1877 -20.8802 57.1705 -26.8162 52.1194 -31.8048L14.3928 6.39462L-23.3339 44.594C-28.3325 39.6573 -32.3079 33.783 -35.0325 27.3077L14.4542 6.4854ZM14.3928 6.39462L52.3566 -31.5692L51.8064 -32.1193L13.8426 5.84449L-24.1212 43.8083L-23.571 44.3584L14.3928 6.39462ZM13.8426 5.84449L51.8402 -32.0855L49.4101 -34.5199L11.4125 3.41004L-26.5851 41.34L-24.1549 43.7744L13.8426 5.84449ZM11.4125 3.41004L49.3763 -34.5538L48.8261 -35.1039L10.8624 2.85991L-27.1014 40.8237L-26.5512 41.3739L11.4125 3.41004ZM10.8624 2.85991L49.1521 -34.7751C44.1297 -39.8848 38.1396 -43.944 31.5307 -46.7149L10.7712 2.7981L-9.98838 52.3111C-16.5289 49.5689 -22.457 45.5518 -27.4274 40.4949L10.8624 2.85991ZM10.7712 2.7981L31.5307 -46.7149C24.9223 -49.4857 17.8285 -50.9125 10.6631 -50.9125V2.77637V56.4653C3.57198 56.4653 -3.44839 55.0532 -9.98838 52.3111L10.7712 2.7981ZM10.6631 2.77637V-50.9125C3.49762 -50.9125 -3.59619 -49.4856 -10.2044 -46.7149L10.5551 2.7981L31.3146 52.3111C24.7748 55.0531 17.7544 56.4653 10.6631 56.4653V2.77637ZM10.5551 2.7981L-10.2044 -46.7149C-16.8129 -43.9442 -22.8032 -39.8852 -27.8259 -34.7751L10.4639 2.85991L48.7536 40.4949C43.7829 45.5521 37.8547 49.569 31.3146 52.3111L10.5551 2.7981ZM10.4639 2.85991L-27.5372 -35.0665L-28.0873 -34.5153L9.91374 3.41113L47.9148 41.3376L48.4649 40.7864L10.4639 2.85991ZM9.91374 3.41113L-28.05 -34.5527L-31.0281 -31.5746L6.93566 6.38921L44.8994 44.353L47.8775 41.3749L9.91374 3.41113ZM6.93566 6.38921L-30.654 -31.9451C-35.7777 -26.9209 -39.8481 -20.9252 -42.6268 -14.3087L6.87391 6.48016L56.3746 27.269C53.6246 33.8172 49.5962 39.7511 44.5253 44.7235L6.93566 6.38921ZM6.87391 6.48016L-42.6268 -14.3087C-45.4052 -7.69299 -46.8367 -0.588947 -46.8367 6.58793H6.8522H60.5411C60.5411 13.6908 59.1244 20.7215 56.3746 27.269L6.87391 6.48016ZM6.8522 6.58793H-46.8367C-46.8367 13.7647 -45.4052 20.8688 -42.6268 27.4845L6.87391 6.69569L56.3746 -14.0932C59.1244 -7.54562 60.5411 -0.514848 60.5411 6.58793H6.8522ZM6.87391 6.69569L-42.6268 27.4845C-39.848 34.1012 -35.7775 40.0969 -30.654 45.1209L6.93566 6.78664L44.5253 -31.5476C49.596 -26.5754 53.6245 -20.6416 56.3746 -14.0932L6.87391 6.69569ZM6.93566 6.78664L-31.0354 44.7432L-28.1905 47.5892L9.78053 9.63261L47.7515 -28.3239L44.9067 -31.1699L6.93566 6.78664ZM9.78053 9.63261L-28.1833 -28.3312L-35.9089 -20.6055L2.05485 17.3583L40.0186 55.3221L47.7443 47.5964L9.78053 9.63261ZM2.05485 17.3583L-35.995 -20.5192L-36.7087 -19.8023L1.3412 18.0752L39.3911 55.9527L40.1047 55.2358L2.05485 17.3583ZM1.3412 18.0752L-36.4464 -20.064C-46.5894 -10.0145 -52.3367 3.64485 -52.4299 17.9229L1.25781 18.2734L54.9456 18.6238C54.8533 32.7529 49.1659 46.2697 39.1288 56.2144L1.3412 18.0752ZM1.25781 18.2734L-52.4306 18.5038C-52.3723 32.0955 -47.1883 45.1644 -37.9146 55.1003L1.3347 18.4672L40.584 -18.1659C49.7594 -8.33528 54.8885 4.59526 54.9462 18.0429L1.25781 18.2734ZM1.3347 18.4672L-37.8607 55.1581C-32.8148 60.5484 -26.716 64.8465 -19.9412 67.7859L1.42783 18.5328L22.7969 -30.7202C29.5012 -27.8114 35.5366 -23.5579 40.5301 -18.2236L1.3347 18.4672ZM1.42783 18.5328L-19.9412 67.7859C-13.1678 70.7246 -5.8627 72.2426 1.52238 72.2449L1.53938 18.556L1.55638 -35.1329C8.8647 -35.1306 16.0939 -33.6284 22.7969 -30.7202L1.42783 18.5328ZM1.53938 18.556V72.2449H8.48859V18.556V-35.1329H1.53938V18.556ZM8.48859 18.556L8.6939 72.2445C22.9367 72.1901 36.5802 66.5079 46.6512 56.437L8.68737 18.4732L-29.2764 -19.4905C-19.311 -29.456 -5.8103 -35.0786 8.28328 -35.1325L8.48859 18.556ZM8.68737 18.4732L46.6512 56.437C56.7229 46.3652 62.4042 32.7213 62.4587 18.4798L8.77015 18.2745L-44.9184 18.0691C-44.8645 3.97681 -39.2427 -9.52424 -29.2764 -19.4905L8.68737 18.4732ZM8.77015 18.2745H62.459V17.5835H8.77015H-44.9187V18.2745H8.77015ZM8.77015 17.5835L62.459 17.5839C62.4592 3.30545 56.8012 -10.3911 46.7243 -20.5068L8.68775 17.3841L-29.3488 55.2749C-39.3202 45.2652 -44.9188 31.7121 -44.9187 17.5831L8.77015 17.5835ZM8.68775 17.3841L46.7243 -20.5068C36.648 -30.6218 22.9735 -36.3329 8.69429 -36.3876L8.48859 17.3009L8.28288 70.9894C-5.84679 70.9353 -19.3781 65.284 -29.3488 55.2749L8.68775 17.3841ZM8.48859 17.3009V-36.388H3.8861V17.3009V70.9898H8.48859V17.3009ZM3.8861 17.3009L41.8499 55.2647L48.6302 48.4844L10.6664 10.5206L-27.2974 -27.4432L-34.0777 -20.6629L3.8861 17.3009ZM10.6664 10.5206L-27.2974 48.4844L-20.5171 55.2647L17.4466 17.3009L55.4104 -20.6629L48.6302 -27.4432L10.6664 10.5206ZM17.4466 17.3009V-36.388H12.8041V17.3009V70.9898H17.4466V17.3009ZM12.8041 17.3009L12.5984 -36.3876C-1.68066 -36.3329 -15.3552 -30.6219 -25.4316 -20.5068L12.6049 17.3841L50.6415 55.2749C40.6707 65.2841 27.1393 70.9353 13.0098 70.9894L12.8041 17.3009ZM12.6049 17.3841L-25.4316 -20.5068C-35.5082 -10.3914 -41.1665 3.30504 -41.1664 17.5839L12.5225 17.5835L66.2114 17.5831C66.2115 31.7125 60.6126 45.2655 50.6415 55.2749L12.6049 17.3841ZM12.5225 17.5835H-41.1664V18.2745H12.5225H66.2114V17.5835H12.5225ZM12.5225 18.2745L-41.166 18.0686C-41.1937 25.2913 -39.7712 32.4459 -36.983 39.1085L12.544 18.3825L62.0711 -2.34346C64.8306 4.25071 66.2384 11.3318 66.211 18.4803L12.5225 18.2745ZM12.544 18.3825L-36.983 39.1085C-34.1947 45.7716 -30.0973 51.8068 -24.934 56.8567L12.6059 18.4737L50.1458 -19.9093C55.2561 -14.9113 59.3114 -8.93809 62.0711 -2.34346L12.544 18.3825ZM12.6059 18.4737L-25.3266 56.4687C-15.2435 66.5353 -1.58846 72.2066 12.6603 72.2447L12.8041 18.556L12.9479 -35.1327C27.048 -35.0949 40.5605 -29.4828 50.5384 -19.5213L12.6059 18.4737ZM12.8041 18.556V72.2449H19.7955V18.556V-35.1329H12.8041V18.556ZM19.7955 18.556L19.6056 72.2446C27.0267 72.2708 34.3716 70.7663 41.1819 67.8271L19.9077 18.5331L-1.3666 -30.761C5.37297 -33.6696 12.6415 -35.1585 19.9855 -35.1325L19.7955 18.556ZM19.9077 18.5331L41.1819 67.8271C47.9943 64.887 54.1269 60.574 59.197 55.1577L20.0013 18.4672L-19.1944 -18.2233C-14.177 -23.5833 -8.10817 -27.8515 -1.3666 -30.761L19.9077 18.5331ZM20.0013 18.4672L58.875 55.4987C68.6475 45.24 73.9947 31.5488 73.7599 17.3801L20.0784 18.2699L-33.6032 19.1596C-33.8356 5.13766 -28.5437 -8.41183 -18.8724 -18.5643L20.0013 18.4672ZM20.0784 18.2699L73.7599 17.3801C73.5251 3.21192 67.7274 -10.2947 57.6199 -20.2242L19.9948 18.0752L-17.6303 56.3746C-27.6331 46.5479 -33.3708 33.1811 -33.6032 19.1596L20.0784 18.2699ZM10.662 4.43559L-27.3017 42.3994L-25.1434 44.5577L12.8203 6.59388L50.7841 -31.3699L48.6258 -33.5282L10.662 4.43559ZM12.8203 6.59388L-25.1434 -31.3699L-27.2963 -29.217L10.6675 8.74676L48.6312 46.7105L50.7841 44.5577L12.8203 6.59388ZM10.6675 8.74676L48.6313 -29.217L46.473 -31.3753L8.50917 6.58847L-29.4546 44.5522L-27.2963 46.7105L10.6675 8.74676ZM8.50917 6.58847L46.473 44.5522L48.6258 42.3994L10.662 4.43559L-27.3017 -33.5282L-29.4546 -31.3753L8.50917 6.58847Z\"\r\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13120)\" />\r\n </svg>\r\n </span>\r\n <strong>AI Assistant</strong>\r\n </div>\r\n <div *ngIf=\"eyeTestAiMessage; else aiLoading\" [innerHTML]=\"parseAiMarkdown(eyeTestAiMessage)\"></div>\r\n <ng-template #aiLoading>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\" style=\"font-size: 13px;\">AI is thinking...</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"keyType ==='store'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg\r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('auditedDate')\">Audited Date <svg\r\n [ngClass]=\"sortedColumn === 'auditedDate' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin'\" class=\"text-start\">\r\n RM Name\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"text-start\">\r\n Cluster Name\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th class=\"text-start\">Optom ID</th>\r\n <th class=\"text-start\">Optom Email ID</th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Optom Name</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Token No</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Power Types</th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('ComplianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'ComplianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'ComplianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> \r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg\r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n<th><span class=\"cursor-pointer\" (click)=\"onSort('auditedSteps')\">Steps Covered By Human <svg\r\n [ngClass]=\"sortedColumn === 'auditedSteps' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedSteps' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th>Human Audited Score</th>\r\n\r\n \r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('visitorsType')\">Visitor Type <svg\r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th class=\"text-start\" *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('comment')\">Eye Test Status <svg\r\n [ngClass]=\"sortedColumn === 'comment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'comment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('subComment')\">Comments <svg\r\n [ngClass]=\"sortedColumn === 'subComment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'subComment' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg\r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.date | date:'dd MMM, yyyy'}}</td>\r\n <td>{{obj?.auditedDate}}</td>\r\n <td *ngIf=\"users?.role === 'superadmin'\">\r\n <ng-container *ngIf=\"obj?.RMName\">\r\n <!-- Split and show the first value -->\r\n {{ obj.RMName.split(',')[0] }}\r\n\r\n <!-- Show +N badge if more values exist -->\r\n <span *ngIf=\"obj.RMName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.RMName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n</td>\r\n\r\n <td *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\">\r\n <ng-container *ngIf=\"obj?.clusterName\">\r\n {{ obj.clusterName.split(',')[0] }}\r\n <span *ngIf=\"obj.clusterName.split(',').length > 1\" class=\"badge badge-light-default ms-2\">\r\n +{{ obj.clusterName.split(',').length - 1 }}\r\n </span>\r\n </ng-container>\r\n \r\n \r\n </td>\r\n <td>{{obj?.storeName}}</td>\r\n <td>{{obj?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\"><span *ngIf=\"obj?.optumId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optumId}}</span>\r\n <td *ngIf=\"this.typeValue ==='remote'\"><span *ngIf=\"obj?.optm_userId\" class=\"cursor-pointer text-primary underline\" [ngClass]=\"filterByOptom === getRowOptomId(obj) ? 'fw-bold' : ''\" (click)=\"filterOptom(obj)\">{{obj?.optm_userId}}</span>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.salesmanEmailId ? obj?.salesmanEmailId :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.userEmail ? obj?.userEmail :''}}\r\n <td *ngIf=\"this.typeValue ==='remote'\">{{obj?.displayName ? obj?.displayName :''}}\r\n </td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.queueId ?\r\n obj?.queueId:''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.tokenNo ?\r\n obj?.tokenNo:'--'}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" >{{obj?.nearAddition ?\r\n obj?.nearAddition === \"true\"? \"With Near Addition\" :\"Without Near Addition\":'--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>{{obj?.coveredStepsAI ? obj?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?.trustScore ?? '--'}}</td>\r\n <td>{{obj?.auditedSteps ? obj?.auditedSteps:'--'}}</td>\r\n <td>{{obj?.humanComplianceScore ? obj?.humanComplianceScore :'--'}}</td>\r\n <td class=\"text-capitalize\" *ngIf=\"this.typeValue !=='remote'\">{{obj?.visitorsType ?\r\n obj?.visitorsType:'--'}}</td>\r\n <td>{{obj?.min ? obj?.min :'0'}} mins {{obj?.sec ?\r\n obj?.sec:'0'}} secs</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">\r\n <span \r\n class=\"badge\" \r\n [ngClass]=\"obj?.comment ? 'badge-light-danger' : 'badge-light-success'\">\r\n {{ obj?.comment ? 'Fake' : 'Genuine' }}\r\n </span>\r\n</td>\r\n <td>{{obj?.subComment ? obj?.subComment:'--'}}</td>\r\n <td><span class=\"badge badge-light-primary\"\r\n *ngIf=\"obj?.auditStatus ==='Yet-to-Audit'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\"\r\n *ngIf=\"obj?.auditStatus ==='Re-Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\"\r\n *ngIf=\"obj?.auditStatus ==='Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\"\r\n *ngIf=\"obj?.auditStatus ==='In-Progress'\">{{obj?.auditStatus}}</span>\r\n </td>\r\n <td>{{obj?.auditedBy?obj?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='rm'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\"> Clusters Count <svg\r\n [ngClass]=\"sortedColumn === 'clusterCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed \r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score \r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score \r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.RMName ? obj?.RMName:'--'}}</td>\r\n <td>{{obj?.clusterCount ? obj?.clusterCount:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>{{obj.complianceScore ?? '--'}}\r\n \r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('cluster',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <table *ngIf=\"keyType ==='cluster'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n \r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Clusters Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n Total Tango AI Files\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Audit Completed\r\n </th>\r\n <th class=\"text-start\">\r\n Tango Score\r\n </th>\r\n <th class=\"text-start\">\r\n Trust Score\r\n </th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?.clusterName ? obj?.clusterName:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('store',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n</div>\r\n</section>\r\n\r\n\r\n<section *ngIf=\"eyeView\" class=\"container-fluid new1 mt-4\">\r\n<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName ? auditDetails?.displayName:'--'}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId ?auditDetails?.engagementId:'--'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore : 0}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div [ngClass]=\"eyeTestType ==='fake' ? 'col-md-12' : 'col-md-6'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestType !=='fake'\" class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-start\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-start\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-start\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-start\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-start\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Conversation Recording + Transcript \u2500\u2500 -->\r\n<div class=\"row mt-3\" *ngIf=\"conversationData\">\r\n <!-- Left: Recording + Transcript -->\r\n <div class=\"col-md-6 d-flex flex-column gap-3\">\r\n <!-- Conversation Recording -->\r\n <div class=\"recording-box\">\r\n <div class=\"recording-title\">Conversation Recording</div>\r\n <!-- Audio element -->\r\n <audio id=\"conv-audio\" [src]=\"conversationData?.audio_url\"\r\n (timeupdate)=\"onConvTimeUpdate()\"\r\n (loadedmetadata)=\"onConvLoaded()\"\r\n (ended)=\"convIsPlaying = false\">\r\n </audio>\r\n <!-- Waveform bars -->\r\n <div class=\"waveform-bars\" [class.is-playing]=\"convIsPlaying\">\r\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\"\r\n [style.height.px]=\"h\"\r\n [class.wf-bar--played]=\"convProgress > i / waveformHeights.length\">\r\n </div>\r\n </div>\r\n <!-- Player controls -->\r\n <div class=\"player-row\">\r\n <div class=\"play-btn-wrap\">\r\n <button class=\"play-btn-circle\" (click)=\"toggleConvPlay()\" type=\"button\">\r\n <svg *ngIf=\"!convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n <svg *ngIf=\"convIsPlaying\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/></svg>\r\n </button>\r\n </div>\r\n <div class=\"player-progress w-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"player-time start-time\">{{ convCurrentTime }}</span>\r\n <span class=\"player-time end-time\">{{ convDuration }}</span>\r\n </div>\r\n <div class=\"progress-track\" (click)=\"seekConvAudio($event)\" style=\"cursor:pointer;\">\r\n <div class=\"progress-fill\" [style.width.%]=\"convProgress * 100\"></div>\r\n </div>\r\n </div>\r\n <button class=\"mute-btn\" (click)=\"toggleConvMute()\" [title]=\"convIsMuted ? 'Unmute' : 'Mute'\" type=\"button\">\r\n <svg *ngIf=\"!convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"/></svg>\r\n <svg *ngIf=\"convIsMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"/></svg>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- Conversation Transcript -->\r\n <div class=\"card p-4 flex-grow-1\">\r\n <div class=\"recording-title mb-3\">Conversation Transcript</div>\r\n <div style=\"overflow-y: auto; font-size: 14px; color: #344054; line-height: 1.6; max-height: 180px;\">\r\n <span *ngIf=\"conversationData?.transcript_summary; else noTranscript\">{{ conversationData?.transcript_summary }}</span>\r\n <ng-template #noTranscript><span class=\"text-muted\">No transcript available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Step tabs + audio info + evidence -->\r\n <div class=\"col-md-6\">\r\n <div class=\"card p-4\" style=\"min-height: 100%;\">\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-center gap-2 mb-1\">\r\n <span class=\"conv-card-title\">Step-wise Breakdown</span>\r\n <span class=\"badge badge-light-primary ms-1\">Audio</span>\r\n </div>\r\n <!-- Recently Audited By -->\r\n <div class=\"d-flex align-items-center gap-3 mb-3 pb-2 border-bottom\" *ngIf=\"auditDetails?.auditedBy || auditDetails?.auditedDate\" style=\"font-size: 12px; color: #667085;\">\r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"d-flex gap-3 mt-10\" style=\"min-height: 280px;\">\r\n <!-- Step pill list -->\r\n <div style=\"min-width: 190px; max-height: 320px; overflow-y: auto; border-right: 1px solid #EAECF0; padding-right: 12px;\">\r\n <div *ngFor=\"let step of conversationData?.metrics_results; let i = index\"\r\n class=\"conv-step-pill\"\r\n [class.active]=\"selectedStepIndex === i\"\r\n (click)=\"selectedStepIndex = i\">\r\n {{ step?.metricName }}\r\n </div>\r\n </div>\r\n <!-- Selected step detail -->\r\n <div class=\"flex-grow-1 ps-2\" *ngIf=\"conversationData?.metrics_results?.[selectedStepIndex] as step\">\r\n <!-- Click to Play -->\r\n <div class=\"conv-play-row\" *ngIf=\"step?.startTime\" (click)=\"playFromStep(step)\">\r\n <div class=\"conv-play-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M8 5v14l11-7z\"/></svg>\r\n </div>\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 600; color: #101828;\">Click to Play</div>\r\n <div style=\"font-size: 12px; color: #667085;\">\r\n Audio Starts at {{ step?.startTime }}\r\n <!-- <span *ngIf=\"step?.endTime\"> \u2013 {{ step?.endTime }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Summary -->\r\n <div>\r\n <div style=\"font-size: 14px; font-weight: 700; color: #101828; margin-bottom: 8px;\">Summary</div>\r\n <div style=\"font-size: 13px; color: #344054; line-height: 1.6;\">\r\n <span *ngIf=\"step?.evidence_quote; else noEvidence\">{{ step?.evidence_quote }}</span>\r\n <ng-template #noEvidence><span class=\"text-muted\">No evidence available.</span></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\" >Audited Date</th>\r\n <th class=\"text-start\" >Time Stamp</th>\r\n <th class=\"text-start\" >View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th class=\"text-start\">Status changed from</th>\r\n <th class=\"text-start\">Noted Time Range</th>\r\n <th class=\"text-start\">Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n</section>", styles: ["@charset \"UTF-8\";:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.shown.drops-down-right{transform-origin:0 0;width:560px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.show-ranges.shown{top:65px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;right:-475px!important;left:unset!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.card-title{font-size:1.15rem!important}.select-wrapper{position:relative;display:inline-block;width:100%}.placeholder-overlay{position:absolute;color:var(--Gray-500, #667085);font-family:Inter;font-size:16px!important;font-style:normal;font-weight:400;top:10px;left:15px;pointer-events:none;font-size:1.1rem;z-index:1}table th,table td{height:44px!important;padding:12px 24px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}table td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}.rotate{rotate:180deg;transition:1s}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.dashed{border-radius:4px;border:1px dashed var(--Error-500, #F04438)!important;background:var(--Error-25, #FFFBFA)}.dashed-desc{color:var(--Error-600, #3F4254)!important;font-size:14px;font-weight:600;line-height:24px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:600;line-height:20px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.text-value{color:var(--Black, #101828);font-size:24px;font-weight:600;line-height:32px}.text-sub{color:var(--Error-600, #667085)!important;font-size:16px;font-weight:600;line-height:18px}.test-sub1{color:var(--Gray-800, #1D2939);font-size:11px;font-weight:400;line-height:18px}.new1 .header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.new1 .text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.new1 .bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.new1 .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.new1 .video-position{position:absolute;top:50%;transform:translateY(-50%)}.new1 .btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 .btn.btn-success:hover:not(.btn-active),.new1 .btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.new1 table tr{vertical-align:middle}.new1 table tr td{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:500;line-height:20px}.new1 .custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.new1 .dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.new1 .scroll-container{display:flex;width:100%}.new1 .scroll-container .item{width:100%;text-align:start}.new1 .scroll-container .items:hover,.new1 .scroll-container .tems.focus,.new1 .scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.new1 .label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.new1 .scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.new1 .scroll-section:last-child{border-right:none}.new1 .scroll-section div{padding:8px;cursor:pointer}.new1 .scroll-section div.selected{background:#007bff;color:#fff}.new1 .bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.new1 .bg-danger{background:var(--Primary-500, #D92D20)!important}.new1 .text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.new1 .text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.new1 .text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.new1 .custom-tooltip-content{font-size:12px!important;text-align:left!important}.new1 ::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.new1 .test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.new1 .engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.new1 .disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.new1 .h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.new1 .h-500px{height:600px!important}.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.new1 .h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.new1 .h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.new1 .h-auto{height:370px!important;object-fit:fill}}.new1 .ts700px{min-height:auto!important;max-height:700px!important}.new1 .conv-card-title{font-size:14px;font-weight:700;color:#101828;line-height:24px}.new1 .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:10px;box-shadow:0 1px 2px #1018280d}.new1 .recording-title{font-size:16px;font-weight:600;padding:8px 16px;border-bottom-width:2px;border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.new1 .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.new1 .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.new1 .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.new1 .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.new1 .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.new1 .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.new1 .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.new1 .player-row{display:flex;align-items:center;gap:16px}.new1 .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.new1 .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.new1 .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.new1 .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.new1 .player-row .mute-btn:hover{color:#101828}.new1 .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.new1 .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.new1 .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.new1 .player-row .player-progress .player-time.start-time{color:#00a3ff}.new1 .conv-step-pill{padding:8px 12px;margin-bottom:18px;border-radius:8px;border:1.5px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:400;line-height:20px;cursor:pointer;transition:all .15s}.new1 .conv-step-pill:hover{border-color:#84adff;background:#f5f8ff}.new1 .conv-step-pill.active{border-color:#6bcaff;color:#009bf3;font-weight:600}.new1 .conv-play-row{display:flex;align-items:center;gap:14px;margin-bottom:20px;cursor:pointer;-webkit-user-select:none;user-select:none}.new1 .conv-play-row .conv-play-icon{width:48px;height:48px;border-radius:50%;background:#00a3ff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}.new1 .conv-play-row:hover .conv-play-icon{background:#0087d5}::ng-deep .plus-menu-wrap{position:relative;flex-shrink:0}::ng-deep .plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%!important;border:1.5px solid #D0D5DD;background:#fff;display:flex!important;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;padding:0;transition:background .15s,border-color .15s}::ng-deep .plus-menu-wrap .btn-plus:hover,::ng-deep .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup{position:absolute;top:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:9999}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px;display:block}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item{display:flex!important;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}::ng-deep .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}::ng-deep .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap}@keyframes eyePopupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1848
1848
  }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.FormBuilder }, { type: i3.TraxService }, { type: i4.EyeTestAuditService }, { type: i5.Router }, { type: i0.ChangeDetectorRef }, { type: i1.GlobalStateService }, { type: i6.ToastService }, { type: i7.NgbModal }, { type: i5.ActivatedRoute }, { type: i8.DomSanitizer }], propDecorators: { onDocumentClick: [{
1849
1849
  type: HostListener,
1850
1850
  args: ['document:click', ['$event']]
@@ -1861,4 +1861,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1861
1861
  type: ViewChild,
1862
1862
  args: ['videoPlayer', { static: false }]
1863
1863
  }] } });
1864
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXllLXRlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC9leWUtdGVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0L2V5ZS10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQTZCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwSSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQWdCLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQVksR0FBRyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk5RyxPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNdkUsTUFBTSxPQUFPLGdCQUFnQjtJQXNFakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUEwQjtJQUMxQjtJQUNBO0lBOUVWLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxXQUFXLENBQVk7SUFDdkIsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLFlBQVksQ0FBTTtJQUNsQixZQUFZLENBQU07SUFDbEIsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDakIs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QyxRQUFRLENBQUM7Z0JBb3pCWixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0MsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNzQixXQUFXO3NCQUF2RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgdGFrZVVudGlsLE9ic2VydmFibGUsdGFwLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXllVGVzdEF1ZGl0U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leWUtdGVzdC1hdWRpdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IFNlbmRBbGVydENvbXBvbmVudCB9IGZyb20gXCIuL3NlbmQtYWxlcnQvc2VuZC1hbGVydC5jb21wb25lbnRcIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWV5ZS10ZXN0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9leWUtdGVzdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZXllLXRlc3QuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEV5ZVRlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBleWVUZXN0Rm9ybTogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnkgPSB7fTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBpc0N1c3RvbURhdGU6IGFueTtcclxuICBoZWFkZXJGaWx0ZXJzOiBhbnkgPSBbXTtcclxuICBDbHVzdGVyTGlzdDogYW55ID0gW107XHJcbiAgc3RvcmVzOiBhbnkgPSBbXTtcclxuICBjbGllbnREYXRhOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ3JvdXBzOiBhbnkgPSBbXTtcclxuICBzdG9yZUxpc3Q6IGFueVtdID0gW107XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgZXllVGVzdERhdGE6IGFueTtcclxuICB0eXBlVmFsdWU6IGFueTtcclxuICB0eXBlOiBhbnkgPSBbXHJcbiAgICB7IHZhbHVlOiBcInBoeXNpY2FsXCIsIGxhYmVsOiBcIkV5ZSBUZXN0XCIgfSxcclxuICAgIHsgdmFsdWU6IFwicmVtb3RlXCIsIGxhYmVsOiBcIlJlbW90ZSBUZXN0XCIgfSxcclxuICBdO1xyXG4gIGF1ZGl0VHlwZTogYW55ID0gW1xyXG4gICAgeyBsYWJlbDogXCJBbGxcIiwgdmFsdWU6IFwiYWxsXCIgfSxcclxuICAgIHsgbGFiZWw6IFwiQWR1bHRcIiwgdmFsdWU6IFwiYWR1bHRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJLaWRcIiwgdmFsdWU6IFwia2lkc1wiIH0sXHJcbiAgXTtcclxuICBkYXRlVHlwZTogYW55ID0gW1xyXG4gICAgeyB2YWx1ZTogXCJmaWxlRGF0ZVwiLCBsYWJlbDogXCJFeWUgVGVzdCBEYXRlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiYXVkaXRlZERhdGVcIiwgbGFiZWw6IFwiQXVkaXRlZCBEYXRlXCIgfSxcclxuICBdO1xyXG4gIHR5cGVQZXJjZW50YWdlQXJyYXk6YW55ID0gW107XHJcblxyXG4gICBuZWFyQWRkaXRpb25BcnJheTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBsYWJlbDogXCJBbGxcIixcclxuICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICB9LFxyXG4gICAgeyBcclxuICAgICAgbGFiZWw6IFwiV2l0aCBOZWFyIEFkZGl0aW9uXCIsIFxyXG4gICAgICB2YWx1ZTogXCJ0cnVlXCIgXHJcbiAgICB9LFxyXG4gICAgeyBcclxuICAgICAgbGFiZWw6IFwiV2l0aG91dCBOZWFyIEFkZGl0aW9uXCIsIFxyXG4gICAgICB2YWx1ZTogXCJmYWxzZVwiIFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBjYXRlZ29yeUFycmF5OiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIGxhYmVsOiBcIkdlbnVpbmVcIixcclxuICAgICAgdmFsdWU6IFwiZ2VudWluZVwiLFxyXG4gICAgfSxcclxuICAgIHsgbGFiZWw6IFwiRmFrZVwiLCB2YWx1ZTogXCJmYWtlXCIgfSxcclxuICBdO1xyXG5cclxuICBhdWRpdGVkRGF0ZUF1ZGl0U3RhdHVzOmFueSA9W1xyXG4gICAgeyBsYWJlbDogXCJBdWRpdGVkXCIsIHZhbHVlOiBcIkF1ZGl0ZWRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJSZS1BdWRpdGVkXCIsIHZhbHVlOiBcIlJlLUF1ZGl0ZWRcIiB9LFxyXG4gICBcclxuICBdXHJcblxyXG4gIGF1ZGl0U3RhdHVzQXJyYXk6YW55ID1bXHJcbiAgICB7IGxhYmVsOiBcIkF1ZGl0ZWRcIiwgdmFsdWU6IFwiQXVkaXRlZFwiIH0sXHJcbiAgICB7IGxhYmVsOiBcIlJlLUF1ZGl0ZWRcIiwgdmFsdWU6IFwiUmUtQXVkaXRlZFwiIH0sXHJcbiAgICB7bGFiZWwgOlwiWWV0LXRvLUF1ZGl0XCIsIHZhbHVlOiBcIllldC10by1BdWRpdFwiIH0sXHJcbiAgICB7IGxhYmVsIDpcIkluLVByb2dyZXNzXCIsIHZhbHVlOiBcIkluLVByb2dyZXNzXCIgfSxcclxuICAgIFxyXG4gIF1cclxuICBzaG93RXllVGVzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleWVTZXJ2aWNlOiBFeWVUZXN0QXVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxyXG4gICkge1xyXG4gICAgdGhpcy50eXBlVmFsdWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KFwidHlwZVZhbHVlXCIpO1xyXG4gIH1cclxuICBoZWFkRGF0ZTogYW55O1xyXG4gIGhlYWREYXRlRW5kOiBhbnk7XHJcbiAgdXNlcnM6IGFueTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgY2xvc2VFeWVUZXN0KCkge1xyXG4gICAgdGhpcy5zaG93RXllVGVzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFJtTGlzdE5ldzphbnk7XHJcbiAgc3RvcmVzTmV3OmFueTtcclxuICBkYXRhQmFja0dldDphbnk7XHJcbiAgYXVkaXRTdGF0dXNOZXc6YW55O1xyXG4gIGNvbXBsaWFuY2VTY29yZUFycmF5OmFueTtcclxuICAvKipcclxuICAgKiBDb21wbGlhbmNlLXNjb3JlIG9wdGlvbnMgZm9yIGEgbGV2ZWw6IHN0b3JlIGxldmVsIHNjb3JlcyBpbiBkaXNjcmV0ZSBzdGVwcyxcclxuICAgKiBldmVyeSBvdGhlciBsZXZlbCBpbiAxMCUgYmFuZHMuIEtlZXBzIG5nT25Jbml0IGFuZCB0eXBlVmFsL3R5cGVWYWwxIGluIHN5bmMuXHJcbiAgICovXHJcbiAgc2V0Q29tcGxpYW5jZVBlcmNlbnRhZ2VBcnJheShrZXlUeXBlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZVBlcmNlbnRhZ2VBcnJheSA9XHJcbiAgICAgIGtleVR5cGUgPT09IFwic3RvcmVcIlxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjAlXCIsIHZhbHVlOiBcIjBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjE3JVwiLCB2YWx1ZTogXCIxNlwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMzMlXCIsIHZhbHVlOiBcIjMzXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI1MCVcIiwgdmFsdWU6IFwiNTBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjY3JVwiLCB2YWx1ZTogXCI2NlwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiODMlXCIsIHZhbHVlOiBcIjgzXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCIxMDAlXCIsIHZhbHVlOiBcIjEwMFwiIH0sXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgOiBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMOKAkzEwJVwiLCB2YWx1ZTogXCIwLTEwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCIxMOKAkzIwJVwiLCB2YWx1ZTogXCIxMC0yMFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMjDigJMzMCVcIiwgdmFsdWU6IFwiMjAtMzBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjMw4oCTNDAlXCIsIHZhbHVlOiBcIjMwLTQwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI0MOKAkzUwJVwiLCB2YWx1ZTogXCI0MC01MFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiNTDigJM2MCVcIiwgdmFsdWU6IFwiNTAtNjBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjYw4oCTNzAlXCIsIHZhbHVlOiBcIjYwLTcwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI3MOKAkzgwJVwiLCB2YWx1ZTogXCI3MC04MFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiODDigJM5MCVcIiwgdmFsdWU6IFwiODAtOTBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjkw4oCTMTAwJVwiLCB2YWx1ZTogXCI5MC0xMDBcIiB9LFxyXG4gICAgICAgICAgXTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKTtcclxuICAgIHRoaXMudXNlcnMgPSB1c2VyaW5mbztcclxuICAgIHRoaXMuaW5pdEFpU2Vzc2lvbigpO1xyXG4vLyBTdG9yZSBsZXZlbCBhbHdheXMgdXNlcyB0aGUgZGlzY3JldGUgc3RlcCBzY29yZXMsIGV2ZXJ5IG90aGVyIGxldmVsIHRoZVxyXG4vLyBiYW5kZWQgcmFuZ2VzIOKAlCBzYW1lIHJ1bGUgYXMgdHlwZVZhbCgpL3R5cGVWYWwxKCkuIEEgP2tleVR5cGU9c3RvcmUgZGVlcFxyXG4vLyBsaW5rIHRoZXJlZm9yZSBoYXMgdG8gYmUgaG9ub3VyZWQgaGVyZSwgbm90IGp1c3QgdGhlIHJvbGUgZGVmYXVsdCwgb3IgdGhlXHJcbi8vIGRyb3Bkb3duIHNob3dzIGJhbmRzIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHNjb3BlZCB0byBhIHN0b3JlLlxyXG5jb25zdCBsYW5kaW5nS2V5VHlwZSA9XHJcbiAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChcImtleVR5cGVcIikgfHxcclxuICAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCJcclxuICAgID8gXCJybVwiXHJcbiAgICA6IHRoaXMudXNlcnM/LnJvbGUgPT09IFwiYWRtaW5cIlxyXG4gICAgPyBcImNsdXN0ZXJcIlxyXG4gICAgOiBcInN0b3JlXCIpO1xyXG50aGlzLnNldENvbXBsaWFuY2VQZXJjZW50YWdlQXJyYXkobGFuZGluZ0tleVR5cGUpO1xyXG5cclxuICAgIGlmICghdGhpcy50eXBlVmFsdWUpIHtcclxuICAgICAgdGhpcy50eXBlVmFsdWUgPSBcInBoeXNpY2FsXCI7XHJcbiAgICB9XHJcbiAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgY29uc3QgaXNWYWxpZERhdGUgPSBtID4gdGhpcy5kYXlqcygpO1xyXG4gICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHtcclxuICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlcIikuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICB9O1xyXG4gICAgbGV0IGhlYWRlckZpbHRlcnMgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgICAgIFxyXG4gICAgaWYgKGhlYWRlckZpbHRlcnM/LmRhdGU/LnN0YXJ0RGF0ZSAmJiBoZWFkZXJGaWx0ZXJzPy5kYXRlPy5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgaGVhZGVyRmlsdGVycy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgIGVuZERhdGU6IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICksXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgIC8vIERlZXAtbGluayBmcm9tIHRoZSBFeWUgVGVzdCBkYXNoYm9hcmQ6IGtleVR5cGU9c3RvcmUmc3RvcmVDb2RlPeKApiZvcHRvbUlkPeKAplxyXG4gICAgICAvLyBMYW5kaW5nIGxldmVsIG11c3QgY29tZSBmcm9tIHRoZSBsaW5rLCBub3QgdGhlIHJvbGUgZGVmYXVsdFxyXG4gICAgICAvLyAoc3VwZXJhZG1pbiAtPiBybSwgYWRtaW4gLT4gY2x1c3RlciksIHNvIGEgcm93J3MgQXVkaXQgYnV0dG9uIGxhbmRzIG9uXHJcbiAgICAgIC8vIHRoYXQgcm93J3MgU1RPUkUgdmlldy4gQ2FwdHVyZWQgaGVyZSBhbmQgYXBwbGllZCBvbmNlIHRoZSBjbHVzdGVyL3N0b3JlXHJcbiAgICAgIC8vIGxpc3RzIGhhdmUgbG9hZGVkIChzZWUgYXBwbHlEZWVwTGlua1N0b3JlKS5cclxuICAgICAgaWYgKHBhcmFtcyAmJiBwYXJhbXNbXCJrZXlUeXBlXCJdKSB7XHJcbiAgICAgICAgdGhpcy5kZWVwTGlua0tleVR5cGUgPSBwYXJhbXNbXCJrZXlUeXBlXCJdO1xyXG4gICAgICAgIC8vIFRoZSBsaW5rJ3MgbGV2ZWwgbXVzdCB3aW4gb3ZlciB0aGUgcm9sZSBkZWZhdWx0IChzdXBlcmFkbWluIC0+IHJtKVxyXG4gICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmVDb2RlIGxvb2t1cCBsYXRlciBmaW5kcyBhIG1hdGNoLFxyXG4gICAgICAgIC8vIG90aGVyd2lzZSB0aGUgcGF5bG9hZCBnb2VzIG91dCBhcyBybSB3aGlsZSB0aGUgVVJMIGFza2VkIGZvciBzdG9yZS5cclxuICAgICAgICB0aGlzLmtleVR5cGUgPSBwYXJhbXNbXCJrZXlUeXBlXCJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zW1wic3RvcmVDb2RlXCJdKSB7XHJcbiAgICAgICAgdGhpcy5kZWVwTGlua1N0b3JlQ29kZSA9IHBhcmFtc1tcInN0b3JlQ29kZVwiXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyYW1zICYmIHBhcmFtc1tcIm9wdG9tSWRcIl0pIHtcclxuICAgICAgICB0aGlzLmRlZXBMaW5rT3B0b21JZCA9IHBhcmFtc1tcIm9wdG9tSWRcIl07XHJcbiAgICAgICAgLy8gRHJpdmVzIHRoZSBmaWx0ZXJCeU9wdG9tIHBheWxvYWQga2V5LiBVbmxpa2Ugc3RvcmVDb2RlIHRoaXMgaXMgbm90XHJcbiAgICAgICAgLy8gY29uc3VtZWQsIHNvIHRoZSBmaWx0ZXIgc3Vydml2ZXMgcGFnaW5nL3NvcnRpbmcgdW50aWwgaXQgaXMgY2xlYXJlZC5cclxuICAgICAgICB0aGlzLmZpbHRlckJ5T3B0b20gPSBTdHJpbmcocGFyYW1zW1wib3B0b21JZFwiXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBhcmFtcyAmJlxyXG4gICAgICAgIHBhcmFtc1tcImZyb21EYXRlXCJdICYmXHJcbiAgICAgICAgcGFyYW1zW1widG9EYXRlXCJdICYmXHJcbiAgICAgICAgcGFyYW1zW1widHlwZVZhbHVlXCJdXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMudHlwZVZhbHVlID0gcGFyYW1zW1widHlwZVZhbHVlXCJdID8gcGFyYW1zW1widHlwZVZhbHVlXCJdIDogXCJwaHlzaWNhbFwiO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBwYXJhbXNbXCJmcm9tRGF0ZVwiXSxcclxuICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBwYXJhbXNbXCJ0b0RhdGVcIl0sXHJcbiAgICAgICAgICBcIllZWVktTU0tRERcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXRcIl0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGZyb21EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIFwiREQtTU0tWVlZWVwiXHJcbiAgICAgICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICAgICAgdG9EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSxcclxuICAgICAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICAgICApLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgICAgICAgIHR5cGVWYWx1ZTogdGhpcy50eXBlVmFsdWUgPyB0aGlzLnR5cGVWYWx1ZSA6IFwicGh5c2ljYWxcIixcclxuICAgICAgICAgICAgLy8gQ2FycnkgdGhlIGRlZXAtbGluayBzZWxlY3Rpb24gdGhyb3VnaCB0aGlzIHJlZGlyZWN0OyBkcm9wcGluZyBpdFxyXG4gICAgICAgICAgICAvLyBoZXJlIGlzIHdoYXQgbWFkZSBzdG9yZUNvZGUgdW51c2FibGUgZnJvbSBhbiBleHRlcm5hbCBsaW5rLlxyXG4gICAgICAgICAgICAuLi4odGhpcy5kZWVwTGlua0tleVR5cGUgPyB7IGtleVR5cGU6IHRoaXMuZGVlcExpbmtLZXlUeXBlIH0gOiB7fSksXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZXBMaW5rU3RvcmVDb2RlXHJcbiAgICAgICAgICAgICAgPyB7IHN0b3JlQ29kZTogdGhpcy5kZWVwTGlua1N0b3JlQ29kZSB9XHJcbiAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZXBMaW5rT3B0b21JZCA/IHsgb3B0b21JZDogdGhpcy5kZWVwTGlua09wdG9tSWQgfSA6IHt9KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IGRhdGVUaW1lID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGU7XHJcbiAgICB0aGlzLmhlYWREYXRlID0gdGhpcy5kYXlqcyhkYXRlVGltZSwgXCJERC1NTS1ZWVlZXCIpLmZvcm1hdChcIk1NTSwgRERcIik7XHJcbiAgICB0aGlzLmhlYWREYXRlRW5kID0gdGhpcy5kYXlqcyhcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLFxyXG4gICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIik7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiVHlwZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlVmFsdWUpO1xyXG4gICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNvbXBsaWFuY2VTY29yZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlUGVyY2VudGFnZUFycmF5KTtcclxuICAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJhdWRpdFN0YXR1c1wiKT8uc2V0VmFsdWUodGhpcy5hdWRpdFN0YXR1c0FycmF5KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcIlwiKVxyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQpIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxSbTEoKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldEFsbEdyb3VwczEoKSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldEFsbFN0b3JlczEoKSlcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgLy8gQWxsIGRvbmUg4pyFXHJcbiAgICAgICAgLy8gRGVlcCBsaW5rIHdpbnMgb3ZlciB0aGUgcm9sZSBkZWZhdWx0OiBzZWxlY3QgdGhlIGxpbmtlZCBzdG9yZSAoYW5kXHJcbiAgICAgICAgLy8gZm9yY2Ugc3RvcmUgbGV2ZWwpIGJlZm9yZSB0aGUgZmlyc3Qgc3VibWl0LCBzbyB0aGUgaW5pdGlhbCByZXN1bHQgc2V0XHJcbiAgICAgICAgLy8gaXMgYWxyZWFkeSBzY29wZWQgdG8gdGhhdCBzdG9yZSBpbnN0ZWFkIG9mIFJNL2NsdXN0ZXIuXHJcbiAgICAgICAgdGhpcy5hcHBseURlZXBMaW5rU3RvcmUoKTtcclxuICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2FkaW5nIGRhdGE6XCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgLy8gfSwgMTApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudXNlcnMgJiYgdGhpcy51c2Vycz8uY2xpZW50SWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50ID0gdGhpcy51c2Vycy5jbGllbnRJZDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbFJtMSgpXHJcbiAgICAucGlwZShcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0QWxsR3JvdXBzMSgpKSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0QWxsU3RvcmVzMSgpKVxyXG4gICAgKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAvLyBBbGwgZG9uZSDinIVcclxuICAgICAgICAvLyBEZWVwIGxpbmsgd2lucyBvdmVyIHRoZSByb2xlIGRlZmF1bHQ6IHNlbGVjdCB0aGUgbGlua2VkIHN0b3JlIChhbmRcclxuICAgICAgICAvLyBmb3JjZSBzdG9yZSBsZXZlbCkgYmVmb3JlIHRoZSBmaXJzdCBzdWJtaXQsIHNvIHRoZSBpbml0aWFsIHJlc3VsdCBzZXRcclxuICAgICAgICAvLyBpcyBhbHJlYWR5IHNjb3BlZCB0byB0aGF0IHN0b3JlIGluc3RlYWQgb2YgUk0vY2x1c3Rlci5cclxuICAgICAgICB0aGlzLmFwcGx5RGVlcExpbmtTdG9yZSgpO1xyXG4gICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvYWRpbmcgZGF0YTpcIiwgZXJyKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIC8vIH0sIDEwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0QWJzVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBNYXRoLmFicyh2YWx1ZSkgOiAwO1xyXG4gIH1cclxuICAvLyBjbHVzdGVycyBvbGQgYXBpIHJlbW92ZWRcclxuICAvLyBnZXRBbGxHcm91cHMoKSB7XHJcbiAgLy8gICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNsdXN0ZXJzKHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LCBncm91cDogW10sIGNpdHk6IFtdIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gIC8vICAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IHJlcy5kYXRhLmdyb3VwRGF0YVxyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gW11cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG4gIGxvYWRpbmcxID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSA/a2V5VHlwZT1zdG9yZSZzdG9yZUNvZGU94oCmIGRlZXAgbGluayBvbmNlIGBzdG9yZUxpc3RgIGhhcyBsb2FkZWQuXHJcbiAgICogUmV0dXJucyB0cnVlIGlmIGl0IHNlbGVjdGVkIGEgc3RvcmUgKGNhbGxlciBzaG91bGQgc3VibWl0IHdpdGggaXQpLlxyXG4gICAqXHJcbiAgICogTWF0Y2hlcyBzdG9yZUNvZGUgYWdhaW5zdCBzdG9yZUNvZGUvc3RvcmVJZC9zdG9yZU5hbWUgYmVjYXVzZSB0aGUgRXllIFRlc3RcclxuICAgKiBkYXNoYm9hcmQgc2VuZHMgdGhlIGNvZGUgaXQgZGlzcGxheXMgKGUuZy4gXCJMS1NUMTE5OVwiKSBhbmQgdGhlIFRyYXggc3RvcmVcclxuICAgKiBvYmplY3RzIGRvIG5vdCB1c2Ugb25lIGNvbnNpc3RlbnQga2V5IGZvciBpdC5cclxuICAgKi9cclxuICBhcHBseURlZXBMaW5rU3RvcmUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5kZWVwTGlua0tleVR5cGUgIT09IFwic3RvcmVcIiB8fCAhdGhpcy5kZWVwTGlua1N0b3JlQ29kZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJbZXllLXRlc3QgZGVlcCBsaW5rXSBza2lwcGVkXCIsIHtcclxuICAgICAgICBkZWVwTGlua0tleVR5cGU6IHRoaXMuZGVlcExpbmtLZXlUeXBlLFxyXG4gICAgICAgIGRlZXBMaW5rU3RvcmVDb2RlOiB0aGlzLmRlZXBMaW5rU3RvcmVDb2RlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FudGVkID0gU3RyaW5nKHRoaXMuZGVlcExpbmtTdG9yZUNvZGUpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAodGhpcy5zdG9yZUxpc3QgfHwgW10pLmZpbmQoKHN0OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtzdD8uc3RvcmVDb2RlLCBzdD8uc3RvcmVJZCwgc3Q/LnN0b3JlTmFtZV07XHJcbiAgICAgIHJldHVybiBjYW5kaWRhdGVzLnNvbWUoXHJcbiAgICAgICAgKGM6IGFueSkgPT4gYyAhPSBudWxsICYmIFN0cmluZyhjKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gd2FudGVkXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiW2V5ZS10ZXN0IGRlZXAgbGlua10gbm8gc3RvcmUgbWF0Y2hlZFwiLCB7XHJcbiAgICAgICAgd2FudGVkLFxyXG4gICAgICAgIHN0b3JlTGlzdExlbmd0aDogKHRoaXMuc3RvcmVMaXN0IHx8IFtdKS5sZW5ndGgsXHJcbiAgICAgICAgc2FtcGxlOiAodGhpcy5zdG9yZUxpc3QgfHwgW10pLnNsaWNlKDAsIDMpLm1hcCgoc3Q6IGFueSkgPT4gKHtcclxuICAgICAgICAgIHN0b3JlQ29kZTogc3Q/LnN0b3JlQ29kZSxcclxuICAgICAgICAgIHN0b3JlSWQ6IHN0Py5zdG9yZUlkLFxyXG4gICAgICAgICAgc3RvcmVOYW1lOiBzdD8uc3RvcmVOYW1lLFxyXG4gICAgICAgIH0pKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBDb25zdW1lIHRoZSBsaW5rIGVpdGhlciB3YXk6IGFuIHVubWF0Y2hlZCBjb2RlIG11c3Qgbm90IHJlLWZpcmUgb24gZXZlcnlcclxuICAgIC8vIHN1YnNlcXVlbnQgZW1pc3Npb24gb2YgdGhlIHF1ZXJ5UGFyYW1zL2RhdGFSYW5nZSBzdWJzY3JpcHRpb25zLlxyXG4gICAgdGhpcy5kZWVwTGlua0tleVR5cGUgPSBudWxsO1xyXG4gICAgdGhpcy5kZWVwTGlua1N0b3JlQ29kZSA9IG51bGw7XHJcbiAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIGJ1aWxkUmVxdWVzdERhdGEoKSByZWFkcyB0aGlzLmtleVR5cGUgKHRoZXJlIGlzIG5vIGtleVR5cGUgZm9ybSBjb250cm9sKSxcclxuICAgIC8vIHNvIHNldHRpbmcgdGhlIHByb3BlcnR5IGlzIHdoYXQgc2NvcGVzIHRoZSByZXF1ZXN0IHRvIHN0b3JlIGxldmVsLlxyXG4gICAgdGhpcy5rZXlUeXBlID0gXCJzdG9yZVwiO1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJzdG9yZUxpc3RcIik/LnNldFZhbHVlKFttYXRjaF0pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBjbHVzdGVycyBuZXcgYXBpXHJcbiAgZ2V0QWxsR3JvdXBzMShldmVudD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgXHJcbiAgICBsZXQgcm1MaXN0OiBhbnkgPSBbXTtcclxuICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkge1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgcm1MaXN0LnB1c2goZWw/LmVtYWlsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBldmVudD8ubWFwKChlbDogYW55KSA9PiBlbD8uZW1haWwpIHx8IFt0aGlzLnVzZXJzPy5lbWFpbF07XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnM/LmNsaWVudCA/IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQgOiBcIlwiLFxyXG4gICAgICBybUxpc3Q6IHJtTGlzdC5sZW5ndGggPiAwID8gcm1MaXN0IDogW3RoaXMudXNlcnM/LmVtYWlsXSxcclxuICAgIH07XHJcbiAgIHJldHVybiB0aGlzLmV5ZVNlcnZpY2UuZ2V0Q2x1c3RlcnMob2JqKS5waXBlKFxyXG4gICAgdGFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKHRoaXMuQ2x1c3Rlckxpc3QpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5DbHVzdGVyTGlzdC5tYXAoKGVsOiBhbnkpID0+IGVsLmNsdXN0ZXJOYW1lKTtcclxuICAgICAgICAvLyBOb3RlOiBEbyBOT1QgY2FsbCBnZXRBbGxTdG9yZXMoKSBoZXJlOyBjaGFpbiBpdCBvdXRzaWRlXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hZGluZzEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pXHJcbiAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBjbGllbnREZXRhaWxzKCkge1xyXG4gIC8vICAgdGhpcy50cmF4U2VydmljZS5nZXRjbGllbnQoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCB9KS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gIC8vICAgICAgICAgdGhpcy5jbGllbnREYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiBnZXRBbGxTdG9yZXMxKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgcmV0dXJuIHRoaXMudHJheFNlcnZpY2VcclxuICAgIC5nZXRTdG9yZXNsaXN0KHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICBjbHVzdGVyczogdGhpcy5ncm91cHMsXHJcbiAgICAgIGNpdHk6IFtdLFxyXG4gICAgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICB0YXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcInN0b3JlTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nMSA9ZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbn1cclxuXHJcbiAgdHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlR5cGVcIik/LnNldFZhbHVlKGV2ZW50KTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdHJheC9hdWRpdFwiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIGZyb21EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB0b0RhdGU6IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFxyXG4gICAgICAgICAgXCJZWVlZLU1NLUREXCJcclxuICAgICAgICApLFxyXG4gICAgICAgIHR5cGVWYWx1ZTogZXZlbnQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZVR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJkYXRlVHlwZVwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgaWYoZXZlbnQgPT09IFwiYXVkaXRlZERhdGVcIil7XHJcbiAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiYXVkaXRTdGF0dXNcIik/LnNldFZhbHVlKFsuLi50aGlzLmF1ZGl0ZWREYXRlQXVkaXRTdGF0dXNdKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImF1ZGl0U3RhdHVzXCIpPy5zZXRWYWx1ZShbLi4udGhpcy5hdWRpdFN0YXR1c0FycmF5XSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXVkaXRUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiYXVkaXRUeXBlXCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHR5cGVQZXJjZW50YWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiY29tcGxpYW5jZVNjb3JlXCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgdHlwZUF1ZGl0U3RhdHVzQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiLi4uLi4uLi4uLi4uLi4udHlwZWF1ZGl0Q2hhZ2VzXCIsIGV2ZW50KVxyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJhdWRpdFN0YXR1c1wiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIG5lYXJBZGRpdGlvbkNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIm5lYXJBZGRpdGlvblwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGNhdGVnb3J5VHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNhdGVnb3J5XCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkgJiZcclxuICAgICAgICB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmlzVmFsaWQoKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBldmVudC5zdGFydERhdGUsXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgZXZlbnQuZW5kRGF0ZSxcclxuICAgICAgICAgIFwiREQtTU0tWVlZWVwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtXHJcbiAgICAgICAgICAuZ2V0KFwiZnJvbURhdGVcIilcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlICYmXHJcbiAgICAgICAgICB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlKS5pc1ZhbGlkKClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGVhZERhdGUgPSB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIFwiTU1NLCBERFwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtXHJcbiAgICAgICAgICAuZ2V0KFwidG9EYXRlXCIpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlICYmXHJcbiAgICAgICAgICB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSkuaXNWYWxpZCgpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWREYXRlRW5kID0gdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgXCJNTU0gREQsIFlZWVlcIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2F1ZGl0XCJdLCB7XHJcbiAgICAgICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgICAgICBmcm9tRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsXHJcbiAgICAgICAgICAgIHRvRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLFxyXG4gICAgICAgICAgICB0eXBlVmFsdWU6IHRoaXMudHlwZVZhbHVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGFydERhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkpIHtcclxuICAgICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XHJcbiAgICAgICAgICBtID4gdGhpcy5kYXlqcygpIHx8IG0gPiB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZS5hZGQoNjAsIFwiZGF5c1wiKSk7XHJcbiAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgXCJkYXlcIikgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRUeXBlOiBhbnk7XHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIGNvbnN0IGlzUmVtb3RlID0gdGhpcy5zZWxlY3RlZFR5cGUgPT09IFwicGh5c2ljYWxcIjsgLy8gb3IgaG93ZXZlciB5b3UncmUgZGV0ZXJtaW5pbmcgaXRcclxuXHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGZyb21EYXRlOiBbXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uc3RhcnREYXRlXHJcbiAgICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG4gICAgICAgIDogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgIF0sXHJcbiAgICAgIHRvRGF0ZTogW1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2U/LmVuZERhdGVcclxuICAgICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG4gICAgICAgIDogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgIF0sXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZVZhbHVlLFxyXG4gICAgICBkYXRlVHlwZTogXCJmaWxlRGF0ZVwiLFxyXG4gICAgICBjb21wbGlhbmNlU2NvcmU6IFt0aGlzLnR5cGVQZXJjZW50YWdlQXJyYXldLFxyXG4gICAgICAuLi4oaXNSZW1vdGUgPyB7fSA6IHsgY2F0ZWdvcnk6IFtcImdlbnVpbmVcIl0gfSksXHJcbiAgICAgIG5lYXJBZGRpdGlvbjogW1wiXCJdLFxyXG4gICAgICBhdWRpdFN0YXR1czogW3RoaXMuYXVkaXRTdGF0dXNBcnJheV0sXHJcbiAgICAgIENsdXN0ZXJMaXN0OiBbdGhpcy5ncm91cHNdLFxyXG4gICAgICBzdG9yZUxpc3Q6IFt0aGlzLnN0b3Jlc10sXHJcbiAgICAgIFJtTGlzdDogW3RoaXMuUm1MaXN0XSxcclxuICAgICAgLi4uKGlzUmVtb3RlID8ge30gOiB7IGF1ZGl0VHlwZTogXCJhbGxcIiB9KSwgLy8gQ29uZGl0aW9uYWxseSBhZGQgYXVkaXRUeXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uZ3JvdXBTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmdyb3VwcyA9IGV2ZW50Lm1hcCgoZWw6IGFueSkgPT4gZWwuY2x1c3Rlck5hbWUpO1xyXG4gICAgdGhpcy50cmF4U2VydmljZVxyXG4gICAgICAuZ2V0U3RvcmVzbGlzdCh7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgICAgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgIGNpdHk6IFtdLFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJzdG9yZUxpc3RcIik/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZzEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcInN0b3JlTGlzdFwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHNlYXJjaFZhbHVlOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIHRoaXMub25TdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIHBhZ2luYXRpb25TaXplczogYW55W10gPSBbXTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHNldFBhZ2luYXRpb25TaXplcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPiAxMCkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107IC8vIEp1c3Qgb25lIG9wdGlvbiBpZiAgMTBcclxuICAgIH1cclxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25TaXplc1swXTtcclxuICB9XHJcbiAgUm1MaXN0RGF0YTogYW55ID0gW107XHJcbiAga2V5VHlwZTogYW55O1xyXG4gIC8vIFNldCBmcm9tIHRoZSA/a2V5VHlwZS9zdG9yZUNvZGUvb3B0b21JZCBkZWVwIGxpbmsgKEV5ZSBUZXN0IGRhc2hib2FyZFxyXG4gIC8vIFwiQXVkaXRcIiBidXR0b24pLiBBcHBsaWVkIGJ5IGFwcGx5RGVlcExpbmtTdG9yZSgpIG9uY2UgdGhlIGNsdXN0ZXIvc3RvcmVcclxuICAvLyBsaXN0cyBoYXZlIHJlc29sdmVkLCBhbmQgY29uc3VtZWQgb25jZSBzbyBhIGxhdGVyIG1hbnVhbCBsZXZlbCBjaGFuZ2Ugd2lucy5cclxuICBkZWVwTGlua0tleVR5cGU6IGFueSA9IG51bGw7XHJcbiAgZGVlcExpbmtTdG9yZUNvZGU6IGFueSA9IG51bGw7XHJcbiAgZGVlcExpbmtPcHRvbUlkOiBhbnkgPSBudWxsO1xyXG4gIHJtRW1haWw6IGFueTtcclxuXHJcbiAgLy8gVGFuZ28gQUlcclxuICBleWVUZXN0Q2hhdFF1ZXJ5ID0gJyc7XHJcbiAgZXllVGVzdEFpTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd0V5ZVRlc3RBaU1lc3NhZ2UgPSBmYWxzZTtcclxuXHJcbiAgLy8gTW9kZWwgc3dpdGNoZXJcclxuICByZWFkb25seSBtb2RlbE9wdGlvbnMgPSBbXHJcbiAgICB7IGxhYmVsOiAndjEnLCB2YWx1ZTogJ2dlbWluaS0yLjUtcHJvJyB9LFxyXG4gICAgeyBsYWJlbDogJ3YyJywgdmFsdWU6ICdjbGF1ZGUtc29ubmV0LTQtNicgfVxyXG4gIF07XHJcbiAgc2VsZWN0ZWRNb2RlbCA9ICdjbGF1ZGUtc29ubmV0LTQtNic7XHJcbiAgc2hvd1BsdXNNZW51ID0gZmFsc2U7XHJcblxyXG4gIGdldCBzZWxlY3RlZE1vZGVsVmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlbGVjdGVkTW9kZWwubWF0Y2goLyhcXGQrXFwuXFxkKykvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuc2VsZWN0ZWRNb2RlbCA9IHZhbHVlOyB9XHJcbiAgdG9nZ2xlUGx1c01lbnUoKTogdm9pZCB7IHRoaXMuc2hvd1BsdXNNZW51ID0gIXRoaXMuc2hvd1BsdXNNZW51OyB9XHJcbiAgY2xvc2VQbHVzTWVudSgpOiB2b2lkIHsgdGhpcy5zaG93UGx1c01lbnUgPSBmYWxzZTsgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcucGx1cy1tZW51LXdyYXAnKSkge1xyXG4gICAgICB0aGlzLnNob3dQbHVzTWVudSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyB0eXBlVmFsKHZhbDogYW55LCBvYmo/OiBhbnkpIHtcclxuICAvLyAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgLy8gICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAvLyAgIHRoaXMubGltaXQgPSAxMDtcclxuICAvLyAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAvLyAgIHRoaXMucGFnZVNpemUgPSAxMDtcclxuICAvLyAgIHRoaXMua2V5VHlwZSA9IHZhbDtcclxuICAvLyAgIHRoaXMucm1FbWFpbCA9IG9iaj8uUk1FbWFpbCA/IG9iaj8uUk1FbWFpbCA6IG9iajtcclxuICAvLyAgIC8vIPCflI0gZmluZCB0aGUgUk0gb2JqZWN0IGluIHlvdXIgUm1MaXN0IGFycmF5XHJcbiAgLy8gICAgaWYgKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiICYmIHRoaXMuUm1MaXN0Py5sZW5ndGgpIHtcclxuICAvLyAgIHRoaXMuUm1MaXN0Py5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKGVsZW1lbnQ/LmVtYWlsID09PSB0aGlzLnJtRW1haWwpIHtcclxuICAvLyAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlJtTGlzdFwiKT8uc2V0VmFsdWUoW2VsZW1lbnRdKTtcclxuICAvLyAgICAgICB0aGlzLm9uUm1TZWxlY3QoW2VsZW1lbnRdKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG4gIC8vICAgdGhpcy5ncm91cHMgPSBvYmo/LmNsdXN0ZXJOYW1lID8gW29iaj8uY2x1c3Rlck5hbWVdIDogdGhpcy5ncm91cHM7XHJcbiAgLy8gICAgaWYgKFxyXG4gIC8vICAgICB0aGlzLnVzZXJzPy5yb2xlID09PSBcImFkbWluXCIgJiZcclxuICAvLyAgICAgdGhpcy5DbHVzdGVyTGlzdD8ubGVuZ3RoICYmXHJcbiAgLy8gICAgIG9iaj8uY2x1c3Rlck5hbWVcclxuICAvLyAgICkge1xyXG4gIC8vICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKGVsZW1lbnQ/LmNsdXN0ZXJOYW1lID09PSB0aGlzLmdyb3Vwcykge1xyXG4gIC8vICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtlbGVtZW50XSk7XHJcbiAgLy8gICAgICAgdGhpcy5vbmdyb3VwU2VsZWN0KFtlbGVtZW50XSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuICAvLyAgIHRoaXMuc29ydGVkQ29sdW1uID0gXCJkYXRlXCI7XHJcbiAgLy8gICBpZiAodGhpcy5ybUVtYWlsID09PSBcIlwiKSB0aGlzLm9uU3VibWl0KCk7XHJcbiAgLy8gfVxyXG4gIGRlbW9HcmFwaWNzOmFueTtcclxuICB0eXBlVmFsKHZhbDogYW55LCBvYmo/OiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHZhbCwgb2JqKTtcclxuICAgdGhpcy50eXBlUGVyY2VudGFnZUFycmF5ID1bXTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMuZmlsdGVyQnlPcHRvbSA9IFwiXCI7XHJcbiAgICB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICB0aGlzLmtleVR5cGUgPSB2YWw7XHJcbiAgICB0aGlzLnNob3dFeWVUZXN0QWlNZXNzYWdlID0gZmFsc2U7XHJcbiAgICB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5leWVUZXN0Q2hhdFF1ZXJ5ID0gJyc7XHJcbiAgICB0aGlzLmluaXRBaVNlc3Npb24oKTtcclxuICAgIHRoaXMuc29ydGVkQ29sdW1uID0gXCJkYXRlXCI7XHJcbnRoaXMuZGVtb0dyYXBpY3MgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmF1ZGl0VHlwZTtcclxuaWYgKHRoaXMuZGVtb0dyYXBpY3MgPT09IFwiYWxsXCIpIHtcclxuICB0aGlzLmRlbW9HcmFwaWNzID0gW1wiYWR1bHRcIiwgXCJraWRzXCJdO1xyXG59XHJcbiAgICBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aClcclxuICAgICAgdGhpcy5ybUVtYWlsID0gb2JqPy5STUVtYWlsID8gb2JqPy5STUVtYWlsIDogb2JqO1xyXG4gICAgXHJcbiAgICB0aGlzLmdyb3VwcyA9IG9iaj8uY2x1c3Rlck5hbWUgPyBbb2JqPy5jbHVzdGVyTmFtZV0gOiB0aGlzLmdyb3VwcztcclxuICAgIFxyXG4gICAgbGV0IGZvdW5kUk0gPSBmYWxzZTtcclxuICAgIGxldCBmb3VuZENsdXN0ZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0Q29tcGxpYW5jZVBlcmNlbnRhZ2VBcnJheSh2YWwpO1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiY29tcGxpYW5jZVNjb3JlXCIpPy5zZXRWYWx1ZSh0aGlzLnR5cGVQZXJjZW50YWdlQXJyYXkpO1xyXG4gICAgaWYoKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiIHx8IHRoaXMudXNlcnM/LnJvbGUgPT09IFwiYWRtaW5cIikgJiYgdmFsID09PVwic3RvcmVcIiAmJlxyXG4gICAgICAgIHRoaXMuQ2x1c3Rlckxpc3Q/Lmxlbmd0aCAmJlxyXG4gICAgICAgIG9iaj8uY2x1c3Rlck5hbWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZihlbGVtZW50Py5jbHVzdGVyTmFtZSA9PT0gb2JqLmNsdXN0ZXJOYW1lKXtcclxuICAgICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtlbGVtZW50XSk7XHJcbiAgICAgICAgICB0aGlzLm9uZ3JvdXBTZWxlY3QoW2VsZW1lbnRdKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICAgICAgICBmb3VuZENsdXN0ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSBpZigodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgfHwgdGhpcy51c2Vycz8ucm9sZSA9PT0gXCJhZG1pblwiKSAmJiB2YWwgPT09XCJjbHVzdGVyXCIgJiZcclxuICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0Py5sZW5ndGggJiZcclxuICAgICAgICBvYmo/LmNsdXN0ZXJOYW1lXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QuZm9yRWFjaChcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYoZWxlbWVudD8uY2x1c3Rlck5hbWUgPT09IG9iai5jbHVzdGVyTmFtZSl7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZShbZWxlbWVudF0pO1xyXG4gICAgICAgICAgdGhpcy5vbmdyb3VwU2VsZWN0KFtlbGVtZW50XSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZzEgPSB0cnVlO1xyXG4gICAgICAgICAgZm91bmRDbHVzdGVyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIFJNIHNlbGVjdGlvbiAob25seSBmb3Igc3VwZXJhZG1pbilcclxuICAgIGlmICh0aGlzLnVzZXJzPy5yb2xlID09PSBcInN1cGVyYWRtaW5cIiAmJiB2YWwgPT09XCJjbHVzdGVyXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgIHRoaXMuUm1MaXN0LmZvckVhY2goXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoZWxlbWVudD8uZW1haWwgPT09IHRoaXMucm1FbWFpbCkge1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbZWxlbWVudF0pO1xyXG4gICAgICAgIHRoaXMub25SbVNlbGVjdChbZWxlbWVudF0pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICAgICAgZm91bmRSTSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIENsdXN0ZXIgc2VsZWN0aW9uIChvbmx5IGZvciBhZG1pbilcclxuXHJcbiAgICAvLyDinIUgU3VibWl0IGZhbGxiYWNrXHJcbiAgICBpZiAoIWZvdW5kUk0gJiYgIWZvdW5kQ2x1c3Rlcikge1xyXG4gICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG50eXBlVmFsMSh2YWw6IGFueSwgb2JqPzogYW55KSB7XHJcbiAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICB0aGlzLmZpbHRlckJ5T3B0b20gPSBcIlwiO1xyXG4gIHRoaXMubGltaXQgPSAxMDtcclxuICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xyXG4gIHRoaXMua2V5VHlwZSA9IHZhbDtcclxuICB0aGlzLnNob3dFeWVUZXN0QWlNZXNzYWdlID0gZmFsc2U7XHJcbiAgdGhpcy5leWVUZXN0QWlNZXNzYWdlID0gbnVsbDtcclxuICB0aGlzLmV5ZVRlc3RDaGF0UXVlcnkgPSAnJztcclxuICB0aGlzLmluaXRBaVNlc3Npb24oKTtcclxuICB0aGlzLnNvcnRlZENvbHVtbiA9IFwiZGF0ZVwiO1xyXG4gICB0aGlzLnNldENvbXBsaWFuY2VQZXJjZW50YWdlQXJyYXkodmFsKTtcclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNvbXBsaWFuY2VTY29yZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlUGVyY2VudGFnZUFycmF5KTtcclxuICBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgdGhpcy5ybUVtYWlsID0gb2JqPy5STUVtYWlsID8gb2JqPy5STUVtYWlsIDogb2JqO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcy5ncm91cHMgPSBvYmo/LmNsdXN0ZXJOYW1lID8gW29iaj8uY2x1c3Rlck5hbWVdIDogdGhpcy5ncm91cHM7XHJcblxyXG4gIHRoaXMuZGVtb0dyYXBpY3MgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmF1ZGl0VHlwZTtcclxuICBpZiAodGhpcy5kZW1vR3JhcGljcyA9PT0gXCJhbGxcIikge1xyXG4gICAgdGhpcy5kZW1vR3JhcGljcyA9IFtcImFkdWx0XCIsIFwia2lkc1wiXTtcclxuICB9XHJcbiAgdGhpcy5leWVUZXN0RGF0YSA9IFtdO1xyXG4gIGxldCBmb3VuZFJNID0gZmFsc2U7XHJcbiAgbGV0IGZvdW5kQ2x1c3RlciA9IGZhbHNlO1xyXG5cclxuICAvLyDinIUgQ2x1c3RlciAvIFN0b3JlXHJcbiAgaWYgKCh0aGlzLnVzZXJzPy5yb2xlID09PSBcInN1cGVyYWRtaW5cIiB8fCB0aGlzLnVzZXJzPy5yb2xlID09PSBcImFkbWluXCIpICYmXHJcbiAgICAgICh2YWwgPT09IFwic3RvcmVcIiB8fCB2YWwgPT09IFwiY2x1c3RlclwiKSkge1xyXG4gICAgIHRoaXMuZ2V0QWxsR3JvdXBzKCk7XHJcbiAgICAgICB0aGlzLmxvYWRpbmcxID0gdHJ1ZTtcclxuICAgIGZvdW5kQ2x1c3RlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyDinIUgUk0gKG9ubHkgZm9yIHN1cGVyYWRtaW4pXHJcbiAgaWYgKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiICYmIHZhbCA9PT0gXCJybVwiKSB7XHJcbiAgIHRoaXMub25SbVNlbGVjdCh0aGlzLnJtTGlzdCk7XHJcbiAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICBmb3VuZFJNID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIOKchSBGYWxsYmFja1xyXG4gIGlmICghZm91bmRSTSAmJiAhZm91bmRDbHVzdGVyKSB7XHJcbiAgICB0aGlzLmdldEFsbFN0b3JlcygpO1xyXG4gIH1cclxuICBcclxuICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcxID1mYWxzZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4vLyBwcml2YXRlIHJlc2V0QWxsQ2x1c3RlcnMoKSB7XHJcbi8vICAgaWYgKHRoaXMuQ2x1c3Rlckxpc3Q/Lmxlbmd0aCkge1xyXG4vLyAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJDbHVzdGVyTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5DbHVzdGVyTGlzdCk7XHJcbi8vICAgICB0aGlzLm9uZ3JvdXBTZWxlY3QodGhpcy5DbHVzdGVyTGlzdCk7XHJcbi8vICAgfSBlbHNlIHtcclxuLy8gICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtdKTtcclxuLy8gICB9XHJcbi8vICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuLy8gfVxyXG5cclxuLy8gcHJpdmF0ZSByZXNldEFsbFJtcygpIHtcclxuLy8gICBpZiAodGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4vLyAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKHRoaXMuUm1MaXN0KTtcclxuLy8gICAgIHRoaXMub25SbVNlbGVjdCh0aGlzLlJtTGlzdCk7XHJcbi8vICAgfSBlbHNlIHtcclxuLy8gICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbXSk7XHJcbi8vICAgfVxyXG4vLyAgIHRoaXMuZ2V0QWxsUm0oKTtcclxuLy8gfVxyXG5cclxuXHJcbmJ1aWxkUmVxdWVzdERhdGEocGFyYW1zPzoge1xyXG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcclxuICBsaW1pdD86IG51bWJlcjtcclxuICBvZmZzZXQ/OiBudW1iZXI7XHJcbn0pOiBhbnkge1xyXG4gIC8vIE1hcCByb2xlIOKGkiBrZXlUeXBlXHJcbiAgY29uc3Qgcm9sZUtleVR5cGVNYXA6IGFueSA9IHtcclxuICAgIHN1cGVyYWRtaW46IFwicm1cIixcclxuICAgIGFkbWluOiBcImNsdXN0ZXJcIixcclxuICAgIHVzZXI6IFwic3RvcmVcIixcclxuICB9O1xyXG4gIGlmICghdGhpcy5rZXlUeXBlKSB7XHJcbiAgICB0aGlzLmtleVR5cGUgPSByb2xlS2V5VHlwZU1hcFt0aGlzLnVzZXJzPy5yb2xlXSB8fCBcInN0b3JlXCI7XHJcbiAgfVxyXG5cclxuICAvLyBDb2xsZWN0IHN0b3JlIElEc1xyXG4gIGNvbnN0IGZpbmFsU3RvcmVzID0gQXJyYXkuaXNBcnJheSh0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnN0b3JlTGlzdClcclxuICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgOiBbXTtcclxuXHJcbiAgLy8gQ29sbGVjdCBSTSBlbWFpbHNcclxuICBsZXQgZmluYWxSTUxpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5SbUxpc3QpICYmIHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0Lmxlbmd0aCkge1xyXG4gICAgZmluYWxSTUxpc3QgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5tYXAoKGVsOiBhbnkpID0+IGVsPy5lbWFpbCk7XHJcbiAgfSBlbHNlIGlmICh0aGlzLnJtRW1haWwpIHtcclxuICAgIGZpbmFsUk1MaXN0ID0gW3RoaXMucm1FbWFpbF07XHJcbiAgfSBlbHNlIGlmICh0aGlzLnVzZXJzPy5lbWFpbCkge1xyXG4gICAgZmluYWxSTUxpc3QgPSBbdGhpcy51c2Vycy5lbWFpbF07XHJcbiAgfVxyXG50aGlzLlJtTGlzdERhdGEgPSBmaW5hbFJNTGlzdD8ubGVuZ3RoID8gZmluYWxSTUxpc3Q/Lmxlbmd0aCA6IFtdO1xyXG4gIC8vIEhhbmRsZSBhdWRpdFR5cGUg4oaSIG5vcm1hbGl6ZSB0byBhcnJheVxyXG4gIGNvbnN0IGF1ZGl0VHlwZVZhbHVlID0gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFR5cGU7XHJcbiAgbGV0IGF1ZGl0VHlwZXM6IHN0cmluZ1tdID0gW107XHJcbiAgaWYgKGF1ZGl0VHlwZVZhbHVlID09PSBcImFsbFwiKSB7XHJcbiAgICBhdWRpdFR5cGVzID0gW1wiYWR1bHRcIiwgXCJraWRzXCJdO1xyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhdWRpdFR5cGVWYWx1ZSkpIHtcclxuICAgIGF1ZGl0VHlwZXMgPSBhdWRpdFR5cGVWYWx1ZTtcclxuICB9IGVsc2UgaWYgKGF1ZGl0VHlwZVZhbHVlKSB7XHJcbiAgICBhdWRpdFR5cGVzID0gW2F1ZGl0VHlwZVZhbHVlXTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzPy5jbGllbnQsXHJcbiAgICBmcm9tRGF0ZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgIHRvRGF0ZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICB0eXBlOiB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUsXHJcbiAgICBkYXRlVHlwZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5kYXRlVHlwZSxcclxuXHJcbiAgICAvLyBkZW1vZ3JhcGhpY3Mgb25seSBpZiB0eXBlICE9PSByZW1vdGVcclxuICAgIC4uLih0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUgIT09IFwicmVtb3RlXCIgJiYgeyBkZW1vZ3JhcGhpY3M6IGF1ZGl0VHlwZXMgfSksXHJcblxyXG4gICAgY2x1c3RlcjogdGhpcy5ncm91cHMsXHJcbiAgICBzdG9yZUlkOiBmaW5hbFN0b3JlcyxcclxuXHJcbiAgICBsaW1pdDogcGFyYW1zPy5saW1pdCA/PyB0aGlzLmxpbWl0ID8/IDEwLFxyXG4gICAgb2Zmc2V0OiBwYXJhbXM/Lm9mZnNldCA/PyB0aGlzLm9mZnNldCA/PyAxLFxyXG4gICAga2V5VHlwZTogdGhpcy5rZXlUeXBlLFxyXG5cclxuICAgIGNvbXBsaWFuY2VTY29yZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5jb21wbGlhbmNlU2NvcmU/Lmxlbmd0aCA/ICh0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmNvbXBsaWFuY2VTY29yZS5tYXAoKGVsOiBhbnkpID0+IGVsLnZhbHVlKSk6IFtdLFxyXG4gICBcclxuICAgIGF1ZGl0U3RhdHVzOiAgdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFN0YXR1cy5tYXAoKGVsOiBhbnkpID0+IGVsLnZhbHVlKVxyXG4gICAgICA6IFtdLFxyXG4gICAgbmVhckFkZGl0aW9uOiB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLm5lYXJBZGRpdGlvbiB8fCBcIlwiLFxyXG5cclxuICAgIC4uLih0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUgIT09IFwicmVtb3RlXCIgJiYge1xyXG4gICAgICBjYXRlZ29yeTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5jYXRlZ29yeSxcclxuICAgIH0pLFxyXG5cclxuICAgIFJNTGlzdDogZmluYWxSTUxpc3QsXHJcbiAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSB8fCBcIlwiLFxyXG4gICAgaXNFeHBvcnQ6IHBhcmFtcz8uaXNFeHBvcnQgPz8gZmFsc2UsXHJcbiAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8/IC0xLFxyXG4gICAgc29ydEJ5OiB0aGlzLnNvcnRlZENvbHVtbiA/PyBcImRhdGVcIixcclxuXHJcbiAgICAvLyBPbmx5IHNlbnQgd2hpbGUgYW4gb3B0b20gZmlsdGVyIGlzIGFjdGl2ZTsgb21pdHRlZCBlbnRpcmVseSBvdGhlcndpc2UuXHJcbiAgICAuLi4odGhpcy5maWx0ZXJCeU9wdG9tICYmIHsgZmlsdGVyQnlPcHRvbTogdGhpcy5maWx0ZXJCeU9wdG9tIH0pLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKiBPcHRvbSBJRCB0aGUgbGlzdCBpcyBjdXJyZW50bHkgZmlsdGVyZWQgdG8sIHNldCBieSBjbGlja2luZyBhbiBPcHRvbSBJRCBjZWxsLiAqL1xyXG5maWx0ZXJCeU9wdG9tOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuLyoqIE9wdG9tIElEIGZvciBhIHJvdzsgdGhlIGZpZWxkIGRpZmZlcnMgYmV0d2VlbiByZW1vdGUgYW5kIGluLXN0b3JlIGF1ZGl0cy4gKi9cclxuZ2V0Um93T3B0b21JZChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgY29uc3QgaWQgPSB0aGlzLnR5cGVWYWx1ZSA9PT0gXCJyZW1vdGVcIiA/IHJvdz8ub3B0bV91c2VySWQgOiByb3c/Lm9wdHVtSWQ7XHJcbiAgcmV0dXJuIGlkID8gU3RyaW5nKGlkKSA6IFwiXCI7XHJcbn1cclxuXHJcbi8qKiBGaWx0ZXJzIHRoZSBsaXN0IHRvIGEgc2luZ2xlIG9wdG9tLiBDbGlja2luZyB0aGUgYWN0aXZlIG9uZSBjbGVhcnMgdGhlIGZpbHRlci4gKi9cclxuZmlsdGVyT3B0b20ocm93OiBhbnkpOiB2b2lkIHtcclxuICBjb25zdCBvcHRvbUlkID0gdGhpcy5nZXRSb3dPcHRvbUlkKHJvdyk7XHJcbiAgaWYgKCFvcHRvbUlkKSByZXR1cm47XHJcbiAgdGhpcy5maWx0ZXJCeU9wdG9tID0gdGhpcy5maWx0ZXJCeU9wdG9tID09PSBvcHRvbUlkID8gXCJcIiA6IG9wdG9tSWQ7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIHRoaXMub25TdWJtaXQoKTtcclxufVxyXG5cclxuLyoqIENsZWFycyB0aGUgb3B0b20gZmlsdGVyIGFuZCByZWxvYWRzIHRoZSBsaXN0LiAqL1xyXG5jbGVhck9wdG9tRmlsdGVyKCk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5maWx0ZXJCeU9wdG9tKSByZXR1cm47XHJcbiAgdGhpcy5maWx0ZXJCeU9wdG9tID0gXCJcIjtcclxuICB0aGlzLmRlZXBMaW5rT3B0b21JZCA9IG51bGw7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIC8vIERyb3Agb3B0b21JZCBmcm9tIHRoZSBVUkwgdG9vLCBzbyBhIHJlZnJlc2ggZG9lcyBub3QgcmUtYXBwbHkgdGhlIGZpbHRlci5cclxuICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgIHF1ZXJ5UGFyYW1zOiB7IG9wdG9tSWQ6IG51bGwgfSxcclxuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIixcclxuICB9KTtcclxuICB0aGlzLm9uU3VibWl0KCk7XHJcbn1cclxuXHJcblxyXG5cclxuICBleHBvcnRYTFNYKCkge1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB0aGlzLmJ1aWxkUmVxdWVzdERhdGEoe1xyXG4gICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV5ZVNlcnZpY2VcclxuICAgICAgLmdldEV5ZVRlc3RUYWJsZUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXllU2VydmljZS5zYXZlQXNFeGNlbEZpbGUoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAgYCR7dGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlfSBFeWUgVGVzdCBUYWJsZSBgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG90YWxJdGVtczogYW55ID0gMDtcclxuICBvZmZzZXQgPSAxO1xyXG4gIGxpbWl0ID0gMTA7XHJcbiAgZGF0YVJlc3VsdDphbnk7XHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgIFxyXG4gICAgdGhpcy5leWVUZXN0RGF0YT1bXTtcclxuICAgIHRoaXMudHlwZVZhbHVlID0gdGhpcy5leWVUZXN0Rm9ybT8udmFsdWU/LnR5cGU7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHsgaXNFeHBvcnQ6IGZhbHNlIH0pO1xyXG4gICB0aGlzLmRhdGFSZXN1bHQgPSByZXF1ZXN0RGF0YVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRFeWVUZXN0bGlzdChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSByZXM/LmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YT8uY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgICAgICB9LDEwMDApXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgICAvLyB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICAvLyB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gTnVtYmVyKHBhZ2VPZmZzZXQpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHtcclxuICAgICAgaXNFeHBvcnQ6IGZhbHNlLFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgIH0pO1xyXG4gICAgLy8gY29uc29sZS5sb2cocmVxdWVzdERhdGEpXHJcbi8vIHJldHVyblxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRFeWVUZXN0bGlzdChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gcmVzPy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzLmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgIHRoaXMubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHtcclxuICAgICAgaXNFeHBvcnQ6IGZhbHNlLFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZXllU2VydmljZVxyXG4gICAgICAuZ2V0RXllVGVzdGxpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5leWVUZXN0RGF0YSA9IHJlcz8uZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy5jb3VudDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0T3JkZXI6IGFueTtcclxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5zb3J0T3JkZXIgPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRlZENvbHVtbiA9IGNvbHVtbiA/IGNvbHVtbiA6IFwic3RvcmVOYW1lXCI7XHJcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMub25TdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIC8vIG5ldyBhcGkgaW50YWdyYXRlZFxyXG5cclxuICBSbUxpc3Q6IGFueSA9IFtdO1xyXG5cclxuIGdldEFsbFJtMSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmV5ZVNlcnZpY2UuZ2V0Um1MaXN0KHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50KS5waXBlKFxyXG4gICAgdGFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgdGhpcy5SbUxpc3QgPSB0aGlzLnJtTGlzdDtcclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlJtTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5SbUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuUm1MaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKFtdKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICApO1xyXG59XHJcblxyXG4gIG9uUm1TZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKGV2ZW50KTtcclxuICAgIHRoaXMuZ2V0QWxsR3JvdXBzKGV2ZW50KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBleWVUZXN0Q2FyZERhdGE6IGFueSA9IFtdO1xyXG4gIGdldENhcmREYXRhKCkge1xyXG4gICAgbGV0IGZpbmFsU3RvcmVzOiBhbnkgPSBbXTtcclxuICAgIGxldCBybUxpc3RWYWx1ZTogYW55ID0gW107XHJcbiAgICAgIGNvbnN0IHJvbGVLZXlUeXBlTWFwOiBhbnkgPSB7XHJcbiAgICBzdXBlcmFkbWluOiBcInJtXCIsXHJcbiAgICBhZG1pbjogXCJjbHVzdGVyXCIsXHJcbiAgICB1c2VyOiBcInN0b3JlXCIsXHJcbiAgfTtcclxuICBpZiAoIXRoaXMua2V5VHlwZSkge1xyXG4gICAgdGhpcy5rZXlUeXBlID0gcm9sZUtleVR5cGVNYXBbdGhpcy51c2Vycz8ucm9sZV0gfHwgXCJzdG9yZVwiO1xyXG4gIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgZnJvbURhdGUsXHJcbiAgICAgIHRvRGF0ZSxcclxuICAgICAgdHlwZSxcclxuICAgICAgZGF0ZVR5cGUsXHJcbiAgICAgIGF1ZGl0VHlwZSxcclxuICAgICAgc3RvcmVMaXN0LFxyXG4gICAgICBSbUxpc3QsXHJcbiAgICAgIGNvbXBsaWFuY2VTY29yZSxcclxuICAgICAgbmVhckFkZGl0aW9uLFxyXG4gICAgICBrZXlUeXBlLFxyXG4gICAgICBjYXRlZ29yeSxcclxuICAgIH0gPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QpKSB7XHJcbiAgICAgIHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0LmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgICBmaW5hbFN0b3Jlcy5wdXNoKHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkge1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgcm1MaXN0VmFsdWUucHVzaChlbD8uZW1haWwpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRlbW9ncmFwaGljcyA9XHJcbiAgICAgIHR5cGUgIT09IFwicmVtb3RlXCJcclxuICAgICAgICA/IGF1ZGl0VHlwZSA9PT0gXCJhbGxcIlxyXG4gICAgICAgICAgPyBbXCJhZHVsdFwiLCBcImtpZHNcIl1cclxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShhdWRpdFR5cGUpXHJcbiAgICAgICAgICA/IGF1ZGl0VHlwZVxyXG4gICAgICAgICAgOiBbYXVkaXRUeXBlXVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhOiBhbnkgPSB7XHJcbiAgICAgIGZyb21EYXRlLFxyXG4gICAgICB0b0RhdGUsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIGRhdGVUeXBlLFxyXG4gICAgICBzdG9yZUlkOiBmaW5hbFN0b3JlcyxcclxuICAgICAgUk1MaXN0OiBybUxpc3RWYWx1ZS5sZW5ndGggPiAwID8gcm1MaXN0VmFsdWUgOiBbdGhpcy51c2Vycz8uZW1haWxdLFxyXG4gICAgICBjb21wbGlhbmNlU2NvcmU6IGNvbXBsaWFuY2VTY29yZT8ubGVuZ3RoXHJcbiAgICAgICAgPyAoY29tcGxpYW5jZVNjb3JlLm1hcCgoZWw6IGFueSkgPT4gZWwudmFsdWUpKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIG5lYXJBZGRpdGlvbixcclxuICAgICAgICBrZXlUeXBlIDogdGhpcy5rZXlUeXBlLFxyXG4gICAgICAuLi4odGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlICE9PSBcInJlbW90ZVwiICYmIHtcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgfSksXHJcbiAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChkZW1vZ3JhcGhpY3MpIHtcclxuICAgICAgcmVxdWVzdERhdGEuZGVtb2dyYXBoaWNzID0gZGVtb2dyYXBoaWNzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRDYXJkKHJlcXVlc3REYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5leWVUZXN0Q2FyZERhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IHJlcz8uZGF0YT8ucmVzdWx0IDoge307XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RDYXJkRGF0YSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5leWVWaWV3ID0gZmFsc2U7XHJcbnNlbGVjdGVkU3RlcEluZGV4ID0gMDtcclxuY29udmVyc2F0aW9uRGF0YTogYW55ID0gbnVsbDtcclxuLy8gQ29udiBhdWRpbyBwbGF5ZXIgc3RhdGVcclxuY29udklzUGxheWluZyA9IGZhbHNlO1xyXG5jb252Q3VycmVudFRpbWUgPSAnMDowMCc7XHJcbmNvbnZEdXJhdGlvbiA9ICcwOjAwJztcclxuY29udlByb2dyZXNzID0gMDtcclxuY29udklzTXV0ZWQgPSBmYWxzZTtcclxucmVhZG9ubHkgd2F2ZWZvcm1IZWlnaHRzOiBudW1iZXJbXSA9IFtcclxuICA4LCAyMiwgMzgsIDUyLCA0NCwgMjgsIDU2LCA0MiwgMTgsIDMyLCA1NCwgNDYsIDI0LCA0MCwgNjAsIDUwLCAyNiwgNDQsXHJcbiAgMzYsIDE4LCA1MiwgMzgsIDI4LCA0NiwgMzQsIDIwLCA1NiwgNDIsIDE0LCAzNiwgNTAsIDMwLCAyMiwgNDQsIDU2LCAzOCxcclxuICAyMCwgNDYsIDMwLCAxNiwgNTAsIDM2LCAyNCwgNTQsIDQyLCAyOCwgMzYsIDIwLCA0NiwgMzIsIDE4LCA0MCwgNTYsIDQ0LFxyXG4gIDI0LCAzNiwgMjAsIDUwLCAzNCwgMjJcclxuXTtcclxuICBleWVUZXN0VmlldyhkYXRhOiBhbnkpIHtcclxudGhpcy5leWVWaWV3ID10cnVlO1xyXG5cclxuICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICB0aGlzLmF1ZGl0RGF0YSA9IHRoaXMuZXllU2VydmljZS5nZXRBdWRpdERhdGEoKTtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3MgPVtdO1xyXG4gICAgLy8gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5zdG9yZUlkID0gZGF0YVsnc3RvcmVJZCddO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGVcclxuICAgICAgdGhpcy5BdWRpdElkID0gZGF0YVsnX2lkJ107XHJcbiAgICAgIHRoaXMuUm1FbWFpbCA9IGRhdGFbJ1JNRW1haWwnXTtcclxuICAgICAgdGhpcy5jbHVzdGVyID0gZGF0YVsnY2x1c3Rlck5hbWUnXTtcclxuICAgICAgdGhpcy5leWVUZXN0VHlwZSA9IGRhdGE/LmNvbW1lbnQgPyBcImZha2VcIiA6IFwiZ2VudWluZVwiO1xyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVPcHRpb25zKCk7XHJcbmlmKHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScpe1xyXG4gIHRoaXMuZHJvcGRvd25MaXN0PSBbeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG5vdCBhY2N1cmF0ZSwgYnV0IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBub3QgYWNjdXJhdGUsIGJ1dCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ1N0ZXAgbm90IGFjY3VyYXRlLCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTdGVwIG5vdCBhY2N1cmF0ZSwgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnb3RoZXJzJywgaXRlbTogJ090aGVycycgfV1cclxufWVsc2V7XHJcbiAgdGhpcy5kcm9wZG93bkxpc3Q9IFt7IGtleTogJ1N0ZXAgTm9uLUNvbXBsaWFuY2UnLCBpdGVtOiAnU3RlcCBOb24tQ29tcGxpYW5jZScgfSwgeyBrZXk6ICdQb3dlciBCYW5rIE5vbi1Db21wbGlhbmNlJywgaXRlbTogJ1Bvd2VyIEJhbmsgTm9uLUNvbXBsaWFuY2UnIH0sIHsga2V5OiAnQ29ycmVjdCBJbnN0cnVtZW50IE5vdCBVc2VkJywgaXRlbTogJ0NvcnJlY3QgSW5zdHJ1bWVudCBOb3QgVXNlZCcgfSwgeyBrZXk6ICdvdGhlcnMnLCBpdGVtOiAnT3RoZXJzJyB9XVxyXG59XHJcbnRoaXMuY29udmVyc2F0aW9uRGF0YSA9IG51bGw7XHJcbnRoaXMuc2VsZWN0ZWRTdGVwSW5kZXggPSAwO1xyXG50aGlzLmNvbnZJc1BsYXlpbmcgPSBmYWxzZTtcclxudGhpcy5jb252Q3VycmVudFRpbWUgPSAnMDowMCc7XHJcbnRoaXMuY29udkR1cmF0aW9uID0gJzA6MDAnO1xyXG50aGlzLmNvbnZQcm9ncmVzcyA9IDA7XHJcbnRoaXMuY29udklzTXV0ZWQgPSBmYWxzZTtcclxudGhpcy5leWVTZXJ2aWNlLmdldENvbnZlcnNhdGlvbkRldGFpbHMoZGF0YS5xdWV1ZUlkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbkRhdGEgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgIC8vIFVzZSBBUEktcHJvdmlkZWQgZHVyYXRpb24gaW1tZWRpYXRlbHkgKFMzIG00YSBvZnRlbiBjYW4ndCByZXBvcnQgZHVyYXRpb24gdW50aWwgZnVsbHkgYnVmZmVyZWQpXHJcbiAgICAgIGlmICh0aGlzLmNvbnZlcnNhdGlvbkRhdGE/LmR1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb252RHVyYXRpb24gPSB0aGlzLmNvbnZlcnNhdGlvbkRhdGEuZHVyYXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG4gIGVycm9yOiAoKSA9PiB7IHRoaXMuY29udmVyc2F0aW9uRGF0YSA9IG51bGw7IH1cclxufSk7XHJcbiAgfVxyXG5cclxuICBzZXR0aW5nc1ZpZXcoKSB7XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2Uuc2V0QXVkaXREYXRhKHRoaXMuaGVhZGVyRmlsdGVycyk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXQvc2V0dGluZ3NcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbnJtTGlzdCA9IFtcclxuICB7XHJcbiAgICBfaWQ6IFwiMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiQW5pcmJhbiBHaG9zaFwiLFxyXG4gICAgZW1haWw6IFwiYW5pcmJhbi5naG9zaEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJBeXVzaCBHdXB0YVwiLFxyXG4gICAgZW1haWw6IFwiYXl1c2guZ3VwdGExQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiM1wiLFxyXG4gICAgdXNlck5hbWU6IFwiUmVzaG1hIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwicmVzaG1hLnNoZXR0eUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjRcIixcclxuICAgIHVzZXJOYW1lOiBcIlNyaW5pdmFzIFJlZGR5XCIsXHJcbiAgICBlbWFpbDogXCJzcmluaXZhcy5yZWRkeUB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCI2XCIsXHJcbiAgICB1c2VyTmFtZTogXCJOaWtoaWwgVCBTXCIsXHJcbiAgICBlbWFpbDogXCJuaWtoaWwudHMyQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjdcIixcclxuICAgIHVzZXJOYW1lOiBcIk11a3VsXCIsXHJcbiAgICBlbWFpbDogXCJNdWt1bC51cGFkaHlheUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjhcIixcclxuICAgIHVzZXJOYW1lOiBcIkFuYW5kIFNpbmdoXCIsXHJcbiAgICBlbWFpbDogXCJhbmFuZC5zaW5naDJAbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiOVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU3VkaGlyIEt1bWFyXCIsXHJcbiAgICBlbWFpbDogXCJzdWRoaXIua3VtYXIyQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTBcIixcclxuICAgIHVzZXJOYW1lOiBcIkFuaWtldCBQYXRvbGVcIixcclxuICAgIGVtYWlsOiBcImFuaWtldC5wYXRvbGVAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2FjaGluXCIsXHJcbiAgICBlbWFpbDogXCJzYWNoaW4ua3VtYXI0QGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTJcIixcclxuICAgIHVzZXJOYW1lOiBcIlNhbmRlZXAgS3VtYXJcIixcclxuICAgIGVtYWlsOiBcInNhbmRlZXAua3VtYXJAdGhlbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTNcIixcclxuICAgIHVzZXJOYW1lOiBcIlJhamVzaCBZYWRhdlwiLFxyXG4gICAgZW1haWw6IFwicmFqZXNoLnlhZGF2MkBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxNFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUHVuamFiLVRCRFwiLFxyXG4gICAgZW1haWw6IFwic2FuZGVlcC5rdW1hckB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxNVwiLFxyXG4gICAgdXNlck5hbWU6IFwiTGF2YW55YVwiLFxyXG4gICAgZW1haWw6IFwibGF2YW55YS5iQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjE2XCIsXHJcbiAgICB1c2VyTmFtZTogXCJBcGFybmEgU2F0aGVlc2hcIixcclxuICAgIGVtYWlsOiBcImFwYXJuYS5zYXRoZWVzaEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxN1wiLFxyXG4gICAgdXNlck5hbWU6IFwiTmlzaG1pdGhhIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwibmlzaG1pdGhhLnNoZXR0eUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxOFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUGFpZGltdWtrYWxhIEhlbWFsYXRoYVwiLFxyXG4gICAgZW1haWw6IFwicGFpZGltdWtrYWxhLmhlbWFsYXRoYUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxOVwiLFxyXG4gICAgdXNlck5hbWU6IFwiUHJpeWFuc2hpIFNoYXJtYVwiLFxyXG4gICAgZW1haWw6IFwicHJpeWFuc2hpLnNoYXJtYUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUmFteWFwYXRoaSBQXCIsXHJcbiAgICBlbWFpbDogXCJyYW15YXBhdGhpLnBAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2l2YWxha3NobWlcIixcclxuICAgIGVtYWlsOiBcInNpdmFsYWtzaG1pLnNpdmFwYXRoYW1AbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMlwiLFxyXG4gICAgdXNlck5hbWU6IFwiU3VicmF0YSBTaW5naFwiLFxyXG4gICAgZW1haWw6IFwic3VicmF0YS5zaW5naEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyM1wiLFxyXG4gICAgdXNlck5hbWU6IFwiRGhhcmFtdmVlciBTaW5naFwiLFxyXG4gICAgZW1haWw6IFwiZGhhcm12ZWVyLnNpbmdoQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMjRcIixcclxuICAgIHVzZXJOYW1lOiBcIlNhamFsIFNocml2YXN0YXZhXCIsXHJcbiAgICBlbWFpbDogXCJzYWphbC5zaHJpdmFzdGF2YUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyNVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2FtaW4gSGFpZHJ5XCIsXHJcbiAgICBlbWFpbDogXCJzYW1pbi5oYWlkcnlAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG5dO1xyXG5cclxuZ2V0QWxsU3RvcmVzKCkge1xyXG4gICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnM/LmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSwgfSkgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKSAuc3Vic2NyaWJlKHsgbmV4dDogKHJlczogYW55KSA9PiB7IGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkgeyB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7IHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwic3RvcmVMaXN0XCIpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdCk7IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSBlbHNlIHsgdGhpcy5zdG9yZUxpc3QgPSBbXTsgdGhpcy5sb2FkaW5nMSA9IGZhbHNlOyB9IH0sIGVycm9yOiAoZXJyKSA9PiB7IHRoaXMuc3RvcmVMaXN0ID0gW107IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSwgfSk7IH0gXHJcbmdldEFsbFJtKCkgeyBcclxuICAvLyB0aGlzLmV5ZVNlcnZpY2UuZ2V0Um1MaXN0KHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50KSAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpIC5zdWJzY3JpYmUoeyBcclxuICAvLyAgIG5leHQ6IChyZXM6IGFueSkgPT4geyBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHsgXHJcbiAgICAgIHRoaXMuUm1MaXN0ID0gdGhpcy5ybUxpc3Q7IC8vIGZvciBvYmplY3QgYmFzZWQgdGhpcyB3aWxsIGNoYW5nZWRcclxudGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKHRoaXMucm1MaXN0KTsgXHJcbi8vIH0gZWxzZSB7IFxyXG4vLyAgIHRoaXMuUm1MaXN0ID0gW107IHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbXSk7IFxyXG4vLyB9IHRoaXMuZ2V0QWxsR3JvdXBzKCk7IH0sIH0pOyBcclxufSBcclxuZ2V0QWxsR3JvdXBzKGV2ZW50PzogYW55KSB7IGxldCBybUxpc3Q6IGFueSA9IFtdOyB0aGlzLkNsdXN0ZXJMaXN0ID0gW107IGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkgeyB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7IHJtTGlzdC5wdXNoKGVsPy5lbWFpbCk7IH0pOyB9IGV2ZW50Py5tYXAoKGVsOiBhbnkpID0+IGVsPy5lbWFpbCkgfHwgW3RoaXMudXNlcnM/LmVtYWlsXTsgY29uc3Qgb2JqID0geyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzPy5jbGllbnQgPyB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50IDogXCJcIiwgcm1MaXN0OiBybUxpc3QubGVuZ3RoID4gMCA/IHJtTGlzdCA6IFt0aGlzLnVzZXJzPy5lbWFpbF0sIH07IHRoaXMuZXllU2VydmljZS5nZXRDbHVzdGVycyhvYmopLnN1YnNjcmliZSh7IG5leHQ6IChyZXM6IGFueSkgPT4geyBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHsgdGhpcy5DbHVzdGVyTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0OyB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZSh0aGlzLkNsdXN0ZXJMaXN0KTsgdGhpcy5ncm91cHMgPSB0aGlzLkNsdXN0ZXJMaXN0Lm1hcCgoZWw6IGFueSkgPT4gZWwuY2x1c3Rlck5hbWUpOyB0aGlzLmdldEFsbFN0b3JlcygpOyB9IGVsc2UgeyB0aGlzLkNsdXN0ZXJMaXN0ID0gW107IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgfSwgXHJcbmVycm9yOiAoZXJyKSA9PiB7IC8vIGNvbnNvbGUuZXJyb3IoXCJDbHVzdGVyIGZldGNoIGZhaWxlZDpcIiwgZXJyKTsgXHJcbnRoaXMuQ2x1c3Rlckxpc3QgPSBbXTsgdGhpcy5sb2FkaW5nMSA9IGZhbHNlOyB9LCB9KTsgfVxyXG5cclxuXHJcbiAgLy8gc2Vjb25kIHBhZ2VcclxuICAgc3RlcFdpc2VQcm9jZXNzOiBhbnkgPSBbXTtcclxuICAgZHJvcGRvd25MaXN0OiBhbnkgPSBbXVxyXG4gIC8vICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICAvLyAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiBcclxuICAgdGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gICBoaXN0b3J5dGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gXHJcbiAgIHNlbGVjdGVkTWludXRlcyA9ICcwMCc7XHJcbiAgIHNlbGVjdGVkU2Vjb25kcyA9ICcwMCc7XHJcbiAgIG1pbnV0ZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICBzZWNvbmRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuIFxyXG4gICBhdWRpdERldGFpbHM6IGFueSA9IFtdO1xyXG4gICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgIHRha2VBdWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICBzdG9yZUlkOiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBDb250ZW50JykgdG9vbHRpcENvbnRlbnQhOiBOZ2JUb29sdGlwO1xyXG4gICBAVmlld0NoaWxkKCd2aWV3SGlzdG9yeScpIHZpZXdIaXN0b3J5OiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3ZpZXdDYW5jZWwnKSB2aWV3Q2FuY2VsOiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3ZpZGVvUGxheWVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHZpZGVvUGxheWVyITogRWxlbWVudFJlZjtcclxuICAgaGlzdG9yeURhdGE6IGFueSA9IFtdO1xyXG4gICBBdWRpdElkOiBhbnk7XHJcbiAgIHZpZXdIaXN0b3J5RGF0YTogYW55O1xyXG4gICBzcG9rZW5MYW5ndWFnZTphbnk9J0VuZ2xpc2gnXHJcbiAgIG1vZGFsUmVmOiBhbnk7XHJcbiAgIGRpc2FibGVjYW5jZWw6Ym9vbGVhbiA9ICBmYWxzZVxyXG4gIGJhY2tOYXZpZ2F0aW9uKCl7XHJcbiAgICAvLyAgdGhpcy5leWVTZXJ2aWNlLmF1ZGl0RmlsdGVyRGF0YSA9IHtcclxuICAgIC8vICAgYmFjazogJ2JhY2snLFxyXG4gICAgLy8gICBhdWRpdERldGFpbHM6IHRoaXMuYXVkaXREZXRhaWxzXHJcbiAgICAvLyB9O1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvYXVkaXQnXSwge1xyXG4gICAgLy8gICBxdWVyeVBhcmFtczogeyBkYXRlOiB0aGlzLmRheWpzKHRoaXMuYXVkaXREZXRhaWxzLmZpbGVEYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSwgdHlwZVZhbHVlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgfVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLmV5ZVZpZXcgPWZhbHNlO1xyXG4gICAgdGhpcy50YWtlQXVkaXQgPWZhbHNlXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9W107XHJcbiAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICB0aGlzLmdldENhcmREYXRhKCk7XHJcbiAgfVxyXG4gdmlld0hpc3RvcnlNb2RlbChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogaXRlbS5faWRcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS52aWV3QXVkaXRIaXN0b3J5KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudmlld0hpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy52aWV3SGlzdG9yeSwge1xyXG4gICAgICAgICAgICBzaXplOid4bCcsXHJcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBhdWRpdERhdGE6YW55O1xyXG4gIGV5ZVRlc3RUeXBlOmFueTtcclxuICBSbUVtYWlsOmFueTtcclxuICBjbHVzdGVyOmFueTtcclxuXHJcblxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgXHJcbiAgLy8gfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoJ0V5ZSBUZXN0JylcclxuICAgXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgICB7IHRpdGxlOiAnVGFuZ28gVHJheCcsIHBhdGg6ICcvbWFuYWdlL3RyYXgvZGFzaGJvYXJkJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnVGFuZ28gVHJheCcsIHBhdGg6ICcvbWFuYWdlL3RyYXgvZGFzaGJvYXJkJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LCAgICAgICAgXHJcbiAgICBdKVxyXG59XHJcbiAgZ2V0QXVkaXRIaXN0b3J5KCkge1xyXG4gICAgdGhpcy5oaXN0b3J5dGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlLmdldEF1ZGl0SGlzdG9yeShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIGdldEF1ZGl0ZGV0YWlscygpIHtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS5nZXRBdWRpdGRldGFpbHMocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXVkaXREZXRhaWxzLmF1ZGl0U3RhdHVzID09PSAnSW4tUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmdldEF1ZGl0SGlzdG9yeSgpXHJcbiAgICAgICAgICB9LDEwMClcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGltZU9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZXNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICAgIHRoaXMuc2Vjb25kc0xpc3QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gdGhpcy5mb3JtYXROdW1iZXIoaSkpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGRvd25PcGVuOiB7IFtrZXk6IG51bWJlcl06IHsgc3RhcnRUaW1lOiBib29sZWFuOyBlbmRUaW1lOiBib29sZWFuOyByZWFzb246IGJvb2xlYW4gfSB9ID0ge307XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKGk6IG51bWJlciwgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5kcm9wZG93bk9wZW5baV0/Llt0aW1lXSA/PyBmYWxzZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRyb3Bkb3duT3BlbikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW051bWJlcihrZXkpXSA9IHsgc3RhcnRUaW1lOiBmYWxzZSwgZW5kVGltZTogZmFsc2UsIHJlYXNvbjogZmFsc2UgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5baV0pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5baV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5baV1bdGltZV0gPSAhY3VycmVudFN0YXRlO1xyXG4gIH1cclxuICBnZXRTZWNvbmRzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdGltZSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBbbWluLCBzZWNdID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIChtaW4gKiA2MCkgKyBzZWM7XHJcbiAgfVxyXG4gICAgXHJcbnNlbGVjdE1pbnV0ZShpbmRleDogYW55LCBtaW46IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gbWluO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgaXNWYWxpZCA9IChzdGFydFRpbWUgPT09IDAgfHwgZW5kVGltZSA9PT0gMCkgfHwgc3RhcnRUaW1lIDwgZW5kVGltZTtcclxuXHJcbiAgaWYgKCFpc1ZhbGlkICYmIHRpbWUgIT09ICdyZWFzb24nKSB7XHJcbiAgICB0aGlzLnRzLmdldFdhcm5pbmdUb2FzdChcIlN0YXJ0IHRpbWUgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHRpbWUuXCIpO1xyXG4gIFxyXG4gICAgY29uc3QgW3ByZXZNaW4sIHByZXZTZWNdID0gcHJldmlvdXNUaW1lLnNwbGl0KCc6Jyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWludXRlcyA9IHByZXZNaW47XHJcbiAgICB0aGlzLnNlbGVjdGVkU2Vjb25kcyA9IHByZXZTZWM7XHJcbiAgXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgXHJcblxyXG4gIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XVt0aW1lXSA9IG5ld1RpbWU7XHJcbiAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbn1cclxuXHJcbnNlbGVjdFNlY29uZChpbmRleDogYW55LCBzZWM6IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gc2VjO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgaWYgKCh0aW1lICE9PSAncmVhc29uJykgJiYgc3RhcnRUaW1lICE9PSAwICYmIGVuZFRpbWUgIT09IDAgJiYgc3RhcnRUaW1lID49IGVuZFRpbWUpIHtcclxuICAgIHRoaXMudHMuZ2V0V2FybmluZ1RvYXN0KFwiU3RhcnQgdGltZSBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgdGltZS5cIik7XHJcbiAgXHJcbiAgICBjb25zdCBbcHJldk1pbiwgcHJldlNlY10gPSBwcmV2aW91c1RpbWUuc3BsaXQoJzonKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gcHJldk1pbjtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gcHJldlNlYztcclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdW3RpbWVdID0gbmV3VGltZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4gXHJcbiAgXHJcblxyXG4gIHNlbGVjdFJlYXNvbihpbmRleDogbnVtYmVyLCBrZXk6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBrZXk7XHJcbiAgXHJcbiAgICBpZiAoa2V5ID09PSAnb3RoZXJzJykge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSAnJzsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSBudWxsOyBcclxuICAgIH1cclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgc2VsZWN0SHVtYW5WZXJpZmllZChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdLmF1ZGl0ZWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgZmluZGNvdW50KCl7XHJcbiAgICBsZXQgY291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5hdWRpdGVkU3RhdHVzIT09ZGF0YS5BSVN0YXR1cyl7XHJcbiAgICAgICAgY291bnQrK1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgICByZXR1cm4gY291bnRcclxuICB9XHJcbiAgZ2V0VmFsaWRhRm9ybSgpe1xyXG4gICAgbGV0IGVycm9yQ291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5yZWFzb249PT0nb3RoZXJzJyl7XHJcbiAgICAgICAgZGF0YS5vdGhlclJlYXNvbiA9ICBkYXRhLm90aGVyUmVhc29uLnRyaW0oKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGRhdGEuYXVkaXRlZFN0YXR1cyE9PWRhdGEuQUlTdGF0dXMpe1xyXG4gICAgICAgIGlmKCFkYXRhLnJlYXNvbiB8fCBkYXRhLnJlYXNvbiYmZGF0YS5yZWFzb249PT0nb3RoZXJzJyAmJiAhZGF0YS5vdGhlclJlYXNvbil7XHJcbiAgICAgICAgICBlcnJvckNvdW50KytcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZihlcnJvckNvdW50PjApe1xyXG4gICAgICB0aGlzLmRpc2FibGVjYW5jZWwgPSAgZmFsc2VcclxuICAgICAgdGhpcy50cy5nZXRXYXJuaW5nVG9hc3QoXCJDb21tZW50cyBhcmUgbWFuZGF0b3J5IGZvciBpbnZlcnNlIGh1bWFuIGF1ZGl0ZWQgcmVzcG9uc2VzXCIpXHJcbiAgfVxyXG4gICAgcmV0dXJuIGVycm9yQ291bnRcclxuICB9XHJcbiAgb25zdWJtaXQoaXNSZVNlbmQ/OmJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWNhbmNlbCA9ICB0cnVlXHJcbiAgICAvLyBpZigodGhpcy5zdGVwV2lzZVByb2Nlc3MuZmlsdGVyKChkYXRhOmFueSk9PmRhdGEuYXVkaXRlZFN0YXR1cz09PXRydWUpLmxlbmd0aCt0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09ZmFsc2UpLmxlbmd0aCkhPT10aGlzLnN0ZXBXaXNlUHJvY2Vzcy5sZW5ndGgpe1xyXG4gICAgLy8gICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiT29wcyEgTG9va3MgbGlrZSB0aGUgZXllIHRlc3QgYXVkaXQgaXNu4oCZdCBjb21wbGV0ZSB5ZXQuIEF1ZGl0IGFsbCBleWUgdGVzdCBzdGVwcyBiZWZvcmUgc3VibWl0dGluZy5cIilcclxuICAgIC8vICAgdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAvLyAgIHJldHVyblxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYodGhpcy5nZXRWYWxpZGFGb3JtKCk9PT0wKXtcclxuXHJcbiAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICAgIGZpbGVJZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgICAgYXVkaXRlZFN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09dHJ1ZSkubGVuZ3RoLFxyXG4gICAgICAgIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgICAgIG92ZXJSaWRlczp0aGlzLmZpbmRjb3VudCgpLFxyXG4gICAgICAgIHNwb2tlbkxhbmd1YWdlOiB0aGlzLnNwb2tlbkxhbmd1YWdlLFxyXG4gICAgICAgIHN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2VzcyxcclxuICAgICAgICBjbHVzdGVyOiB0aGlzLmNsdXN0ZXIsICBcclxuICAgICAgICAgUk1FbWFpbDogdGhpcy5SbUVtYWlsLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREZXRhaWxzPy5zdG9yZUlkPy5zcGxpdChcIi1cIilbMF0sXHJcbiAgICAgICAgICAgLi4uKHR5cGVvZiBpc1JlU2VuZCAhPSAndW5kZWZpbmVkJyAmJiB7aXNSZVNlbmQ6aXNSZVNlbmR9KSBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV5ZVNlcnZpY2Uuc3VibWl0QXVkaXQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKHJlcz8ubWVzc2FnZSA9PSBcIkRvIHlvdSB3YW50IHJlc2VuZCBtYWlsP1wiKSB7XHJcbiBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFNlbmRBbGVydENvbXBvbmVudCx7Y2VudGVyZWQ6dHJ1ZSxzaXplOidtZCd9KTtcclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm1lc3NhZ2UgPSByZXMubWVzc2FnZTtcclxuICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpPT57XHJcbiAgICAgICAgICAgICAgdGhpcy5vbnN1Ym1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGV9IFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHlgKVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgICAgIH0gXHJcbiAgICAgIH0pXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICB9XHJcbiAgc3RhcnRBdWRpdCh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmRpc2FibGVjYW5jZWwgPSAgdHJ1ZVxyXG4gICAgdGhpcy50YWtlQXVkaXQgPSB0cnVlO1xyXG4gICAgdGhpcy5hdWRpdERldGFpbHMuYXVkaXRTdGF0dXMgPSAnUmUtQXVkaXRlZCdcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkXHJcbiAgICB9XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuZ2V0QXVkaXRGaWxlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9uWWVzKCl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZCxcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgZmlsZUlkOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnID8gdGhpcy5hdWRpdERldGFpbHMuZW5nYWdlbWVudElkIDogdGhpcy5hdWRpdERldGFpbHMucXVldWVJZCxcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS5jYW5jZWxBdWRpdEZpbGUocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGV9IENhbmNlbGxlZCBTdWNjZXNzZnVsbHlgKVxyXG4gICAgICAgICAgdGhpcy5tb2RhbFJlZi5kaXNtaXNzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKVxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYuZGlzbWlzcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gIH1cclxuICBjYW5jZWwoKXtcclxuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMudmlld0NhbmNlbCwge1xyXG4gICAgICBzaXplOidtZCcsXHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7ICBcclxuICB9XHJcbiAgT25DYW5jZWwoKXtcclxuICAgIHRoaXMubW9kYWxSZWYuZGlzbWlzcygpO1xyXG4gIH1cclxuXHJcbiAgb25FeWVUZXN0QWlTZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZXllVGVzdENoYXRRdWVyeS50cmltKCkpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5haVNlc3Npb25JZCkgdGhpcy5pbml0QWlTZXNzaW9uKCk7XHJcblxyXG4gICAgdGhpcy5zaG93RXllVGVzdEFpTWVzc2FnZSA9IHRydWU7XHJcbiAgICB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IHN0b3Jlczogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0KVxyXG4gICAgICA/IHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoczogYW55KSA9PiBzLnN0b3JlTmFtZSlcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlPy5zdGFydERhdGVcclxuICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uZW5kRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgdXNlcl9pZDogdGhpcy51c2Vycz8uX2lkIHx8ICcnLFxyXG4gICAgICBzZXNzaW9uX2lkOiB0aGlzLmFpU2Vzc2lvbklkLFxyXG4gICAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICAgIHNlc3Npb25fdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgICAgbWVzc2FnZTogdGhpcy5leWVUZXN0Q2hhdFF1ZXJ5LFxyXG4gICAgICBhbmFseXRpY3NUeXBlOiAnZXlldGVzdCcsXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIHNlbGVjdGVkX3N0b3Jlczogc3RvcmVzLFxyXG4gICAgICAgIGRhdGVfcmFuZ2U6IHsgc3RhcnQ6IHN0YXJ0RGF0ZSwgZW5kOiBlbmREYXRlIH0sXHJcbiAgICAgICAgc2VsZWN0ZWRfcHJvZHVjdHM6IFtdLFxyXG4gICAgICAgIHNlbGVjdGVkX21vZGVsOiB0aGlzLnNlbGVjdGVkTW9kZWxcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuY2hhdFN0cmVhbShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHRleHQ6IHN0cmluZykgPT4geyB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSB0ZXh0OyB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSAnVW5hYmxlIHRvIGdldCBBSSByZXNwb25zZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nOyB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udkF1ZGlvKCk6IEhUTUxBdWRpb0VsZW1lbnQgfCBudWxsIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY29udi1hdWRpbycpIGFzIEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb252UGxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1ZGlvID0gdGhpcy5nZXRDb252QXVkaW8oKTtcclxuICAgIGlmICghYXVkaW8pIHJldHVybjtcclxuICAgIGlmICh0aGlzLmNvbnZJc1BsYXlpbmcpIHtcclxuICAgICAgYXVkaW8ucGF1c2UoKTtcclxuICAgICAgdGhpcy5jb252SXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhdWRpby5wbGF5KCk7XHJcbiAgICAgIHRoaXMuY29udklzUGxheWluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnZUaW1lVXBkYXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgdGhpcy5jb252Q3VycmVudFRpbWUgPSB0aGlzLmZvcm1hdENvbnZUaW1lKGF1ZGlvLmN1cnJlbnRUaW1lKTtcclxuICAgIGlmIChhdWRpby5kdXJhdGlvbiAmJiBpc0Zpbml0ZShhdWRpby5kdXJhdGlvbikpIHtcclxuICAgICAgdGhpcy5jb252UHJvZ3Jlc3MgPSBhdWRpby5jdXJyZW50VGltZSAvIGF1ZGlvLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Db252TG9hZGVkKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgLy8gT25seSB1c2UgYXVkaW8uZHVyYXRpb24gaWYgaXQncyBhIHZhbGlkIGZpbml0ZSBudW1iZXI7IG90aGVyd2lzZSBrZWVwIEFQSS1wcm92aWRlZCBkdXJhdGlvblxyXG4gICAgaWYgKGF1ZGlvLmR1cmF0aW9uICYmIGlzRmluaXRlKGF1ZGlvLmR1cmF0aW9uKSkge1xyXG4gICAgICB0aGlzLmNvbnZEdXJhdGlvbiA9IHRoaXMuZm9ybWF0Q29udlRpbWUoYXVkaW8uZHVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q29udlRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghc2Vjb25kcyB8fCBpc05hTihzZWNvbmRzKSkgcmV0dXJuICcwOjAwJztcclxuICAgIGNvbnN0IG0gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XHJcbiAgICBjb25zdCBzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApO1xyXG4gICAgcmV0dXJuIGAke219OiR7cyA8IDEwID8gJzAnICsgcyA6IHN9YDtcclxuICB9XHJcblxyXG4gIHNlZWtDb252QXVkaW8oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1ZGlvID0gdGhpcy5nZXRDb252QXVkaW8oKTtcclxuICAgIGlmICghYXVkaW8gfHwgIWF1ZGlvLmR1cmF0aW9uKSByZXR1cm47XHJcbiAgICBjb25zdCB0cmFjayA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByYXRpbyA9IGV2ZW50Lm9mZnNldFggLyB0cmFjay5vZmZzZXRXaWR0aDtcclxuICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gcmF0aW8gKiBhdWRpby5kdXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbnZNdXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgdGhpcy5jb252SXNNdXRlZCA9ICF0aGlzLmNvbnZJc011dGVkO1xyXG4gICAgYXVkaW8ubXV0ZWQgPSB0aGlzLmNvbnZJc011dGVkO1xyXG4gIH1cclxuXHJcbiAgcGxheUZyb21TdGVwKHN0ZXA6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbyB8fCAhc3RlcD8uc3RhcnRUaW1lKSByZXR1cm47XHJcbiAgICBjb25zdCBwYXJ0cyA9IFN0cmluZyhzdGVwLnN0YXJ0VGltZSkuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcclxuICAgIGxldCBzZWNvbmRzID0gMDtcclxuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgc2Vjb25kcyA9IHBhcnRzWzBdICogMzYwMCArIHBhcnRzWzFdICogNjAgKyBwYXJ0c1syXTtcclxuICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIHNlY29uZHMgPSBwYXJ0c1swXSAqIDYwICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICBhdWRpby5jdXJyZW50VGltZSA9IHNlY29uZHM7XHJcbiAgICBhdWRpby5wbGF5KCk7XHJcbiAgICB0aGlzLmNvbnZJc1BsYXlpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIEFJIEFzc2lzdGFudCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBwYXJzZUFpTWFya2Rvd24odGV4dDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJycpO1xyXG4gICAgbGV0IGh0bWwgPSB0ZXh0XHJcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UoL14jIyMgKC4rKSQvZ20sICc8aDU+JDE8L2g1PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyMgKC4rKSQvZ20sICc8aDQ+JDE8L2g0PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyAoLispJC9nbSwgJzxoMz4kMTwvaDM+JylcclxuICAgICAgLnJlcGxhY2UoL1xcKlxcKiguKz8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+JylcclxuICAgICAgLnJlcGxhY2UoL19fKC4rPylfXy9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCooLis/KVxcKi9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXyguKz8pXy9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypbLSpdICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypcXGQrXFwuICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvKDxsaT4uKjxcXC9saT4pL2dzLCAnPHVsPiQxPC91bD4nKVxyXG4gICAgICAucmVwbGFjZSgvXFxuezIsfS9nLCAnPC9wPjxwPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcclxuICAgIGh0bWwgPSBgPHA+JHtodG1sfTwvcD5gO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xyXG4gIH1cclxuXHJcbiAgYWlDaGF0UXVlcnkgPSAnJztcclxuICBhaVJlc3BvbnNlVGV4dCA9ICcnO1xyXG4gIGlzQWlMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhaVNlc3Npb25JZCA9ICcnO1xyXG5cclxuICBwcml2YXRlIGluaXRBaVNlc3Npb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpU2Vzc2lvbklkID0gYEVZRVRFU1RfJHtEYXRlLm5vdygpfWA7XHJcbiAgfVxyXG5cclxuICBzZW5kQ2hhdE1lc3NhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWlDaGF0UXVlcnkudHJpbSgpIHx8IHRoaXMuaXNBaUxvYWRpbmcpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5haVNlc3Npb25JZCkgdGhpcy5pbml0QWlTZXNzaW9uKCk7XHJcblxyXG4gICAgY29uc3Qgc3RvcmVzOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QpXHJcbiAgICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlPy5zdGFydERhdGVcclxuICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uZW5kRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgdXNlcl9pZDogdGhpcy51c2Vycz8uX2lkIHx8ICcnLFxyXG4gICAgICBzZXNzaW9uX2lkOiB0aGlzLmFpU2Vzc2lvbklkLFxyXG4gICAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICAgIHNlc3Npb25fdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgICAgbWVzc2FnZTogdGhpcy5haUNoYXRRdWVyeSxcclxuICAgICAgYW5hbHl0aWNzVHlwZTogJ2V5ZXRlc3QnLFxyXG4gICAgICBjb25maWc6IHtcclxuICAgICAgICBzZWxlY3RlZF9zdG9yZXM6IHN0b3JlcyxcclxuICAgICAgICBkYXRlX3JhbmdlOiB7IHN0YXJ0OiBzdGFydERhdGUsIGVuZDogZW5kRGF0ZSB9LFxyXG4gICAgICAgIHNlbGVjdGVkX3Byb2R1Y3RzOiBbJ0V5ZVRlc3QnXSxcclxuICAgICAgICBzZWxlY3RlZF9tb2RlbDogdGhpcy5zZWxlY3RlZE1vZGVsXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc0FpTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFpUmVzcG9uc2VUZXh0ID0gJyc7XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuY2hhdFN0cmVhbShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHRleHQ6IHN0cmluZykgPT4geyB0aGlzLmFpUmVzcG9uc2VUZXh0ID0gdGV4dDsgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0FpTG9hZGluZyA9IGZhbHNlOyB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB0aGlzLmlzQWlMb2FkaW5nID0gZmFsc2U7IH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCIhZXllVmlld1wiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbjxkaXYgY2xhc3M9XCJjYXJkIG1iLTJcIj5cclxuICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZzFcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtICpuZ0lmPVwiIWxvYWRpbmcxXCIgW2Zvcm1Hcm91cF09XCJleWVUZXN0Rm9ybVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC03IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0yIG1iLTQnIDogJ2NvbC0yIG1iLTQnXCIgY2xhc3M9XCJjb2wtMSBtYi00XCIgc3R5bGU9XCJ6LWluZGV4OiAzMyAhaW1wb3J0YW50O1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiZGF0ZVR5cGVcIiAoaXRlbUNoYW5nZSk9XCJkYXRlVHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgIFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMyBtYi00JyA6ICdjb2wtMiBtYi00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwidG9wOiAyMCU7XCIgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTAgei0yXCIgc3R5bGU9XCJtaW4td2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIChjbGljayk9XCJyZXNldFZhbGlkYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZWQpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIFtpc0N1c3RvbURhdGVdPVwiaXNDdXN0b21EYXRlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cInsgZm9ybWF0OiAnREQtTU0tWVlZWScsIGZpcnN0RGF5OiAxLCBtb250aE5hbWVzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGF0ZXJhbmdlXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMyBtYi00JyA6ICdjb2wtMiBtYi00J1wiIGNsYXNzPVwiY29sLTIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGFuZ2UpPVwidHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdSbUxpc3QnKT8udmFsdWU/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgUk1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cIlJtTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid1c2VyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid1c2VyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25SbVNlbGVjdCgkZXZlbnQpXCIgW3NlbGVjdGVkVmFsdWVzXT1cImV5ZVRlc3RGb3JtLmdldCgnUm1MaXN0Jyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nIHx8IHVzZXJzPy5yb2xlID09PSdhZG1pbidcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdDbHVzdGVyTGlzdCcpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBjbHVzdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJDbHVzdGVyTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25ncm91cFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdDbHVzdGVyTGlzdCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItZ3JvdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgICBbbmdDbGFzc109XCJleWVUZXN0Rm9ybS5nZXQoJ3R5cGUnKT8udmFsdWUgPT09J3JlbW90ZScgPyAnY29sLTMgbWItNCcgOiAnY29sLTIgbWItNCdcIiAgPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAgKm5nSWY9XCIhKGV5ZVRlc3RGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3Jlcy1zZWxlY3QgW2l0ZW1zXT1cInN0b3JlTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidzdG9yZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInc3RvcmVJZCdcIiAoc2VsZWN0ZWQpPVwib25TdG9yZVNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8udmFsdWVcIj48L2xpYi1zdG9yZXMtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0yJyA6ICdjb2wtMidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShleWVUZXN0Rm9ybS5nZXQoJ2NvbXBsaWFuY2VTY29yZScpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBTY29yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdC1kcm9wIFtpdGVtc109XCJ0eXBlUGVyY2VudGFnZUFycmF5XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIChzZWxlY3RlZCk9XCJ0eXBlUGVyY2VudGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdjb21wbGlhbmNlU2NvcmUnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXNlbGVjdC1kcm9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJjb2wtMSBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImF1ZGl0VHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJhdWRpdFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGFuZ2UpPVwiYXVkaXRUeXBlQ2hhbmdlKCRldmVudClcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMycgOiAnY29sLTInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlciBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdhdWRpdFN0YXR1cycpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGl0IFN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdC1kcm9wIFtpdGVtc109XCJhdWRpdFN0YXR1c0FycmF5XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIChzZWxlY3RlZCk9XCJ0eXBlQXVkaXRTdGF0dXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImV5ZVRlc3RGb3JtLmdldCgnYXVkaXRTdGF0dXMnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXNlbGVjdC1kcm9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibmVhckFkZGl0aW9uXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwibmVhckFkZGl0aW9uQXJyYXlcIiAoaXRlbUNoYW5nZSk9XCJuZWFyQWRkaXRpb25DaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiY2F0ZWdvcnlBcnJheVwiIChpdGVtQ2hhbmdlKT1cImNhdGVnb3J5VHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAqbmdJZj1cInVzZXJzPy5yb2xlXCIgXHJcbiAgY2xhc3M9XCJ0ZXh0LWVuZFwiXHJcbiAgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0xIG1iLTQnIDogJ2NvbC0xIG1iLTQnXCJcclxuPlxyXG48IS0tIFtuZ0NsYXNzXT1cImdldEFwcGx5QnV0dG9uQ2xhc3ModXNlcnM/LnJvbGUsIGV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSlcIiAtLT5cclxuXHJcbiAgICA8YSAoY2xpY2spPVwib25TdWJtaXQoKTtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IHB5LTMgXCI+XHJcbiAgICAgICAgPHNwYW4+QXBwbHk8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuXHJcbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RXllVGVzdFwiIGNsYXNzPVwibXMtNiBtYi0zXCI+XHJcblxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgZGFzaGVkIHctMTAwICByb3dcIj5cclxuICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2wtMTAgdGl0bGUtdGV4dCBweS0zXCI+PHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0ZFRTRFMlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjM1XzI0MjM0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDEzLjMzMzVWMTYuMDAwMk0xNiAxOC42NjY4SDE2LjAwNjdNMjIuNjY2NyAxNi4wMDAyQzIyLjY2NjcgMTkuNjgyMSAxOS42ODE5IDIyLjY2NjggMTYgMjIuNjY2OEMxMi4zMTgxIDIyLjY2NjggOS4zMzMzNyAxOS42ODIxIDkuMzMzMzcgMTYuMDAwMkM5LjMzMzM3IDEyLjMxODMgMTIuMzE4MSA5LjMzMzUgMTYgOS4zMzM1QzE5LjY4MTkgOS4zMzM1IDIyLjY2NjcgMTIuMzE4MyAyMi42NjY3IDE2LjAwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzNV8yNDIzNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4IDgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJkYXNoZWQtZGVzY1wiPkV5ZSB0ZXN0IHZpZGVvIHByZXZpZXcgaXMgYXZhaWxhYmxlIGZvciAzMCBkYXlzLiBBdWRpdCBkYXRhXHJcbiAgICAgICAgICAgICAgICAgcmVtYWlucyBhY2Nlc3NpYmxlLCBidXQgdmlkZW9zIHdpbGwgbm90IGJlIHJldGFpbmVkIGJleW9uZCB0aGlzIHBlcmlvZC48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sLTIgcHQtMiB0ZXh0LWVuZCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZUV5ZVRlc3QoKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yNSAxNUwxNSAyNU0xNSAxNUwyNSAyNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZCBteS0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHktMVwiPlxyXG4gXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgbWluLWgtNTVweCBweS0xIHB4LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZSBteS0wXCI+UmVnaW9uYWwgTWFuYWdlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3tSbUxpc3REYXRhID8/ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTUgcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBtaW4taC01NXB4IHB5LTEgcHgtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlIG15LTBcIj5DbHVzdGVyczwvaDU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57e2dyb3Vwcz8ubGVuZ3RoID8/ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nICYmIGtleVR5cGUgIT09J3JtJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCIgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggIHB5LTEgcHgtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj5DbHVzdGVyczwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57eyBncm91cHM/Lmxlbmd0aCA/PyAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC0xMDAgcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBtaW4taC00NXB4ICBweS0xIHB4LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VG90YWwgVGFuZ28gQUkgRmlsZXM8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3sgZXllVGVzdENhcmREYXRhPy50b3RhbEZpbGVzID8/ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRydXN0IEF1ZGl0IENvbXBsZXRlZDwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57eyBleWVUZXN0Q2FyZERhdGE/LmNvbXBsZXRlZEZpbGVzID8/ICctJyB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcHktMCBib3JkZXItMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJcIj57eyAoZXllVGVzdENhcmREYXRhPy5jb21wbGV0ZWRSYXRpbyA/PyAnLScpICsgJyUnIH19IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGVzdC1zdWJcIj5Db21wbGV0ZWQ8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtMTAwIHAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgbWluLWgtNDVweCAgcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRhbmdvIFNjb3JlPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC12YWx1ZVwiPnt7IGV5ZVRlc3RDYXJkRGF0YT8udGFuZ29TY29yZSA/PyAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcGUtMCBwcy0zIHB5LTAgYm9yZGVyLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImV5ZVRlc3RDYXJkRGF0YT8udHJlbmRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFleWVUZXN0Q2FyZERhdGE/LnRyZW5kXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTMgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc2MF85Nzc2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41NzUgOUw2LjgyNDk1IDQuMjVMNC4zMjQ5NSA2Ljc1TDAuNTc0OTUxIDNNMTEuNTc1IDlIOC41NzQ5NU0xMS41NzUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzc2MF85Nzc2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDc0OTUxMilcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1zLTJcIj57eyBleWVUZXN0Q2FyZERhdGE/LnRhbmdvU2NvcmVUcmVuZCAhPT0gbnVsbCBcclxuICAgICAgPyAoZ2V0QWJzVmFsdWUoZXllVGVzdENhcmREYXRhLnRhbmdvU2NvcmVUcmVuZCkgfCBudW1iZXI6JzEuMC0wJzonZW4tVVMnKSArICclJyBcclxuICAgICAgOiAnLScgfX1cclxuIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRlc3Qtc3ViMVwiPnZzIHByZXZpb3VzIHdlZWs8L3NwYW4+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRydXN0IFNjb3JlPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC12YWx1ZVwiPnt7IChleWVUZXN0Q2FyZERhdGE/LnRydXN0U2NvcmUgJiYgZXllVGVzdENhcmREYXRhPy50cnVzdFNjb3JlICE9PSAnTkEnIFxyXG4gID8gZXllVGVzdENhcmREYXRhLnRydXN0U2NvcmUgKyAnJScgXHJcbiAgOiAnTkEnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPkh1bWFuIEF1ZGl0ZWQgU2NvcmU8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3sgKGV5ZVRlc3RDYXJkRGF0YT8uaHVtYW5TY29yZSAmJiBleWVUZXN0Q2FyZERhdGE/Lmh1bWFuU2NvcmUgIT09ICdOQScgXHJcbiAgPyBleWVUZXN0Q2FyZERhdGEuaHVtYW5TY29yZSBcclxuICA6ICdOQScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgQXVkaXQgU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IHRvdGFsSXRlbXMgfX0gVG90YWw8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQWRtaW4gKyBjbHVzdGVyIHByZXNlbnQg4oaSIFJNIFN1bW1hcnkgLS0+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJrZXlUeXBlID09PSdjbHVzdGVyJyAmJiB1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nXCIgKGNsaWNrKT1cInR5cGVWYWwxKCdybScsJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ1XzEyMTI4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzOVwiIGhlaWdodD1cIjM5XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI3LjgzMzQgMjEuMDAwM0gxNi4xNjY3TTE2LjE2NjcgMjEuMDAwM0wyMi4wMDAxIDI2LjgzMzdNMTYuMTY2NyAyMS4wMDAzTDIyLjAwMDEgMTUuMTY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDVfMTIxMjhcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0NV8xMjEyOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ1XzEyMTI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09ICdhZG1pbicgJiYga2V5VHlwZSA9PT0nY2x1c3RlcicgfHwgdXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdjbHVzdGVyJ1wiIGNsYXNzPVwidGl0bGUtdGV4dCBteS00IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgUk0gU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IHRleHQtY2FwaXRhbGl6ZVwiPnt7IGV5ZVRlc3REYXRhWzBdPy5STU5hbWUgPyBleWVUZXN0RGF0YVswXT8uUk1OYW1lIDogJycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEFsbCBvdGhlciBjYXNlcyDihpIgRXllIFRlc3QgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImtleVR5cGUgPT09J3N0b3JlJyAmJiAodXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0eXBlVmFsMSgnY2x1c3RlcicsdGhpcy5ybUVtYWlsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF83NDVfMTIxMjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzOVwiIGhlaWdodD1cIjM5XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNy44MzM0IDIxLjAwMDNIMTYuMTY2N00xNi4xNjY3IDIxLjAwMDNMMjIuMDAwMSAyNi44MzM3TTE2LjE2NjcgMjEuMDAwM0wyMi4wMDAxIDE1LjE2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDVfMTIxMjhcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0NV8xMjEyOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDVfMTIxMjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJrZXlUeXBlID09PSdzdG9yZScgJiYgKHVzZXJzPy5yb2xlID09PSAnYWRtaW4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInR5cGVWYWwxKCdjbHVzdGVyJyx0aGlzLmdyb3VwcylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiNDRcIiB2aWV3Qm94PVwiMCAwIDQ0IDQ0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ1XzEyMTI4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzlcIiBoZWlnaHQ9XCIzOVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjcuODMzNCAyMS4wMDAzSDE2LjE2NjdNMTYuMTY2NyAyMS4wMDAzTDIyLjAwMDEgMjYuODMzN00xNi4xNjY3IDIxLjAwMDNMMjIuMDAwMSAxNS4xNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfNzQ1XzEyMTI4XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd183NDVfMTIxMjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ1XzEyMTI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nICYmIGtleVR5cGUgPT09J3JtJykgJiYgISh1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nICYmIGtleVR5cGUgPT09J2NsdXN0ZXInKSBcclxuICAgICAgICAgICAgICAgICYmICEodXNlcnM/LnJvbGUgPT09ICdhZG1pbicgJiYga2V5VHlwZSA9PT0nY2x1c3RlcicpXCIgY2xhc3M9XCJ0aXRsZS10ZXh0IG15LTQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEV5ZSBUZXN0XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IHRvdGFsSXRlbXMgfX0gVG90YWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInRleHQtc3ViIG15LTJcIj5CYXNlZCBvbiB7eyBoZWFkRGF0ZSB8IGRhdGU6ICdNTU0gZCcgfX0gLSB7e1xyXG4gICAgICAgICAgICAgICAgaGVhZERhdGVFbmQgfCBkYXRlOiAnTU1NIGQsIHknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nYWRtaW4nICYmIGtleVR5cGUgPT09J2NsdXN0ZXInXCIgY2xhc3M9XCJ0ZXh0LXN1YiBteS0yXCI+QmFzZWQgb24ge3sgaGVhZERhdGUgfCBkYXRlOiAnTU1NIGQnIH19IC0ge3tcclxuICAgICAgICAgICAgICAgIGhlYWREYXRlRW5kIHwgZGF0ZTogJ01NTSBkLCB5JyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3VzZXInICYmIGtleVR5cGUgPT09J3N0b3JlJ1wiIGNsYXNzPVwidGV4dC1zdWIgbXktMlwiPkJhc2VkIG9uIHt7IGhlYWREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICBoZWFkRGF0ZUVuZCB8IGRhdGU6ICdNTU0gZCwgeScgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5VHlwZSA9PT0gJ3JtJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1NlYXJjaCBieSBSTU5hbWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrZXlUeXBlID09PSAnY2x1c3RlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdTZWFyY2ggYnkgQ2x1c3RlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdTZWFyY2gnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiAvPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nXCIgKGNsaWNrKT1cInNldHRpbmdzVmlldygpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0NVwiIGhlaWdodD1cIjQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDUgNDZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzYwXzk5ODgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNzE5NzNcIiB5PVwiMS45ODA0N1wiIHdpZHRoPVwiNDAuMDRcIiBoZWlnaHQ9XCI0MC4wNFwiIHJ4PVwiNy4yOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjMuMTc0NzNcIiB5PVwiMi40MzU0N1wiIHdpZHRoPVwiMzkuMTNcIiBoZWlnaHQ9XCIzOS4xM1wiIHJ4PVwiNi44MjVcIiBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC45MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF83NjBfOTk4OClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNzM5NiAyNC4yNzQ5QzIzLjk5NjEgMjQuMjc0OSAyNS4wMTQ2IDIzLjI1NjMgMjUuMDE0NiAyMS45OTk5QzI1LjAxNDYgMjAuNzQzNCAyMy45OTYxIDE5LjcyNDkgMjIuNzM5NiAxOS43MjQ5QzIxLjQ4MzIgMTkuNzI0OSAyMC40NjQ2IDIwLjc0MzQgMjAuNDY0NiAyMS45OTk5QzIwLjQ2NDYgMjMuMjU2MyAyMS40ODMyIDI0LjI3NDkgMjIuNzM5NiAyNC4yNzQ5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41MTk3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4LjM1MTMgMjQuMjc0OUMyOC4yNTAzIDI0LjUwMzYgMjguMjIwMiAyNC43NTczIDI4LjI2NDggMjUuMDAzM0MyOC4zMDk0IDI1LjI0OTMgMjguNDI2NyAyNS40NzYzIDI4LjYwMTUgMjUuNjU1TDI4LjY0NyAyNS43MDA1QzI4Ljc4OCAyNS44NDE0IDI4Ljg5OTkgMjYuMDA4NyAyOC45NzYyIDI2LjE5MjhDMjkuMDUyNiAyNi4zNzY5IDI5LjA5MTkgMjYuNTc0MyAyOS4wOTE5IDI2Ljc3MzZDMjkuMDkxOSAyNi45NzI5IDI5LjA1MjYgMjcuMTcwMyAyOC45NzYyIDI3LjM1NDRDMjguODk5OSAyNy41Mzg1IDI4Ljc4OCAyNy43MDU4IDI4LjY0NyAyNy44NDY2QzI4LjUwNjIgMjcuOTg3NiAyOC4zMzg5IDI4LjA5OTUgMjguMTU0OCAyOC4xNzU4QzI3Ljk3MDcgMjguMjUyMiAyNy43NzMzIDI4LjI5MTQgMjcuNTc0IDI4LjI5MTRDMjcuMzc0NyAyOC4yOTE0IDI3LjE3NzMgMjguMjUyMiAyNi45OTMyIDI4LjE3NThDMjYuODA5MSAyOC4wOTk1IDI2LjY0MTggMjcuOTg3NiAyNi41MDA5IDI3Ljg0NjZMMjYuNDU1NCAyNy44MDExQzI2LjI3NjcgMjcuNjI2MyAyNi4wNDk3IDI3LjUwOSAyNS44MDM3IDI3LjQ2NDRDMjUuNTU3NyAyNy40MTk4IDI1LjMwNCAyNy40NDk5IDI1LjA3NTMgMjcuNTUwOUMyNC44NTEgMjcuNjQ3IDI0LjY1OTcgMjcuODA2NiAyNC41MjUgMjguMDEwMUMyNC4zOTAyIDI4LjIxMzUgMjQuMzE3OSAyOC40NTE5IDI0LjMxNjkgMjguNjk2VjI4LjgyNDlDMjQuMzE2OSAyOS4yMjcxIDI0LjE1NzIgMjkuNjEyOSAyMy44NzI3IDI5Ljg5NzNDMjMuNTg4MyAzMC4xODE3IDIzLjIwMjUgMzAuMzQxNSAyMi44MDAzIDMwLjM0MTVDMjIuMzk4IDMwLjM0MTUgMjIuMDEyMyAzMC4xODE3IDIxLjcyNzggMjkuODk3M0MyMS40NDM0IDI5LjYxMjkgMjEuMjgzNiAyOS4yMjcxIDIxLjI4MzYgMjguODI0OVYyOC43NTY2QzIxLjI3NzcgMjguNTA1NiAyMS4xOTY1IDI4LjI2MjIgMjEuMDUwNCAyOC4wNThDMjAuOTA0NCAyNy44NTM4IDIwLjcwMDMgMjcuNjk4MiAyMC40NjQ2IDI3LjYxMTVDMjAuMjM1OSAyNy41MTA2IDE5Ljk4MjIgMjcuNDgwNSAxOS43MzYyIDI3LjUyNTFDMTkuNDkwMiAyNy41Njk3IDE5LjI2MzIgMjcuNjg3IDE5LjA4NDQgMjcuODYxOEwxOS4wMzg5IDI3LjkwNzNDMTguODk4MSAyOC4wNDgzIDE4LjczMDggMjguMTYwMiAxOC41NDY3IDI4LjIzNjVDMTguMzYyNiAyOC4zMTI4IDE4LjE2NTIgMjguMzUyMSAxNy45NjU5IDI4LjM1MjFDMTcuNzY2NiAyOC4zNTIxIDE3LjU2OTIgMjguMzEyOCAxNy4zODUxIDI4LjIzNjVDMTcuMjAxIDI4LjE2MDIgMTcuMDMzNyAyOC4wNDgzIDE2Ljg5MjkgMjcuOTA3M0MxNi43NTE5IDI3Ljc2NjQgMTYuNjQgMjcuNTk5MiAxNi41NjM3IDI3LjQxNUMxNi40ODczIDI3LjIzMDkgMTYuNDQ4IDI3LjAzMzYgMTYuNDQ4IDI2LjgzNDJDMTYuNDQ4IDI2LjYzNDkgMTYuNDg3MyAyNi40Mzc2IDE2LjU2MzcgMjYuMjUzNUMxNi42NCAyNi4wNjkzIDE2Ljc1MTkgMjUuOTAyMSAxNi44OTI5IDI1Ljc2MTJMMTYuOTM4NCAyNS43MTU3QzE3LjExMzIgMjUuNTM3IDE3LjIzMDUgMjUuMzEgMTcuMjc1MSAyNS4wNjRDMTcuMzE5NyAyNC44MTggMTcuMjg5NiAyNC41NjQzIDE3LjE4ODYgMjQuMzM1NUMxNy4wOTI1IDI0LjExMTIgMTYuOTMyOSAyMy45MiAxNi43Mjk0IDIzLjc4NTJDMTYuNTI2IDIzLjY1MDUgMTYuMjg3NiAyMy41NzgyIDE2LjA0MzUgMjMuNTc3MkgxNS45MTQ2QzE1LjUxMjQgMjMuNTc3MiAxNS4xMjY2IDIzLjQxNzQgMTQuODQyMiAyMy4xMzNDMTQuNTU3NyAyMi44NDg2IDE0LjM5NzkgMjIuNDYyOCAxNC4zOTc5IDIyLjA2MDVDMTQuMzk3OSAyMS42NTgzIDE0LjU1NzcgMjEuMjcyNSAxNC44NDIyIDIwLjk4ODFDMTUuMTI2NiAyMC43MDM3IDE1LjUxMjQgMjAuNTQzOSAxNS45MTQ2IDIwLjU0MzlIMTUuOTgyOUMxNi4yMzM5IDIwLjUzOCAxNi40NzczIDIwLjQ1NjggMTYuNjgxNSAyMC4zMTA3QzE2Ljg4NTcgMjAuMTY0NiAxNy4wNDEzIDE5Ljk2MDUgMTcuMTI3OSAxOS43MjQ5QzE3LjIyODkgMTkuNDk2MSAxNy4yNTkgMTkuMjQyNCAxNy4yMTQ0IDE4Ljk5NjRDMTcuMTY5OCAxOC43NTA0IDE3LjA1MjUgMTguNTIzNCAxNi44Nzc3IDE4LjM0NDdMMTYuODMyMiAxOC4yOTkyQzE2LjY5MTIgMTguMTU4MyAxNi41NzkzIDE3Ljk5MTEgMTYuNTAzIDE3LjgwN0MxNi40MjY3IDE3LjYyMjggMTYuMzg3NCAxNy40MjU1IDE2LjM4NzQgMTcuMjI2MkMxNi4zODc0IDE3LjAyNjggMTYuNDI2NyAxNi44Mjk1IDE2LjUwMyAxNi42NDU0QzE2LjU3OTMgMTYuNDYxMiAxNi42OTEyIDE2LjI5NCAxNi44MzIyIDE2LjE1MzFDMTYuOTczMSAxNi4wMTIxIDE3LjE0MDMgMTUuOTAwMiAxNy4zMjQ0IDE1LjgyMzlDMTcuNTA4NiAxNS43NDc2IDE3LjcwNTkgMTUuNzA4MyAxNy45MDUyIDE1LjcwODNDMTguMTA0NiAxNS43MDgzIDE4LjMwMTkgMTUuNzQ3NiAxOC40ODYgMTUuODIzOUMxOC42NzAyIDE1LjkwMDIgMTguODM3NCAxNi4wMTIxIDE4Ljk3ODMgMTYuMTUzMUwxOS4wMjM4IDE2LjE5ODZDMTkuMjAyNSAxNi4zNzM0IDE5LjQyOTUgMTYuNDkwNyAxOS42NzU1IDE2LjUzNTNDMTkuOTIxNSAxNi41Nzk5IDIwLjE3NTIgMTYuNTQ5OCAyMC40MDM5IDE2LjQ0ODlIMjAuNDY0NkMyMC42ODg5IDE2LjM1MjcgMjAuODgwMiAxNi4xOTMxIDIxLjAxNDkgMTUuOTg5N0MyMS4xNDk3IDE1Ljc4NjIgMjEuMjIyIDE1LjU0NzggMjEuMjIyOSAxNS4zMDM4VjE1LjE3NDlDMjEuMjIyOSAxNC43NzI2IDIxLjM4MjcgMTQuMzg2OSAyMS42NjcyIDE0LjEwMjRDMjEuOTUxNiAxMy44MTggMjIuMzM3NCAxMy42NTgyIDIyLjczOTYgMTMuNjU4MkMyMy4xNDE5IDEzLjY1ODIgMjMuNTI3NiAxMy44MTggMjMuODEyMSAxNC4xMDI0QzI0LjA5NjUgMTQuMzg2OSAyNC4yNTYzIDE0Ljc3MjYgMjQuMjU2MyAxNS4xNzQ5VjE1LjI0MzFDMjQuMjU3MyAxNS40ODcxIDI0LjMyOTYgMTUuNzI1NiAyNC40NjQzIDE1LjkyOUMyNC41OTkgMTYuMTMyNSAyNC43OTAzIDE2LjI5MjEgMjUuMDE0NiAxNi4zODgyQzI1LjI0MzMgMTYuNDg5MSAyNS40OTcxIDE2LjUxOTMgMjUuNzQzMSAxNi40NzQ3QzI1Ljk4OTEgMTYuNDMwMSAyNi4yMTYxIDE2LjMxMjggMjYuMzk0OCAxNi4xMzhMMjYuNDQwMyAxNi4wOTI1QzI2LjU4MTEgMTUuOTUxNCAyNi43NDg0IDE1LjgzOTYgMjYuOTMyNSAxNS43NjMyQzI3LjExNjcgMTUuNjg2OSAyNy4zMTQgMTUuNjQ3NiAyNy41MTMzIDE1LjY0NzZDMjcuNzEyNiAxNS42NDc2IDI3LjkxIDE1LjY4NjkgMjguMDk0MSAxNS43NjMyQzI4LjI3ODIgMTUuODM5NiAyOC40NDU1IDE1Ljk1MTQgMjguNTg2NCAxNi4wOTI1QzI4LjcyNzQgMTYuMjMzMyAyOC44MzkyIDE2LjQwMDYgMjguOTE1NiAxNi41ODQ3QzI4Ljk5MTkgMTYuNzY4OCAyOS4wMzEyIDE2Ljk2NjIgMjkuMDMxMiAxNy4xNjU1QzI5LjAzMTIgMTcuMzY0OCAyOC45OTE5IDE3LjU2MjIgMjguOTE1NiAxNy43NDYzQzI4LjgzOTIgMTcuOTMwNCAyOC43Mjc0IDE4LjA5NzcgMjguNTg2NCAxOC4yMzg1TDI4LjU0MDkgMTguMjg0QzI4LjM2NiAxOC40NjI4IDI4LjI0ODggMTguNjg5OCAyOC4yMDQyIDE4LjkzNThDMjguMTU5NiAxOS4xODE4IDI4LjE4OTcgMTkuNDM1NSAyOC4yOTA2IDE5LjY2NDJWMTkuNzI0OUMyOC4zODY3IDE5Ljk0OTIgMjguNTQ2NCAyMC4xNDA0IDI4Ljc0OTggMjAuMjc1MkMyOC45NTMzIDIwLjQwOTkgMjkuMTkxNyAyMC40ODIyIDI5LjQzNTcgMjAuNDgzMkgyOS41NjQ2QzI5Ljk2NjkgMjAuNDgzMiAzMC4zNTI2IDIwLjY0MyAzMC42MzcxIDIwLjkyNzRDMzAuOTIxNSAyMS4yMTE5IDMxLjA4MTMgMjEuNTk3NiAzMS4wODEzIDIxLjk5OTlDMzEuMDgxMyAyMi40MDIxIDMwLjkyMTUgMjIuNzg3OSAzMC42MzcxIDIzLjA3MjNDMzAuMzUyNiAyMy4zNTY3IDI5Ljk2NjkgMjMuNTE2NSAyOS41NjQ2IDIzLjUxNjVIMjkuNDk2NEMyOS4yNTIzIDIzLjUxNzUgMjkuMDEzOSAyMy41ODk4IDI4LjgxMDUgMjMuNzI0NkMyOC42MDcgMjMuODU5MyAyOC40NDc0IDI0LjA1MDYgMjguMzUxMyAyNC4yNzQ5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41MTk3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NjBfOTk4OFwiIHg9XCIwLjcxOTcyN1wiIHk9XCIwLjk4MDQ2OVwiIHdpZHRoPVwiNDQuMDRcIiBoZWlnaHQ9XCI0NC4wNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzYwXzk5ODhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc2MF85OTg4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF83NjBfOTk4OFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4LjJcIiBoZWlnaHQ9XCIxOC4yXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMy42Mzk2IDEyLjkwMDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDE5IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8cGF0aCBkPVwiTTcuNTMzNjkgMTIuODQ0MUgxNS4wMjQxTDEzLjU1NjggMTQuMzE3MkwxNC4zNTg3IDE1LjExOTFMMTcuMjAyNCAxMi4yNzU0TDE0LjM1ODcgOS40MzE2NEwxMy41NTY4IDEwLjIzMzZMMTUuMDI0MSAxMS43MDY2SDcuNTMzNjlWMTIuODQ0MVpcIiBmaWxsPVwiYmxhY2tcIi8+XHJcbiAgPHBhdGggZD1cIk0xMi42NTI2IDguODYzMVY2LjU4ODFDMTIuNjUzIDYuNTEzMjUgMTIuNjM4NyA2LjQzOTA0IDEyLjYxMDQgNi4zNjk3NUMxMi41ODIxIDYuMzAwNDUgMTIuNTQwNCA2LjIzNzQzIDEyLjQ4NzcgNi4xODQyOEw4LjUwNjQgMi4yMDMwM0M4LjQ1MzI2IDIuMTUwMzIgOC4zOTAyMyAyLjEwODYyIDguMzIwOTQgMi4wODAzMUM4LjI1MTY0IDIuMDUyMDEgOC4xNzc0NCAyLjAzNzY2IDguMTAyNTkgMi4wMzgxSDIuNDE1MDlDMi4xMTM0IDIuMDM4MSAxLjgyNDA4IDIuMTU3OTQgMS42MTA3NSAyLjM3MTI2QzEuMzk3NDMgMi41ODQ1OCAxLjI3NzU5IDIuODczOTEgMS4yNzc1OSAzLjE3NTZWMTYuODI1NkMxLjI3NzU5IDE3LjEyNzMgMS4zOTc0MyAxNy40MTY2IDEuNjEwNzUgMTcuNjI5OUMxLjgyNDA4IDE3Ljg0MzMgMi4xMTM0IDE3Ljk2MzEgMi40MTUwOSAxNy45NjMxSDExLjUxNTFDMTEuODE2OCAxNy45NjMxIDEyLjEwNjEgMTcuODQzMyAxMi4zMTk0IDE3LjYyOTlDMTIuNTMyNyAxNy40MTY2IDEyLjY1MjYgMTcuMTI3MyAxMi42NTI2IDE2LjgyNTZWMTUuNjg4MUgxMS41MTUxVjE2LjgyNTZIMi40MTUwOVYzLjE3NTZINi45NjUwOVY2LjU4ODFDNi45NjUwOSA2Ljg4OTc4IDcuMDg0OTMgNy4xNzkxMSA3LjI5ODI2IDcuMzkyNDNDNy41MTE1OCA3LjYwNTc1IDcuODAwOTEgNy43MjU2IDguMTAyNTkgNy43MjU2SDExLjUxNTFWOC44NjMxSDEyLjY1MjZaTTguMTAyNTkgNi41ODgxVjMuNDA4NzhMMTEuMjgxOSA2LjU4ODFIOC4xMDI1OVpcIiBmaWxsPVwiYmxhY2tcIi8+XHJcbjwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSDilIDilIAgVGFuZ28gQUkgU2VjdGlvbiAoQXVkaXQgU3VtbWFyeSArIFJNIFN1bW1hcnkgb25seSkg4pSA4pSAIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTYgcGItNFwiICpuZ0lmPVwiKHVzZXJzPy5yb2xlID09PSAnc3VwZXJhZG1pbicgJiYga2V5VHlwZSA9PT0gJ3JtJykgfHwga2V5VHlwZSA9PT0gJ2NsdXN0ZXInXCI+XHJcbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZ3LWJvbGQgbWItMVwiIHN0eWxlPVwiY29sb3I6ICMwNTkxRkY7XCI+XHJcbiAgICAgICAgICBUYW5nbyBBSVxyXG4gICAgICAgICAgPHN1cD5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNiAyM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjQwNjM0IDEuODgxODRMNS42MTE2OCAyLjc2NjQ4QzUuNzU4ODQgMy40MDE3MyA2LjA5MTgzIDMuOTkzMTUgNi41Nzg0MyA0LjQ4MzQ4QzcuMDY1MDMgNC45NzM4MiA3LjY4ODc2IDUuMzQ2NDYgOC4zODkyMyA1LjU2NTM0TDguNjQ4NjEgNS42NDYyOEw4LjM4OTIzIDUuNzI3MjFDNy42ODg3NiA1Ljk0NjA5IDcuMDY1MDMgNi4zMTg3NCA2LjU3ODQzIDYuODA5MDdDNi4wOTE4MyA3LjI5OTQgNS43NTg4NCA3Ljg5MDgyIDUuNjExNjggOC41MjYwN0w1LjQwNjM0IDkuNDEwNzJMNS4yMDA5OSA4LjUyNjA3QzUuMDUzODQgNy44OTA4MiA0LjcyMDg0IDcuMjk5NCA0LjIzNDI1IDYuODA5MDdDMy43NDc2NSA2LjMxODc0IDMuMTIzOTIgNS45NDYwOSAyLjQyMzQ0IDUuNzI3MjFMMi4xNjQwNiA1LjY0NjI4TDIuNDIzNDQgNS41NjUzNEMzLjEyMzkyIDUuMzQ2NDYgMy43NDc2NSA0Ljk3MzgyIDQuMjM0MjUgNC40ODM0OEM0LjcyMDg0IDMuOTkzMTUgNS4wNTM4NCAzLjQwMTczIDUuMjAwOTkgMi43NjY0OEw1LjQwNjM0IDEuODgxODRaTTE3LjI5NDcgMi44MjI5NUwxNy44OTU2IDUuMzIwNjVDMTguMjAxOCA2LjU5NDA1IDE4Ljg4MTggNy43NzY2MiAxOS44NjkyIDguNzUzMDRDMjAuODU2NiA5LjcyOTQ1IDIyLjExNzcgMTAuNDY2NCAyMy41Mjk2IDEwLjg5MkwyNC44NiAxMS4yOTI5TDIzLjUyOTYgMTEuNjkzOEMyMi4xMTc3IDEyLjExOTUgMjAuODU2NiAxMi44NTY0IDE5Ljg2OTIgMTMuODMyOEMxOC44ODE4IDE0LjgwOTMgMTguMjAxOCAxNS45OTE4IDE3Ljg5NTYgMTcuMjY1MkwxNy4yOTQ3IDE5Ljc2MjlMMTYuNjkzOCAxNy4yNjUyQzE2LjM4NzUgMTUuOTkxOCAxNS43MDc2IDE0LjgwOTMgMTQuNzIwMiAxMy44MzI4QzEzLjczMjggMTIuODU2NCAxMi40NzE3IDEyLjExOTUgMTEuMDU5OCAxMS42OTM4TDkuNzI5MzcgMTEuMjkyOUwxMS4wNTk4IDEwLjg5MkMxMi40NzE3IDEwLjQ2NjQgMTMuNzMyOCA5LjcyOTQ1IDE0LjcyMDIgOC43NTMwNEMxNS43MDc2IDcuNzc2NjIgMTYuMzg3NSA2LjU5NDA1IDE2LjY5MzggNS4zMjA2NUwxNy4yOTQ3IDIuODIyOTVaXCIgZmlsbD1cInVybCgjZXllVGVzdEFpR3JhZClcIi8+XHJcbiAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJleWVUZXN0QWlHcmFkXCIgeDE9XCIxMy41MTJcIiB5MT1cIjE5Ljc2MjlcIiB4Mj1cIjEzLjUxMlwiIHkyPVwiMS44ODE4NFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA1OTFGRlwiLz5cclxuICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvc3VwPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRhcmsgbWItMFwiIHN0eWxlPVwiZm9udC1zaXplOiAxM3B4O1wiPkFzayB0aGUgVGFuZ28gQUkgb24gd2hhdCB5b3Ugd2FudC4uPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSW5wdXQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA2MCU7IG1pbi13aWR0aDogMzAwcHg7XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBQbHVzIEJ1dHRvbiB3aXRoIE1vZGVsIFBvcHVwIChpbnNpZGUgaW5wdXQsIGxlZnQgc2lkZSkgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1tZW51LXdyYXAgcG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHRyYW5zbGF0ZS1taWRkbGUteSBwcy0yXCIgc3R5bGU9XCJsZWZ0OiA0cHg7IHotaW5kZXg6IDEwO1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXBsdXNcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBsdXNNZW51KClcIiBbY2xhc3Mub3Blbl09XCJzaG93UGx1c01lbnVcIj4vPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwXCIgKm5nSWY9XCJzaG93UGx1c01lbnVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1wb3B1cC1zZWN0aW9uLWxhYmVsXCI+TW9kZWw8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbSBvZiBtb2RlbE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkTW9kZWwgPT09IG0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGVsKG0udmFsdWUpOyBjbG9zZVBsdXNNZW51KClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9kZWwtaGludCBmdy1ib2xkIHRleHQtZGFya1wiPnt7IG0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBtcy0xXCIgc3R5bGU9XCJmb250LXNpemU6MTFweDtcIj57eyBtLnZhbHVlIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZE1vZGVsID09PSBtLnZhbHVlXCIgY2xhc3M9XCJjaGVjay1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjIwIDYgOSAxNyA0IDEyXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC1waWxsXCIgcGxhY2Vob2xkZXI9XCJBc2sgYW55dGhpbmcuLi5cIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogNDZweDtcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImV5ZVRlc3RDaGF0UXVlcnlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRXllVGVzdEFpU2VhcmNoKClcIiAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB0cmFuc2xhdGUtbWlkZGxlLXkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwZS0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtb2RlbC12ZXJzaW9uLXRhZyBtZS0xXCI+e3sgc2VsZWN0ZWRNb2RlbFZlcnNpb24gfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHRpdGxlPVwiSGlzdG9yeVwiPlxyXG4gICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjkzNzcyIDEwLjM1NTFMMy4zNTc2NyAxMC42NDg0TDIuNzc3NjMgMTAuOTQxN0wzLjMxODc0IDEyLjAxMTdMMy44OTg3OCAxMS43MTg0TDQuNDc4ODMgMTEuNDI1MUwzLjkzNzcyIDEwLjM1NTFaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHRpdGxlPVwiU2VuZFwiIChjbGljayk9XCJvbkV5ZVRlc3RBaVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY3OTcgMTAuMDAwM0gxNS44MzQ2TTE1LjgzNDYgMTAuMDAwM0wxMC4wMDEzIDQuMTY2OTlNMTUuODM0NiAxMC4wMDAzTDEwLjAwMTMgMTUuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+PCEtLSAvcG9zaXRpb24tcmVsYXRpdmUgLS0+XHJcbiAgICAgICAgPC9kaXY+PCEtLSAvd2lkdGggd3JhcHBlciAtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEFJIFJlc3BvbnNlIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0V5ZVRlc3RBaU1lc3NhZ2VcIiBjbGFzcz1cInJvdW5kZWQtMyBwLTQgbXgtYXV0b1wiIHN0eWxlPVwiYmFja2dyb3VuZDogI0VBRjhGRjtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWF2YXRhci1pY29uXCI+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDIyIDIyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzEyMFwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTE5Ljk5NDggMTguMDc1MkwxOS4yNzc5IDE3LjM1ODNMMTEuNTUzMyA5LjYzMzY5TDEzLjg0NDggNy4zNDIxOUwxNC4zOTM4IDYuNzkyMDZDMTQuNDQ2MiA2LjczODkyIDE0LjQ3NTggNi42Njc0MiAxNC40NzYyIDYuNTkyOEMxNC40NzYgNi41NTU5MSAxNC40Njg1IDYuNTE5NDEgMTQuNDU0MiA2LjQ4NTRDMTQuNDM5OSA2LjQ1MTQgMTQuNDE5IDYuNDIwNTUgMTQuMzkyOCA2LjM5NDYyTDEzLjg0MjYgNS44NDQ0OUwxMS40MTI1IDMuNDEwMDRMMTAuODYyNCAyLjg1OTkxQzEwLjgzNjQgMi44MzM0NiAxMC44MDU0IDIuODEyNDQgMTAuNzcxMiAyLjc5ODFDMTAuNzM2OSAyLjc4Mzc1IDEwLjcwMDIgMi43NzYzNyAxMC42NjMxIDIuNzc2MzdDMTAuNjI2IDIuNzc2MzcgMTAuNTg5MyAyLjc4Mzc1IDEwLjU1NTEgMi43OTgxQzEwLjUyMDkgMi44MTI0NCAxMC40ODk5IDIuODMzNDYgMTAuNDYzOSAyLjg1OTkxTDkuOTEzNzQgMy40MTExM0w2LjkzNTY2IDYuMzg5MjFDNi45MDkyMyA2LjQxNTEyIDYuODg4MjQgNi40NDYwNCA2Ljg3MzkxIDYuNDgwMTZDNi44NTk1OCA2LjUxNDI4IDYuODUyMiA2LjU1MDkyIDYuODUyMiA2LjU4NzkzQzYuODUyMiA2LjYyNDkzIDYuODU5NTggNi42NjE1NyA2Ljg3MzkxIDYuNjk1NjlDNi44ODgyNCA2LjcyOTgxIDYuOTA5MjMgNi43NjA3MyA2LjkzNTY2IDYuNzg2NjRMOS43ODA1MyA5LjYzMjYxTDIuMDU0ODUgMTcuMzU4M0wxLjM0MTIgMTguMDc1MkMxLjI4ODI4IDE4LjEyNzYgMS4yNTgzIDE4LjE5ODkgMS4yNTc4MSAxOC4yNzM0QzEuMjU4MTIgMTguMzQ1NCAxLjI4NTU4IDE4LjQxNDYgMS4zMzQ3IDE4LjQ2NzJDMS4zNjA5MyAxOC40OTUyIDEuMzkyNjIgMTguNTE3NiAxLjQyNzgzIDE4LjUzMjhDMS40NjMwMyAxOC41NDgxIDEuNTAxIDE4LjU1NiAxLjUzOTM4IDE4LjU1Nkg4LjQ4ODU5QzguNTYzMTggMTguNTU1NyA4LjYzNDYzIDE4LjUyNiA4LjY4NzM3IDE4LjQ3MzJDOC43NDAxMSAxOC40MjA1IDguNzY5ODcgMTguMzQ5IDguNzcwMTUgMTguMjc0NVYxNy41ODM1QzguNzcwMTUgMTcuNTA4OCA4Ljc0MDUyIDE3LjQzNyA4LjY4Nzc1IDE3LjM4NDFDOC42MzQ5OCAxNy4zMzExIDguNTYzMzYgMTcuMzAxMiA4LjQ4ODU5IDE3LjMwMDlIMy44ODYxTDEwLjY2NjQgMTAuNTIwNkwxNy40NDY2IDE3LjMwMDlIMTIuODA0MUMxMi43MjkzIDE3LjMwMTIgMTIuNjU3NyAxNy4zMzExIDEyLjYwNDkgMTcuMzg0MUMxMi41NTIyIDE3LjQzNyAxMi41MjI1IDE3LjUwODggMTIuNTIyNSAxNy41ODM1VjE4LjI3NDVDMTIuNTIyNCAxOC4zMTE2IDEyLjUyOTcgMTguMzQ4MyAxMi41NDQgMTguMzgyNUMxMi41NTgzIDE4LjQxNjggMTIuNTc5NCAxOC40NDc4IDEyLjYwNTkgMTguNDczN0MxMi42NTg1IDE4LjUyNjIgMTIuNzI5OCAxOC41NTU4IDEyLjgwNDEgMTguNTU2SDE5Ljc5NTVDMTkuODM0MSAxOC41NTYyIDE5Ljg3MjMgMTguNTQ4MyAxOS45MDc3IDE4LjUzMzFDMTkuOTQzMSAxOC41MTc4IDE5Ljk3NSAxOC40OTU0IDIwLjAwMTMgMTguNDY3MkMyMC4wNTE5IDE4LjQxNDEgMjAuMDc5NiAxOC4zNDMyIDIwLjA3ODQgMTguMjY5OUMyMC4wNzcxIDE4LjE5NjUgMjAuMDQ3MSAxOC4xMjY2IDE5Ljk5NDggMTguMDc1MlpNMTAuNjYyIDQuNDM1NTlMMTIuODIwMyA2LjU5Mzg4TDEwLjY2NzUgOC43NDY3Nkw4LjUwOTE3IDYuNTg4NDdMMTAuNjYyIDQuNDM1NTlaXCIgLz5cclxuICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTkuOTk0OCAxOC4wNzUyTC0xNy45NjkgNTYuMDM5TC0xNy44MDA0IDU2LjIwNzZMLTE3LjYzMDMgNTYuMzc0NkwxOS45OTQ4IDE4LjA3NTJaTTE5LjI3NzkgMTcuMzU4M0w1Ny4yNDE3IC0yMC42MDU1Vi0yMC42MDU1TDE5LjI3NzkgMTcuMzU4M1pNMTEuNTUzMyA5LjYzMzY5TC0yNi40MTA1IC0yOC4zMzAxTC02NC4zNzQzIDkuNjMzNjlMLTI2LjQxMDUgNDcuNTk3NUwxMS41NTMzIDkuNjMzNjlaTTEzLjg0NDggNy4zNDIxOUw1MS44MDg2IDQ1LjMwNkw1MS44MjczIDQ1LjI4NzNMNTEuODQ2IDQ1LjI2ODVMMTMuODQ0OCA3LjM0MjE5Wk0xNC4zOTM4IDYuNzkyMDZMNTIuMzk1MSA0NC43MTg0TDUyLjUxMSA0NC42MDIyTDUyLjYyNjIgNDQuNDg1NEwxNC4zOTM4IDYuNzkyMDZaTTE0LjQ3NjIgNi41OTI4TDY4LjE2NDQgNi44NjY2MUw2OC4xNjU3IDYuNTk3MzFMNjguMTY0NCA2LjMyODAxTDE0LjQ3NjIgNi41OTI4Wk0xNC4zOTI4IDYuMzk0NjJMLTIzLjU3MSA0NC4zNTg0TC0yMy40NTI4IDQ0LjQ3NjZMLTIzLjMzMzkgNDQuNTk0TDE0LjM5MjggNi4zOTQ2MlpNMTMuODQyNiA1Ljg0NDQ5TC0yNC4xNTQ5IDQzLjc3NDRMLTI0LjEzODEgNDMuNzkxNEwtMjQuMTIxMiA0My44MDgzTDEzLjg0MjYgNS44NDQ0OVpNMTEuNDEyNSAzLjQxMDA0TDQ5LjQxMDEgLTM0LjUxOTlMNDkuMzkzMiAtMzQuNTM2OEw0OS4zNzYzIC0zNC41NTM4TDExLjQxMjUgMy40MTAwNFpNMTAuODYyNCAyLjg1OTkxTC0yNy40Mjc0IDQwLjQ5NDlMLTI3LjI2NTEgNDAuNjZMLTI3LjEwMTQgNDAuODIzN0wxMC44NjI0IDIuODU5OTFaTTEwLjQ2MzkgMi44NTk5MUw0OC40NjQ5IDQwLjc4NjRMNDguNjA5OCA0MC42NDEyTDQ4Ljc1MzYgNDAuNDk0OUwxMC40NjM5IDIuODU5OTFaTTkuOTEzNzQgMy40MTExM0w0Ny44Nzc1IDQxLjM3NDlMNDcuODk2MiA0MS4zNTYzTDQ3LjkxNDggNDEuMzM3Nkw5LjkxMzc0IDMuNDExMTNaTTYuOTM1NjYgNi4zODkyMUw0NC41MjUzIDQ0LjcyMzVMNDQuNzEzMyA0NC41MzkyTDQ0Ljg5OTQgNDQuMzUzTDYuOTM1NjYgNi4zODkyMVpNNi44NTIyIDYuNTg3OTNINjAuNTQxMUg2Ljg1MjJaTTYuOTM1NjYgNi43ODY2NEw0NC45MDY3IC0zMS4xNjk5TDQ0LjcxNjkgLTMxLjM1OTdMNDQuNTI1MyAtMzEuNTQ3Nkw2LjkzNTY2IDYuNzg2NjRaTTkuNzgwNTMgOS42MzI2MUw0Ny43NDQzIDQ3LjU5NjRMODUuNzAwOSA5LjYzOTgzTDQ3Ljc1MTUgLTI4LjMyMzlMOS43ODA1MyA5LjYzMjYxWk0yLjA1NDg1IDE3LjM1ODNMLTM1LjkwODkgLTIwLjYwNTVMLTM1Ljk1MiAtMjAuNTYyNEwtMzUuOTk1IC0yMC41MTkyTDIuMDU0ODUgMTcuMzU4M1pNMS4zNDEyIDE4LjA3NTJMMzkuMTI4OCA1Ni4yMTQ0TDM5LjI2MDQgNTYuMDg0TDM5LjM5MTEgNTUuOTUyN0wxLjM0MTIgMTguMDc1MlpNMS4yNTc4MSAxOC4yNzM0TC01Mi40Mjk5IDE3LjkyMjlMLTUyLjQzMTggMTguMjEzNEwtNTIuNDMwNiAxOC41MDM4TDEuMjU3ODEgMTguMjczNFpNMS4zMzQ3IDE4LjQ2NzJMLTM3LjkxNDYgNTUuMTAwM0wtMzcuODg3NyA1NS4xMjkyTC0zNy44NjA3IDU1LjE1ODFMMS4zMzQ3IDE4LjQ2NzJaTTEuNTM5MzggMTguNTU2TDEuNTIyMzggNzIuMjQ0OUgxLjUzMDg4SDEuNTM5MzhWMTguNTU2Wk04LjQ4ODU5IDE4LjU1NlY3Mi4yNDQ5SDguNTkxMjVMOC42OTM5IDcyLjI0NDVMOC40ODg1OSAxOC41NTZaTTguNzcwMTUgMTguMjc0NUw2Mi40NTg3IDE4LjQ3OThMNjIuNDU5IDE4LjM3NzFWMTguMjc0NUg4Ljc3MDE1Wk04Ljc3MDE1IDE3LjU4MzVMLTQ0LjkxODcgMTcuNTgzMVYxNy41ODM1SDguNzcwMTVaTTguNDg4NTkgMTcuMzAwOUw4LjY5NDI5IC0zNi4zODc2TDguNTkxNDQgLTM2LjM4OEg4LjQ4ODU5VjE3LjMwMDlaTTMuODg2MSAxNy4zMDA5TC0zNC4wNzc3IC0yMC42NjI5TC0xMjUuNzMgNzAuOTg5OEgzLjg4NjFWMTcuMzAwOVpNMTAuNjY2NCAxMC41MjA2TDQ4LjYzMDIgLTI3LjQ0MzJMMTAuNjY2NCAtNjUuNDA3TC0yNy4yOTc0IC0yNy40NDMyTDEwLjY2NjQgMTAuNTIwNlpNMTcuNDQ2NiAxNy4zMDA5VjcwLjk4OThIMTQ3LjA2M0w1NS40MTA0IC0yMC42NjI5TDE3LjQ0NjYgMTcuMzAwOVpNMTIuODA0MSAxNy4zMDA5Vi0zNi4zODhIMTIuNzAxMkwxMi41OTg0IC0zNi4zODc2TDEyLjgwNDEgMTcuMzAwOVpNMTIuNTIyNSAxNy41ODM1SDY2LjIxMTRWMTcuNTgzMUwxMi41MjI1IDE3LjU4MzVaTTEyLjUyMjUgMTguMjc0NUw2Ni4yMTEgMTguNDgwM0w2Ni4yMTE0IDE4LjM3NzRWMTguMjc0NUgxMi41MjI1Wk0xMi42MDU5IDE4LjQ3MzdMNTAuNTM4NCAtMTkuNTIxM0w1MC4zNDMxIC0xOS43MTYzTDUwLjE0NTggLTE5LjkwOTNMMTIuNjA1OSAxOC40NzM3Wk0xMi44MDQxIDE4LjU1NkwxMi42NjAzIDcyLjI0NDdMMTIuNzMyMiA3Mi4yNDQ5SDEyLjgwNDFWMTguNTU2Wk0xOS43OTU1IDE4LjU1NkwxOS45ODU1IC0zNS4xMzI1TDE5Ljg5MDUgLTM1LjEzMjlIMTkuNzk1NVYxOC41NTZaTTIwLjAwMTMgMTguNDY3MkwtMTguODcyNCAtMTguNTY0M0wtMTkuMDM0MiAtMTguMzk0NUwtMTkuMTk0NCAtMTguMjIzM0wyMC4wMDEzIDE4LjQ2NzJaTTEwLjY2MiA0LjQzNTU5TDQ4LjYyNTggLTMzLjUyODJMMTAuNjYyIC03MS40OTJMLTI3LjMwMTcgLTMzLjUyODJMMTAuNjYyIDQuNDM1NTlaTTEyLjgyMDMgNi41OTM4OEw1MC43ODQxIDQ0LjU1NzdMODguNzQ3OSA2LjU5Mzg5TDUwLjc4NDEgLTMxLjM2OTlMMTIuODIwMyA2LjU5Mzg4Wk0xMC42Njc1IDguNzQ2NzZMLTI3LjI5NjMgNDYuNzEwNUwxMC42Njc0IDg0LjY3NDNMNDguNjMxMiA0Ni43MTA1TDEwLjY2NzUgOC43NDY3NlpNOC41MDkxNyA2LjU4ODQ3TC0yOS40NTQ2IC0zMS4zNzUzTC02Ny40MTg0IDYuNTg4NDdMLTI5LjQ1NDYgNDQuNTUyMkw4LjUwOTE3IDYuNTg4NDdaTTE5Ljk5NDggMTguMDc1Mkw1Ny45NTg2IC0xOS44ODg2TDU3LjI0MTcgLTIwLjYwNTVMMTkuMjc3OSAxNy4zNTgzTC0xOC42ODU5IDU1LjMyMjFMLTE3Ljk2OSA1Ni4wMzlMMTkuOTk0OCAxOC4wNzUyWk0xOS4yNzc5IDE3LjM1ODNMNTcuMjQxNyAtMjAuNjA1NUw0OS41MTcxIC0yOC4zMzAxTDExLjU1MzMgOS42MzM2OUwtMjYuNDEwNSA0Ny41OTc1TC0xOC42ODU5IDU1LjMyMjFMMTkuMjc3OSAxNy4zNTgzWk0xMS41NTMzIDkuNjMzNjlMNDkuNTE3MSA0Ny41OTc1TDUxLjgwODYgNDUuMzA2TDEzLjg0NDggNy4zNDIxOUwtMjQuMTE5IC0zMC42MjE2TC0yNi40MTA1IC0yOC4zMzAxTDExLjU1MzMgOS42MzM2OVpNMTMuODQ0OCA3LjM0MjE5TDUxLjg0NiA0NS4yNjg1TDUyLjM5NTEgNDQuNzE4NEwxNC4zOTM4IDYuNzkyMDZMLTIzLjYwNzQgLTMxLjEzNDNMLTI0LjE1NjQgLTMwLjU4NDFMMTMuODQ0OCA3LjM0MjE5Wk0xNC4zOTM4IDYuNzkyMDZMNTIuNjI2MiA0NC40ODU0QzYyLjUxNjQgMzQuNDUzOCA2OC4wOTI1IDIwLjk1MzIgNjguMTY0NCA2Ljg2NjYxTDE0LjQ3NjIgNi41OTI4TC0zOS4yMTIgNi4zMTg5OEMtMzkuMTQxIC03LjYxODM2IC0zMy42MjM5IC0yMC45NzU5IC0yMy44Mzg1IC0zMC45MDEzTDE0LjM5MzggNi43OTIwNlpNMTQuNDc2MiA2LjU5MjhMNjguMTY0NCA2LjMyODAxQzY4LjEyOTQgLTAuNzcwMTA3IDY2LjY5NDUgLTcuNzkyNTUgNjMuOTQwOSAtMTQuMzM2OUwxNC40NTQyIDYuNDg1NEwtMzUuMDMyNSAyNy4zMDc3Qy0zNy43NTc1IDIwLjgzMTQgLTM5LjE3NzQgMTMuODgxOSAtMzkuMjEyMSA2Ljg1NzU5TDE0LjQ3NjIgNi41OTI4Wk0xNC40NTQyIDYuNDg1NEw2My45NDA5IC0xNC4zMzY5QzYxLjE4NzcgLTIwLjg4MDIgNTcuMTcwNSAtMjYuODE2MiA1Mi4xMTk0IC0zMS44MDQ4TDE0LjM5MjggNi4zOTQ2MkwtMjMuMzMzOSA0NC41OTRDLTI4LjMzMjUgMzkuNjU3MyAtMzIuMzA3OSAzMy43ODMgLTM1LjAzMjUgMjcuMzA3N0wxNC40NTQyIDYuNDg1NFpNMTQuMzkyOCA2LjM5NDYyTDUyLjM1NjYgLTMxLjU2OTJMNTEuODA2NCAtMzIuMTE5M0wxMy44NDI2IDUuODQ0NDlMLTI0LjEyMTIgNDMuODA4M0wtMjMuNTcxIDQ0LjM1ODRMMTQuMzkyOCA2LjM5NDYyWk0xMy44NDI2IDUuODQ0NDlMNTEuODQwMiAtMzIuMDg1NUw0OS40MTAxIC0zNC41MTk5TDExLjQxMjUgMy40MTAwNEwtMjYuNTg1MSA0MS4zNEwtMjQuMTU0OSA0My43NzQ0TDEzLjg0MjYgNS44NDQ0OVpNMTEuNDEyNSAzLjQxMDA0TDQ5LjM3NjMgLTM0LjU1MzhMNDguODI2MSAtMzUuMTAzOUwxMC44NjI0IDIuODU5OTFMLTI3LjEwMTQgNDAuODIzN0wtMjYuNTUxMiA0MS4zNzM5TDExLjQxMjUgMy40MTAwNFpNMTAuODYyNCAyLjg1OTkxTDQ5LjE1MjEgLTM0Ljc3NTFDNDQuMTI5NyAtMzkuODg0OCAzOC4xMzk2IC00My45NDQgMzEuNTMwNyAtNDYuNzE0OUwxMC43NzEyIDIuNzk4MUwtOS45ODgzOCA1Mi4zMTExQy0xNi41Mjg5IDQ5LjU2ODkgLTIyLjQ1NyA0NS41NTE4IC0yNy40Mjc0IDQwLjQ5NDlMMTAuODYyNCAyLjg1OTkxWk0xMC43NzEyIDIuNzk4MUwzMS41MzA3IC00Ni43MTQ5QzI0LjkyMjMgLTQ5LjQ4NTcgMTcuODI4NSAtNTAuOTEyNSAxMC42NjMxIC01MC45MTI1VjIuNzc2MzdWNTYuNDY1M0MzLjU3MTk4IDU2LjQ2NTMgLTMuNDQ4MzkgNTUuMDUzMiAtOS45ODgzOCA1Mi4zMTExTDEwLjc3MTIgMi43OTgxWk0xMC42NjMxIDIuNzc2MzdWLTUwLjkxMjVDMy40OTc2MiAtNTAuOTEyNSAtMy41OTYxOSAtNDkuNDg1NiAtMTAuMjA0NCAtNDYuNzE0OUwxMC41NTUxIDIuNzk4MUwzMS4zMTQ2IDUyLjMxMTFDMjQuNzc0OCA1NS4wNTMxIDE3Ljc1NDQgNTYuNDY1MyAxMC42NjMxIDU2LjQ2NTNWMi43NzYzN1pNMTAuNTU1MSAyLjc5ODFMLTEwLjIwNDQgLTQ2LjcxNDlDLTE2LjgxMjkgLTQzLjk0NDIgLTIyLjgwMzIgLTM5Ljg4NTIgLTI3LjgyNTkgLTM0Ljc3NTFMMTAuNDYzOSAyLjg1OTkxTDQ4Ljc1MzYgNDAuNDk0OUM0My43ODI5IDQ1LjU1MjEgMzcuODU0NyA0OS41NjkgMzEuMzE0NiA1Mi4zMTExTDEwLjU1NTEgMi43OTgxWk0xMC40NjM5IDIuODU5OTFMLTI3LjUzNzIgLTM1LjA2NjVMLTI4LjA4NzMgLTM0LjUxNTNMOS45MTM3NCAzLjQxMTEzTDQ3LjkxNDggNDEuMzM3Nkw0OC40NjQ5IDQwLjc4NjRMMTAuNDYzOSAyLjg1OTkxWk05LjkxMzc0IDMuNDExMTNMLTI4LjA1IC0zNC41NTI3TC0zMS4wMjgxIC0zMS41NzQ2TDYuOTM1NjYgNi4zODkyMUw0NC44OTk0IDQ0LjM1M0w0Ny44Nzc1IDQxLjM3NDlMOS45MTM3NCAzLjQxMTEzWk02LjkzNTY2IDYuMzg5MjFMLTMwLjY1NCAtMzEuOTQ1MUMtMzUuNzc3NyAtMjYuOTIwOSAtMzkuODQ4MSAtMjAuOTI1MiAtNDIuNjI2OCAtMTQuMzA4N0w2Ljg3MzkxIDYuNDgwMTZMNTYuMzc0NiAyNy4yNjlDNTMuNjI0NiAzMy44MTcyIDQ5LjU5NjIgMzkuNzUxMSA0NC41MjUzIDQ0LjcyMzVMNi45MzU2NiA2LjM4OTIxWk02Ljg3MzkxIDYuNDgwMTZMLTQyLjYyNjggLTE0LjMwODdDLTQ1LjQwNTIgLTcuNjkyOTkgLTQ2LjgzNjcgLTAuNTg4OTQ3IC00Ni44MzY3IDYuNTg3OTNINi44NTIySDYwLjU0MTFDNjAuNTQxMSAxMy42OTA4IDU5LjEyNDQgMjAuNzIxNSA1Ni4zNzQ2IDI3LjI2OUw2Ljg3MzkxIDYuNDgwMTZaTTYuODUyMiA2LjU4NzkzSC00Ni44MzY3Qy00Ni44MzY3IDEzLjc2NDcgLTQ1LjQwNTIgMjAuODY4OCAtNDIuNjI2OCAyNy40ODQ1TDYuODczOTEgNi42OTU2OUw1Ni4zNzQ2IC0xNC4wOTMyQzU5LjEyNDQgLTcuNTQ1NjIgNjAuNTQxMSAtMC41MTQ4NDggNjAuNTQxMSA2LjU4NzkzSDYuODUyMlpNNi44NzM5MSA2LjY5NTY5TC00Mi42MjY4IDI3LjQ4NDVDLTM5Ljg0OCAzNC4xMDEyIC0zNS43Nzc1IDQwLjA5NjkgLTMwLjY1NCA0NS4xMjA5TDYuOTM1NjYgNi43ODY2NEw0NC41MjUzIC0zMS41NDc2QzQ5LjU5NiAtMjYuNTc1NCA1My42MjQ1IC0yMC42NDE2IDU2LjM3NDYgLTE0LjA5MzJMNi44NzM5MSA2LjY5NTY5Wk02LjkzNTY2IDYuNzg2NjRMLTMxLjAzNTQgNDQuNzQzMkwtMjguMTkwNSA0Ny41ODkyTDkuNzgwNTMgOS42MzI2MUw0Ny43NTE1IC0yOC4zMjM5TDQ0LjkwNjcgLTMxLjE2OTlMNi45MzU2NiA2Ljc4NjY0Wk05Ljc4MDUzIDkuNjMyNjFMLTI4LjE4MzMgLTI4LjMzMTJMLTM1LjkwODkgLTIwLjYwNTVMMi4wNTQ4NSAxNy4zNTgzTDQwLjAxODYgNTUuMzIyMUw0Ny43NDQzIDQ3LjU5NjRMOS43ODA1MyA5LjYzMjYxWk0yLjA1NDg1IDE3LjM1ODNMLTM1Ljk5NSAtMjAuNTE5MkwtMzYuNzA4NyAtMTkuODAyM0wxLjM0MTIgMTguMDc1MkwzOS4zOTExIDU1Ljk1MjdMNDAuMTA0NyA1NS4yMzU4TDIuMDU0ODUgMTcuMzU4M1pNMS4zNDEyIDE4LjA3NTJMLTM2LjQ0NjQgLTIwLjA2NEMtNDYuNTg5NCAtMTAuMDE0NSAtNTIuMzM2NyAzLjY0NDg1IC01Mi40Mjk5IDE3LjkyMjlMMS4yNTc4MSAxOC4yNzM0TDU0Ljk0NTYgMTguNjIzOEM1NC44NTMzIDMyLjc1MjkgNDkuMTY1OSA0Ni4yNjk3IDM5LjEyODggNTYuMjE0NEwxLjM0MTIgMTguMDc1MlpNMS4yNTc4MSAxOC4yNzM0TC01Mi40MzA2IDE4LjUwMzhDLTUyLjM3MjMgMzIuMDk1NSAtNDcuMTg4MyA0NS4xNjQ0IC0zNy45MTQ2IDU1LjEwMDNMMS4zMzQ3IDE4LjQ2NzJMNDAuNTg0IC0xOC4xNjU5QzQ5Ljc1OTQgLTguMzM1MjggNTQuODg4NSA0LjU5NTI2IDU0Ljk0NjIgMTguMDQyOUwxLjI1NzgxIDE4LjI3MzRaTTEuMzM0NyAxOC40NjcyTC0zNy44NjA3IDU1LjE1ODFDLTMyLjgxNDggNjAuNTQ4NCAtMjYuNzE2IDY0Ljg0NjUgLTE5Ljk0MTIgNjcuNzg1OUwxLjQyNzgzIDE4LjUzMjhMMjIuNzk2OSAtMzAuNzIwMkMyOS41MDEyIC0yNy44MTE0IDM1LjUzNjYgLTIzLjU1NzkgNDAuNTMwMSAtMTguMjIzNkwxLjMzNDcgMTguNDY3MlpNMS40Mjc4MyAxOC41MzI4TC0xOS45NDEyIDY3Ljc4NTlDLTEzLjE2NzggNzAuNzI0NiAtNS44NjI3IDcyLjI0MjYgMS41MjIzOCA3Mi4yNDQ5TDEuNTM5MzggMTguNTU2TDEuNTU2MzggLTM1LjEzMjlDOC44NjQ3IC0zNS4xMzA2IDE2LjA5MzkgLTMzLjYyODQgMjIuNzk2OSAtMzAuNzIwMkwxLjQyNzgzIDE4LjUzMjhaTTEuNTM5MzggMTguNTU2VjcyLjI0NDlIOC40ODg1OVYxOC41NTZWLTM1LjEzMjlIMS41MzkzOFYxOC41NTZaTTguNDg4NTkgMTguNTU2TDguNjkzOSA3Mi4yNDQ1QzIyLjkzNjcgNzIuMTkwMSAzNi41ODAyIDY2LjUwNzkgNDYuNjUxMiA1Ni40MzdMOC42ODczNyAxOC40NzMyTC0yOS4yNzY0IC0xOS40OTA1Qy0xOS4zMTEgLTI5LjQ1NiAtNS44MTAzIC0zNS4wNzg2IDguMjgzMjggLTM1LjEzMjVMOC40ODg1OSAxOC41NTZaTTguNjg3MzcgMTguNDczMkw0Ni42NTEyIDU2LjQzN0M1Ni43MjI5IDQ2LjM2NTIgNjIuNDA0MiAzMi43MjEzIDYyLjQ1ODcgMTguNDc5OEw4Ljc3MDE1IDE4LjI3NDVMLTQ0LjkxODQgMTguMDY5MUMtNDQuODY0NSAzLjk3NjgxIC0zOS4yNDI3IC05LjUyNDI0IC0yOS4yNzY0IC0xOS40OTA1TDguNjg3MzcgMTguNDczMlpNOC43NzAxNSAxOC4yNzQ1SDYyLjQ1OVYxNy41ODM1SDguNzcwMTVILTQ0LjkxODdWMTguMjc0NUg4Ljc3MDE1Wk04Ljc3MDE1IDE3LjU4MzVMNjIuNDU5IDE3LjU4MzlDNjIuNDU5MiAzLjMwNTQ1IDU2LjgwMTIgLTEwLjM5MTEgNDYuNzI0MyAtMjAuNTA2OEw4LjY4Nzc1IDE3LjM4NDFMLTI5LjM0ODggNTUuMjc0OUMtMzkuMzIwMiA0NS4yNjUyIC00NC45MTg4IDMxLjcxMjEgLTQ0LjkxODcgMTcuNTgzMUw4Ljc3MDE1IDE3LjU4MzVaTTguNjg3NzUgMTcuMzg0MUw0Ni43MjQzIC0yMC41MDY4QzM2LjY0OCAtMzAuNjIxOCAyMi45NzM1IC0zNi4zMzI5IDguNjk0MjkgLTM2LjM4NzZMOC40ODg1OSAxNy4zMDA5TDguMjgyODggNzAuOTg5NEMtNS44NDY3OSA3MC45MzUzIC0xOS4zNzgxIDY1LjI4NCAtMjkuMzQ4OCA1NS4yNzQ5TDguNjg3NzUgMTcuMzg0MVpNOC40ODg1OSAxNy4zMDA5Vi0zNi4zODhIMy44ODYxVjE3LjMwMDlWNzAuOTg5OEg4LjQ4ODU5VjE3LjMwMDlaTTMuODg2MSAxNy4zMDA5TDQxLjg0OTkgNTUuMjY0N0w0OC42MzAyIDQ4LjQ4NDRMMTAuNjY2NCAxMC41MjA2TC0yNy4yOTc0IC0yNy40NDMyTC0zNC4wNzc3IC0yMC42NjI5TDMuODg2MSAxNy4zMDA5Wk0xMC42NjY0IDEwLjUyMDZMLTI3LjI5NzQgNDguNDg0NEwtMjAuNTE3MSA1NS4yNjQ3TDE3LjQ0NjYgMTcuMzAwOUw1NS40MTA0IC0yMC42NjI5TDQ4LjYzMDIgLTI3LjQ0MzJMMTAuNjY2NCAxMC41MjA2Wk0xNy40NDY2IDE3LjMwMDlWLTM2LjM4OEgxMi44MDQxVjE3LjMwMDlWNzAuOTg5OEgxNy40NDY2VjE3LjMwMDlaTTEyLjgwNDEgMTcuMzAwOUwxMi41OTg0IC0zNi4zODc2Qy0xLjY4MDY2IC0zNi4zMzI5IC0xNS4zNTUyIC0zMC42MjE5IC0yNS40MzE2IC0yMC41MDY4TDEyLjYwNDkgMTcuMzg0MUw1MC42NDE1IDU1LjI3NDlDNDAuNjcwNyA2NS4yODQxIDI3LjEzOTMgNzAuOTM1MyAxMy4wMDk4IDcwLjk4OTRMMTIuODA0MSAxNy4zMDA5Wk0xMi42MDQ5IDE3LjM4NDFMLTI1LjQzMTYgLTIwLjUwNjhDLTM1LjUwODIgLTEwLjM5MTQgLTQxLjE2NjUgMy4zMDUwNCAtNDEuMTY2NCAxNy41ODM5TDEyLjUyMjUgMTcuNTgzNUw2Ni4yMTE0IDE3LjU4MzFDNjYuMjExNSAzMS43MTI1IDYwLjYxMjYgNDUuMjY1NSA1MC42NDE1IDU1LjI3NDlMMTIuNjA0OSAxNy4zODQxWk0xMi41MjI1IDE3LjU4MzVILTQxLjE2NjRWMTguMjc0NUgxMi41MjI1SDY2LjIxMTRWMTcuNTgzNUgxMi41MjI1Wk0xMi41MjI1IDE4LjI3NDVMLTQxLjE2NiAxOC4wNjg2Qy00MS4xOTM3IDI1LjI5MTMgLTM5Ljc3MTIgMzIuNDQ1OSAtMzYuOTgzIDM5LjEwODVMMTIuNTQ0IDE4LjM4MjVMNjIuMDcxMSAtMi4zNDM0NkM2NC44MzA2IDQuMjUwNzEgNjYuMjM4NCAxMS4zMzE4IDY2LjIxMSAxOC40ODAzTDEyLjUyMjUgMTguMjc0NVpNMTIuNTQ0IDE4LjM4MjVMLTM2Ljk4MyAzOS4xMDg1Qy0zNC4xOTQ3IDQ1Ljc3MTYgLTMwLjA5NzMgNTEuODA2OCAtMjQuOTM0IDU2Ljg1NjdMMTIuNjA1OSAxOC40NzM3TDUwLjE0NTggLTE5LjkwOTNDNTUuMjU2MSAtMTQuOTExMyA1OS4zMTE0IC04LjkzODA5IDYyLjA3MTEgLTIuMzQzNDZMMTIuNTQ0IDE4LjM4MjVaTTEyLjYwNTkgMTguNDczN0wtMjUuMzI2NiA1Ni40Njg3Qy0xNS4yNDM1IDY2LjUzNTMgLTEuNTg4NDYgNzIuMjA2NiAxMi42NjAzIDcyLjI0NDdMMTIuODA0MSAxOC41NTZMMTIuOTQ3OSAtMzUuMTMyN0MyNy4wNDggLTM1LjA5NDkgNDAuNTYwNSAtMjkuNDgyOCA1MC41Mzg0IC0xOS41MjEzTDEyLjYwNTkgMTguNDczN1pNMTIuODA0MSAxOC41NTZWNzIuMjQ0OUgxOS43OTU1VjE4LjU1NlYtMzUuMTMyOUgxMi44MDQxVjE4LjU1NlpNMTkuNzk1NSAxOC41NTZMMTkuNjA1NiA3Mi4yNDQ2QzI3LjAyNjcgNzIuMjcwOCAzNC4zNzE2IDcwLjc2NjMgNDEuMTgxOSA2Ny44MjcxTDE5LjkwNzcgMTguNTMzMUwtMS4zNjY2IC0zMC43NjFDNS4zNzI5NyAtMzMuNjY5NiAxMi42NDE1IC0zNS4xNTg1IDE5Ljk4NTUgLTM1LjEzMjVMMTkuNzk1NSAxOC41NTZaTTE5LjkwNzcgMTguNTMzMUw0MS4xODE5IDY3LjgyNzFDNDcuOTk0MyA2NC44ODcgNTQuMTI2OSA2MC41NzQgNTkuMTk3IDU1LjE1NzdMMjAuMDAxMyAxOC40NjcyTC0xOS4xOTQ0IC0xOC4yMjMzQy0xNC4xNzcgLTIzLjU4MzMgLTguMTA4MTcgLTI3Ljg1MTUgLTEuMzY2NiAtMzAuNzYxTDE5LjkwNzcgMTguNTMzMVpNMjAuMDAxMyAxOC40NjcyTDU4Ljg3NSA1NS40OTg3QzY4LjY0NzUgNDUuMjQgNzMuOTk0NyAzMS41NDg4IDczLjc1OTkgMTcuMzgwMUwyMC4wNzg0IDE4LjI2OTlMLTMzLjYwMzIgMTkuMTU5NkMtMzMuODM1NiA1LjEzNzY2IC0yOC41NDM3IC04LjQxMTgzIC0xOC44NzI0IC0xOC41NjQzTDIwLjAwMTMgMTguNDY3MlpNMjAuMDc4NCAxOC4yNjk5TDczLjc1OTkgMTcuMzgwMUM3My41MjUxIDMuMjExOTIgNjcuNzI3NCAtMTAuMjk0NyA1Ny42MTk5IC0yMC4yMjQyTDE5Ljk5NDggMTguMDc1MkwtMTcuNjMwMyA1Ni4zNzQ2Qy0yNy42MzMxIDQ2LjU0NzkgLTMzLjM3MDggMzMuMTgxMSAtMzMuNjAzMiAxOS4xNTk2TDIwLjA3ODQgMTguMjY5OVpNMTAuNjYyIDQuNDM1NTlMLTI3LjMwMTcgNDIuMzk5NEwtMjUuMTQzNCA0NC41NTc3TDEyLjgyMDMgNi41OTM4OEw1MC43ODQxIC0zMS4zNjk5TDQ4LjYyNTggLTMzLjUyODJMMTAuNjYyIDQuNDM1NTlaTTEyLjgyMDMgNi41OTM4OEwtMjUuMTQzNCAtMzEuMzY5OUwtMjcuMjk2MyAtMjkuMjE3TDEwLjY2NzUgOC43NDY3Nkw0OC42MzEyIDQ2LjcxMDVMNTAuNzg0MSA0NC41NTc3TDEyLjgyMDMgNi41OTM4OFpNMTAuNjY3NSA4Ljc0Njc2TDQ4LjYzMTMgLTI5LjIxN0w0Ni40NzMgLTMxLjM3NTNMOC41MDkxNyA2LjU4ODQ3TC0yOS40NTQ2IDQ0LjU1MjJMLTI3LjI5NjMgNDYuNzEwNUwxMC42Njc1IDguNzQ2NzZaTTguNTA5MTcgNi41ODg0N0w0Ni40NzMgNDQuNTUyMkw0OC42MjU4IDQyLjM5OTRMMTAuNjYyIDQuNDM1NTlMLTI3LjMwMTcgLTMzLjUyODJMLTI5LjQ1NDYgLTMxLjM3NTNMOC41MDkxNyA2LjU4ODQ3WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBtYXNrPVwidXJsKCNwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzEyMClcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHN0cm9uZz5BSSBBc3Npc3RhbnQ8L3N0cm9uZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEFpTWVzc2FnZTsgZWxzZSBhaUxvYWRpbmdcIiBbaW5uZXJIVE1MXT1cInBhcnNlQWlNYXJrZG93bihleWVUZXN0QWlNZXNzYWdlKVwiPjwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYWlMb2FkaW5nPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDtcIj5BSSBpcyB0aGlua2luZy4uLjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgZXllIHRlc3QgdGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCJrZXlUeXBlID09PSdzdG9yZSdcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdkYXRlJylcIj4gRGF0ZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdhdWRpdGVkRGF0ZScpXCI+QXVkaXRlZCBEYXRlIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXVkaXRlZERhdGUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F1ZGl0ZWREYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJNIE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2x1c3RlciBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVOYW1lJylcIj5TdG9yZSBOYW1lIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlSWQnKVwiPlN0b3JlIElEIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+RW5nYWdlbWVudCBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+T3B0b20gSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGNsYXNzPVwidGV4dC1zdGFydFwiPk9wdG9tIEVtYWlsIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgPT09J3JlbW90ZSdcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5PcHRvbSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+VG9rZW4gTm88L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwidGV4dC1zdGFydFwiPlF1ZXVlIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+UG93ZXIgVHlwZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnQ29tcGxpYW5jZVNjb3JlJylcIj5UYW5nbyBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ0NvbXBsaWFuY2VTY29yZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnQ29tcGxpYW5jZVNjb3JlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY292ZXJlZFN0ZXBzQUknKVwiPlN0ZXBzIENvdmVyZWQgQnkgQUkgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb3ZlcmVkU3RlcHNBSScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY292ZXJlZFN0ZXBzQUknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCd0cnVzdFNjb3JlJylcIj5UcnVzdCBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuXHJcbjx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXVkaXRlZFN0ZXBzJylcIj5TdGVwcyBDb3ZlcmVkIEJ5IEh1bWFuIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXVkaXRlZFN0ZXBzJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdGVkU3RlcHMnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SHVtYW4gQXVkaXRlZCBTY29yZTwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCd2aXNpdG9yc1R5cGUnKVwiPlZpc2l0b3IgVHlwZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3Zpc2l0b3JzVHlwZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAndmlzaXRvcnNUeXBlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5UZXN0IER1cmF0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCdjb21tZW50JylcIj5FeWUgVGVzdCBTdGF0dXMgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21tZW50JyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21tZW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNvcnQoJ3N1YkNvbW1lbnQnKVwiPkNvbW1lbnRzIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3ViQ29tbWVudCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3ViQ29tbWVudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXVkaXRTdGF0dXMnKVwiPkF1ZGl0IFN0YXR1cyA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F1ZGl0U3RhdHVzJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdFN0YXR1cycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5BdWRpdGVkIEJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvYmogb2YgZXllVGVzdERhdGE7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWREYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSAnc3VwZXJhZG1pbidcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqPy5STU5hbWVcIj5cclxuICAgIDwhLS0gU3BsaXQgYW5kIHNob3cgdGhlIGZpcnN0IHZhbHVlIC0tPlxyXG4gICAge3sgb2JqLlJNTmFtZS5zcGxpdCgnLCcpWzBdIH19XHJcblxyXG4gICAgPCEtLSBTaG93ICtOIGJhZGdlIGlmIG1vcmUgdmFsdWVzIGV4aXN0IC0tPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJvYmouUk1OYW1lLnNwbGl0KCcsJykubGVuZ3RoID4gMVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XHJcbiAgICAgICt7eyBvYmouUk1OYW1lLnNwbGl0KCcsJykubGVuZ3RoIC0gMSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqPy5jbHVzdGVyTmFtZVwiPlxyXG4ge3sgb2JqLmNsdXN0ZXJOYW1lLnNwbGl0KCcsJylbMF0gfX1cclxuIDxzcGFuICpuZ0lmPVwib2JqLmNsdXN0ZXJOYW1lLnNwbGl0KCcsJykubGVuZ3RoID4gMVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XHJcbiAgICAgICt7eyBvYmouY2x1c3Rlck5hbWUuc3BsaXQoJywnKS5sZW5ndGggLSAxIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN0b3JlSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPnt7b2JqPy5lbmdhZ2VtZW50SWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCI+PHNwYW4gKm5nSWY9XCJvYmo/Lm9wdHVtSWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSB1bmRlcmxpbmVcIiBbbmdDbGFzc109XCJmaWx0ZXJCeU9wdG9tID09PSBnZXRSb3dPcHRvbUlkKG9iaikgPyAnZnctYm9sZCcgOiAnJ1wiIChjbGljayk9XCJmaWx0ZXJPcHRvbShvYmopXCI+e3tvYmo/Lm9wdHVtSWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCI+PHNwYW4gKm5nSWY9XCJvYmo/Lm9wdG1fdXNlcklkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lXCIgW25nQ2xhc3NdPVwiZmlsdGVyQnlPcHRvbSA9PT0gZ2V0Um93T3B0b21JZChvYmopID8gJ2Z3LWJvbGQnIDogJydcIiAoY2xpY2spPVwiZmlsdGVyT3B0b20ob2JqKVwiPnt7b2JqPy5vcHRtX3VzZXJJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiPnt7b2JqPy5zYWxlc21hbkVtYWlsSWQgPyBvYmo/LnNhbGVzbWFuRW1haWxJZCA6Jyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgPT09J3JlbW90ZSdcIj57e29iaj8udXNlckVtYWlsID8gb2JqPy51c2VyRW1haWwgOicnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCI+e3tvYmo/LmRpc3BsYXlOYW1lID8gb2JqPy5kaXNwbGF5TmFtZSA6Jyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwiZW5nYWdlLXRleHRcIj57e29iaj8udG9rZW5ObyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnRva2VuTm86Jyd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPnt7b2JqPy5xdWV1ZUlkID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8ucXVldWVJZDonJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgPnt7b2JqPy5uZWFyQWRkaXRpb24gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqPy5uZWFyQWRkaXRpb24gPT09IFwidHJ1ZVwiPyBcIldpdGggTmVhciBBZGRpdGlvblwiIDpcIldpdGhvdXQgTmVhciBBZGRpdGlvblwiOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gIHt7IG9iaj8uY29tcGxpYW5jZVNjb3JlID8/ICctLScgfX1cclxuPC90ZD5cclxuPHRkPnt7b2JqPy5jb3ZlcmVkU3RlcHNBSSA/IG9iaj8uY292ZXJlZFN0ZXBzQUk6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnRydXN0U2NvcmUgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWRTdGVwcyA/IG9iaj8uYXVkaXRlZFN0ZXBzOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5odW1hbkNvbXBsaWFuY2VTY29yZSA/IG9iaj8uaHVtYW5Db21wbGlhbmNlU2NvcmUgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj57e29iaj8udmlzaXRvcnNUeXBlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8udmlzaXRvcnNUeXBlOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8ubWluID8gb2JqPy5taW4gOicwJ319IG1pbnMge3tvYmo/LnNlYyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnNlYzonMCd9fSBzZWNzPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj5cclxuICA8c3BhbiBcclxuICAgIGNsYXNzPVwiYmFkZ2VcIiBcclxuICAgIFtuZ0NsYXNzXT1cIm9iaj8uY29tbWVudCA/ICdiYWRnZS1saWdodC1kYW5nZXInIDogJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnXCI+XHJcbiAgICB7eyBvYmo/LmNvbW1lbnQgPyAnRmFrZScgOiAnR2VudWluZScgfX1cclxuICA8L3NwYW4+XHJcbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN1YkNvbW1lbnQgPyBvYmo/LnN1YkNvbW1lbnQ6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmo/LmF1ZGl0U3RhdHVzID09PSdZZXQtdG8tQXVkaXQnXCI+e3tvYmo/LmF1ZGl0U3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib2JqPy5hdWRpdFN0YXR1cyA9PT0nUmUtQXVkaXRlZCdcIj57e29iaj8uYXVkaXRTdGF0dXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmo/LmF1ZGl0U3RhdHVzID09PSdBdWRpdGVkJ1wiPnt7b2JqPy5hdWRpdFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9iaj8uYXVkaXRTdGF0dXMgPT09J0luLVByb2dyZXNzJ1wiPnt7b2JqPy5hdWRpdFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWRCeT9vYmo/LmF1ZGl0ZWRCeTpcIi1cIn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZXllVGVzdFZpZXcob2JqKVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjgzMzQ5NiA4LjAwMDE2QzAuODMzNDk2IDguMDAwMTYgNC4xNjY4MyAxLjMzMzUgMTAuMDAwMiAxLjMzMzVDMTUuODMzNSAxLjMzMzUgMTkuMTY2OCA4LjAwMDE2IDE5LjE2NjggOC4wMDAxNkMxOS4xNjY4IDguMDAwMTYgMTUuODMzNSAxNC42NjY4IDEwLjAwMDIgMTQuNjY2OEM0LjE2NjgzIDE0LjY2NjggMC44MzM0OTYgOC4wMDAxNiAwLjgzMzQ5NiA4LjAwMDE2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMDIgMTAuNTAwMkMxMS4zODA5IDEwLjUwMDIgMTIuNTAwMiA5LjM4MDg3IDEyLjUwMDIgOC4wMDAxNkMxMi41MDAyIDYuNjE5NDUgMTEuMzgwOSA1LjUwMDE2IDEwLjAwMDIgNS41MDAxNkM4LjYxOTQ1IDUuNTAwMTYgNy41MDAxNiA2LjYxOTQ1IDcuNTAwMTYgOC4wMDAxNkM3LjUwMDE2IDkuMzgwODcgOC42MTk0NSAxMC41MDAyIDEwLjAwMDIgMTAuNTAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCJrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdSTU5hbWUnKVwiPiBSTSBOYW1lIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnUk1OYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdSTU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjbHVzdGVyQ291bnQnKVwiPiBDbHVzdGVycyBDb3VudCA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NsdXN0ZXJDb3VudCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3RlckNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVzQ291bnQnKVwiPlN0b3JlcyBDb3VudCA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3Jlc0NvdW50JyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZXNDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIFRhbmdvIEFJIEZpbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgIFRydXN0IEF1ZGl0IENvbXBsZXRlZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ28gU2NvcmUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0IFNjb3JlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9iaiBvZiBleWVUZXN0RGF0YTsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uUk1OYW1lID8gb2JqPy5STU5hbWU6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jbHVzdGVyQ291bnQgPyBvYmo/LmNsdXN0ZXJDb3VudDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN0b3Jlc0NvdW50ID8gb2JqPy5zdG9yZXNDb3VudDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnRvdGFsRmlsZXMgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jb21wbGV0ZWRGaWxlcyA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5jb21wbGlhbmNlU2NvcmUgPz8gJy0tJ319XHJcbiBcclxuPC90ZD5cclxuPHRkPlxyXG4gIHt7IG9iaj8udHJ1c3RTY29yZSA/PyAnLS0nIH19XHJcbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInR5cGVWYWwoJ2NsdXN0ZXInLG9iailcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwia2V5VHlwZSA9PT0nY2x1c3RlcidcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjbHVzdGVyTmFtZScpXCI+IENsdXN0ZXJzIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjbHVzdGVyTmFtZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZXNDb3VudCcpXCI+U3RvcmVzIENvdW50IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVzQ291bnQnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3Jlc0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgVGFuZ28gQUkgRmlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1c3QgQXVkaXQgQ29tcGxldGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIFNjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0IFNjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb2JqIG9mIGV5ZVRlc3REYXRhOyBsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jbHVzdGVyTmFtZSA/IG9iaj8uY2x1c3Rlck5hbWU6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5zdG9yZXNDb3VudCA/IG9iaj8uc3RvcmVzQ291bnQ6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy50b3RhbEZpbGVzID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uY29tcGxldGVkRmlsZXMgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICB7eyBvYmo/LmNvbXBsaWFuY2VTY29yZSA/PyAgJy0tJyB9fVxyXG48L3RkPlxyXG48dGQ+XHJcbiAge3sgb2JqPy50cnVzdFNjb3JlID8/ICctLScgfX1cclxuPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidHlwZVZhbCgnc3RvcmUnLG9iailcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlclwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcblxyXG48c2VjdGlvbiAqbmdJZj1cImV5ZVZpZXdcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBuZXcxIG10LTRcIj5cclxuPGRpdiAgY2xhc3M9XCJjYXJkIHAtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJiYWNrTmF2aWdhdGlvbigpXCIgIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDkuOTk5ODRINC4xNjY1TTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgMTUuODMzMk00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDQuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiAgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlICE9PSAncmVtb3RlJ1wiIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+e3thdWRpdERldGFpbHM/Lm9wdHVtSWR9fTwvc3Bhbj4gXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTAuNVY5LjVDMTAgOC45Njk1NyA5Ljc4OTI5IDguNDYwODYgOS40MTQyMSA4LjA4NTc5QzkuMDM5MTQgNy43MTA3MSA4LjUzMDQzIDcuNSA4IDcuNUg0QzMuNDY5NTcgNy41IDIuOTYwODYgNy43MTA3MSAyLjU4NTc5IDguMDg1NzlDMi4yMTA3MSA4LjQ2MDg2IDIgOC45Njk1NyAyIDkuNVYxMC41TTggMy41QzggNC42MDQ1NyA3LjEwNDU3IDUuNSA2IDUuNUM0Ljg5NTQzIDUuNSA0IDQuNjA0NTcgNCAzLjVDNCAyLjM5NTQzIDQuODk1NDMgMS41IDYgMS41QzcuMTA0NTcgMS41IDggMi4zOTU0MyA4IDMuNVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/LmRpc3BsYXlOYW1lID8gYXVkaXREZXRhaWxzPy5kaXNwbGF5TmFtZTonLS0nfX08L3NwYW4+IFxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBtcy0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyAgd2lkdGg9XCI0NlwiIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA0NiA0NlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCJcIiBvcGFjaXR5PVwiMC4xXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIlwiIHN0cm9rZS13aWR0aD1cIjZcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggIGQ9XCJNMTUuNjc5OSAxOC44MDM5TDE1LjYyNjcgMTguODg3MUMxNS4wNjg2IDE5Ljg3NDEgMTUuNjY0NCAyMS4xMjE1IDE2LjczNjEgMjEuMjY0NkMxNi44MzMxIDIxLjI3NjUgMTYuOTIzNSAyMS4yODI4IDE3LjAxMTggMjEuMjgyOEMxNy41ODk5IDIxLjI4MjggMTguMTAxMSAyMS4wMzQ4IDE4LjQ1NzQgMjAuNjQ4TDE5LjAxMDcgMjAuMDQ3NEwxOS41NjIxIDIwLjY0OThDMTkuOTE0MSAyMS4wMzQyIDIwLjQyNDEgMjEuMjgyOCAyMS4wMDYxIDIxLjI4MjhDMjEuNTg1NiAyMS4yODI4IDIyLjA5ODUgMjEuMDMzOCAyMi40NTAyIDIwLjY0OThMMjMuMDAzMyAyMC4wNDU1TDIzLjU1NjUgMjAuNjQ5OEMyMy45MDgxIDIxLjAzMzggMjQuNDIxMSAyMS4yODI4IDI1LjAwMDUgMjEuMjgyOEMyNS41OCAyMS4yODI4IDI2LjA5MjkgMjEuMDMzOCAyNi40NDQ1IDIwLjY0OThMMjYuOTk3NyAyMC4wNDU1TDI3LjU1MDkgMjAuNjQ5OEMyNy45MDI1IDIxLjAzMzggMjguNDE1NSAyMS4yODI4IDI4Ljk5NDkgMjEuMjgyOEMyOS4wODAzIDIxLjI4MjggMjkuMTczMyAyMS4yNzY1IDI5LjI2OTcgMjEuMjY0N0MzMC4zNjQ5IDIxLjExNTQgMzAuOTYyNyAxOS44MDEyIDMwLjMyNCAxOC44MDQ0QzMwLjMyNCAxOC44MDQzIDMwLjMyNCAxOC44MDQzIDMwLjMyMzkgMTguODA0MkwyOC41NjU4IDE2LjA2MjhMMjguNTY1OCAxNi4wNjI4TDI4LjU2NDggMTYuMDYxNEMyOC41NDk2IDE2LjAzNzUgMjguNTEyMSAxNi4wMTIgMjguNDY1IDE2LjAxMkgxNy41MzU2QzE3LjQ4ODQgMTYuMDEyIDE3LjQ1MDkgMTYuMDM3NSAxNy40MzU3IDE2LjA2MTRMMTcuNDM1MSAxNi4wNjIzTDE1LjY3OTkgMTguODAzOVpNMjguNjUxNCAyMy43MzcyVjI2Ljg2OTFWMjcuNjE5MUgyNy45MDE0SDE4LjA5OTJIMTcuMzQ5MlYyNi44NjkxVjIzLjczNzZDMTcuMjM5IDIzLjc0NTggMTcuMTI3NCAyMy43NTAxIDE3LjAxNDggMjMuNzUwMUMxNi45NzI1IDIzLjc1MDEgMTYuOTMwNSAyMy43NDk0IDE2Ljg4ODggMjMuNzQ4MlYyNi44NjkxVjI4LjgwMzZDMTYuODg4OCAyOS40NDcxIDE3LjQyMjcgMjkuOTg4MiAxOC4wOTkyIDI5Ljk4ODJIMjcuOTAxNEMyOC41Nzc5IDI5Ljk4ODIgMjkuMTExOCAyOS40NDcxIDI5LjExMTggMjguODAzNlYyNi44NjkxVjIzLjc0ODRDMjkuMDcyIDIzLjc0OTUgMjkuMDMyIDIzLjc1MDEgMjguOTkxOCAyMy43NTAxQzI4Ljg3NzQgMjMuNzUwMSAyOC43NjM5IDIzLjc0NTcgMjguNjUxNCAyMy43MzcyWlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIj48L3BhdGg+PC9zdmc+IFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMSBzdWItdGl0bGVcIj4ge3thdWRpdERldGFpbHMuc3RvcmVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIDwhLS0gZGlzcGxheU5hbWUgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRBdWRpdFR5cGUgIT09ICdyZW1vdGUnXCIgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjI1MDIxIDYuNTAwMjhDNS45MTMyOSA2LjUwMDI4IDYuNTQ5MjEgNi4yMzY4OSA3LjAxODA3IDUuNzY4MDdDNy40ODY5NCA1LjI5OTI0IDcuNzUwMzUgNC42NjMzNyA3Ljc1MDM1IDQuMDAwMzVDNy43NTAzNSAzLjMzNzMyIDcuNDg2OTQgMi43MDE0NiA3LjAxODA3IDIuMjMyNjNDNi41NDkyMSAxLjc2MzggNS45MTMyOSAxLjUwMDQyIDUuMjUwMjEgMS41MDA0MkM0LjU4NzEzIDEuNTAwNDIgMy45NTEyMSAxLjc2MzggMy40ODIzNCAyLjIzMjYzQzMuMDEzNDggMi43MDE0NiAyLjc1MDA3IDMuMzM3MzIgMi43NTAwNyA0LjAwMDM1QzIuNzUwMDcgNC42NjMzNyAzLjAxMzQ4IDUuMjk5MjQgMy40ODIzNCA1Ljc2ODA3QzMuOTUxMjEgNi4yMzY4OSA0LjU4NzEzIDYuNTAwMjggNS4yNTAyMSA2LjUwMDI4Wk01LjI1MDIxIDUuMjUwMzFDNC45MTg2NyA1LjI1MDMxIDQuNjAwNzEgNS4xMTg2MiA0LjM2NjI4IDQuODg0MjFDNC4xMzE4NCA0LjY0OTc5IDQuMDAwMTQgNC4zMzE4NiA0LjAwMDE0IDQuMDAwMzVDNC4wMDAxNCAzLjY2ODg0IDQuMTMxODQgMy4zNTA5IDQuMzY2MjggMy4xMTY0OUM0LjYwMDcxIDIuODgyMDcgNC45MTg2NyAyLjc1MDM4IDUuMjUwMjEgMi43NTAzOEM1LjU4MTc1IDIuNzUwMzggNS44OTk3MSAyLjg4MjA3IDYuMTM0MTQgMy4xMTY0OUM2LjM2ODU3IDMuMzUwOSA2LjUwMDI4IDMuNjY4ODQgNi41MDAyOCA0LjAwMDM1QzYuNTAwMjggNC4zMzE4NiA2LjM2ODU3IDQuNjQ5NzkgNi4xMzQxNCA0Ljg4NDIxQzUuODk5NzEgNS4xMTg2MiA1LjU4MTc1IDUuMjUwMzEgNS4yNTAyMSA1LjI1MDMxWk0xLjUgOC43OTE4OEMxLjUgNy45ODY5IDIuMTUzMzcgNy4zMzM1OSAyLjk1ODQxIDcuMzMzNTlINy41NDJDOC4zNDcwNSA3LjMzMzU5IDkuMDAwNDIgNy45ODY5IDkuMDAwNDIgOC43OTE4OFYxMi43NTAxQzkuMDAwNDIgMTMuNzQ0NiA4LjYwNTMxIDE0LjY5ODQgNy45MDIwMSAxNS40MDE3QzcuMTk4NyAxNi4xMDQ5IDYuMjQ0ODMgMTYuNSA1LjI1MDIxIDE2LjVDNC4yNTU1OSAxNi41IDMuMzAxNzEgMTYuMTA0OSAyLjU5ODQxIDE1LjQwMTdDMS44OTUxMSAxNC42OTg0IDEuNSAxMy43NDQ2IDEuNSAxMi43NTAxVjguNzkxODhaTTIuOTU4NDEgOC41ODM1NUMyLjkwMzE2IDguNTgzNTUgMi44NTAxNiA4LjYwNTUgMi44MTEwOSA4LjY0NDU3QzIuNzcyMDIgOC42ODM2NCAyLjc1MDA3IDguNzM2NjMgMi43NTAwNyA4Ljc5MTg4VjEyLjc1MDFDMi43NTAwNyAxMy40MTMxIDMuMDEzNDggMTQuMDQ5IDMuNDgyMzQgMTQuNTE3OEMzLjk1MTIxIDE0Ljk4NjcgNC41ODcxMyAxNS4yNSA1LjI1MDIxIDE1LjI1QzUuOTEzMjkgMTUuMjUgNi41NDkyMSAxNC45ODY3IDcuMDE4MDcgMTQuNTE3OEM3LjQ4Njk0IDE0LjA0OSA3Ljc1MDM1IDEzLjQxMzEgNy43NTAzNSAxMi43NTAxVjguNzkxODhDNy43NTAzNSA4LjczNjYzIDcuNzI4NCA4LjY4MzY0IDcuNjg5MzIgOC42NDQ1N0M3LjY1MDI1IDguNjA1NSA3LjU5NzI2IDguNTgzNTUgNy41NDIgOC41ODM1NUgyLjk1ODQxWk03Ljc3Mjg1IDYuMTc4NjJDOC4xNTMyOCA2LjM5MjY3IDguNTgzMTMgNi41MDM0IDkuMDE5NjMgNi40OTk3OEM5LjQ1NjE0IDYuNDk2MTYgOS44ODQxIDYuMzc4MzIgMTAuMjYwOSA2LjE1Nzk5QzEwLjYzNzggNS45Mzc2NiAxMC45NTAzIDUuNjIyNTIgMTEuMTY3NSA1LjI0MzkxQzExLjM4NDggNC44NjUzIDExLjQ5OSA0LjQzNjQyIDExLjQ5OSAzLjk5OTkzQzExLjQ5OSAzLjU2MzQ0IDExLjM4NDggMy4xMzQ1NiAxMS4xNjc1IDIuNzU1OTVDMTAuOTUwMyAyLjM3NzM0IDEwLjYzNzggMi4wNjIyIDEwLjI2MDkgMS44NDE4N0M5Ljg4NDEgMS42MjE1NCA5LjQ1NjE0IDEuNTAzNzEgOS4wMTk2MyAxLjUwMDA5QzguNTgzMTMgMS40OTY0NyA4LjE1MzI4IDEuNjA3MTkgNy43NzI4NSAxLjgyMTI0QzguMDQ1MzYgMi4xMzYyMyA4LjI1OTU0IDIuNTAyODkgOC4zOTk1NSAyLjkwNDU0QzguNTg5OTEgMi44MDAyNiA4LjgwNDE1IDIuNzQ3MzMgOS4wMjExOCAyLjc1MDk3QzkuMjM4MjEgMi43NTQ2MiA5LjQ1MDU1IDIuODE0NzEgOS42MzczMSAyLjkyNTMzQzkuODI0MDYgMy4wMzU5NCA5Ljk3ODc5IDMuMTkzMjggMTAuMDg2MyAzLjM4MTg1QzEwLjE5MzcgMy41NzA0MiAxMC4yNTAzIDMuNzgzNzIgMTAuMjUwMyA0LjAwMDc2QzEwLjI1MDMgNC4yMTc4MSAxMC4xOTM3IDQuNDMxMTEgMTAuMDg2MyA0LjYxOTY4QzkuOTc4NzkgNC44MDgyNSA5LjgyNDA2IDQuOTY1NTggOS42MzczMSA1LjA3NjJDOS40NTA1NSA1LjE4NjgyIDkuMjM4MjEgNS4yNDY5MSA5LjAyMTE4IDUuMjUwNTVDOC44MDQxNSA1LjI1NDIgOC41ODk5MSA1LjIwMTI3IDguMzk5NTUgNS4wOTY5OEM4LjI2MDc0IDUuNDkzODIgOC4wNDgxIDUuODYwODIgNy43NzI4NSA2LjE3ODYyWk04LjA1MDM2IDE2LjM3ODNDOC4zNTQ4MyAxNi40NTgzIDguNjcxNTEgMTYuNDk4OSA5LjAwMDQyIDE2LjVDOS45OTUwMyAxNi41IDEwLjk0ODkgMTYuMTA0OSAxMS42NTIyIDE1LjQwMTdDMTIuMzU1NSAxNC42OTg0IDEyLjc1MDYgMTMuNzQ0NiAxMi43NTA2IDEyLjc1MDFWOC43OTE4OEMxMi43NTA2IDguNDA1MTIgMTIuNTk3IDguMDM0MTkgMTIuMzIzNSA3Ljc2MDcxQzEyLjA1IDcuNDg3MjMgMTEuNjc5IDcuMzMzNTkgMTEuMjkyMiA3LjMzMzU5SDkuMzA4NzdDOS41OTQ2MiA3LjY3OTQxIDkuNzgwNDYgOC4xMTEwNyA5LjgyMzggOC41ODM1NUgxMS4yOTA1QzExLjM0NTggOC41ODM1NSAxMS4zOTg4IDguNjA1NSAxMS40Mzc5IDguNjQ0NTdDMTEuNDc2OSA4LjY4MzY0IDExLjQ5ODkgOC43MzY2MyAxMS40OTg5IDguNzkxODhWMTIuNzUwMUMxMS40OTg5IDEzLjM5NjggMTEuMjQ4MyAxNC4wMTg0IDEwLjc5OTYgMTQuNDg0M0MxMC4zNTEgMTQuOTUwMSA5LjczOTI1IDE1LjIyNCA5LjA5MjkyIDE1LjI0ODRDOC44MTA0MSAxNS42ODE3IDguNDU4NzIgMTYuMDYzMyA4LjA1MDM2IDE2LjM3ODNaTTExLjUyMjIgNi4xNzg2MkMxMS45MDI3IDYuMzkyNjcgMTIuMzMyNSA2LjUwMzQgMTIuNzY5IDYuNDk5NzhDMTMuMjA1NSA2LjQ5NjE2IDEzLjYzMzUgNi4zNzgzMiAxNC4wMTAzIDYuMTU3OTlDMTQuMzg3MSA1LjkzNzY2IDE0LjY5OTcgNS42MjI1MiAxNC45MTY5IDUuMjQzOTFDMTUuMTM0MSA0Ljg2NTMgMTUuMjQ4NCA0LjQzNjQyIDE1LjI0ODQgMy45OTk5M0MxNS4yNDg0IDMuNTYzNDQgMTUuMTM0MSAzLjEzNDU2IDE0LjkxNjkgMi43NTU5NUMxNC42OTk3IDIuMzc3MzQgMTQuMzg3MSAyLjA2MjIgMTQuMDEwMyAxLjg0MTg3QzEzLjYzMzUgMS42MjE1NCAxMy4yMDU1IDEuNTAzNzEgMTIuNzY5IDEuNTAwMDlDMTIuMzMyNSAxLjQ5NjQ3IDExLjkwMjcgMS42MDcxOSAxMS41MjIyIDEuODIxMjRDMTEuNzk0NyAyLjEzNjIzIDEyLjAwODkgMi41MDI4OSAxMi4xNDg5IDIuOTA0NTRDMTIuMzM5MyAyLjgwMDI2IDEyLjU1MzUgMi43NDczMyAxMi43NzA2IDIuNzUwOTdDMTIuOTg3NiAyLjc1NDYyIDEzLjE5OTkgMi44MTQ3MSAxMy4zODY3IDIuOTI1MzNDMTMuNTczNCAzLjAzNTk0IDEzLjcyODIgMy4xOTMyOCAxMy44MzU2IDMuMzgxODVDMTMuOTQzMSAzLjU3MDQyIDEzLjk5OTYgMy43ODM3MiAxMy45OTk2IDQuMDAwNzZDMTMuOTk5NiA0LjIxNzgxIDEzLjk0MzEgNC40MzExMSAxMy44MzU2IDQuNjE5NjhDMTMuNzI4MiA0LjgwODI1IDEzLjU3MzQgNC45NjU1OCAxMy4zODY3IDUuMDc2MkMxMy4xOTk5IDUuMTg2ODIgMTIuOTg3NiA1LjI0NjkxIDEyLjc3MDYgNS4yNTA1NUMxMi41NTM1IDUuMjU0MiAxMi4zMzkzIDUuMjAxMjcgMTIuMTQ4OSA1LjA5Njk4QzEyLjAxMDEgNS40OTM4MiAxMS43OTc1IDUuODYwODIgMTEuNTIyMiA2LjE3ODYyWk0xMS43OTk3IDE2LjM3ODNDMTIuMTA0MiAxNi40NTgzIDEyLjQyMDkgMTYuNDk4OSAxMi43NDk4IDE2LjVDMTMuNzQ0NCAxNi41IDE0LjY5ODMgMTYuMTA0OSAxNS40MDE2IDE1LjQwMTdDMTYuMTA0OSAxNC42OTg0IDE2LjUgMTMuNzQ0NiAxNi41IDEyLjc1MDFWOC43OTE4OEMxNi41IDguNDA1MjYgMTYuMzQ2NSA4LjAzNDQ3IDE2LjA3MzEgNy43NjEwMUMxNS43OTk4IDcuNDg3NTUgMTUuNDI5MSA3LjMzMzgxIDE1LjA0MjQgNy4zMzM1OUgxMy4wNTlDMTMuMzQ0OCA3LjY3OTQxIDEzLjUzMTUgOC4xMTEwNyAxMy41NzQgOC41ODM1NUgxNS4wNDA4QzE1LjA5NiA4LjU4MzU1IDE1LjE0OSA4LjYwNTUgMTUuMTg4MSA4LjY0NDU3QzE1LjIyNzEgOC42ODM2NCAxNS4yNDkxIDguNzM2NjMgMTUuMjQ5MSA4Ljc5MTg4VjEyLjc1MDFDMTUuMjQ5MSAxMy4zOTY4IDE0Ljk5ODUgMTQuMDE4NCAxNC41NDk4IDE0LjQ4NDNDMTQuMTAxMiAxNC45NTAxIDEzLjQ4OTUgMTUuMjI0IDEyLjg0MzEgMTUuMjQ4NEMxMi41NjA2IDE1LjY4MTcgMTIuMjA4MSAxNi4wNjMzIDExLjc5OTcgMTYuMzc4M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2F1ZGl0RGV0YWlscz8ucXVldWVJZH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4yNTAyMSA2LjUwMDI4QzUuOTEzMjkgNi41MDAyOCA2LjU0OTIxIDYuMjM2ODkgNy4wMTgwNyA1Ljc2ODA3QzcuNDg2OTQgNS4yOTkyNCA3Ljc1MDM1IDQuNjYzMzcgNy43NTAzNSA0LjAwMDM1QzcuNzUwMzUgMy4zMzczMiA3LjQ4Njk0IDIuNzAxNDYgNy4wMTgwNyAyLjIzMjYzQzYuNTQ5MjEgMS43NjM4IDUuOTEzMjkgMS41MDA0MiA1LjI1MDIxIDEuNTAwNDJDNC41ODcxMyAxLjUwMDQyIDMuOTUxMjEgMS43NjM4IDMuNDgyMzQgMi4yMzI2M0MzLjAxMzQ4IDIuNzAxNDYgMi43NTAwNyAzLjMzNzMyIDIuNzUwMDcgNC4wMDAzNUMyLjc1MDA3IDQuNjYzMzcgMy4wMTM0OCA1LjI5OTI0IDMuNDgyMzQgNS43NjgwN0MzLjk1MTIxIDYuMjM2ODkgNC41ODcxMyA2LjUwMDI4IDUuMjUwMjEgNi41MDAyOFpNNS4yNTAyMSA1LjI1MDMxQzQuOTE4NjcgNS4yNTAzMSA0LjYwMDcxIDUuMTE4NjIgNC4zNjYyOCA0Ljg4NDIxQzQuMTMxODQgNC42NDk3OSA0LjAwMDE0IDQuMzMxODYgNC4wMDAxNCA0LjAwMDM1QzQuMDAwMTQgMy42Njg4NCA0LjEzMTg0IDMuMzUwOSA0LjM2NjI4IDMuMTE2NDlDNC42MDA3MSAyLjg4MjA3IDQuOTE4NjcgMi43NTAzOCA1LjI1MDIxIDIuNzUwMzhDNS41ODE3NSAyLjc1MDM4IDUuODk5NzEgMi44ODIwNyA2LjEzNDE0IDMuMTE2NDlDNi4zNjg1NyAzLjM1MDkgNi41MDAyOCAzLjY2ODg0IDYuNTAwMjggNC4wMDAzNUM2LjUwMDI4IDQuMzMxODYgNi4zNjg1NyA0LjY0OTc5IDYuMTM0MTQgNC44ODQyMUM1Ljg5OTcxIDUuMTE4NjIgNS41ODE3NSA1LjI1MDMxIDUuMjUwMjEgNS4yNTAzMVpNMS41IDguNzkxODhDMS41IDcuOTg2OSAyLjE1MzM3IDcuMzMzNTkgMi45NTg0MSA3LjMzMzU5SDcuNTQyQzguMzQ3MDUgNy4zMzM1OSA5LjAwMDQyIDcuOTg2OSA5LjAwMDQyIDguNzkxODhWMTIuNzUwMUM5LjAwMDQyIDEzLjc0NDYgOC42MDUzMSAxNC42OTg0IDcuOTAyMDEgMTUuNDAxN0M3LjE5ODcgMTYuMTA0OSA2LjI0NDgzIDE2LjUgNS4yNTAyMSAxNi41QzQuMjU1NTkgMTYuNSAzLjMwMTcxIDE2LjEwNDkgMi41OTg0MSAxNS40MDE3QzEuODk1MTEgMTQuNjk4NCAxLjUgMTMuNzQ0NiAxLjUgMTIuNzUwMVY4Ljc5MTg4Wk0yLjk1ODQxIDguNTgzNTVDMi45MDMxNiA4LjU4MzU1IDIuODUwMTYgOC42MDU1IDIuODExMDkgOC42NDQ1N0MyLjc3MjAyIDguNjgzNjQgMi43NTAwNyA4LjczNjYzIDIuNzUwMDcgOC43OTE4OFYxMi43NTAxQzIuNzUwMDcgMTMuNDEzMSAzLjAxMzQ4IDE0LjA0OSAzLjQ4MjM0IDE0LjUxNzhDMy45NTEyMSAxNC45ODY3IDQuNTg3MTMgMTUuMjUgNS4yNTAyMSAxNS4yNUM1LjkxMzI5IDE1LjI1IDYuNTQ5MjEgMTQuOTg2NyA3LjAxODA3IDE0LjUxNzhDNy40ODY5NCAxNC4wNDkgNy43NTAzNSAxMy40MTMxIDcuNzUwMzUgMTIuNzUwMVY4Ljc5MTg4QzcuNzUwMzUgOC43MzY2MyA3LjcyODQgOC42ODM2NCA3LjY4OTMyIDguNjQ0NTdDNy42NTAyNSA4LjYwNTUgNy41OTcyNiA4LjU4MzU1IDcuNTQyIDguNTgzNTVIMi45NTg0MVpNNy43NzI4NSA2LjE3ODYyQzguMTUzMjggNi4zOTI2NyA4LjU4MzEzIDYuNTAzNCA5LjAxOTYzIDYuNDk5NzhDOS40NTYxNCA2LjQ5NjE2IDkuODg0MSA2LjM3ODMyIDEwLjI2MDkgNi4xNTc5OUMxMC42Mzc4IDUuOTM3NjYgMTAuOTUwMyA1LjYyMjUyIDExLjE2NzUgNS4yNDM5MUMxMS4zODQ4IDQuODY1MyAxMS40OTkgNC40MzY0MiAxMS40OTkgMy45OTk5M0MxMS40OTkgMy41NjM0NCAxMS4zODQ4IDMuMTM0NTYgMTEuMTY3NSAyLjc1NTk1QzEwLjk1MDMgMi4zNzczNCAxMC42Mzc4IDIuMDYyMiAxMC4yNjA5IDEuODQxODdDOS44ODQxIDEuNjIxNTQgOS40NTYxNCAxLjUwMzcxIDkuMDE5NjMgMS41MDAwOUM4LjU4MzEzIDEuNDk2NDcgOC4xNTMyOCAxLjYwNzE5IDcuNzcyODUgMS44MjEyNEM4LjA0NTM2IDIuMTM2MjMgOC4yNTk1NCAyLjUwMjg5IDguMzk5NTUgMi45MDQ1NEM4LjU4OTkxIDIuODAwMjYgOC44MDQxNSAyLjc0NzMzIDkuMDIxMTggMi43NTA5N0M5LjIzODIxIDIuNzU0NjIgOS40NTA1NSAyLjgxNDcxIDkuNjM3MzEgMi45MjUzM0M5LjgyNDA2IDMuMDM1OTQgOS45Nzg3OSAzLjE5MzI4IDEwLjA4NjMgMy4zODE4NUMxMC4xOTM3IDMuNTcwNDIgMTAuMjUwMyAzLjc4MzcyIDEwLjI1MDMgNC4wMDA3NkMxMC4yNTAzIDQuMjE3ODEgMTAuMTkzNyA0LjQzMTExIDEwLjA4NjMgNC42MTk2OEM5Ljk3ODc5IDQuODA4MjUgOS44MjQwNiA0Ljk2NTU4IDkuNjM3MzEgNS4wNzYyQzkuNDUwNTUgNS4xODY4MiA5LjIzODIxIDUuMjQ2OTEgOS4wMjExOCA1LjI1MDU1QzguODA0MTUgNS4yNTQyIDguNTg5OTEgNS4yMDEyNyA4LjM5OTU1IDUuMDk2OThDOC4yNjA3NCA1LjQ5MzgyIDguMDQ4MSA1Ljg2MDgyIDcuNzcyODUgNi4xNzg2MlpNOC4wNTAzNiAxNi4zNzgzQzguMzU0ODMgMTYuNDU4MyA4LjY3MTUxIDE2LjQ5ODkgOS4wMDA0MiAxNi41QzkuOTk1MDMgMTYuNSAxMC45NDg5IDE2LjEwNDkgMTEuNjUyMiAxNS40MDE3QzEyLjM1NTUgMTQuNjk4NCAxMi43NTA2IDEzLjc0NDYgMTIuNzUwNiAxMi43NTAxVjguNzkxODhDMTIuNzUwNiA4LjQwNTEyIDEyLjU5NyA4LjAzNDE5IDEyLjMyMzUgNy43NjA3MUMxMi4wNSA3LjQ4NzIzIDExLjY3OSA3LjMzMzU5IDExLjI5MjIgNy4zMzM1OUg5LjMwODc3QzkuNTk0NjIgNy42Nzk0MSA5Ljc4MDQ2IDguMTExMDcgOS44MjM4IDguNTgzNTVIMTEuMjkwNUMxMS4zNDU4IDguNTgzNTUgMTEuMzk4OCA4LjYwNTUgMTEuNDM3OSA4LjY0NDU3QzExLjQ3NjkgOC42ODM2NCAxMS40OTg5IDguNzM2NjMgMTEuNDk4OSA4Ljc5MTg4VjEyLjc1MDFDMTEuNDk4OSAxMy4zOTY4IDExLjI0ODMgMTQuMDE4NCAxMC43OTk2IDE0LjQ4NDNDMTAuMzUxIDE0Ljk1MDEgOS43MzkyNSAxNS4yMjQgOS4wOTI5MiAxNS4yNDg0QzguODEwNDEgMTUuNjgxNyA4LjQ1ODcyIDE2LjA2MzMgOC4wNTAzNiAxNi4zNzgzWk0xMS41MjIyIDYuMTc4NjJDMTEuOTAyNyA2LjM5MjY3IDEyLjMzMjUgNi41MDM0IDEyLjc2OSA2LjQ5OTc4QzEzLjIwNTUgNi40OTYxNiAxMy42MzM1IDYuMzc4MzIgMTQuMDEwMyA2LjE1Nzk5QzE0LjM4NzEgNS45Mzc2NiAxNC42OTk3IDUuNjIyNTIgMTQuOTE2OSA1LjI0MzkxQzE1LjEzNDEgNC44NjUzIDE1LjI0ODQgNC40MzY0MiAxNS4yNDg0IDMuOTk5OTNDMTUuMjQ4NCAzLjU2MzQ0IDE1LjEzNDEgMy4xMzQ1NiAxNC45MTY5IDIuNzU1OTVDMTQuNjk5NyAyLjM3NzM0IDE0LjM4NzEgMi4wNjIyIDE0LjAxMDMgMS44NDE4N0MxMy42MzM1IDEuNjIxNTQgMTMuMjA1NSAxLjUwMzcxIDEyLjc2OSAxLjUwMDA5QzEyLjMzMjUgMS40OTY0NyAxMS45MDI3IDEuNjA3MTkgMTEuNTIyMiAxLjgyMTI0QzExLjc5NDcgMi4xMzYyMyAxMi4wMDg5IDIuNTAyODkgMTIuMTQ4OSAyLjkwNDU0QzEyLjMzOTMgMi44MDAyNiAxMi41NTM1IDIuNzQ3MzMgMTIuNzcwNiAyLjc1MDk3QzEyLjk4NzYgMi43NTQ2MiAxMy4xOTk5IDIuODE0NzEgMTMuMzg2NyAyLjkyNTMzQzEzLjU3MzQgMy4wMzU5NCAxMy43MjgyIDMuMTkzMjggMTMuODM1NiAzLjM4MTg1QzEzLjk0MzEgMy41NzA0MiAxMy45OTk2IDMuNzgzNzIgMTMuOTk5NiA0LjAwMDc2QzEzLjk5OTYgNC4yMTc4MSAxMy45NDMxIDQuNDMxMTEgMTMuODM1NiA0LjYxOTY4QzEzLjcyODIgNC44MDgyNSAxMy41NzM0IDQuOTY1NTggMTMuMzg2NyA1LjA3NjJDMTMuMTk5OSA1LjE4NjgyIDEyLjk4NzYgNS4yNDY5MSAxMi43NzA2IDUuMjUwNTVDMTIuNTUzNSA1LjI1NDIgMTIuMzM5MyA1LjIwMTI3IDEyLjE0ODkgNS4wOTY5OEMxMi4wMTAxIDUuNDkzODIgMTEuNzk3NSA1Ljg2MDgyIDExLjUyMjIgNi4xNzg2MlpNMTEuNzk5NyAxNi4zNzgzQzEyLjEwNDIgMTYuNDU4MyAxMi40MjA5IDE2LjQ5ODkgMTIuNzQ5OCAxNi41QzEzLjc0NDQgMTYuNSAxNC42OTgzIDE2LjEwNDkgMTUuNDAxNiAxNS40MDE3QzE2LjEwNDkgMTQuNjk4NCAxNi41IDEzLjc0NDYgMTYuNSAxMi43NTAxVjguNzkxODhDMTYuNSA4LjQwNTI2IDE2LjM0NjUgOC4wMzQ0NyAxNi4wNzMxIDcuNzYxMDFDMTUuNzk5OCA3LjQ4NzU1IDE1LjQyOTEgNy4zMzM4MSAxNS4wNDI0IDcuMzMzNTlIMTMuMDU5QzEzLjM0NDggNy42Nzk0MSAxMy41MzE1IDguMTExMDcgMTMuNTc0IDguNTgzNTVIMTUuMDQwOEMxNS4wOTYgOC41ODM1NSAxNS4xNDkgOC42MDU1IDE1LjE4ODEgOC42NDQ1N0MxNS4yMjcxIDguNjgzNjQgMTUuMjQ5MSA4LjczNjYzIDE1LjI0OTEgOC43OTE4OFYxMi43NTAxQzE1LjI0OTEgMTMuMzk2OCAxNC45OTg1IDE0LjAxODQgMTQuNTQ5OCAxNC40ODQzQzE0LjEwMTIgMTQuOTUwMSAxMy40ODk1IDE1LjIyNCAxMi44NDMxIDE1LjI0ODRDMTIuNTYwNiAxNS42ODE3IDEyLjIwODEgMTYuMDYzMyAxMS43OTk3IDE2LjM3ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmVuZ2FnZW1lbnRJZCA/YXVkaXREZXRhaWxzPy5lbmdhZ2VtZW50SWQ6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAzSDEzLjVDMTMuODk3OCAzIDE0LjI3OTQgMy4xNTgwNCAxNC41NjA3IDMuNDM5MzRDMTQuODQyIDMuNzIwNjQgMTUgNC4xMDIxOCAxNSA0LjVWMTVDMTUgMTUuMzk3OCAxNC44NDIgMTUuNzc5NCAxNC41NjA3IDE2LjA2MDdDMTQuMjc5NCAxNi4zNDIgMTMuODk3OCAxNi41IDEzLjUgMTYuNUg0LjVDNC4xMDIxOCAxNi41IDMuNzIwNjQgMTYuMzQyIDMuNDM5MzQgMTYuMDYwN0MzLjE1ODA0IDE1Ljc3OTQgMyAxNS4zOTc4IDMgMTVWNC41QzMgNC4xMDIxOCAzLjE1ODA0IDMuNzIwNjQgMy40MzkzNCAzLjQzOTM0QzMuNzIwNjQgMy4xNTgwNCA0LjEwMjE4IDMgNC41IDNINk02Ljc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWMy43NUMxMiA0LjE2NDIxIDExLjY2NDIgNC41IDExLjI1IDQuNUg2Ljc1QzYuMzM1NzkgNC41IDYgNC4xNjQyMSA2IDMuNzVWMi4yNUM2IDEuODM1NzkgNi4zMzU3OSAxLjUgNi43NSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2N1cnJlbnRBdWRpdFR5cGUgfCB0aXRsZWNhc2V9fSBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMS41VjQuNU02IDEuNVY0LjVNMi4yNSA3LjVIMTUuNzVNMy43NSAzSDE0LjI1QzE1LjA3ODQgMyAxNS43NSAzLjY3MTU3IDE1Ljc1IDQuNVYxNUMxNS43NSAxNS44Mjg0IDE1LjA3ODQgMTYuNSAxNC4yNSAxNi41SDMuNzVDMi45MjE1NyAxNi41IDIuMjUgMTUuODI4NCAyLjI1IDE1VjQuNUMyLjI1IDMuNjcxNTcgMi45MjE1NyAzIDMuNzUgM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy5maWxlRGF0ZSB8IGRhdGU6ICdkZC9NTS9ZWVlZJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNjZfNTUwMTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTY2XzU1MDE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy50ZXN0U3RhcnRUaW1lfX0ge3thdWRpdERldGFpbHM/LnRlc3RTdGFydFRpbWU/LnNwbGl0KCc6JylbMF0+MTI/J1BNJzonQU0nfX0gLSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWV9fSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWU/LnNwbGl0KCc6JylbMF0+MTI/J1BNJzonQU0nfX1cclxuICAgICAgICAgICAgICAgICh7e2F1ZGl0RGV0YWlscz8udGVzdER1cmF0aW9ufX0gTWlucyk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e2F1ZGl0RGV0YWlscz8udmlzaXRvcnNUeXBlIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIlsnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cylcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgWWV0IHRvIEF1ZGl0XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXN1Y2Nlc3NcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgQXVkaXRlZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ0F1ZGl0ZWQnIHx8IGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnUmUtQXVkaXRlZCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXdhcm5pbmdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgUmUtQXVkaXRlZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBmdy1ib2xkIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgdGV4dC1jZW50ZXIgaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIEFJIFZlcmlmaWVkIFN0ZXBzIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIk51bWJlciBvZiBzdGVwcyBkZXRlY3RlZCBhbmQgdmFsaWRhdGVkIGF1dG9tYXRpY2FsbHkgd2l0aG91dCBtYW51YWwgcmV2aWV3LlwiIHBsYWNlbWVudD1cInJpZ2h0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNjJfMjk3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTg0IDEzLjMzMzJWOS45OTk4NE05Ljk5OTg0IDYuNjY2NUgxMC4wMDgyTTE4LjMzMzIgOS45OTk4NEMxOC4zMzMyIDE0LjYwMjIgMTQuNjAyMiAxOC4zMzMyIDkuOTk5ODQgMTguMzMzMkM1LjM5NzQ2IDE4LjMzMzIgMS42NjY1IDE0LjYwMjIgMS42NjY1IDkuOTk5ODRDMS42NjY1IDUuMzk3NDYgNS4zOTc0NiAxLjY2NjUgOS45OTk4NCAxLjY2NjVDMTQuNjAyMiAxLjY2NjUgMTguMzMzMiA1LjM5NzQ2IDE4LjMzMzIgOS45OTk4NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzYyXzI5NzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdGV4dC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2F1ZGl0RGV0YWlscz8uY292ZXJlZFN0ZXBzQUk/YXVkaXREZXRhaWxzPy5jb3ZlcmVkU3RlcHNBSTowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyB0ZXh0LWNlbnRlciBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgSHVtYW4gVmVyaWZpZWQgU3RlcHMgPHNwYW4+PHN2ZyBuZ2JUb29sdGlwPVwiTnVtYmVyIG9mIHN0ZXBzIHRoYXQgcmVxdWlyZWQgaHVtYW4gdmFsaWRhdGlvbiB0byBlbnN1cmUgY29tcGxpYW5jZSBhbmQgYWNjdXJhY3kuXCIgcGxhY2VtZW50PVwicmlnaHRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwcz9hdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwczowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgQUkgQ29tcGxpYW5jZSBTY29yZSA8c3Bhbj48c3ZnIG5nYlRvb2x0aXA9XCJNZWFzdXJlcyB0aGUgcGVyY2VudGFnZSBvZiBzdGVwcyBBSSBmbGFnZ2VkIGFzIGNvbXBsaWFudCB3aXRob3V0IGh1bWFuIGludGVydmVudGlvbi5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM2Ml8yOTc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5ODQgMTMuMzMzMlY5Ljk5OTg0TTkuOTk5ODQgNi42NjY1SDEwLjAwODJNMTguMzMzMiA5Ljk5OTg0QzE4LjMzMzIgMTQuNjAyMiAxNC42MDIyIDE4LjMzMzIgOS45OTk4NCAxOC4zMzMyQzUuMzk3NDYgMTguMzMzMiAxLjY2NjUgMTQuNjAyMiAxLjY2NjUgOS45OTk4NEMxLjY2NjUgNS4zOTc0NiA1LjM5NzQ2IDEuNjY2NSA5Ljk5OTg0IDEuNjY2NUMxNC42MDIyIDEuNjY2NSAxOC4zMzMyIDUuMzk3NDYgMTguMzMzMiA5Ljk5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNjJfMjk3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB0ZXh0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXVkaXREZXRhaWxzPy5jb21wbGlhbmNlU2NvcmUgP2F1ZGl0RGV0YWlscz8uY29tcGxpYW5jZVNjb3JlIDogMH19JTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBmdy1ib2xkIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIEFJIFRydXN0IFNjb3JlIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIlRoaXMgc2NvcmUgcmVmbGVjdHMgaG93IG9mdGVuIEFJIHByZWRpY3Rpb25zIHdlcmUgYWNjZXB0ZWQgd2l0aG91dCBtYW51YWwgb3ZlcnJpZGVzLlwiIHBsYWNlbWVudD1cImxlZnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LnRydXN0U2NvcmUgPyBhdWRpdERldGFpbHM/LnRydXN0U2NvcmU6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJleWVUZXN0VHlwZSA9PT0nZmFrZScgPyAnY29sLW1kLTEyJyA6ICdjb2wtbWQtNidcIiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC01MDBweCBweC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnctYm9sZGVyIGJnLW5vbmVcIj5QcmV2aWV3IEV5ZSBUZXN0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0wIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tcG9zaXRpb24gdy0xMDBcIj5cclxuIDx2aWRlbyBjbGFzcz1cInctMTAwIHJvdW5kZWQtMyBoLWF1dG9cIiBjb250cm9sc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF1ZGl0RGV0YWlscz8uZmlsZVBhdGhcIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdFR5cGUgIT09J2Zha2UnXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtNTAwcHggcHgtNSBvdmVyZmxvdy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTMgcC0wIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUgbS0wIGZ3LWJvbGRlciBiZy1ub25lXCI+U3RlcC13aXNlIEJyZWFrZG93bjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc3ViLXRpdGxlIG10LTJcIiAqbmdJZj1cImF1ZGl0RGV0YWlscz8ubGFzdEF1ZGl0ZWREZXRhaWxzPy5hdWRpdGVkQnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiPiA8c3BhbiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uc3Bva2VuTGFuZ3VhZ2VcIj4gPHNwYW4gKm5nSWY9XCIhdGFrZUF1ZGl0XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvIG10LTAgbWUtMlwiPkxhbmd1YWdlIFNwb2tlbjoge3thdWRpdERldGFpbHM/LnNwb2tlbkxhbmd1YWdlfX08L3NwYW4+PC9zcGFuPjwvc3Bhbj4gIDxzcGFuIGNsYXNzPVwibXQtMVwiPlJlY2VudGx5IEF1ZGl0ZWQgQnkgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzcgMTRWMTIuNjY2N0MxMy4zMzM3IDExLjk1OTQgMTMuMDUyNyAxMS4yODExIDEyLjU1MjYgMTAuNzgxQzEyLjA1MjUgMTAuMjgxIDExLjM3NDIgMTAgMTAuNjY3IDEwSDUuMzMzNjZDNC42MjY0MSAxMCAzLjk0ODE0IDEwLjI4MSAzLjQ0ODA0IDEwLjc4MUMyLjk0Nzk0IDExLjI4MTEgMi42NjY5OSAxMS45NTk0IDIuNjY2OTkgMTIuNjY2N1YxNE0xMC42NjcgNC42NjY2N0MxMC42NjcgNi4xMzk0MyA5LjQ3MzA4IDcuMzMzMzMgOC4wMDAzMyA3LjMzMzMzQzYuNTI3NTcgNy4zMzMzMyA1LjMzMzY2IDYuMTM5NDMgNS4zMzM2NiA0LjY2NjY3QzUuMzMzNjYgMy4xOTM5MSA2LjUyNzU3IDIgOC4wMDAzMyAyQzkuNDczMDggMiAxMC42NjcgMy4xOTM5MSAxMC42NjcgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3BhbiA+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uYXVkaXRlZEJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTUyXzI5NDMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTUyXzI5NDMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uY29tcGxldGlvblRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8udGltZVpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWtlQXVkaXQgJiYgY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic3Bva2VuTGFuZ3VhZ2VcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIGRpc2FibGVkID5MYW5ndWFnZSBTcG9rZW4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkVuZ2xpc2hcIj5FbmdsaXNoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiSGluZGlcIj5IaW5kaTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ0F1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1lldC10by1BdWRpdCcgJiYgIXRha2VBdWRpdFwiIChjbGljayk9XCJzdGFydEF1ZGl0KCdhdWRpdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC0yIGN1cnNvci1wb2ludGVyIGJnLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIFN0YXJ0IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnQXVkaXRlZCcsJ1JlLUF1ZGl0JywnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cykmJmF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnICYmICF0YWtlQXVkaXR8fGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHxhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1JlLUF1ZGl0ZWQnJiYgIXRha2VBdWRpdCBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydEF1ZGl0KCdSZS1BdWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTIgYnRuLXdhcm5pbmdcIj5SZS1BdWRpdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRha2VBdWRpdFwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbXMtMiBidG4tc20gYnRuLXN1Y2Nlc3NcIiAgW2Rpc2FibGVkXT1cImRpc2FibGVjYW5jZWxcIiAoY2xpY2spPVwib25zdWJtaXQoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXQtMSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRha2VBdWRpdCAmJiBzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aFwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBib3JkZXIgYm9yZGVyLTEgcm91bmRlZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLWJ5LXN0ZXAgUHJvY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljdGVkIFRyYW5zY3JpcHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFzb24gZm9yIEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZWQgVGltZSBSYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3RlcFdpc2VQcm9jZXNzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJkYXRhPy5pbWFnZVVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnByb2Nlc3NOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeTEgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9J2JvdHRvbSc+e3tkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0P2RhdGE/LnByZWRpY3RlZFRyYW5zY3JpcHQ6XCJOL0FcIn19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10b29sdGlwLWNvbnRlbnQgdG9vbHRpcC1jb250ZW50IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW4tdy01MDBweFwiPnt7ZGF0YT8ucHJlZGljdGVkVHJhbnNjcmlwdD9kYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0OlwiTi9BXCJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkFJU3RhdHVzID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcidcIj57e2RhdGEuQUlTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3Bhc3MnIDogJ2ZhaWwnfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhPy5hdWRpdGVkU3RhdHVzID09PSB0cnVlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogKGRhdGE/LmF1ZGl0ZWRTdGF0dXMgPT09IGZhbHNlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcicgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uYXVkaXRlZFN0YXR1cyA9PT0gdHJ1ZSA/ICdwYXNzJyA6IChkYXRhPy5hdWRpdGVkU3RhdHVzID09PSBmYWxzZSA/ICdmYWlsJyA6ICdOL0EnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJkYXRhLkFJU3RhdHVzICE9PSBkYXRhLmF1ZGl0ZWRTdGF0dXMgfHwgZGF0YS5hdWRpdGVkU3RhdHVzID09PSBudWxsIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gdW5kZWZpbmVkIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gJyc7IGVsc2UgRXF1YWxCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyBkYXRhPy5yZWFzb24gfHwgJ04vQScgfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEucmVhc29uICE9PSdvdGhlcnMnXCI+e3tkYXRhLnJlYXNvbiB8fCAnTi9BJ319PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0YS5yZWFzb24gPT09J290aGVycydcIj57e2RhdGEub3RoZXJSZWFzb24gfHwgJ04vQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjRXF1YWxCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5OL0E8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YT8uc3RhcnRUaW1lfX0gLSB7e2RhdGE/LmVuZFRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aCAmJiB0YWtlQXVkaXQmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXM9PT0nWWV0LXRvLUF1ZGl0J3x8YXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cz09PSdJbi1Qcm9ncmVzcydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9jZXNzIG9mIHN0ZXBXaXNlUHJvY2VzczsgbGV0IGk9aW5kZXggO2xldCBsYXN0PWxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLXt7aSsxIHwgbnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidy0yMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInctNDBweCBoLTQwcHggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJwcm9jZXNzLmltYWdlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvY2Vzcy5wcm9jZXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuICpuZ0lmPVwicHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyB0ZXh0LWNhcGl0YWxpemVcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHRleHQtY2FwaXRhbGl6ZVwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0SHVtYW5WZXJpZmllZChpLHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyA/ICd0ZXh0LXdoaXRlIGJ0bi1zdWNjZXNzJyA6ICd0ZXh0LXN1Y2Nlc3MgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zdWNjZXNzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSAgcm91bmRlZC01XCI+PHNwYW4+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTY2NyA0TDYuODMzMzMgMTEuMzMzM0wzLjUgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzID8gJ3doaXRlJyA6ICcjMTdDNjUzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXMtMlwiPlBhc3M8L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEh1bWFuVmVyaWZpZWQoaSxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzPT09ZmFsc2UgPyAndGV4dC13aGl0ZSBiZy1kYW5nZXInIDogJ3RleHQtZGFuZ2VyIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZGFuZ2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMyBweC01IHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC01IGN1cnNvci1wb2ludGVyIHJvdW5kZWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi42NjY1IDRMNC42NjY1IDEyTTQuNjY2NSA0TDEyLjY2NjUgMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cz09PWZhbHNlID8gJ3doaXRlJyA6ICcjRjgyODVBJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvd3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RmFpbDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgJiYgcHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdFwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWN0ZWQgVHJhbnNjcmlwdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1zbS0xMiBwLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD0nYm90dG9tJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRvb2x0aXAtY29udGVudCB0b29sdGlwLWNvbnRlbnQgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWluLXctNTAwcHhcIj57e3Byb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSAnJyAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSBwcm9jZXNzPy5BSVN0YXR1c1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFzb24gJiBUaW1lIFN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLXNtLTEyIHAtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGksJ3JlYXNvbicpXCIgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2Nlc3M/LnJlYXNvbiA/IHByb2Nlc3M/LnJlYXNvbiA6ICdTZWxlY3QgUmVhc29uJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIiAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8ucmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gbXktMiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRyb3Bkb3duTGlzdFwiIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwicHJvY2Vzcz8ucmVhc29uID09PSBpdGVtPy5rZXkgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FtZXJhIHB4LTUgaXRlbXMgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgcHktMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVhc29uKGksIGl0ZW0/LmtleSwgJ3JlYXNvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8uaXRlbSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIElucHV0IGZvciBcIk90aGVyc1wiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9jZXNzPy5yZWFzb24gPT09ICdvdGhlcnMnXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvY2Vzcy5vdGhlclJlYXNvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgcmVhc29uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdzdGFydFRpbWUnKVwiIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgZnctc2VtaWJvbGQgYmctd2hpdGUgcHgtMlwiPlN0YXJ0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWxlY3RcIj57e3Byb2Nlc3M/LnN0YXJ0VGltZSA/IHByb2Nlc3M/LnN0YXJ0VGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6J01NOlNTJ319PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8uc3RhcnRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaW4gb2YgbWludXRlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TWludXRlKGksbWluLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJtaW4gPT09IHNlbGVjdGVkTWludXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW4gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2Vjb25kKGksc2VjLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdlbmRUaW1lJylcIiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkIGJnLXdoaXRlIHB4LTJcIj5FbmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPjxzcGFuPnt7cHJvY2Vzcy5lbmRUaW1lID8gcHJvY2Vzcy5lbmRUaW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNTTpTUyd9fTwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYXN0ID8gJ2Ryb3Bkb3duLWNvbnRlbnQxJyA6ICdkcm9wZG93bi1jb250ZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuW2ldPy5lbmRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pbiBvZiBtaW51dGVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm1pbiA9PT0gc2VsZWN0ZWRNaW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZ2V0U2Vjb25kc0Zyb21UaW1lKG1pbiArICc6JyArIHNlbGVjdGVkU2Vjb25kcykgPD0gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY29uZHNGcm9tVGltZShtaW4gKyAnOicgKyBzZWxlY3RlZFNlY29uZHMpID4gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdE1pbnV0ZShpLG1pbiwnZW5kVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWluIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImdldFNlY29uZHNGcm9tVGltZShzZWxlY3RlZE1pbnV0ZXMgKyAnOicgKyBzZWMpIDw9IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWNvbmRzRnJvbVRpbWUoc2VsZWN0ZWRNaW51dGVzICsgJzonICsgc2VjKSA+IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RTZWNvbmQoaSxzZWMsJ2VuZFRpbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlYyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3RlcFdpc2VQcm9jZXNzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIih0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkZWQnXCIgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhlIHRlc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSDilIDilIAgQ29udmVyc2F0aW9uIFJlY29yZGluZyArIFRyYW5zY3JpcHQg4pSA4pSAIC0tPlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIiAqbmdJZj1cImNvbnZlcnNhdGlvbkRhdGFcIj5cclxuICAgIDwhLS0gTGVmdDogUmVjb3JkaW5nICsgVHJhbnNjcmlwdCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cclxuICAgICAgICA8IS0tIENvbnZlcnNhdGlvbiBSZWNvcmRpbmcgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy1ib3hcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy10aXRsZVwiPkNvbnZlcnNhdGlvbiBSZWNvcmRpbmc8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBBdWRpbyBlbGVtZW50IC0tPlxyXG4gICAgICAgICAgICA8YXVkaW8gaWQ9XCJjb252LWF1ZGlvXCIgW3NyY109XCJjb252ZXJzYXRpb25EYXRhPy5hdWRpb191cmxcIlxyXG4gICAgICAgICAgICAgICAgKHRpbWV1cGRhdGUpPVwib25Db252VGltZVVwZGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgIChsb2FkZWRtZXRhZGF0YSk9XCJvbkNvbnZMb2FkZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAoZW5kZWQpPVwiY29udklzUGxheWluZyA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvYXVkaW8+XHJcbiAgICAgICAgICAgIDwhLS0gV2F2ZWZvcm0gYmFycyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdmVmb3JtLWJhcnNcIiBbY2xhc3MuaXMtcGxheWluZ109XCJjb252SXNQbGF5aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYmFyXCIgKm5nRm9yPVwibGV0IGggb2Ygd2F2ZWZvcm1IZWlnaHRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy53Zi1iYXItLXBsYXllZF09XCJjb252UHJvZ3Jlc3MgPiBpIC8gd2F2ZWZvcm1IZWlnaHRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFBsYXllciBjb250cm9scyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXllci1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGF5LWJ0bi13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBsYXktYnRuLWNpcmNsZVwiIChjbGljayk9XCJ0b2dnbGVDb252UGxheSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNvbnZJc1BsYXlpbmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIndoaXRlXCI+PHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjb252SXNQbGF5aW5nXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPjxwYXRoIGQ9XCJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6XCIvPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxheWVyLXByb2dyZXNzIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYXllci10aW1lIHN0YXJ0LXRpbWVcIj57eyBjb252Q3VycmVudFRpbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxheWVyLXRpbWUgZW5kLXRpbWVcIj57eyBjb252RHVyYXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXRyYWNrXCIgKGNsaWNrKT1cInNlZWtDb252QXVkaW8oJGV2ZW50KVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1maWxsXCIgW3N0eWxlLndpZHRoLiVdPVwiY29udlByb2dyZXNzICogMTAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtdXRlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVDb252TXV0ZSgpXCIgW3RpdGxlXT1cImNvbnZJc011dGVkID8gJ1VubXV0ZScgOiAnTXV0ZSdcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjb252SXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem0xMy41IDNjMC0xLjc3LTEuMDItMy4yOS0yLjUtNC4wM3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyek0xNCAzLjIzdjIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxcy0yLjExIDUuODUtNSA2LjcxdjIuMDZjNC4wMS0uOTEgNy00LjQ5IDctOC43N3MtMi45OS03Ljg2LTctOC43N3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNvbnZJc011dGVkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTE2LjUgMTJjMC0xLjc3LTEuMDItMy4yOS0yLjUtNC4wM3YyLjIxbDIuNDUgMi40NWMuMDMtLjIuMDUtLjQxLjA1LS42M3ptMi41IDBjMCAuOTQtLjIgMS44Mi0uNTQgMi42NGwxLjUxIDEuNTFDMjAuNjMgMTQuOTEgMjEgMTMuNSAyMSAxMmMwLTQuMjgtMi45OS03Ljg2LTctOC43N3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXpNNC4yNyAzTDMgNC4yNyA3LjczIDlIM3Y2aDRsNSA1di02LjczbDQuMjUgNC4yNWMtLjY3LjUyLTEuNDIuOTMtMi4yNSAxLjE4djIuMDZjMS4zOC0uMzEgMi42My0uOTUgMy42OS0xLjgxTDE5LjczIDIxIDIxIDE5LjczbC05LTlMNC4yNyAzek0xMiA0TDkuOTEgNi4wOSAxMiA4LjE4VjR6XCIvPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ29udmVyc2F0aW9uIFRyYW5zY3JpcHQgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC00IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmRpbmctdGl0bGUgbWItM1wiPkNvbnZlcnNhdGlvbiBUcmFuc2NyaXB0PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiAjMzQ0MDU0OyBsaW5lLWhlaWdodDogMS42OyBtYXgtaGVpZ2h0OiAxODBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2F0aW9uRGF0YT8udHJhbnNjcmlwdF9zdW1tYXJ5OyBlbHNlIG5vVHJhbnNjcmlwdFwiPnt7IGNvbnZlcnNhdGlvbkRhdGE/LnRyYW5zY3JpcHRfc3VtbWFyeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2NyaXB0PjxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPk5vIHRyYW5zY3JpcHQgYXZhaWxhYmxlLjwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmlnaHQ6IFN0ZXAgdGFicyArIGF1ZGlvIGluZm8gKyBldmlkZW5jZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWluLWhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udi1jYXJkLXRpdGxlXCI+U3RlcC13aXNlIEJyZWFrZG93bjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0xXCI+QXVkaW88L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFJlY2VudGx5IEF1ZGl0ZWQgQnkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG1iLTMgcGItMiBib3JkZXItYm90dG9tXCIgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0ZWRCeSB8fCBhdWRpdERldGFpbHM/LmF1ZGl0ZWREYXRlXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjNjY3MDg1O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc3ViLXRpdGxlIG10LTJcIiAqbmdJZj1cImF1ZGl0RGV0YWlscz8ubGFzdEF1ZGl0ZWREZXRhaWxzPy5hdWRpdGVkQnlcIj5cclxuICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMVwiPlJlY2VudGx5IEF1ZGl0ZWQgQnkgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzcgMTRWMTIuNjY2N0MxMy4zMzM3IDExLjk1OTQgMTMuMDUyNyAxMS4yODExIDEyLjU1MjYgMTAuNzgxQzEyLjA1MjUgMTAuMjgxIDExLjM3NDIgMTAgMTAuNjY3IDEwSDUuMzMzNjZDNC42MjY0MSAxMCAzLjk0ODE0IDEwLjI4MSAzLjQ0ODA0IDEwLjc4MUMyLjk0Nzk0IDExLjI4MTEgMi42NjY5OSAxMS45NTk0IDIuNjY2OTkgMTIuNjY2N1YxNE0xMC42NjcgNC42NjY2N0MxMC42NjcgNi4xMzk0MyA5LjQ3MzA4IDcuMzMzMzMgOC4wMDAzMyA3LjMzMzMzQzYuNTI3NTcgNy4zMzMzMyA1LjMzMzY2IDYuMTM5NDMgNS4zMzM2NiA0LjY2NjY3QzUuMzMzNjYgMy4xOTM5MSA2LjUyNzU3IDIgOC4wMDAzMyAyQzkuNDczMDggMiAxMC42NjcgMy4xOTM5MSAxMC42NjcgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3BhbiA+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uYXVkaXRlZEJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTUyXzI5NDMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTUyXzI5NDMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uY29tcGxldGlvblRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8udGltZVpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIEJvZHkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXQtMTBcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDI4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGVwIHBpbGwgbGlzdCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDE5MHB4OyBtYXgtaGVpZ2h0OiAzMjBweDsgb3ZlcmZsb3cteTogYXV0bzsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0VBRUNGMDsgcGFkZGluZy1yaWdodDogMTJweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIGNvbnZlcnNhdGlvbkRhdGE/Lm1ldHJpY3NfcmVzdWx0czsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udi1zdGVwLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkU3RlcEluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU3RlcEluZGV4ID0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwPy5tZXRyaWNOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0ZWQgc3RlcCBkZXRhaWwgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgcHMtMlwiICpuZ0lmPVwiY29udmVyc2F0aW9uRGF0YT8ubWV0cmljc19yZXN1bHRzPy5bc2VsZWN0ZWRTdGVwSW5kZXhdIGFzIHN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENsaWNrIHRvIFBsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtcGxheS1yb3dcIiAqbmdJZj1cInN0ZXA/LnN0YXJ0VGltZVwiIChjbGljayk9XCJwbGF5RnJvbVN0ZXAoc3RlcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtcGxheS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIndoaXRlXCI+PHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICMxMDE4Mjg7XCI+Q2xpY2sgdG8gUGxheTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2NjcwODU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW8gU3RhcnRzIGF0IHt7IHN0ZXA/LnN0YXJ0VGltZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJzdGVwPy5lbmRUaW1lXCI+IOKAkyB7eyBzdGVwPy5lbmRUaW1lIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1bW1hcnkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMxMDE4Mjg7IG1hcmdpbi1ib3R0b206IDhweDtcIj5TdW1tYXJ5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMzQ0MDU0OyBsaW5lLWhlaWdodDogMS42O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwPy5ldmlkZW5jZV9xdW90ZTsgZWxzZSBub0V2aWRlbmNlXCI+e3sgc3RlcD8uZXZpZGVuY2VfcXVvdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRXZpZGVuY2U+PHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+Tm8gZXZpZGVuY2UgYXZhaWxhYmxlLjwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjYXJkIG10LTMgcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5IaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQtM1wiICpuZ0lmPVwiaGlzdG9yeURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+QXVkaXRlZCBCeTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIiA+QXVkaXRlZCBEYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiID5UaW1lIFN0YW1wPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiID5WaWV3IExvZ3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaXN0b3J5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnVzZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLkRhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uVGltZX19IElTVDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwidmlld0hpc3RvcnlNb2RlbChpdGVtKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoaGlzdG9yeXRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCByb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihoaXN0b3J5dGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwicm93IG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoZSB0ZXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN2aWV3SGlzdG9yeSBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC01IHRzNzAwcHggc2Nyb2xsXCI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGQtZmxleFwiPlxyXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4IDIyVjI4TDMyIDMwTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0zIHB0LTIgZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BdWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cImhpc3RvcnlEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5TdGVwLWJ5LVN0ZXAgUHJvY2VzczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+U3RhdHVzIGNoYW5nZWQgZnJvbTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+Tm90ZWQgVGltZSBSYW5nZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+UmVhc29uIGZvciBFcnJvcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aWV3SGlzdG9yeURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0ucHJvY2Vzc05hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1lLTJcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtZS0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMxXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMzEgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwLjM1MzYgNC4zNTM1NUMzMC41NDg4IDQuMTU4MjkgMzAuNTQ4OCAzLjg0MTcxIDMwLjM1MzYgMy42NDY0NUwyNy4xNzE2IDAuNDY0NDY2QzI2Ljk3NjMgMC4yNjkyMDQgMjYuNjU5NyAwLjI2OTIwNCAyNi40NjQ1IDAuNDY0NDY2QzI2LjI2OTIgMC42NTk3MjggMjYuMjY5MiAwLjk3NjMxMSAyNi40NjQ1IDEuMTcxNTdMMjkuMjkyOSA0TDI2LjQ2NDUgNi44Mjg0M0MyNi4yNjkyIDcuMDIzNjkgMjYuMjY5MiA3LjM0MDI3IDI2LjQ2NDUgNy41MzU1M0MyNi42NTk3IDcuNzMwOCAyNi45NzYzIDcuNzMwOCAyNy4xNzE2IDcuNTM1NTNMMzAuMzUzNiA0LjM1MzU1Wk0wIDQuNUgzMFYzLjVIMFY0LjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uYXVkaXRlZFN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtcy0yXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmF1ZGl0ZWRTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtcy0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiaXRlbS5zdGFydFRpbWVcIj5Ob3RlZCBUaW1lIFJhbmdlIDogPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmsxXCI+e3tpdGVtLnN0YXJ0VGltZSA/IGl0ZW0uc3RhcnRUaW1lOictLSd9fSAtIHt7aXRlbS5lbmRUaW1lfX08L3NwYW4+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPjxzcGFuICpuZ0lmPVwiaXRlbS5yZWFzb24gIT09J290aGVycydcIj57e2l0ZW0ucmVhc29ufX08L3NwYW4+PHNwYW4gKm5nSWY9XCJpdGVtLnJlYXNvbiA9PT0nb3RoZXJzJ1wiPnt7aXRlbS5vdGhlclJlYXNvbn19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZpZXdDYW5jZWwgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgZ3JvdXAtZGVsZXRlIHB5LTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjcuOTk4OCAyNFYyOE0yNy45OTg4IDMySDI4LjAwODhNMjYuMjg4OCAxOC44NkwxNy44MTg4IDMzQzE3LjY0NDIgMzMuMzAyNCAxNy41NTE4IDMzLjY0NTMgMTcuNTUwOCAzMy45OTQ1QzE3LjU0OTggMzQuMzQzNyAxNy42NDAzIDM0LjY4NzEgMTcuODEzMiAzNC45OTA1QzE3Ljk4NjIgMzUuMjkzOSAxOC4yMzU1IDM1LjU0NjcgMTguNTM2NSAzNS43MjM4QzE4LjgzNzUgMzUuOTAwOSAxOS4xNzk2IDM1Ljk5NjEgMTkuNTI4OCAzNkgzNi40Njg4QzM2LjgxOCAzNS45OTYxIDM3LjE2MDEgMzUuOTAwOSAzNy40NjExIDM1LjcyMzhDMzcuNzYyMSAzNS41NDY3IDM4LjAxMTQgMzUuMjkzOSAzOC4xODQ0IDM0Ljk5MDVDMzguMzU3MyAzNC42ODcxIDM4LjQ0NzggMzQuMzQzNyAzOC40NDY4IDMzLjk5NDVDMzguNDQ1OCAzMy42NDUzIDM4LjM1MzQgMzMuMzAyNCAzOC4xNzg4IDMzTDI5LjcwODggMTguODZDMjkuNTMwNSAxOC41NjYxIDI5LjI3OTUgMTguMzIzMSAyOC45OCAxOC4xNTQ0QzI4LjY4MDUgMTcuOTg1OCAyOC4zNDI1IDE3Ljg5NzIgMjcuOTk4OCAxNy44OTcyQzI3LjY1NTEgMTcuODk3MiAyNy4zMTcxIDE3Ljk4NTggMjcuMDE3NiAxOC4xNTQ0QzI2LjcxODEgMTguMzIzMSAyNi40NjcxIDE4LjU2NjEgMjYuMjg4OCAxOC44NlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+ICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkFyZSB5b3Ugc3VyZT88L2E+XHJcbiAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cInN1Yi10aXRsZSBmdy1ub3JtYWwgbXQtMlwiPldvdWxkIHlvdSBsaWtlIHRvIGNhbmNlbCB0aGlzPzwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiByb2xlPVwiZ3JvdXBcIiBjbGFzcz1cImQtZmxleCBtdC0zIG1iLTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbWUtM1wiIChjbGljayk9XCJPbkNhbmNlbCgpXCI+Tm88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFsZXJ0LXRvYXN0XCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciB3LTEwMCBtcy0zXCIgKGNsaWNrKT1cIm9uWWVzKClcIj5ZZXM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPC9zZWN0aW9uPiJdfQ==
1864
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXllLXRlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC9leWUtdGVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0L2V5ZS10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQTZCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwSSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQWdCLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQVksR0FBRyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk5RyxPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNdkUsTUFBTSxPQUFPLGdCQUFnQjtJQXNFakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUEwQjtJQUMxQjtJQUNBO0lBOUVWLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxXQUFXLENBQVk7SUFDdkIsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLFlBQVksQ0FBTTtJQUNsQixZQUFZLENBQU07SUFDbEIsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDakIs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QyxRQUFRLENBQUM7Z0JBb3pCWixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0MsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNzQixXQUFXO3NCQUF2RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgdGFrZVVudGlsLE9ic2VydmFibGUsdGFwLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXllVGVzdEF1ZGl0U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leWUtdGVzdC1hdWRpdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IFNlbmRBbGVydENvbXBvbmVudCB9IGZyb20gXCIuL3NlbmQtYWxlcnQvc2VuZC1hbGVydC5jb21wb25lbnRcIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWV5ZS10ZXN0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9leWUtdGVzdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZXllLXRlc3QuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEV5ZVRlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBleWVUZXN0Rm9ybTogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnkgPSB7fTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBpc0N1c3RvbURhdGU6IGFueTtcclxuICBoZWFkZXJGaWx0ZXJzOiBhbnkgPSBbXTtcclxuICBDbHVzdGVyTGlzdDogYW55ID0gW107XHJcbiAgc3RvcmVzOiBhbnkgPSBbXTtcclxuICBjbGllbnREYXRhOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ3JvdXBzOiBhbnkgPSBbXTtcclxuICBzdG9yZUxpc3Q6IGFueVtdID0gW107XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgZXllVGVzdERhdGE6IGFueTtcclxuICB0eXBlVmFsdWU6IGFueTtcclxuICB0eXBlOiBhbnkgPSBbXHJcbiAgICB7IHZhbHVlOiBcInBoeXNpY2FsXCIsIGxhYmVsOiBcIkV5ZSBUZXN0XCIgfSxcclxuICAgIHsgdmFsdWU6IFwicmVtb3RlXCIsIGxhYmVsOiBcIlJlbW90ZSBUZXN0XCIgfSxcclxuICBdO1xyXG4gIGF1ZGl0VHlwZTogYW55ID0gW1xyXG4gICAgeyBsYWJlbDogXCJBbGxcIiwgdmFsdWU6IFwiYWxsXCIgfSxcclxuICAgIHsgbGFiZWw6IFwiQWR1bHRcIiwgdmFsdWU6IFwiYWR1bHRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJLaWRcIiwgdmFsdWU6IFwia2lkc1wiIH0sXHJcbiAgXTtcclxuICBkYXRlVHlwZTogYW55ID0gW1xyXG4gICAgeyB2YWx1ZTogXCJmaWxlRGF0ZVwiLCBsYWJlbDogXCJFeWUgVGVzdCBEYXRlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiYXVkaXRlZERhdGVcIiwgbGFiZWw6IFwiQXVkaXRlZCBEYXRlXCIgfSxcclxuICBdO1xyXG4gIHR5cGVQZXJjZW50YWdlQXJyYXk6YW55ID0gW107XHJcblxyXG4gICBuZWFyQWRkaXRpb25BcnJheTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBsYWJlbDogXCJBbGxcIixcclxuICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICB9LFxyXG4gICAgeyBcclxuICAgICAgbGFiZWw6IFwiV2l0aCBOZWFyIEFkZGl0aW9uXCIsIFxyXG4gICAgICB2YWx1ZTogXCJ0cnVlXCIgXHJcbiAgICB9LFxyXG4gICAgeyBcclxuICAgICAgbGFiZWw6IFwiV2l0aG91dCBOZWFyIEFkZGl0aW9uXCIsIFxyXG4gICAgICB2YWx1ZTogXCJmYWxzZVwiIFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBjYXRlZ29yeUFycmF5OiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIGxhYmVsOiBcIkdlbnVpbmVcIixcclxuICAgICAgdmFsdWU6IFwiZ2VudWluZVwiLFxyXG4gICAgfSxcclxuICAgIHsgbGFiZWw6IFwiRmFrZVwiLCB2YWx1ZTogXCJmYWtlXCIgfSxcclxuICBdO1xyXG5cclxuICBhdWRpdGVkRGF0ZUF1ZGl0U3RhdHVzOmFueSA9W1xyXG4gICAgeyBsYWJlbDogXCJBdWRpdGVkXCIsIHZhbHVlOiBcIkF1ZGl0ZWRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJSZS1BdWRpdGVkXCIsIHZhbHVlOiBcIlJlLUF1ZGl0ZWRcIiB9LFxyXG4gICBcclxuICBdXHJcblxyXG4gIGF1ZGl0U3RhdHVzQXJyYXk6YW55ID1bXHJcbiAgICB7IGxhYmVsOiBcIkF1ZGl0ZWRcIiwgdmFsdWU6IFwiQXVkaXRlZFwiIH0sXHJcbiAgICB7IGxhYmVsOiBcIlJlLUF1ZGl0ZWRcIiwgdmFsdWU6IFwiUmUtQXVkaXRlZFwiIH0sXHJcbiAgICB7bGFiZWwgOlwiWWV0LXRvLUF1ZGl0XCIsIHZhbHVlOiBcIllldC10by1BdWRpdFwiIH0sXHJcbiAgICB7IGxhYmVsIDpcIkluLVByb2dyZXNzXCIsIHZhbHVlOiBcIkluLVByb2dyZXNzXCIgfSxcclxuICAgIFxyXG4gIF1cclxuICBzaG93RXllVGVzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleWVTZXJ2aWNlOiBFeWVUZXN0QXVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxyXG4gICkge1xyXG4gICAgdGhpcy50eXBlVmFsdWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KFwidHlwZVZhbHVlXCIpO1xyXG4gIH1cclxuICBoZWFkRGF0ZTogYW55O1xyXG4gIGhlYWREYXRlRW5kOiBhbnk7XHJcbiAgdXNlcnM6IGFueTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgY2xvc2VFeWVUZXN0KCkge1xyXG4gICAgdGhpcy5zaG93RXllVGVzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFJtTGlzdE5ldzphbnk7XHJcbiAgc3RvcmVzTmV3OmFueTtcclxuICBkYXRhQmFja0dldDphbnk7XHJcbiAgYXVkaXRTdGF0dXNOZXc6YW55O1xyXG4gIGNvbXBsaWFuY2VTY29yZUFycmF5OmFueTtcclxuICAvKipcclxuICAgKiBDb21wbGlhbmNlLXNjb3JlIG9wdGlvbnMgZm9yIGEgbGV2ZWw6IHN0b3JlIGxldmVsIHNjb3JlcyBpbiBkaXNjcmV0ZSBzdGVwcyxcclxuICAgKiBldmVyeSBvdGhlciBsZXZlbCBpbiAxMCUgYmFuZHMuIEtlZXBzIG5nT25Jbml0IGFuZCB0eXBlVmFsL3R5cGVWYWwxIGluIHN5bmMuXHJcbiAgICovXHJcbiAgc2V0Q29tcGxpYW5jZVBlcmNlbnRhZ2VBcnJheShrZXlUeXBlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZVBlcmNlbnRhZ2VBcnJheSA9XHJcbiAgICAgIGtleVR5cGUgPT09IFwic3RvcmVcIlxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjAlXCIsIHZhbHVlOiBcIjBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjE3JVwiLCB2YWx1ZTogXCIxNlwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMzMlXCIsIHZhbHVlOiBcIjMzXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI1MCVcIiwgdmFsdWU6IFwiNTBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjY3JVwiLCB2YWx1ZTogXCI2NlwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiODMlXCIsIHZhbHVlOiBcIjgzXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCIxMDAlXCIsIHZhbHVlOiBcIjEwMFwiIH0sXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgOiBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMOKAkzEwJVwiLCB2YWx1ZTogXCIwLTEwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCIxMOKAkzIwJVwiLCB2YWx1ZTogXCIxMC0yMFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiMjDigJMzMCVcIiwgdmFsdWU6IFwiMjAtMzBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjMw4oCTNDAlXCIsIHZhbHVlOiBcIjMwLTQwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI0MOKAkzUwJVwiLCB2YWx1ZTogXCI0MC01MFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiNTDigJM2MCVcIiwgdmFsdWU6IFwiNTAtNjBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjYw4oCTNzAlXCIsIHZhbHVlOiBcIjYwLTcwXCIgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogXCI3MOKAkzgwJVwiLCB2YWx1ZTogXCI3MC04MFwiIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiODDigJM5MCVcIiwgdmFsdWU6IFwiODAtOTBcIiB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIjkw4oCTMTAwJVwiLCB2YWx1ZTogXCI5MC0xMDBcIiB9LFxyXG4gICAgICAgICAgXTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IHVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcIlwiKTtcclxuICAgIHRoaXMudXNlcnMgPSB1c2VyaW5mbztcclxuICAgIHRoaXMuaW5pdEFpU2Vzc2lvbigpO1xyXG4vLyBTdG9yZSBsZXZlbCBhbHdheXMgdXNlcyB0aGUgZGlzY3JldGUgc3RlcCBzY29yZXMsIGV2ZXJ5IG90aGVyIGxldmVsIHRoZVxyXG4vLyBiYW5kZWQgcmFuZ2VzIOKAlCBzYW1lIHJ1bGUgYXMgdHlwZVZhbCgpL3R5cGVWYWwxKCkuIEEgP2tleVR5cGU9c3RvcmUgZGVlcFxyXG4vLyBsaW5rIHRoZXJlZm9yZSBoYXMgdG8gYmUgaG9ub3VyZWQgaGVyZSwgbm90IGp1c3QgdGhlIHJvbGUgZGVmYXVsdCwgb3IgdGhlXHJcbi8vIGRyb3Bkb3duIHNob3dzIGJhbmRzIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHNjb3BlZCB0byBhIHN0b3JlLlxyXG5jb25zdCBsYW5kaW5nS2V5VHlwZSA9XHJcbiAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChcImtleVR5cGVcIikgfHxcclxuICAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCJcclxuICAgID8gXCJybVwiXHJcbiAgICA6IHRoaXMudXNlcnM/LnJvbGUgPT09IFwiYWRtaW5cIlxyXG4gICAgPyBcImNsdXN0ZXJcIlxyXG4gICAgOiBcInN0b3JlXCIpO1xyXG50aGlzLnNldENvbXBsaWFuY2VQZXJjZW50YWdlQXJyYXkobGFuZGluZ0tleVR5cGUpO1xyXG5cclxuICAgIGlmICghdGhpcy50eXBlVmFsdWUpIHtcclxuICAgICAgdGhpcy50eXBlVmFsdWUgPSBcInBoeXNpY2FsXCI7XHJcbiAgICB9XHJcbiAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgY29uc3QgaXNWYWxpZERhdGUgPSBtID4gdGhpcy5kYXlqcygpO1xyXG4gICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHtcclxuICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlcIikuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICB9O1xyXG4gICAgbGV0IGhlYWRlckZpbHRlcnMgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgICAgIFxyXG4gICAgaWYgKGhlYWRlckZpbHRlcnM/LmRhdGU/LnN0YXJ0RGF0ZSAmJiBoZWFkZXJGaWx0ZXJzPy5kYXRlPy5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgaGVhZGVyRmlsdGVycy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgIGVuZERhdGU6IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICksXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgIC8vIERlZXAtbGluayBmcm9tIHRoZSBFeWUgVGVzdCBkYXNoYm9hcmQ6IGtleVR5cGU9c3RvcmUmc3RvcmVDb2RlPeKApiZvcHRvbUlkPeKAplxyXG4gICAgICAvLyBMYW5kaW5nIGxldmVsIG11c3QgY29tZSBmcm9tIHRoZSBsaW5rLCBub3QgdGhlIHJvbGUgZGVmYXVsdFxyXG4gICAgICAvLyAoc3VwZXJhZG1pbiAtPiBybSwgYWRtaW4gLT4gY2x1c3RlciksIHNvIGEgcm93J3MgQXVkaXQgYnV0dG9uIGxhbmRzIG9uXHJcbiAgICAgIC8vIHRoYXQgcm93J3MgU1RPUkUgdmlldy4gQ2FwdHVyZWQgaGVyZSBhbmQgYXBwbGllZCBvbmNlIHRoZSBjbHVzdGVyL3N0b3JlXHJcbiAgICAgIC8vIGxpc3RzIGhhdmUgbG9hZGVkIChzZWUgYXBwbHlEZWVwTGlua1N0b3JlKS5cclxuICAgICAgaWYgKHBhcmFtcyAmJiBwYXJhbXNbXCJrZXlUeXBlXCJdKSB7XHJcbiAgICAgICAgdGhpcy5kZWVwTGlua0tleVR5cGUgPSBwYXJhbXNbXCJrZXlUeXBlXCJdO1xyXG4gICAgICAgIC8vIFRoZSBsaW5rJ3MgbGV2ZWwgbXVzdCB3aW4gb3ZlciB0aGUgcm9sZSBkZWZhdWx0IChzdXBlcmFkbWluIC0+IHJtKVxyXG4gICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmVDb2RlIGxvb2t1cCBsYXRlciBmaW5kcyBhIG1hdGNoLFxyXG4gICAgICAgIC8vIG90aGVyd2lzZSB0aGUgcGF5bG9hZCBnb2VzIG91dCBhcyBybSB3aGlsZSB0aGUgVVJMIGFza2VkIGZvciBzdG9yZS5cclxuICAgICAgICB0aGlzLmtleVR5cGUgPSBwYXJhbXNbXCJrZXlUeXBlXCJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zW1wic3RvcmVDb2RlXCJdKSB7XHJcbiAgICAgICAgdGhpcy5kZWVwTGlua1N0b3JlQ29kZSA9IHBhcmFtc1tcInN0b3JlQ29kZVwiXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyYW1zICYmIHBhcmFtc1tcIm9wdG9tSWRcIl0pIHtcclxuICAgICAgICB0aGlzLmRlZXBMaW5rT3B0b21JZCA9IHBhcmFtc1tcIm9wdG9tSWRcIl07XHJcbiAgICAgICAgLy8gRHJpdmVzIHRoZSBmaWx0ZXJCeU9wdG9tIHBheWxvYWQga2V5LiBVbmxpa2Ugc3RvcmVDb2RlIHRoaXMgaXMgbm90XHJcbiAgICAgICAgLy8gY29uc3VtZWQsIHNvIHRoZSBmaWx0ZXIgc3Vydml2ZXMgcGFnaW5nL3NvcnRpbmcgdW50aWwgaXQgaXMgY2xlYXJlZC5cclxuICAgICAgICB0aGlzLmZpbHRlckJ5T3B0b20gPSBTdHJpbmcocGFyYW1zW1wib3B0b21JZFwiXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBhcmFtcyAmJlxyXG4gICAgICAgIHBhcmFtc1tcImZyb21EYXRlXCJdICYmXHJcbiAgICAgICAgcGFyYW1zW1widG9EYXRlXCJdICYmXHJcbiAgICAgICAgcGFyYW1zW1widHlwZVZhbHVlXCJdXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMudHlwZVZhbHVlID0gcGFyYW1zW1widHlwZVZhbHVlXCJdID8gcGFyYW1zW1widHlwZVZhbHVlXCJdIDogXCJwaHlzaWNhbFwiO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBwYXJhbXNbXCJmcm9tRGF0ZVwiXSxcclxuICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBwYXJhbXNbXCJ0b0RhdGVcIl0sXHJcbiAgICAgICAgICBcIllZWVktTU0tRERcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXRcIl0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGZyb21EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIFwiREQtTU0tWVlZWVwiXHJcbiAgICAgICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICAgICAgdG9EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSxcclxuICAgICAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICAgICApLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgICAgICAgIHR5cGVWYWx1ZTogdGhpcy50eXBlVmFsdWUgPyB0aGlzLnR5cGVWYWx1ZSA6IFwicGh5c2ljYWxcIixcclxuICAgICAgICAgICAgLy8gQ2FycnkgdGhlIGRlZXAtbGluayBzZWxlY3Rpb24gdGhyb3VnaCB0aGlzIHJlZGlyZWN0OyBkcm9wcGluZyBpdFxyXG4gICAgICAgICAgICAvLyBoZXJlIGlzIHdoYXQgbWFkZSBzdG9yZUNvZGUgdW51c2FibGUgZnJvbSBhbiBleHRlcm5hbCBsaW5rLlxyXG4gICAgICAgICAgICAuLi4odGhpcy5kZWVwTGlua0tleVR5cGUgPyB7IGtleVR5cGU6IHRoaXMuZGVlcExpbmtLZXlUeXBlIH0gOiB7fSksXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZXBMaW5rU3RvcmVDb2RlXHJcbiAgICAgICAgICAgICAgPyB7IHN0b3JlQ29kZTogdGhpcy5kZWVwTGlua1N0b3JlQ29kZSB9XHJcbiAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZXBMaW5rT3B0b21JZCA/IHsgb3B0b21JZDogdGhpcy5kZWVwTGlua09wdG9tSWQgfSA6IHt9KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IGRhdGVUaW1lID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGU7XHJcbiAgICB0aGlzLmhlYWREYXRlID0gdGhpcy5kYXlqcyhkYXRlVGltZSwgXCJERC1NTS1ZWVlZXCIpLmZvcm1hdChcIk1NTSwgRERcIik7XHJcbiAgICB0aGlzLmhlYWREYXRlRW5kID0gdGhpcy5kYXlqcyhcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLFxyXG4gICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIik7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiVHlwZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlVmFsdWUpO1xyXG4gICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNvbXBsaWFuY2VTY29yZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlUGVyY2VudGFnZUFycmF5KTtcclxuICAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJhdWRpdFN0YXR1c1wiKT8uc2V0VmFsdWUodGhpcy5hdWRpdFN0YXR1c0FycmF5KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcIlwiKVxyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQpIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxSbTEoKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldEFsbEdyb3VwczEoKSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldEFsbFN0b3JlczEoKSlcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgLy8gQWxsIGRvbmUg4pyFXHJcbiAgICAgICAgLy8gRGVlcCBsaW5rIHdpbnMgb3ZlciB0aGUgcm9sZSBkZWZhdWx0OiBzZWxlY3QgdGhlIGxpbmtlZCBzdG9yZSAoYW5kXHJcbiAgICAgICAgLy8gZm9yY2Ugc3RvcmUgbGV2ZWwpIGJlZm9yZSB0aGUgZmlyc3Qgc3VibWl0LCBzbyB0aGUgaW5pdGlhbCByZXN1bHQgc2V0XHJcbiAgICAgICAgLy8gaXMgYWxyZWFkeSBzY29wZWQgdG8gdGhhdCBzdG9yZSBpbnN0ZWFkIG9mIFJNL2NsdXN0ZXIuXHJcbiAgICAgICAgdGhpcy5hcHBseURlZXBMaW5rU3RvcmUoKTtcclxuICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2FkaW5nIGRhdGE6XCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgLy8gfSwgMTApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudXNlcnMgJiYgdGhpcy51c2Vycz8uY2xpZW50SWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50ID0gdGhpcy51c2Vycy5jbGllbnRJZDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbFJtMSgpXHJcbiAgICAucGlwZShcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0QWxsR3JvdXBzMSgpKSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0QWxsU3RvcmVzMSgpKVxyXG4gICAgKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAvLyBBbGwgZG9uZSDinIVcclxuICAgICAgICAvLyBEZWVwIGxpbmsgd2lucyBvdmVyIHRoZSByb2xlIGRlZmF1bHQ6IHNlbGVjdCB0aGUgbGlua2VkIHN0b3JlIChhbmRcclxuICAgICAgICAvLyBmb3JjZSBzdG9yZSBsZXZlbCkgYmVmb3JlIHRoZSBmaXJzdCBzdWJtaXQsIHNvIHRoZSBpbml0aWFsIHJlc3VsdCBzZXRcclxuICAgICAgICAvLyBpcyBhbHJlYWR5IHNjb3BlZCB0byB0aGF0IHN0b3JlIGluc3RlYWQgb2YgUk0vY2x1c3Rlci5cclxuICAgICAgICB0aGlzLmFwcGx5RGVlcExpbmtTdG9yZSgpO1xyXG4gICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvYWRpbmcgZGF0YTpcIiwgZXJyKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIC8vIH0sIDEwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0QWJzVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBNYXRoLmFicyh2YWx1ZSkgOiAwO1xyXG4gIH1cclxuICAvLyBjbHVzdGVycyBvbGQgYXBpIHJlbW92ZWRcclxuICAvLyBnZXRBbGxHcm91cHMoKSB7XHJcbiAgLy8gICB0aGlzLnRyYXhTZXJ2aWNlLmdldGNsdXN0ZXJzKHsgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LCBncm91cDogW10sIGNpdHk6IFtdIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gIC8vICAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IHJlcy5kYXRhLmdyb3VwRGF0YVxyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gW11cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG4gIGxvYWRpbmcxID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSA/a2V5VHlwZT1zdG9yZSZzdG9yZUNvZGU94oCmIGRlZXAgbGluayBvbmNlIGBzdG9yZUxpc3RgIGhhcyBsb2FkZWQuXHJcbiAgICogUmV0dXJucyB0cnVlIGlmIGl0IHNlbGVjdGVkIGEgc3RvcmUgKGNhbGxlciBzaG91bGQgc3VibWl0IHdpdGggaXQpLlxyXG4gICAqXHJcbiAgICogTWF0Y2hlcyBzdG9yZUNvZGUgYWdhaW5zdCBzdG9yZUNvZGUvc3RvcmVJZC9zdG9yZU5hbWUgYmVjYXVzZSB0aGUgRXllIFRlc3RcclxuICAgKiBkYXNoYm9hcmQgc2VuZHMgdGhlIGNvZGUgaXQgZGlzcGxheXMgKGUuZy4gXCJMS1NUMTE5OVwiKSBhbmQgdGhlIFRyYXggc3RvcmVcclxuICAgKiBvYmplY3RzIGRvIG5vdCB1c2Ugb25lIGNvbnNpc3RlbnQga2V5IGZvciBpdC5cclxuICAgKi9cclxuICBhcHBseURlZXBMaW5rU3RvcmUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5kZWVwTGlua0tleVR5cGUgIT09IFwic3RvcmVcIiB8fCAhdGhpcy5kZWVwTGlua1N0b3JlQ29kZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJbZXllLXRlc3QgZGVlcCBsaW5rXSBza2lwcGVkXCIsIHtcclxuICAgICAgICBkZWVwTGlua0tleVR5cGU6IHRoaXMuZGVlcExpbmtLZXlUeXBlLFxyXG4gICAgICAgIGRlZXBMaW5rU3RvcmVDb2RlOiB0aGlzLmRlZXBMaW5rU3RvcmVDb2RlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FudGVkID0gU3RyaW5nKHRoaXMuZGVlcExpbmtTdG9yZUNvZGUpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAodGhpcy5zdG9yZUxpc3QgfHwgW10pLmZpbmQoKHN0OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtzdD8uc3RvcmVDb2RlLCBzdD8uc3RvcmVJZCwgc3Q/LnN0b3JlTmFtZV07XHJcbiAgICAgIHJldHVybiBjYW5kaWRhdGVzLnNvbWUoXHJcbiAgICAgICAgKGM6IGFueSkgPT4gYyAhPSBudWxsICYmIFN0cmluZyhjKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gd2FudGVkXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiW2V5ZS10ZXN0IGRlZXAgbGlua10gbm8gc3RvcmUgbWF0Y2hlZFwiLCB7XHJcbiAgICAgICAgd2FudGVkLFxyXG4gICAgICAgIHN0b3JlTGlzdExlbmd0aDogKHRoaXMuc3RvcmVMaXN0IHx8IFtdKS5sZW5ndGgsXHJcbiAgICAgICAgc2FtcGxlOiAodGhpcy5zdG9yZUxpc3QgfHwgW10pLnNsaWNlKDAsIDMpLm1hcCgoc3Q6IGFueSkgPT4gKHtcclxuICAgICAgICAgIHN0b3JlQ29kZTogc3Q/LnN0b3JlQ29kZSxcclxuICAgICAgICAgIHN0b3JlSWQ6IHN0Py5zdG9yZUlkLFxyXG4gICAgICAgICAgc3RvcmVOYW1lOiBzdD8uc3RvcmVOYW1lLFxyXG4gICAgICAgIH0pKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBDb25zdW1lIHRoZSBsaW5rIGVpdGhlciB3YXk6IGFuIHVubWF0Y2hlZCBjb2RlIG11c3Qgbm90IHJlLWZpcmUgb24gZXZlcnlcclxuICAgIC8vIHN1YnNlcXVlbnQgZW1pc3Npb24gb2YgdGhlIHF1ZXJ5UGFyYW1zL2RhdGFSYW5nZSBzdWJzY3JpcHRpb25zLlxyXG4gICAgdGhpcy5kZWVwTGlua0tleVR5cGUgPSBudWxsO1xyXG4gICAgdGhpcy5kZWVwTGlua1N0b3JlQ29kZSA9IG51bGw7XHJcbiAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIGJ1aWxkUmVxdWVzdERhdGEoKSByZWFkcyB0aGlzLmtleVR5cGUgKHRoZXJlIGlzIG5vIGtleVR5cGUgZm9ybSBjb250cm9sKSxcclxuICAgIC8vIHNvIHNldHRpbmcgdGhlIHByb3BlcnR5IGlzIHdoYXQgc2NvcGVzIHRoZSByZXF1ZXN0IHRvIHN0b3JlIGxldmVsLlxyXG4gICAgdGhpcy5rZXlUeXBlID0gXCJzdG9yZVwiO1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJzdG9yZUxpc3RcIik/LnNldFZhbHVlKFttYXRjaF0pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBjbHVzdGVycyBuZXcgYXBpXHJcbiAgZ2V0QWxsR3JvdXBzMShldmVudD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgXHJcbiAgICBsZXQgcm1MaXN0OiBhbnkgPSBbXTtcclxuICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkge1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgcm1MaXN0LnB1c2goZWw/LmVtYWlsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBldmVudD8ubWFwKChlbDogYW55KSA9PiBlbD8uZW1haWwpIHx8IFt0aGlzLnVzZXJzPy5lbWFpbF07XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnM/LmNsaWVudCA/IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQgOiBcIlwiLFxyXG4gICAgICBybUxpc3Q6IHJtTGlzdC5sZW5ndGggPiAwID8gcm1MaXN0IDogW3RoaXMudXNlcnM/LmVtYWlsXSxcclxuICAgIH07XHJcbiAgIHJldHVybiB0aGlzLmV5ZVNlcnZpY2UuZ2V0Q2x1c3RlcnMob2JqKS5waXBlKFxyXG4gICAgdGFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKHRoaXMuQ2x1c3Rlckxpc3QpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5DbHVzdGVyTGlzdC5tYXAoKGVsOiBhbnkpID0+IGVsLmNsdXN0ZXJOYW1lKTtcclxuICAgICAgICAvLyBOb3RlOiBEbyBOT1QgY2FsbCBnZXRBbGxTdG9yZXMoKSBoZXJlOyBjaGFpbiBpdCBvdXRzaWRlXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hZGluZzEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pXHJcbiAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBjbGllbnREZXRhaWxzKCkge1xyXG4gIC8vICAgdGhpcy50cmF4U2VydmljZS5nZXRjbGllbnQoeyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzLmNsaWVudCB9KS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gIC8vICAgICAgICAgdGhpcy5jbGllbnREYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiBnZXRBbGxTdG9yZXMxKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgcmV0dXJuIHRoaXMudHJheFNlcnZpY2VcclxuICAgIC5nZXRTdG9yZXNsaXN0KHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICBjbHVzdGVyczogdGhpcy5ncm91cHMsXHJcbiAgICAgIGNpdHk6IFtdLFxyXG4gICAgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICB0YXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcInN0b3JlTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5zdG9yZUxpc3QpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nMSA9ZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbn1cclxuXHJcbiAgdHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlR5cGVcIik/LnNldFZhbHVlKGV2ZW50KTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdHJheC9hdWRpdFwiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIGZyb21EYXRlOiB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB0b0RhdGU6IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFxyXG4gICAgICAgICAgXCJZWVlZLU1NLUREXCJcclxuICAgICAgICApLFxyXG4gICAgICAgIHR5cGVWYWx1ZTogZXZlbnQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZVR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJkYXRlVHlwZVwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgaWYoZXZlbnQgPT09IFwiYXVkaXRlZERhdGVcIil7XHJcbiAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiYXVkaXRTdGF0dXNcIik/LnNldFZhbHVlKFsuLi50aGlzLmF1ZGl0ZWREYXRlQXVkaXRTdGF0dXNdKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImF1ZGl0U3RhdHVzXCIpPy5zZXRWYWx1ZShbLi4udGhpcy5hdWRpdFN0YXR1c0FycmF5XSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXVkaXRUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiYXVkaXRUeXBlXCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHR5cGVQZXJjZW50YWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiY29tcGxpYW5jZVNjb3JlXCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgdHlwZUF1ZGl0U3RhdHVzQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiLi4uLi4uLi4uLi4uLi4udHlwZWF1ZGl0Q2hhZ2VzXCIsIGV2ZW50KVxyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJhdWRpdFN0YXR1c1wiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIG5lYXJBZGRpdGlvbkNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIm5lYXJBZGRpdGlvblwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGNhdGVnb3J5VHlwZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNhdGVnb3J5XCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkgJiZcclxuICAgICAgICB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmlzVmFsaWQoKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICBldmVudC5zdGFydERhdGUsXHJcbiAgICAgICAgICBcIkRELU1NLVlZWVlcIlxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSB0aGlzLmRheWpzKFxyXG4gICAgICAgICAgZXZlbnQuZW5kRGF0ZSxcclxuICAgICAgICAgIFwiREQtTU0tWVlZWVwiXHJcbiAgICAgICAgKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtXHJcbiAgICAgICAgICAuZ2V0KFwiZnJvbURhdGVcIilcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlICYmXHJcbiAgICAgICAgICB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlKS5pc1ZhbGlkKClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGVhZERhdGUgPSB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIFwiTU1NLCBERFwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtXHJcbiAgICAgICAgICAuZ2V0KFwidG9EYXRlXCIpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlICYmXHJcbiAgICAgICAgICB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSkuaXNWYWxpZCgpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWREYXRlRW5kID0gdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgXCJNTU0gREQsIFlZWVlcIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2F1ZGl0XCJdLCB7XHJcbiAgICAgICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgICAgICBmcm9tRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsXHJcbiAgICAgICAgICAgIHRvRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLFxyXG4gICAgICAgICAgICB0eXBlVmFsdWU6IHRoaXMudHlwZVZhbHVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGFydERhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkpIHtcclxuICAgICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XHJcbiAgICAgICAgICBtID4gdGhpcy5kYXlqcygpIHx8IG0gPiB0aGlzLmRheWpzKGV2ZW50LnN0YXJ0RGF0ZS5hZGQoNjAsIFwiZGF5c1wiKSk7XHJcbiAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgXCJkYXlcIikgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRUeXBlOiBhbnk7XHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIGNvbnN0IGlzUmVtb3RlID0gdGhpcy5zZWxlY3RlZFR5cGUgPT09IFwicGh5c2ljYWxcIjsgLy8gb3IgaG93ZXZlciB5b3UncmUgZGV0ZXJtaW5pbmcgaXRcclxuXHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGZyb21EYXRlOiBbXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uc3RhcnREYXRlXHJcbiAgICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG4gICAgICAgIDogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgIF0sXHJcbiAgICAgIHRvRGF0ZTogW1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2U/LmVuZERhdGVcclxuICAgICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG4gICAgICAgIDogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgIF0sXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZVZhbHVlLFxyXG4gICAgICBkYXRlVHlwZTogXCJmaWxlRGF0ZVwiLFxyXG4gICAgICBjb21wbGlhbmNlU2NvcmU6IFt0aGlzLnR5cGVQZXJjZW50YWdlQXJyYXldLFxyXG4gICAgICAuLi4oaXNSZW1vdGUgPyB7fSA6IHsgY2F0ZWdvcnk6IFtcImdlbnVpbmVcIl0gfSksXHJcbiAgICAgIG5lYXJBZGRpdGlvbjogW1wiXCJdLFxyXG4gICAgICBhdWRpdFN0YXR1czogW3RoaXMuYXVkaXRTdGF0dXNBcnJheV0sXHJcbiAgICAgIENsdXN0ZXJMaXN0OiBbdGhpcy5ncm91cHNdLFxyXG4gICAgICBzdG9yZUxpc3Q6IFt0aGlzLnN0b3Jlc10sXHJcbiAgICAgIFJtTGlzdDogW3RoaXMuUm1MaXN0XSxcclxuICAgICAgLi4uKGlzUmVtb3RlID8ge30gOiB7IGF1ZGl0VHlwZTogXCJhbGxcIiB9KSwgLy8gQ29uZGl0aW9uYWxseSBhZGQgYXVkaXRUeXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uZ3JvdXBTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZShldmVudCk7XHJcbiAgICB0aGlzLmdyb3VwcyA9IGV2ZW50Lm1hcCgoZWw6IGFueSkgPT4gZWwuY2x1c3Rlck5hbWUpO1xyXG4gICAgdGhpcy50cmF4U2VydmljZVxyXG4gICAgICAuZ2V0U3RvcmVzbGlzdCh7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgICAgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgIGNpdHk6IFtdLFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuc3RvcmVzRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJzdG9yZUxpc3RcIik/LnNldFZhbHVlKHRoaXMuc3RvcmVMaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZzEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcInN0b3JlTGlzdFwiKT8uc2V0VmFsdWUoZXZlbnQpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHNlYXJjaFZhbHVlOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIHRoaXMub25TdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIHBhZ2luYXRpb25TaXplczogYW55W10gPSBbXTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHNldFBhZ2luYXRpb25TaXplcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPiAxMCkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107IC8vIEp1c3Qgb25lIG9wdGlvbiBpZiAgMTBcclxuICAgIH1cclxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25TaXplc1swXTtcclxuICB9XHJcbiAgUm1MaXN0RGF0YTogYW55ID0gW107XHJcbiAga2V5VHlwZTogYW55O1xyXG4gIC8vIFNldCBmcm9tIHRoZSA/a2V5VHlwZS9zdG9yZUNvZGUvb3B0b21JZCBkZWVwIGxpbmsgKEV5ZSBUZXN0IGRhc2hib2FyZFxyXG4gIC8vIFwiQXVkaXRcIiBidXR0b24pLiBBcHBsaWVkIGJ5IGFwcGx5RGVlcExpbmtTdG9yZSgpIG9uY2UgdGhlIGNsdXN0ZXIvc3RvcmVcclxuICAvLyBsaXN0cyBoYXZlIHJlc29sdmVkLCBhbmQgY29uc3VtZWQgb25jZSBzbyBhIGxhdGVyIG1hbnVhbCBsZXZlbCBjaGFuZ2Ugd2lucy5cclxuICBkZWVwTGlua0tleVR5cGU6IGFueSA9IG51bGw7XHJcbiAgZGVlcExpbmtTdG9yZUNvZGU6IGFueSA9IG51bGw7XHJcbiAgZGVlcExpbmtPcHRvbUlkOiBhbnkgPSBudWxsO1xyXG4gIHJtRW1haWw6IGFueTtcclxuXHJcbiAgLy8gVGFuZ28gQUlcclxuICBleWVUZXN0Q2hhdFF1ZXJ5ID0gJyc7XHJcbiAgZXllVGVzdEFpTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd0V5ZVRlc3RBaU1lc3NhZ2UgPSBmYWxzZTtcclxuXHJcbiAgLy8gTW9kZWwgc3dpdGNoZXJcclxuICByZWFkb25seSBtb2RlbE9wdGlvbnMgPSBbXHJcbiAgICB7IGxhYmVsOiAndjEnLCB2YWx1ZTogJ2dlbWluaS0yLjUtcHJvJyB9LFxyXG4gICAgeyBsYWJlbDogJ3YyJywgdmFsdWU6ICdjbGF1ZGUtc29ubmV0LTQtNicgfVxyXG4gIF07XHJcbiAgc2VsZWN0ZWRNb2RlbCA9ICdjbGF1ZGUtc29ubmV0LTQtNic7XHJcbiAgc2hvd1BsdXNNZW51ID0gZmFsc2U7XHJcblxyXG4gIGdldCBzZWxlY3RlZE1vZGVsVmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlbGVjdGVkTW9kZWwubWF0Y2goLyhcXGQrXFwuXFxkKykvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuc2VsZWN0ZWRNb2RlbCA9IHZhbHVlOyB9XHJcbiAgdG9nZ2xlUGx1c01lbnUoKTogdm9pZCB7IHRoaXMuc2hvd1BsdXNNZW51ID0gIXRoaXMuc2hvd1BsdXNNZW51OyB9XHJcbiAgY2xvc2VQbHVzTWVudSgpOiB2b2lkIHsgdGhpcy5zaG93UGx1c01lbnUgPSBmYWxzZTsgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcucGx1cy1tZW51LXdyYXAnKSkge1xyXG4gICAgICB0aGlzLnNob3dQbHVzTWVudSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyB0eXBlVmFsKHZhbDogYW55LCBvYmo/OiBhbnkpIHtcclxuICAvLyAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgLy8gICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAvLyAgIHRoaXMubGltaXQgPSAxMDtcclxuICAvLyAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAvLyAgIHRoaXMucGFnZVNpemUgPSAxMDtcclxuICAvLyAgIHRoaXMua2V5VHlwZSA9IHZhbDtcclxuICAvLyAgIHRoaXMucm1FbWFpbCA9IG9iaj8uUk1FbWFpbCA/IG9iaj8uUk1FbWFpbCA6IG9iajtcclxuICAvLyAgIC8vIPCflI0gZmluZCB0aGUgUk0gb2JqZWN0IGluIHlvdXIgUm1MaXN0IGFycmF5XHJcbiAgLy8gICAgaWYgKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiICYmIHRoaXMuUm1MaXN0Py5sZW5ndGgpIHtcclxuICAvLyAgIHRoaXMuUm1MaXN0Py5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKGVsZW1lbnQ/LmVtYWlsID09PSB0aGlzLnJtRW1haWwpIHtcclxuICAvLyAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlJtTGlzdFwiKT8uc2V0VmFsdWUoW2VsZW1lbnRdKTtcclxuICAvLyAgICAgICB0aGlzLm9uUm1TZWxlY3QoW2VsZW1lbnRdKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG4gIC8vICAgdGhpcy5ncm91cHMgPSBvYmo/LmNsdXN0ZXJOYW1lID8gW29iaj8uY2x1c3Rlck5hbWVdIDogdGhpcy5ncm91cHM7XHJcbiAgLy8gICAgaWYgKFxyXG4gIC8vICAgICB0aGlzLnVzZXJzPy5yb2xlID09PSBcImFkbWluXCIgJiZcclxuICAvLyAgICAgdGhpcy5DbHVzdGVyTGlzdD8ubGVuZ3RoICYmXHJcbiAgLy8gICAgIG9iaj8uY2x1c3Rlck5hbWVcclxuICAvLyAgICkge1xyXG4gIC8vICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKGVsZW1lbnQ/LmNsdXN0ZXJOYW1lID09PSB0aGlzLmdyb3Vwcykge1xyXG4gIC8vICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtlbGVtZW50XSk7XHJcbiAgLy8gICAgICAgdGhpcy5vbmdyb3VwU2VsZWN0KFtlbGVtZW50XSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuICAvLyAgIHRoaXMuc29ydGVkQ29sdW1uID0gXCJkYXRlXCI7XHJcbiAgLy8gICBpZiAodGhpcy5ybUVtYWlsID09PSBcIlwiKSB0aGlzLm9uU3VibWl0KCk7XHJcbiAgLy8gfVxyXG4gIGRlbW9HcmFwaWNzOmFueTtcclxuICB0eXBlVmFsKHZhbDogYW55LCBvYmo/OiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHZhbCwgb2JqKTtcclxuICAgdGhpcy50eXBlUGVyY2VudGFnZUFycmF5ID1bXTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMuZmlsdGVyQnlPcHRvbSA9IFwiXCI7XHJcbiAgICB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICB0aGlzLmtleVR5cGUgPSB2YWw7XHJcbiAgICB0aGlzLnNob3dFeWVUZXN0QWlNZXNzYWdlID0gZmFsc2U7XHJcbiAgICB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5leWVUZXN0Q2hhdFF1ZXJ5ID0gJyc7XHJcbiAgICB0aGlzLmluaXRBaVNlc3Npb24oKTtcclxuICAgIHRoaXMuc29ydGVkQ29sdW1uID0gXCJkYXRlXCI7XHJcbnRoaXMuZGVtb0dyYXBpY3MgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmF1ZGl0VHlwZTtcclxuaWYgKHRoaXMuZGVtb0dyYXBpY3MgPT09IFwiYWxsXCIpIHtcclxuICB0aGlzLmRlbW9HcmFwaWNzID0gW1wiYWR1bHRcIiwgXCJraWRzXCJdO1xyXG59XHJcbiAgICBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aClcclxuICAgICAgdGhpcy5ybUVtYWlsID0gb2JqPy5STUVtYWlsID8gb2JqPy5STUVtYWlsIDogb2JqO1xyXG4gICAgXHJcbiAgICB0aGlzLmdyb3VwcyA9IG9iaj8uY2x1c3Rlck5hbWUgPyBbb2JqPy5jbHVzdGVyTmFtZV0gOiB0aGlzLmdyb3VwcztcclxuICAgIFxyXG4gICAgbGV0IGZvdW5kUk0gPSBmYWxzZTtcclxuICAgIGxldCBmb3VuZENsdXN0ZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0Q29tcGxpYW5jZVBlcmNlbnRhZ2VBcnJheSh2YWwpO1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiY29tcGxpYW5jZVNjb3JlXCIpPy5zZXRWYWx1ZSh0aGlzLnR5cGVQZXJjZW50YWdlQXJyYXkpO1xyXG4gICAgaWYoKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiIHx8IHRoaXMudXNlcnM/LnJvbGUgPT09IFwiYWRtaW5cIikgJiYgdmFsID09PVwic3RvcmVcIiAmJlxyXG4gICAgICAgIHRoaXMuQ2x1c3Rlckxpc3Q/Lmxlbmd0aCAmJlxyXG4gICAgICAgIG9iaj8uY2x1c3Rlck5hbWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZihlbGVtZW50Py5jbHVzdGVyTmFtZSA9PT0gb2JqLmNsdXN0ZXJOYW1lKXtcclxuICAgICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtlbGVtZW50XSk7XHJcbiAgICAgICAgICB0aGlzLm9uZ3JvdXBTZWxlY3QoW2VsZW1lbnRdKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICAgICAgICBmb3VuZENsdXN0ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSBpZigodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgfHwgdGhpcy51c2Vycz8ucm9sZSA9PT0gXCJhZG1pblwiKSAmJiB2YWwgPT09XCJjbHVzdGVyXCIgJiZcclxuICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0Py5sZW5ndGggJiZcclxuICAgICAgICBvYmo/LmNsdXN0ZXJOYW1lXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QuZm9yRWFjaChcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYoZWxlbWVudD8uY2x1c3Rlck5hbWUgPT09IG9iai5jbHVzdGVyTmFtZSl7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZShbZWxlbWVudF0pO1xyXG4gICAgICAgICAgdGhpcy5vbmdyb3VwU2VsZWN0KFtlbGVtZW50XSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZzEgPSB0cnVlO1xyXG4gICAgICAgICAgZm91bmRDbHVzdGVyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIFJNIHNlbGVjdGlvbiAob25seSBmb3Igc3VwZXJhZG1pbilcclxuICAgIGlmICh0aGlzLnVzZXJzPy5yb2xlID09PSBcInN1cGVyYWRtaW5cIiAmJiB2YWwgPT09XCJjbHVzdGVyXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgIHRoaXMuUm1MaXN0LmZvckVhY2goXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoZWxlbWVudD8uZW1haWwgPT09IHRoaXMucm1FbWFpbCkge1xyXG4gICAgICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbZWxlbWVudF0pO1xyXG4gICAgICAgIHRoaXMub25SbVNlbGVjdChbZWxlbWVudF0pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICAgICAgZm91bmRSTSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIENsdXN0ZXIgc2VsZWN0aW9uIChvbmx5IGZvciBhZG1pbilcclxuXHJcbiAgICAvLyDinIUgU3VibWl0IGZhbGxiYWNrXHJcbiAgICBpZiAoIWZvdW5kUk0gJiYgIWZvdW5kQ2x1c3Rlcikge1xyXG4gICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG50eXBlVmFsMSh2YWw6IGFueSwgb2JqPzogYW55KSB7XHJcbiAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLnNlYXJjaFZhbHVlID0gXCJcIjtcclxuICB0aGlzLmZpbHRlckJ5T3B0b20gPSBcIlwiO1xyXG4gIHRoaXMubGltaXQgPSAxMDtcclxuICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xyXG4gIHRoaXMua2V5VHlwZSA9IHZhbDtcclxuICB0aGlzLnNob3dFeWVUZXN0QWlNZXNzYWdlID0gZmFsc2U7XHJcbiAgdGhpcy5leWVUZXN0QWlNZXNzYWdlID0gbnVsbDtcclxuICB0aGlzLmV5ZVRlc3RDaGF0UXVlcnkgPSAnJztcclxuICB0aGlzLmluaXRBaVNlc3Npb24oKTtcclxuICB0aGlzLnNvcnRlZENvbHVtbiA9IFwiZGF0ZVwiO1xyXG4gICB0aGlzLnNldENvbXBsaWFuY2VQZXJjZW50YWdlQXJyYXkodmFsKTtcclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcImNvbXBsaWFuY2VTY29yZVwiKT8uc2V0VmFsdWUodGhpcy50eXBlUGVyY2VudGFnZUFycmF5KTtcclxuICBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJzdXBlcmFkbWluXCIgJiYgdGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgdGhpcy5ybUVtYWlsID0gb2JqPy5STUVtYWlsID8gb2JqPy5STUVtYWlsIDogb2JqO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcy5ncm91cHMgPSBvYmo/LmNsdXN0ZXJOYW1lID8gW29iaj8uY2x1c3Rlck5hbWVdIDogdGhpcy5ncm91cHM7XHJcblxyXG4gIHRoaXMuZGVtb0dyYXBpY3MgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmF1ZGl0VHlwZTtcclxuICBpZiAodGhpcy5kZW1vR3JhcGljcyA9PT0gXCJhbGxcIikge1xyXG4gICAgdGhpcy5kZW1vR3JhcGljcyA9IFtcImFkdWx0XCIsIFwia2lkc1wiXTtcclxuICB9XHJcbiAgdGhpcy5leWVUZXN0RGF0YSA9IFtdO1xyXG4gIGxldCBmb3VuZFJNID0gZmFsc2U7XHJcbiAgbGV0IGZvdW5kQ2x1c3RlciA9IGZhbHNlO1xyXG5cclxuICAvLyDinIUgQ2x1c3RlciAvIFN0b3JlXHJcbiAgaWYgKCh0aGlzLnVzZXJzPy5yb2xlID09PSBcInN1cGVyYWRtaW5cIiB8fCB0aGlzLnVzZXJzPy5yb2xlID09PSBcImFkbWluXCIpICYmXHJcbiAgICAgICh2YWwgPT09IFwic3RvcmVcIiB8fCB2YWwgPT09IFwiY2x1c3RlclwiKSkge1xyXG4gICAgIHRoaXMuZ2V0QWxsR3JvdXBzKCk7XHJcbiAgICAgICB0aGlzLmxvYWRpbmcxID0gdHJ1ZTtcclxuICAgIGZvdW5kQ2x1c3RlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyDinIUgUk0gKG9ubHkgZm9yIHN1cGVyYWRtaW4pXHJcbiAgaWYgKHRoaXMudXNlcnM/LnJvbGUgPT09IFwic3VwZXJhZG1pblwiICYmIHZhbCA9PT0gXCJybVwiKSB7XHJcbiAgIHRoaXMub25SbVNlbGVjdCh0aGlzLnJtTGlzdCk7XHJcbiAgICAgdGhpcy5sb2FkaW5nMSA9IHRydWU7XHJcbiAgICBmb3VuZFJNID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIOKchSBGYWxsYmFja1xyXG4gIGlmICghZm91bmRSTSAmJiAhZm91bmRDbHVzdGVyKSB7XHJcbiAgICB0aGlzLmdldEFsbFN0b3JlcygpO1xyXG4gIH1cclxuICBcclxuICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcxID1mYWxzZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4vLyBwcml2YXRlIHJlc2V0QWxsQ2x1c3RlcnMoKSB7XHJcbi8vICAgaWYgKHRoaXMuQ2x1c3Rlckxpc3Q/Lmxlbmd0aCkge1xyXG4vLyAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJDbHVzdGVyTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5DbHVzdGVyTGlzdCk7XHJcbi8vICAgICB0aGlzLm9uZ3JvdXBTZWxlY3QodGhpcy5DbHVzdGVyTGlzdCk7XHJcbi8vICAgfSBlbHNlIHtcclxuLy8gICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiQ2x1c3Rlckxpc3RcIik/LnNldFZhbHVlKFtdKTtcclxuLy8gICB9XHJcbi8vICAgdGhpcy5nZXRBbGxHcm91cHMoKTtcclxuLy8gfVxyXG5cclxuLy8gcHJpdmF0ZSByZXNldEFsbFJtcygpIHtcclxuLy8gICBpZiAodGhpcy5SbUxpc3Q/Lmxlbmd0aCkge1xyXG4vLyAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKHRoaXMuUm1MaXN0KTtcclxuLy8gICAgIHRoaXMub25SbVNlbGVjdCh0aGlzLlJtTGlzdCk7XHJcbi8vICAgfSBlbHNlIHtcclxuLy8gICAgIHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbXSk7XHJcbi8vICAgfVxyXG4vLyAgIHRoaXMuZ2V0QWxsUm0oKTtcclxuLy8gfVxyXG5cclxuXHJcbmJ1aWxkUmVxdWVzdERhdGEocGFyYW1zPzoge1xyXG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcclxuICBsaW1pdD86IG51bWJlcjtcclxuICBvZmZzZXQ/OiBudW1iZXI7XHJcbn0pOiBhbnkge1xyXG4gIC8vIE1hcCByb2xlIOKGkiBrZXlUeXBlXHJcbiAgY29uc3Qgcm9sZUtleVR5cGVNYXA6IGFueSA9IHtcclxuICAgIHN1cGVyYWRtaW46IFwicm1cIixcclxuICAgIGFkbWluOiBcImNsdXN0ZXJcIixcclxuICAgIHVzZXI6IFwic3RvcmVcIixcclxuICB9O1xyXG4gIGlmICghdGhpcy5rZXlUeXBlKSB7XHJcbiAgICB0aGlzLmtleVR5cGUgPSByb2xlS2V5VHlwZU1hcFt0aGlzLnVzZXJzPy5yb2xlXSB8fCBcInN0b3JlXCI7XHJcbiAgfVxyXG5cclxuICAvLyBDb2xsZWN0IHN0b3JlIElEc1xyXG4gIGNvbnN0IGZpbmFsU3RvcmVzID0gQXJyYXkuaXNBcnJheSh0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnN0b3JlTGlzdClcclxuICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgOiBbXTtcclxuXHJcbiAgLy8gQ29sbGVjdCBSTSBlbWFpbHNcclxuICBsZXQgZmluYWxSTUxpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5SbUxpc3QpICYmIHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0Lmxlbmd0aCkge1xyXG4gICAgZmluYWxSTUxpc3QgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5tYXAoKGVsOiBhbnkpID0+IGVsPy5lbWFpbCk7XHJcbiAgfSBlbHNlIGlmICh0aGlzLnJtRW1haWwpIHtcclxuICAgIGZpbmFsUk1MaXN0ID0gW3RoaXMucm1FbWFpbF07XHJcbiAgfSBlbHNlIGlmICh0aGlzLnVzZXJzPy5lbWFpbCkge1xyXG4gICAgZmluYWxSTUxpc3QgPSBbdGhpcy51c2Vycy5lbWFpbF07XHJcbiAgfVxyXG50aGlzLlJtTGlzdERhdGEgPSBmaW5hbFJNTGlzdD8ubGVuZ3RoID8gZmluYWxSTUxpc3Q/Lmxlbmd0aCA6IFtdO1xyXG4gIC8vIEhhbmRsZSBhdWRpdFR5cGUg4oaSIG5vcm1hbGl6ZSB0byBhcnJheVxyXG4gIGNvbnN0IGF1ZGl0VHlwZVZhbHVlID0gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFR5cGU7XHJcbiAgbGV0IGF1ZGl0VHlwZXM6IHN0cmluZ1tdID0gW107XHJcbiAgaWYgKGF1ZGl0VHlwZVZhbHVlID09PSBcImFsbFwiKSB7XHJcbiAgICBhdWRpdFR5cGVzID0gW1wiYWR1bHRcIiwgXCJraWRzXCJdO1xyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhdWRpdFR5cGVWYWx1ZSkpIHtcclxuICAgIGF1ZGl0VHlwZXMgPSBhdWRpdFR5cGVWYWx1ZTtcclxuICB9IGVsc2UgaWYgKGF1ZGl0VHlwZVZhbHVlKSB7XHJcbiAgICBhdWRpdFR5cGVzID0gW2F1ZGl0VHlwZVZhbHVlXTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzPy5jbGllbnQsXHJcbiAgICBmcm9tRGF0ZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5mcm9tRGF0ZSxcclxuICAgIHRvRGF0ZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50b0RhdGUsXHJcbiAgICB0eXBlOiB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUsXHJcbiAgICBkYXRlVHlwZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5kYXRlVHlwZSxcclxuXHJcbiAgICAvLyBkZW1vZ3JhcGhpY3Mgb25seSBpZiB0eXBlICE9PSByZW1vdGVcclxuICAgIC4uLih0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUgIT09IFwicmVtb3RlXCIgJiYgeyBkZW1vZ3JhcGhpY3M6IGF1ZGl0VHlwZXMgfSksXHJcblxyXG4gICAgY2x1c3RlcjogdGhpcy5ncm91cHMsXHJcbiAgICBzdG9yZUlkOiBmaW5hbFN0b3JlcyxcclxuXHJcbiAgICBsaW1pdDogcGFyYW1zPy5saW1pdCA/PyB0aGlzLmxpbWl0ID8/IDEwLFxyXG4gICAgb2Zmc2V0OiBwYXJhbXM/Lm9mZnNldCA/PyB0aGlzLm9mZnNldCA/PyAxLFxyXG4gICAga2V5VHlwZTogdGhpcy5rZXlUeXBlLFxyXG5cclxuICAgIGNvbXBsaWFuY2VTY29yZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5jb21wbGlhbmNlU2NvcmU/Lmxlbmd0aCA/ICh0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLmNvbXBsaWFuY2VTY29yZS5tYXAoKGVsOiBhbnkpID0+IGVsLnZhbHVlKSk6IFtdLFxyXG4gICBcclxuICAgIGF1ZGl0U3RhdHVzOiAgdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5hdWRpdFN0YXR1cy5tYXAoKGVsOiBhbnkpID0+IGVsLnZhbHVlKVxyXG4gICAgICA6IFtdLFxyXG4gICAgbmVhckFkZGl0aW9uOiB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLm5lYXJBZGRpdGlvbiB8fCBcIlwiLFxyXG5cclxuICAgIC4uLih0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGUgIT09IFwicmVtb3RlXCIgJiYge1xyXG4gICAgICBjYXRlZ29yeTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5jYXRlZ29yeSxcclxuICAgIH0pLFxyXG5cclxuICAgIFJNTGlzdDogZmluYWxSTUxpc3QsXHJcbiAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSB8fCBcIlwiLFxyXG4gICAgaXNFeHBvcnQ6IHBhcmFtcz8uaXNFeHBvcnQgPz8gZmFsc2UsXHJcbiAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8/IC0xLFxyXG4gICAgc29ydEJ5OiB0aGlzLnNvcnRlZENvbHVtbiA/PyBcImRhdGVcIixcclxuXHJcbiAgICAvLyBPbmx5IHNlbnQgd2hpbGUgYW4gb3B0b20gZmlsdGVyIGlzIGFjdGl2ZTsgb21pdHRlZCBlbnRpcmVseSBvdGhlcndpc2UuXHJcbiAgICAuLi4odGhpcy5maWx0ZXJCeU9wdG9tICYmIHsgZmlsdGVyQnlPcHRvbTogdGhpcy5maWx0ZXJCeU9wdG9tIH0pLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKiBPcHRvbSBJRCB0aGUgbGlzdCBpcyBjdXJyZW50bHkgZmlsdGVyZWQgdG8sIHNldCBieSBjbGlja2luZyBhbiBPcHRvbSBJRCBjZWxsLiAqL1xyXG5maWx0ZXJCeU9wdG9tOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuLyoqIE9wdG9tIElEIGZvciBhIHJvdzsgdGhlIGZpZWxkIGRpZmZlcnMgYmV0d2VlbiByZW1vdGUgYW5kIGluLXN0b3JlIGF1ZGl0cy4gKi9cclxuZ2V0Um93T3B0b21JZChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgY29uc3QgaWQgPSB0aGlzLnR5cGVWYWx1ZSA9PT0gXCJyZW1vdGVcIiA/IHJvdz8ub3B0bV91c2VySWQgOiByb3c/Lm9wdHVtSWQ7XHJcbiAgcmV0dXJuIGlkID8gU3RyaW5nKGlkKSA6IFwiXCI7XHJcbn1cclxuXHJcbi8qKiBGaWx0ZXJzIHRoZSBsaXN0IHRvIGEgc2luZ2xlIG9wdG9tLiBDbGlja2luZyB0aGUgYWN0aXZlIG9uZSBjbGVhcnMgdGhlIGZpbHRlci4gKi9cclxuZmlsdGVyT3B0b20ocm93OiBhbnkpOiB2b2lkIHtcclxuICBjb25zdCBvcHRvbUlkID0gdGhpcy5nZXRSb3dPcHRvbUlkKHJvdyk7XHJcbiAgaWYgKCFvcHRvbUlkKSByZXR1cm47XHJcbiAgdGhpcy5maWx0ZXJCeU9wdG9tID0gdGhpcy5maWx0ZXJCeU9wdG9tID09PSBvcHRvbUlkID8gXCJcIiA6IG9wdG9tSWQ7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIHRoaXMub25TdWJtaXQoKTtcclxufVxyXG5cclxuLyoqIENsZWFycyB0aGUgb3B0b20gZmlsdGVyIGFuZCByZWxvYWRzIHRoZSBsaXN0LiAqL1xyXG5jbGVhck9wdG9tRmlsdGVyKCk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5maWx0ZXJCeU9wdG9tKSByZXR1cm47XHJcbiAgdGhpcy5maWx0ZXJCeU9wdG9tID0gXCJcIjtcclxuICB0aGlzLmRlZXBMaW5rT3B0b21JZCA9IG51bGw7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIC8vIERyb3Agb3B0b21JZCBmcm9tIHRoZSBVUkwgdG9vLCBzbyBhIHJlZnJlc2ggZG9lcyBub3QgcmUtYXBwbHkgdGhlIGZpbHRlci5cclxuICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgIHF1ZXJ5UGFyYW1zOiB7IG9wdG9tSWQ6IG51bGwgfSxcclxuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIixcclxuICB9KTtcclxuICB0aGlzLm9uU3VibWl0KCk7XHJcbn1cclxuXHJcblxyXG5cclxuICBleHBvcnRYTFNYKCkge1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB0aGlzLmJ1aWxkUmVxdWVzdERhdGEoe1xyXG4gICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV5ZVNlcnZpY2VcclxuICAgICAgLmdldEV5ZVRlc3RUYWJsZUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXllU2VydmljZS5zYXZlQXNFeGNlbEZpbGUoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAgYCR7dGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlfSBFeWUgVGVzdCBUYWJsZSBgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG90YWxJdGVtczogYW55ID0gMDtcclxuICBvZmZzZXQgPSAxO1xyXG4gIGxpbWl0ID0gMTA7XHJcbiAgZGF0YVJlc3VsdDphbnk7XHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgIFxyXG4gICAgdGhpcy5leWVUZXN0RGF0YT1bXTtcclxuICAgIHRoaXMudHlwZVZhbHVlID0gdGhpcy5leWVUZXN0Rm9ybT8udmFsdWU/LnR5cGU7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHsgaXNFeHBvcnQ6IGZhbHNlIH0pO1xyXG4gICB0aGlzLmRhdGFSZXN1bHQgPSByZXF1ZXN0RGF0YVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRFeWVUZXN0bGlzdChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSByZXM/LmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YT8uY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgICAgICB9LDEwMDApXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgICAvLyB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgICAvLyB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gTnVtYmVyKHBhZ2VPZmZzZXQpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHtcclxuICAgICAgaXNFeHBvcnQ6IGZhbHNlLFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgIH0pO1xyXG4gICAgLy8gY29uc29sZS5sb2cocmVxdWVzdERhdGEpXHJcbi8vIHJldHVyblxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRFeWVUZXN0bGlzdChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gcmVzPy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzLmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXllVGVzdERhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgIHRoaXMubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gdGhpcy5idWlsZFJlcXVlc3REYXRhKHtcclxuICAgICAgaXNFeHBvcnQ6IGZhbHNlLFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZXllU2VydmljZVxyXG4gICAgICAuZ2V0RXllVGVzdGxpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5leWVUZXN0RGF0YSA9IHJlcz8uZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy5jb3VudDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3REYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0T3JkZXI6IGFueTtcclxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5zb3J0T3JkZXIgPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRlZENvbHVtbiA9IGNvbHVtbiA/IGNvbHVtbiA6IFwic3RvcmVOYW1lXCI7XHJcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMub25TdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIC8vIG5ldyBhcGkgaW50YWdyYXRlZFxyXG5cclxuICBSbUxpc3Q6IGFueSA9IFtdO1xyXG5cclxuIGdldEFsbFJtMSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIHJldHVybiB0aGlzLmV5ZVNlcnZpY2UuZ2V0Um1MaXN0KHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50KS5waXBlKFxyXG4gICAgdGFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgdGhpcy5SbUxpc3QgPSB0aGlzLnJtTGlzdDtcclxuICAgICAgICB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIlJtTGlzdFwiKT8uc2V0VmFsdWUodGhpcy5SbUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuUm1MaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKFtdKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICApO1xyXG59XHJcblxyXG4gIG9uUm1TZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKGV2ZW50KTtcclxuICAgIHRoaXMuZ2V0QWxsR3JvdXBzKGV2ZW50KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBleWVUZXN0Q2FyZERhdGE6IGFueSA9IFtdO1xyXG4gIGdldENhcmREYXRhKCkge1xyXG4gICAgbGV0IGZpbmFsU3RvcmVzOiBhbnkgPSBbXTtcclxuICAgIGxldCBybUxpc3RWYWx1ZTogYW55ID0gW107XHJcbiAgICAgIGNvbnN0IHJvbGVLZXlUeXBlTWFwOiBhbnkgPSB7XHJcbiAgICBzdXBlcmFkbWluOiBcInJtXCIsXHJcbiAgICBhZG1pbjogXCJjbHVzdGVyXCIsXHJcbiAgICB1c2VyOiBcInN0b3JlXCIsXHJcbiAgfTtcclxuICBpZiAoIXRoaXMua2V5VHlwZSkge1xyXG4gICAgdGhpcy5rZXlUeXBlID0gcm9sZUtleVR5cGVNYXBbdGhpcy51c2Vycz8ucm9sZV0gfHwgXCJzdG9yZVwiO1xyXG4gIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgZnJvbURhdGUsXHJcbiAgICAgIHRvRGF0ZSxcclxuICAgICAgdHlwZSxcclxuICAgICAgZGF0ZVR5cGUsXHJcbiAgICAgIGF1ZGl0VHlwZSxcclxuICAgICAgc3RvcmVMaXN0LFxyXG4gICAgICBSbUxpc3QsXHJcbiAgICAgIGNvbXBsaWFuY2VTY29yZSxcclxuICAgICAgbmVhckFkZGl0aW9uLFxyXG4gICAgICBrZXlUeXBlLFxyXG4gICAgICBjYXRlZ29yeSxcclxuICAgIH0gPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QpKSB7XHJcbiAgICAgIHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0LmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgICBmaW5hbFN0b3Jlcy5wdXNoKHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkge1xyXG4gICAgICB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgcm1MaXN0VmFsdWUucHVzaChlbD8uZW1haWwpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRlbW9ncmFwaGljcyA9XHJcbiAgICAgIHR5cGUgIT09IFwicmVtb3RlXCJcclxuICAgICAgICA/IGF1ZGl0VHlwZSA9PT0gXCJhbGxcIlxyXG4gICAgICAgICAgPyBbXCJhZHVsdFwiLCBcImtpZHNcIl1cclxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShhdWRpdFR5cGUpXHJcbiAgICAgICAgICA/IGF1ZGl0VHlwZVxyXG4gICAgICAgICAgOiBbYXVkaXRUeXBlXVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3REYXRhOiBhbnkgPSB7XHJcbiAgICAgIGZyb21EYXRlLFxyXG4gICAgICB0b0RhdGUsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIGRhdGVUeXBlLFxyXG4gICAgICBzdG9yZUlkOiBmaW5hbFN0b3JlcyxcclxuICAgICAgUk1MaXN0OiBybUxpc3RWYWx1ZS5sZW5ndGggPiAwID8gcm1MaXN0VmFsdWUgOiBbdGhpcy51c2Vycz8uZW1haWxdLFxyXG4gICAgICBjb21wbGlhbmNlU2NvcmU6IGNvbXBsaWFuY2VTY29yZT8ubGVuZ3RoXHJcbiAgICAgICAgPyAoY29tcGxpYW5jZVNjb3JlLm1hcCgoZWw6IGFueSkgPT4gZWwudmFsdWUpKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIG5lYXJBZGRpdGlvbixcclxuICAgICAgICBrZXlUeXBlIDogdGhpcy5rZXlUeXBlLFxyXG4gICAgICAuLi4odGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlICE9PSBcInJlbW90ZVwiICYmIHtcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgfSksXHJcbiAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChkZW1vZ3JhcGhpY3MpIHtcclxuICAgICAgcmVxdWVzdERhdGEuZGVtb2dyYXBoaWNzID0gZGVtb2dyYXBoaWNzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRDYXJkKHJlcXVlc3REYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5leWVUZXN0Q2FyZERhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IHJlcz8uZGF0YT8ucmVzdWx0IDoge307XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV5ZVRlc3RDYXJkRGF0YSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5leWVWaWV3ID0gZmFsc2U7XHJcbnNlbGVjdGVkU3RlcEluZGV4ID0gMDtcclxuY29udmVyc2F0aW9uRGF0YTogYW55ID0gbnVsbDtcclxuLy8gQ29udiBhdWRpbyBwbGF5ZXIgc3RhdGVcclxuY29udklzUGxheWluZyA9IGZhbHNlO1xyXG5jb252Q3VycmVudFRpbWUgPSAnMDowMCc7XHJcbmNvbnZEdXJhdGlvbiA9ICcwOjAwJztcclxuY29udlByb2dyZXNzID0gMDtcclxuY29udklzTXV0ZWQgPSBmYWxzZTtcclxucmVhZG9ubHkgd2F2ZWZvcm1IZWlnaHRzOiBudW1iZXJbXSA9IFtcclxuICA4LCAyMiwgMzgsIDUyLCA0NCwgMjgsIDU2LCA0MiwgMTgsIDMyLCA1NCwgNDYsIDI0LCA0MCwgNjAsIDUwLCAyNiwgNDQsXHJcbiAgMzYsIDE4LCA1MiwgMzgsIDI4LCA0NiwgMzQsIDIwLCA1NiwgNDIsIDE0LCAzNiwgNTAsIDMwLCAyMiwgNDQsIDU2LCAzOCxcclxuICAyMCwgNDYsIDMwLCAxNiwgNTAsIDM2LCAyNCwgNTQsIDQyLCAyOCwgMzYsIDIwLCA0NiwgMzIsIDE4LCA0MCwgNTYsIDQ0LFxyXG4gIDI0LCAzNiwgMjAsIDUwLCAzNCwgMjJcclxuXTtcclxuICBleWVUZXN0VmlldyhkYXRhOiBhbnkpIHtcclxudGhpcy5leWVWaWV3ID10cnVlO1xyXG5cclxuICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICB0aGlzLmF1ZGl0RGF0YSA9IHRoaXMuZXllU2VydmljZS5nZXRBdWRpdERhdGEoKTtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3MgPVtdO1xyXG4gICAgLy8gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5zdG9yZUlkID0gZGF0YVsnc3RvcmVJZCddO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPSB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLnR5cGVcclxuICAgICAgdGhpcy5BdWRpdElkID0gZGF0YVsnX2lkJ107XHJcbiAgICAgIHRoaXMuUm1FbWFpbCA9IGRhdGFbJ1JNRW1haWwnXTtcclxuICAgICAgdGhpcy5jbHVzdGVyID0gZGF0YVsnY2x1c3Rlck5hbWUnXTtcclxuICAgICAgdGhpcy5leWVUZXN0VHlwZSA9IGRhdGE/LmNvbW1lbnQgPyBcImZha2VcIiA6IFwiZ2VudWluZVwiO1xyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVPcHRpb25zKCk7XHJcbmlmKHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScpe1xyXG4gIHRoaXMuZHJvcGRvd25MaXN0PSBbeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG5vdCBhY2N1cmF0ZSwgYnV0IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBub3QgYWNjdXJhdGUsIGJ1dCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ1N0ZXAgbm90IGFjY3VyYXRlLCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTdGVwIG5vdCBhY2N1cmF0ZSwgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnb3RoZXJzJywgaXRlbTogJ090aGVycycgfV1cclxufWVsc2V7XHJcbiAgdGhpcy5kcm9wZG93bkxpc3Q9IFt7IGtleTogJ1N0ZXAgTm9uLUNvbXBsaWFuY2UnLCBpdGVtOiAnU3RlcCBOb24tQ29tcGxpYW5jZScgfSwgeyBrZXk6ICdQb3dlciBCYW5rIE5vbi1Db21wbGlhbmNlJywgaXRlbTogJ1Bvd2VyIEJhbmsgTm9uLUNvbXBsaWFuY2UnIH0sIHsga2V5OiAnQ29ycmVjdCBJbnN0cnVtZW50IE5vdCBVc2VkJywgaXRlbTogJ0NvcnJlY3QgSW5zdHJ1bWVudCBOb3QgVXNlZCcgfSwgeyBrZXk6ICdvdGhlcnMnLCBpdGVtOiAnT3RoZXJzJyB9XVxyXG59XHJcbnRoaXMuY29udmVyc2F0aW9uRGF0YSA9IG51bGw7XHJcbnRoaXMuc2VsZWN0ZWRTdGVwSW5kZXggPSAwO1xyXG50aGlzLmNvbnZJc1BsYXlpbmcgPSBmYWxzZTtcclxudGhpcy5jb252Q3VycmVudFRpbWUgPSAnMDowMCc7XHJcbnRoaXMuY29udkR1cmF0aW9uID0gJzA6MDAnO1xyXG50aGlzLmNvbnZQcm9ncmVzcyA9IDA7XHJcbnRoaXMuY29udklzTXV0ZWQgPSBmYWxzZTtcclxudGhpcy5leWVTZXJ2aWNlLmdldENvbnZlcnNhdGlvbkRldGFpbHMoZGF0YS5xdWV1ZUlkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbkRhdGEgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgIC8vIFVzZSBBUEktcHJvdmlkZWQgZHVyYXRpb24gaW1tZWRpYXRlbHkgKFMzIG00YSBvZnRlbiBjYW4ndCByZXBvcnQgZHVyYXRpb24gdW50aWwgZnVsbHkgYnVmZmVyZWQpXHJcbiAgICAgIGlmICh0aGlzLmNvbnZlcnNhdGlvbkRhdGE/LmR1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb252RHVyYXRpb24gPSB0aGlzLmNvbnZlcnNhdGlvbkRhdGEuZHVyYXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG4gIGVycm9yOiAoKSA9PiB7IHRoaXMuY29udmVyc2F0aW9uRGF0YSA9IG51bGw7IH1cclxufSk7XHJcbiAgfVxyXG5cclxuICBzZXR0aW5nc1ZpZXcoKSB7XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2Uuc2V0QXVkaXREYXRhKHRoaXMuaGVhZGVyRmlsdGVycyk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXQvc2V0dGluZ3NcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS50eXBlIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbnJtTGlzdCA9IFtcclxuICB7XHJcbiAgICBfaWQ6IFwiMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiQW5pcmJhbiBHaG9zaFwiLFxyXG4gICAgZW1haWw6IFwiYW5pcmJhbi5naG9zaEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJBeXVzaCBHdXB0YVwiLFxyXG4gICAgZW1haWw6IFwiYXl1c2guZ3VwdGExQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiM1wiLFxyXG4gICAgdXNlck5hbWU6IFwiUmVzaG1hIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwicmVzaG1hLnNoZXR0eUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjRcIixcclxuICAgIHVzZXJOYW1lOiBcIlNyaW5pdmFzIFJlZGR5XCIsXHJcbiAgICBlbWFpbDogXCJzcmluaXZhcy5yZWRkeUB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCI2XCIsXHJcbiAgICB1c2VyTmFtZTogXCJOaWtoaWwgVCBTXCIsXHJcbiAgICBlbWFpbDogXCJuaWtoaWwudHMyQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjdcIixcclxuICAgIHVzZXJOYW1lOiBcIk11a3VsXCIsXHJcbiAgICBlbWFpbDogXCJNdWt1bC51cGFkaHlheUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjhcIixcclxuICAgIHVzZXJOYW1lOiBcIkFuYW5kIFNpbmdoXCIsXHJcbiAgICBlbWFpbDogXCJhbmFuZC5zaW5naDJAbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiOVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU3VkaGlyIEt1bWFyXCIsXHJcbiAgICBlbWFpbDogXCJzdWRoaXIua3VtYXIyQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTBcIixcclxuICAgIHVzZXJOYW1lOiBcIkFuaWtldCBQYXRvbGVcIixcclxuICAgIGVtYWlsOiBcImFuaWtldC5wYXRvbGVAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2FjaGluXCIsXHJcbiAgICBlbWFpbDogXCJzYWNoaW4ua3VtYXI0QGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTJcIixcclxuICAgIHVzZXJOYW1lOiBcIlNhbmRlZXAgS3VtYXJcIixcclxuICAgIGVtYWlsOiBcInNhbmRlZXAua3VtYXJAdGhlbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMTNcIixcclxuICAgIHVzZXJOYW1lOiBcIlJhamVzaCBZYWRhdlwiLFxyXG4gICAgZW1haWw6IFwicmFqZXNoLnlhZGF2MkBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxNFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUHVuamFiLVRCRFwiLFxyXG4gICAgZW1haWw6IFwic2FuZGVlcC5rdW1hckB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxNVwiLFxyXG4gICAgdXNlck5hbWU6IFwiTGF2YW55YVwiLFxyXG4gICAgZW1haWw6IFwibGF2YW55YS5iQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjE2XCIsXHJcbiAgICB1c2VyTmFtZTogXCJBcGFybmEgU2F0aGVlc2hcIixcclxuICAgIGVtYWlsOiBcImFwYXJuYS5zYXRoZWVzaEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxN1wiLFxyXG4gICAgdXNlck5hbWU6IFwiTmlzaG1pdGhhIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwibmlzaG1pdGhhLnNoZXR0eUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxOFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUGFpZGltdWtrYWxhIEhlbWFsYXRoYVwiLFxyXG4gICAgZW1haWw6IFwicGFpZGltdWtrYWxhLmhlbWFsYXRoYUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIxOVwiLFxyXG4gICAgdXNlck5hbWU6IFwiUHJpeWFuc2hpIFNoYXJtYVwiLFxyXG4gICAgZW1haWw6IFwicHJpeWFuc2hpLnNoYXJtYUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMFwiLFxyXG4gICAgdXNlck5hbWU6IFwiUmFteWFwYXRoaSBQXCIsXHJcbiAgICBlbWFpbDogXCJyYW15YXBhdGhpLnBAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2l2YWxha3NobWlcIixcclxuICAgIGVtYWlsOiBcInNpdmFsYWtzaG1pLnNpdmFwYXRoYW1AbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyMlwiLFxyXG4gICAgdXNlck5hbWU6IFwiU3VicmF0YSBTaW5naFwiLFxyXG4gICAgZW1haWw6IFwic3VicmF0YS5zaW5naEBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyM1wiLFxyXG4gICAgdXNlck5hbWU6IFwiRGhhcmFtdmVlciBTaW5naFwiLFxyXG4gICAgZW1haWw6IFwiZGhhcm12ZWVyLnNpbmdoQGxlbnNrYXJ0LmluXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiMjRcIixcclxuICAgIHVzZXJOYW1lOiBcIlNhamFsIFNocml2YXN0YXZhXCIsXHJcbiAgICBlbWFpbDogXCJzYWphbC5zaHJpdmFzdGF2YUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyNVwiLFxyXG4gICAgdXNlck5hbWU6IFwiU2FtaW4gSGFpZHJ5XCIsXHJcbiAgICBlbWFpbDogXCJzYW1pbi5oYWlkcnlAbGVuc2thcnQuaW5cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG5dO1xyXG5cclxuZ2V0QWxsU3RvcmVzKCkge1xyXG4gICAgIHRoaXMudHJheFNlcnZpY2UuZ2V0U3RvcmVzbGlzdCh7IGNsaWVudElkOiB0aGlzLmhlYWRlckZpbHRlcnM/LmNsaWVudCwgY2x1c3RlcnM6IHRoaXMuZ3JvdXBzLCBjaXR5OiBbXSwgfSkgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKSAuc3Vic2NyaWJlKHsgbmV4dDogKHJlczogYW55KSA9PiB7IGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkgeyB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7IHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwic3RvcmVMaXN0XCIpPy5zZXRWYWx1ZSh0aGlzLnN0b3JlTGlzdCk7IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSBlbHNlIHsgdGhpcy5zdG9yZUxpc3QgPSBbXTsgdGhpcy5sb2FkaW5nMSA9IGZhbHNlOyB9IH0sIGVycm9yOiAoZXJyKSA9PiB7IHRoaXMuc3RvcmVMaXN0ID0gW107IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSwgfSk7IH0gXHJcbmdldEFsbFJtKCkgeyBcclxuICAvLyB0aGlzLmV5ZVNlcnZpY2UuZ2V0Um1MaXN0KHRoaXMuaGVhZGVyRmlsdGVycz8uY2xpZW50KSAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpIC5zdWJzY3JpYmUoeyBcclxuICAvLyAgIG5leHQ6IChyZXM6IGFueSkgPT4geyBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHsgXHJcbiAgICAgIHRoaXMuUm1MaXN0ID0gdGhpcy5ybUxpc3Q7IC8vIGZvciBvYmplY3QgYmFzZWQgdGhpcyB3aWxsIGNoYW5nZWRcclxudGhpcy5leWVUZXN0Rm9ybS5nZXQoXCJSbUxpc3RcIik/LnNldFZhbHVlKHRoaXMucm1MaXN0KTsgXHJcbi8vIH0gZWxzZSB7IFxyXG4vLyAgIHRoaXMuUm1MaXN0ID0gW107IHRoaXMuZXllVGVzdEZvcm0uZ2V0KFwiUm1MaXN0XCIpPy5zZXRWYWx1ZShbXSk7IFxyXG4vLyB9IHRoaXMuZ2V0QWxsR3JvdXBzKCk7IH0sIH0pOyBcclxufSBcclxuZ2V0QWxsR3JvdXBzKGV2ZW50PzogYW55KSB7IGxldCBybUxpc3Q6IGFueSA9IFtdOyB0aGlzLkNsdXN0ZXJMaXN0ID0gW107IGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuUm1MaXN0KSkgeyB0aGlzLmV5ZVRlc3RGb3JtLnZhbHVlLlJtTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7IHJtTGlzdC5wdXNoKGVsPy5lbWFpbCk7IH0pOyB9IGV2ZW50Py5tYXAoKGVsOiBhbnkpID0+IGVsPy5lbWFpbCkgfHwgW3RoaXMudXNlcnM/LmVtYWlsXTsgY29uc3Qgb2JqID0geyBjbGllbnRJZDogdGhpcy5oZWFkZXJGaWx0ZXJzPy5jbGllbnQgPyB0aGlzLmhlYWRlckZpbHRlcnMuY2xpZW50IDogXCJcIiwgcm1MaXN0OiBybUxpc3QubGVuZ3RoID4gMCA/IHJtTGlzdCA6IFt0aGlzLnVzZXJzPy5lbWFpbF0sIH07IHRoaXMuZXllU2VydmljZS5nZXRDbHVzdGVycyhvYmopLnN1YnNjcmliZSh7IG5leHQ6IChyZXM6IGFueSkgPT4geyBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHsgdGhpcy5DbHVzdGVyTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0OyB0aGlzLmV5ZVRlc3RGb3JtLmdldChcIkNsdXN0ZXJMaXN0XCIpPy5zZXRWYWx1ZSh0aGlzLkNsdXN0ZXJMaXN0KTsgdGhpcy5ncm91cHMgPSB0aGlzLkNsdXN0ZXJMaXN0Lm1hcCgoZWw6IGFueSkgPT4gZWwuY2x1c3Rlck5hbWUpOyB0aGlzLmdldEFsbFN0b3JlcygpOyB9IGVsc2UgeyB0aGlzLkNsdXN0ZXJMaXN0ID0gW107IHRoaXMubG9hZGluZzEgPSBmYWxzZTsgfSB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgfSwgXHJcbmVycm9yOiAoZXJyKSA9PiB7IC8vIGNvbnNvbGUuZXJyb3IoXCJDbHVzdGVyIGZldGNoIGZhaWxlZDpcIiwgZXJyKTsgXHJcbnRoaXMuQ2x1c3Rlckxpc3QgPSBbXTsgdGhpcy5sb2FkaW5nMSA9IGZhbHNlOyB9LCB9KTsgfVxyXG5cclxuXHJcbiAgLy8gc2Vjb25kIHBhZ2VcclxuICAgc3RlcFdpc2VQcm9jZXNzOiBhbnkgPSBbXTtcclxuICAgZHJvcGRvd25MaXN0OiBhbnkgPSBbXVxyXG4gIC8vICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICAvLyAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiBcclxuICAgdGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gICBoaXN0b3J5dGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gXHJcbiAgIHNlbGVjdGVkTWludXRlcyA9ICcwMCc7XHJcbiAgIHNlbGVjdGVkU2Vjb25kcyA9ICcwMCc7XHJcbiAgIG1pbnV0ZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICBzZWNvbmRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuIFxyXG4gICBhdWRpdERldGFpbHM6IGFueSA9IFtdO1xyXG4gICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgIHRha2VBdWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICBzdG9yZUlkOiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBDb250ZW50JykgdG9vbHRpcENvbnRlbnQhOiBOZ2JUb29sdGlwO1xyXG4gICBAVmlld0NoaWxkKCd2aWV3SGlzdG9yeScpIHZpZXdIaXN0b3J5OiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3ZpZXdDYW5jZWwnKSB2aWV3Q2FuY2VsOiBhbnk7XHJcbiAgIEBWaWV3Q2hpbGQoJ3ZpZGVvUGxheWVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHZpZGVvUGxheWVyITogRWxlbWVudFJlZjtcclxuICAgaGlzdG9yeURhdGE6IGFueSA9IFtdO1xyXG4gICBBdWRpdElkOiBhbnk7XHJcbiAgIHZpZXdIaXN0b3J5RGF0YTogYW55O1xyXG4gICBzcG9rZW5MYW5ndWFnZTphbnk9J0VuZ2xpc2gnXHJcbiAgIG1vZGFsUmVmOiBhbnk7XHJcbiAgIGRpc2FibGVjYW5jZWw6Ym9vbGVhbiA9ICBmYWxzZVxyXG4gIGJhY2tOYXZpZ2F0aW9uKCl7XHJcbiAgICAvLyAgdGhpcy5leWVTZXJ2aWNlLmF1ZGl0RmlsdGVyRGF0YSA9IHtcclxuICAgIC8vICAgYmFjazogJ2JhY2snLFxyXG4gICAgLy8gICBhdWRpdERldGFpbHM6IHRoaXMuYXVkaXREZXRhaWxzXHJcbiAgICAvLyB9O1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvYXVkaXQnXSwge1xyXG4gICAgLy8gICBxdWVyeVBhcmFtczogeyBkYXRlOiB0aGlzLmRheWpzKHRoaXMuYXVkaXREZXRhaWxzLmZpbGVEYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSwgdHlwZVZhbHVlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgfVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLmV5ZVZpZXcgPWZhbHNlO1xyXG4gICAgdGhpcy50YWtlQXVkaXQgPWZhbHNlXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9W107XHJcbiAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICB0aGlzLmdldENhcmREYXRhKCk7XHJcbiAgfVxyXG4gdmlld0hpc3RvcnlNb2RlbChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogaXRlbS5faWRcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS52aWV3QXVkaXRIaXN0b3J5KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudmlld0hpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy52aWV3SGlzdG9yeSwge1xyXG4gICAgICAgICAgICBzaXplOid4bCcsXHJcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBhdWRpdERhdGE6YW55O1xyXG4gIGV5ZVRlc3RUeXBlOmFueTtcclxuICBSbUVtYWlsOmFueTtcclxuICBjbHVzdGVyOmFueTtcclxuXHJcblxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgXHJcbiAgLy8gfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoJ0V5ZSBUZXN0JylcclxuICAgXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgICB7IHRpdGxlOiAnVGFuZ28gVHJheCcsIHBhdGg6ICcvbWFuYWdlL3RyYXgvZGFzaGJvYXJkJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnVGFuZ28gVHJheCcsIHBhdGg6ICcvbWFuYWdlL3RyYXgvZGFzaGJvYXJkJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LCAgICAgICAgXHJcbiAgICBdKVxyXG59XHJcbiAgZ2V0QXVkaXRIaXN0b3J5KCkge1xyXG4gICAgdGhpcy5oaXN0b3J5dGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5leWVTZXJ2aWNlLmdldEF1ZGl0SGlzdG9yeShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIGdldEF1ZGl0ZGV0YWlscygpIHtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS5nZXRBdWRpdGRldGFpbHMocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXVkaXREZXRhaWxzLmF1ZGl0U3RhdHVzID09PSAnSW4tUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmdldEF1ZGl0SGlzdG9yeSgpXHJcbiAgICAgICAgICB9LDEwMClcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGltZU9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZXNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICAgIHRoaXMuc2Vjb25kc0xpc3QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gdGhpcy5mb3JtYXROdW1iZXIoaSkpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGRvd25PcGVuOiB7IFtrZXk6IG51bWJlcl06IHsgc3RhcnRUaW1lOiBib29sZWFuOyBlbmRUaW1lOiBib29sZWFuOyByZWFzb246IGJvb2xlYW4gfSB9ID0ge307XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKGk6IG51bWJlciwgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5kcm9wZG93bk9wZW5baV0/Llt0aW1lXSA/PyBmYWxzZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRyb3Bkb3duT3BlbikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW051bWJlcihrZXkpXSA9IHsgc3RhcnRUaW1lOiBmYWxzZSwgZW5kVGltZTogZmFsc2UsIHJlYXNvbjogZmFsc2UgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5baV0pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5baV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5baV1bdGltZV0gPSAhY3VycmVudFN0YXRlO1xyXG4gIH1cclxuICBnZXRTZWNvbmRzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdGltZSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBbbWluLCBzZWNdID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIChtaW4gKiA2MCkgKyBzZWM7XHJcbiAgfVxyXG4gICAgXHJcbnNlbGVjdE1pbnV0ZShpbmRleDogYW55LCBtaW46IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gbWluO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgaXNWYWxpZCA9IChzdGFydFRpbWUgPT09IDAgfHwgZW5kVGltZSA9PT0gMCkgfHwgc3RhcnRUaW1lIDwgZW5kVGltZTtcclxuXHJcbiAgaWYgKCFpc1ZhbGlkICYmIHRpbWUgIT09ICdyZWFzb24nKSB7XHJcbiAgICB0aGlzLnRzLmdldFdhcm5pbmdUb2FzdChcIlN0YXJ0IHRpbWUgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHRpbWUuXCIpO1xyXG4gIFxyXG4gICAgY29uc3QgW3ByZXZNaW4sIHByZXZTZWNdID0gcHJldmlvdXNUaW1lLnNwbGl0KCc6Jyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWludXRlcyA9IHByZXZNaW47XHJcbiAgICB0aGlzLnNlbGVjdGVkU2Vjb25kcyA9IHByZXZTZWM7XHJcbiAgXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgXHJcblxyXG4gIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XVt0aW1lXSA9IG5ld1RpbWU7XHJcbiAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbn1cclxuXHJcbnNlbGVjdFNlY29uZChpbmRleDogYW55LCBzZWM6IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gc2VjO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgaWYgKCh0aW1lICE9PSAncmVhc29uJykgJiYgc3RhcnRUaW1lICE9PSAwICYmIGVuZFRpbWUgIT09IDAgJiYgc3RhcnRUaW1lID49IGVuZFRpbWUpIHtcclxuICAgIHRoaXMudHMuZ2V0V2FybmluZ1RvYXN0KFwiU3RhcnQgdGltZSBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgdGltZS5cIik7XHJcbiAgXHJcbiAgICBjb25zdCBbcHJldk1pbiwgcHJldlNlY10gPSBwcmV2aW91c1RpbWUuc3BsaXQoJzonKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gcHJldk1pbjtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gcHJldlNlYztcclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdW3RpbWVdID0gbmV3VGltZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4gXHJcbiAgXHJcblxyXG4gIHNlbGVjdFJlYXNvbihpbmRleDogbnVtYmVyLCBrZXk6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBrZXk7XHJcbiAgXHJcbiAgICBpZiAoa2V5ID09PSAnb3RoZXJzJykge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSAnJzsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSBudWxsOyBcclxuICAgIH1cclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgc2VsZWN0SHVtYW5WZXJpZmllZChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdLmF1ZGl0ZWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgZmluZGNvdW50KCl7XHJcbiAgICBsZXQgY291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5hdWRpdGVkU3RhdHVzIT09ZGF0YS5BSVN0YXR1cyl7XHJcbiAgICAgICAgY291bnQrK1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgICByZXR1cm4gY291bnRcclxuICB9XHJcbiAgZ2V0VmFsaWRhRm9ybSgpe1xyXG4gICAgbGV0IGVycm9yQ291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5yZWFzb249PT0nb3RoZXJzJyl7XHJcbiAgICAgICAgZGF0YS5vdGhlclJlYXNvbiA9ICBkYXRhLm90aGVyUmVhc29uLnRyaW0oKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGRhdGEuYXVkaXRlZFN0YXR1cyE9PWRhdGEuQUlTdGF0dXMpe1xyXG4gICAgICAgIGlmKCFkYXRhLnJlYXNvbiB8fCBkYXRhLnJlYXNvbiYmZGF0YS5yZWFzb249PT0nb3RoZXJzJyAmJiAhZGF0YS5vdGhlclJlYXNvbil7XHJcbiAgICAgICAgICBlcnJvckNvdW50KytcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZihlcnJvckNvdW50PjApe1xyXG4gICAgICB0aGlzLmRpc2FibGVjYW5jZWwgPSAgZmFsc2VcclxuICAgICAgdGhpcy50cy5nZXRXYXJuaW5nVG9hc3QoXCJDb21tZW50cyBhcmUgbWFuZGF0b3J5IGZvciBpbnZlcnNlIGh1bWFuIGF1ZGl0ZWQgcmVzcG9uc2VzXCIpXHJcbiAgfVxyXG4gICAgcmV0dXJuIGVycm9yQ291bnRcclxuICB9XHJcbiAgb25zdWJtaXQoaXNSZVNlbmQ/OmJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWNhbmNlbCA9ICB0cnVlXHJcbiAgICAvLyBpZigodGhpcy5zdGVwV2lzZVByb2Nlc3MuZmlsdGVyKChkYXRhOmFueSk9PmRhdGEuYXVkaXRlZFN0YXR1cz09PXRydWUpLmxlbmd0aCt0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09ZmFsc2UpLmxlbmd0aCkhPT10aGlzLnN0ZXBXaXNlUHJvY2Vzcy5sZW5ndGgpe1xyXG4gICAgLy8gICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiT29wcyEgTG9va3MgbGlrZSB0aGUgZXllIHRlc3QgYXVkaXQgaXNu4oCZdCBjb21wbGV0ZSB5ZXQuIEF1ZGl0IGFsbCBleWUgdGVzdCBzdGVwcyBiZWZvcmUgc3VibWl0dGluZy5cIilcclxuICAgIC8vICAgdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAvLyAgIHJldHVyblxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYodGhpcy5nZXRWYWxpZGFGb3JtKCk9PT0wKXtcclxuXHJcbiAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICAgIGZpbGVJZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgICAgYXVkaXRlZFN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09dHJ1ZSkubGVuZ3RoLFxyXG4gICAgICAgIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgICAgIG92ZXJSaWRlczp0aGlzLmZpbmRjb3VudCgpLFxyXG4gICAgICAgIHNwb2tlbkxhbmd1YWdlOiB0aGlzLnNwb2tlbkxhbmd1YWdlLFxyXG4gICAgICAgIHN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2VzcyxcclxuICAgICAgICBjbHVzdGVyOiB0aGlzLmNsdXN0ZXIsICBcclxuICAgICAgICAgUk1FbWFpbDogdGhpcy5SbUVtYWlsLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREZXRhaWxzPy5zdG9yZUlkPy5zcGxpdChcIi1cIilbMF0sXHJcbiAgICAgICAgICAgLi4uKHR5cGVvZiBpc1JlU2VuZCAhPSAndW5kZWZpbmVkJyAmJiB7aXNSZVNlbmQ6aXNSZVNlbmR9KSBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV5ZVNlcnZpY2Uuc3VibWl0QXVkaXQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKHJlcz8ubWVzc2FnZSA9PSBcIkRvIHlvdSB3YW50IHJlc2VuZCBtYWlsP1wiKSB7XHJcbiBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFNlbmRBbGVydENvbXBvbmVudCx7Y2VudGVyZWQ6dHJ1ZSxzaXplOidtZCd9KTtcclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm1lc3NhZ2UgPSByZXMubWVzc2FnZTtcclxuICAgICAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpPT57XHJcbiAgICAgICAgICAgICAgdGhpcy5vbnN1Ym1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGV9IFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHlgKVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgICAgIH0gXHJcbiAgICAgIH0pXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICB9XHJcbiAgc3RhcnRBdWRpdCh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmRpc2FibGVjYW5jZWwgPSAgdHJ1ZVxyXG4gICAgdGhpcy50YWtlQXVkaXQgPSB0cnVlO1xyXG4gICAgdGhpcy5hdWRpdERldGFpbHMuYXVkaXRTdGF0dXMgPSAnUmUtQXVkaXRlZCdcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkXHJcbiAgICB9XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuZ2V0QXVkaXRGaWxlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9uWWVzKCl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZCxcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgZmlsZUlkOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnID8gdGhpcy5hdWRpdERldGFpbHMuZW5nYWdlbWVudElkIDogdGhpcy5hdWRpdERldGFpbHMucXVldWVJZCxcclxuICAgIH1cclxuICAgIHRoaXMuZXllU2VydmljZS5jYW5jZWxBdWRpdEZpbGUocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGV9IENhbmNlbGxlZCBTdWNjZXNzZnVsbHlgKVxyXG4gICAgICAgICAgdGhpcy5tb2RhbFJlZi5kaXNtaXNzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKVxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYuZGlzbWlzcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gIH1cclxuICBjYW5jZWwoKXtcclxuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMudmlld0NhbmNlbCwge1xyXG4gICAgICBzaXplOidtZCcsXHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7ICBcclxuICB9XHJcbiAgT25DYW5jZWwoKXtcclxuICAgIHRoaXMubW9kYWxSZWYuZGlzbWlzcygpO1xyXG4gIH1cclxuXHJcbiAgb25FeWVUZXN0QWlTZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZXllVGVzdENoYXRRdWVyeS50cmltKCkpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5haVNlc3Npb25JZCkgdGhpcy5pbml0QWlTZXNzaW9uKCk7XHJcblxyXG4gICAgdGhpcy5zaG93RXllVGVzdEFpTWVzc2FnZSA9IHRydWU7XHJcbiAgICB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IHN0b3Jlczogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0KVxyXG4gICAgICA/IHRoaXMuZXllVGVzdEZvcm0udmFsdWUuc3RvcmVMaXN0Lm1hcCgoczogYW55KSA9PiBzLnN0b3JlTmFtZSlcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlPy5zdGFydERhdGVcclxuICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uZW5kRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgdXNlcl9pZDogdGhpcy51c2Vycz8uX2lkIHx8ICcnLFxyXG4gICAgICBzZXNzaW9uX2lkOiB0aGlzLmFpU2Vzc2lvbklkLFxyXG4gICAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICAgIHNlc3Npb25fdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgICAgbWVzc2FnZTogdGhpcy5leWVUZXN0Q2hhdFF1ZXJ5LFxyXG4gICAgICBhbmFseXRpY3NUeXBlOiAnZXlldGVzdCcsXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIHNlbGVjdGVkX3N0b3Jlczogc3RvcmVzLFxyXG4gICAgICAgIGRhdGVfcmFuZ2U6IHsgc3RhcnQ6IHN0YXJ0RGF0ZSwgZW5kOiBlbmREYXRlIH0sXHJcbiAgICAgICAgc2VsZWN0ZWRfcHJvZHVjdHM6IFtdLFxyXG4gICAgICAgIHNlbGVjdGVkX21vZGVsOiB0aGlzLnNlbGVjdGVkTW9kZWxcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuY2hhdFN0cmVhbShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHRleHQ6IHN0cmluZykgPT4geyB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSB0ZXh0OyB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLmV5ZVRlc3RBaU1lc3NhZ2UgPSAnVW5hYmxlIHRvIGdldCBBSSByZXNwb25zZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nOyB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udkF1ZGlvKCk6IEhUTUxBdWRpb0VsZW1lbnQgfCBudWxsIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY29udi1hdWRpbycpIGFzIEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb252UGxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1ZGlvID0gdGhpcy5nZXRDb252QXVkaW8oKTtcclxuICAgIGlmICghYXVkaW8pIHJldHVybjtcclxuICAgIGlmICh0aGlzLmNvbnZJc1BsYXlpbmcpIHtcclxuICAgICAgYXVkaW8ucGF1c2UoKTtcclxuICAgICAgdGhpcy5jb252SXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhdWRpby5wbGF5KCk7XHJcbiAgICAgIHRoaXMuY29udklzUGxheWluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnZUaW1lVXBkYXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgdGhpcy5jb252Q3VycmVudFRpbWUgPSB0aGlzLmZvcm1hdENvbnZUaW1lKGF1ZGlvLmN1cnJlbnRUaW1lKTtcclxuICAgIGlmIChhdWRpby5kdXJhdGlvbiAmJiBpc0Zpbml0ZShhdWRpby5kdXJhdGlvbikpIHtcclxuICAgICAgdGhpcy5jb252UHJvZ3Jlc3MgPSBhdWRpby5jdXJyZW50VGltZSAvIGF1ZGlvLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Db252TG9hZGVkKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgLy8gT25seSB1c2UgYXVkaW8uZHVyYXRpb24gaWYgaXQncyBhIHZhbGlkIGZpbml0ZSBudW1iZXI7IG90aGVyd2lzZSBrZWVwIEFQSS1wcm92aWRlZCBkdXJhdGlvblxyXG4gICAgaWYgKGF1ZGlvLmR1cmF0aW9uICYmIGlzRmluaXRlKGF1ZGlvLmR1cmF0aW9uKSkge1xyXG4gICAgICB0aGlzLmNvbnZEdXJhdGlvbiA9IHRoaXMuZm9ybWF0Q29udlRpbWUoYXVkaW8uZHVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q29udlRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghc2Vjb25kcyB8fCBpc05hTihzZWNvbmRzKSkgcmV0dXJuICcwOjAwJztcclxuICAgIGNvbnN0IG0gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XHJcbiAgICBjb25zdCBzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApO1xyXG4gICAgcmV0dXJuIGAke219OiR7cyA8IDEwID8gJzAnICsgcyA6IHN9YDtcclxuICB9XHJcblxyXG4gIHNlZWtDb252QXVkaW8oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1ZGlvID0gdGhpcy5nZXRDb252QXVkaW8oKTtcclxuICAgIGlmICghYXVkaW8gfHwgIWF1ZGlvLmR1cmF0aW9uKSByZXR1cm47XHJcbiAgICBjb25zdCB0cmFjayA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByYXRpbyA9IGV2ZW50Lm9mZnNldFggLyB0cmFjay5vZmZzZXRXaWR0aDtcclxuICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gcmF0aW8gKiBhdWRpby5kdXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbnZNdXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbykgcmV0dXJuO1xyXG4gICAgdGhpcy5jb252SXNNdXRlZCA9ICF0aGlzLmNvbnZJc011dGVkO1xyXG4gICAgYXVkaW8ubXV0ZWQgPSB0aGlzLmNvbnZJc011dGVkO1xyXG4gIH1cclxuXHJcbiAgcGxheUZyb21TdGVwKHN0ZXA6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSB0aGlzLmdldENvbnZBdWRpbygpO1xyXG4gICAgaWYgKCFhdWRpbyB8fCAhc3RlcD8uc3RhcnRUaW1lKSByZXR1cm47XHJcbiAgICBjb25zdCBwYXJ0cyA9IFN0cmluZyhzdGVwLnN0YXJ0VGltZSkuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcclxuICAgIGxldCBzZWNvbmRzID0gMDtcclxuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgc2Vjb25kcyA9IHBhcnRzWzBdICogMzYwMCArIHBhcnRzWzFdICogNjAgKyBwYXJ0c1syXTtcclxuICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIHNlY29uZHMgPSBwYXJ0c1swXSAqIDYwICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICBhdWRpby5jdXJyZW50VGltZSA9IHNlY29uZHM7XHJcbiAgICBhdWRpby5wbGF5KCk7XHJcbiAgICB0aGlzLmNvbnZJc1BsYXlpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIEFJIEFzc2lzdGFudCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBwYXJzZUFpTWFya2Rvd24odGV4dDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJycpO1xyXG4gICAgbGV0IGh0bWwgPSB0ZXh0XHJcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UoL14jIyMgKC4rKSQvZ20sICc8aDU+JDE8L2g1PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyMgKC4rKSQvZ20sICc8aDQ+JDE8L2g0PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyAoLispJC9nbSwgJzxoMz4kMTwvaDM+JylcclxuICAgICAgLnJlcGxhY2UoL1xcKlxcKiguKz8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+JylcclxuICAgICAgLnJlcGxhY2UoL19fKC4rPylfXy9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCooLis/KVxcKi9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXyguKz8pXy9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypbLSpdICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypcXGQrXFwuICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvKDxsaT4uKjxcXC9saT4pL2dzLCAnPHVsPiQxPC91bD4nKVxyXG4gICAgICAucmVwbGFjZSgvXFxuezIsfS9nLCAnPC9wPjxwPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcclxuICAgIGh0bWwgPSBgPHA+JHtodG1sfTwvcD5gO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xyXG4gIH1cclxuXHJcbiAgYWlDaGF0UXVlcnkgPSAnJztcclxuICBhaVJlc3BvbnNlVGV4dCA9ICcnO1xyXG4gIGlzQWlMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhaVNlc3Npb25JZCA9ICcnO1xyXG5cclxuICBwcml2YXRlIGluaXRBaVNlc3Npb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpU2Vzc2lvbklkID0gYEVZRVRFU1RfJHtEYXRlLm5vdygpfWA7XHJcbiAgfVxyXG5cclxuICBzZW5kQ2hhdE1lc3NhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWlDaGF0UXVlcnkudHJpbSgpIHx8IHRoaXMuaXNBaUxvYWRpbmcpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5haVNlc3Npb25JZCkgdGhpcy5pbml0QWlTZXNzaW9uKCk7XHJcblxyXG4gICAgY29uc3Qgc3RvcmVzOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QpXHJcbiAgICAgID8gdGhpcy5leWVUZXN0Rm9ybS52YWx1ZS5zdG9yZUxpc3QubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlPy5zdGFydERhdGVcclxuICAgICAgPyB0aGlzLmRheWpzKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uZW5kRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLCAnREQtTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgdXNlcl9pZDogdGhpcy51c2Vycz8uX2lkIHx8ICcnLFxyXG4gICAgICBzZXNzaW9uX2lkOiB0aGlzLmFpU2Vzc2lvbklkLFxyXG4gICAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICAgIHNlc3Npb25fdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgICAgbWVzc2FnZTogdGhpcy5haUNoYXRRdWVyeSxcclxuICAgICAgYW5hbHl0aWNzVHlwZTogJ2V5ZXRlc3QnLFxyXG4gICAgICBjb25maWc6IHtcclxuICAgICAgICBzZWxlY3RlZF9zdG9yZXM6IHN0b3JlcyxcclxuICAgICAgICBkYXRlX3JhbmdlOiB7IHN0YXJ0OiBzdGFydERhdGUsIGVuZDogZW5kRGF0ZSB9LFxyXG4gICAgICAgIHNlbGVjdGVkX3Byb2R1Y3RzOiBbJ0V5ZVRlc3QnXSxcclxuICAgICAgICBzZWxlY3RlZF9tb2RlbDogdGhpcy5zZWxlY3RlZE1vZGVsXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc0FpTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFpUmVzcG9uc2VUZXh0ID0gJyc7XHJcbiAgICB0aGlzLmV5ZVNlcnZpY2UuY2hhdFN0cmVhbShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHRleHQ6IHN0cmluZykgPT4geyB0aGlzLmFpUmVzcG9uc2VUZXh0ID0gdGV4dDsgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0FpTG9hZGluZyA9IGZhbHNlOyB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB0aGlzLmlzQWlMb2FkaW5nID0gZmFsc2U7IH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCIhZXllVmlld1wiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbjxkaXYgY2xhc3M9XCJjYXJkIG1iLTJcIj5cclxuICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZzFcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtICpuZ0lmPVwiIWxvYWRpbmcxXCIgW2Zvcm1Hcm91cF09XCJleWVUZXN0Rm9ybVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC03IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0yIG1iLTQnIDogJ2NvbC0yIG1iLTQnXCIgY2xhc3M9XCJjb2wtMSBtYi00XCIgc3R5bGU9XCJ6LWluZGV4OiAzMyAhaW1wb3J0YW50O1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiZGF0ZVR5cGVcIiAoaXRlbUNoYW5nZSk9XCJkYXRlVHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgIFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMyBtYi00JyA6ICdjb2wtMiBtYi00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwidG9wOiAyMCU7XCIgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTAgei0yXCIgc3R5bGU9XCJtaW4td2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIChjbGljayk9XCJyZXNldFZhbGlkYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZWQpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIFtpc0N1c3RvbURhdGVdPVwiaXNDdXN0b21EYXRlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cInsgZm9ybWF0OiAnREQtTU0tWVlZWScsIGZpcnN0RGF5OiAxLCBtb250aE5hbWVzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGF0ZXJhbmdlXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMyBtYi00JyA6ICdjb2wtMiBtYi00J1wiIGNsYXNzPVwiY29sLTIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGFuZ2UpPVwidHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdSbUxpc3QnKT8udmFsdWU/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgUk1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cIlJtTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid1c2VyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid1c2VyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25SbVNlbGVjdCgkZXZlbnQpXCIgW3NlbGVjdGVkVmFsdWVzXT1cImV5ZVRlc3RGb3JtLmdldCgnUm1MaXN0Jyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nIHx8IHVzZXJzPy5yb2xlID09PSdhZG1pbidcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdDbHVzdGVyTGlzdCcpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBjbHVzdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJDbHVzdGVyTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25ncm91cFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdDbHVzdGVyTGlzdCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItZ3JvdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgICBbbmdDbGFzc109XCJleWVUZXN0Rm9ybS5nZXQoJ3R5cGUnKT8udmFsdWUgPT09J3JlbW90ZScgPyAnY29sLTMgbWItNCcgOiAnY29sLTIgbWItNCdcIiAgPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAgKm5nSWY9XCIhKGV5ZVRlc3RGb3JtLmdldCgnc3RvcmVMaXN0Jyk/LnZhbHVlPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3Jlcy1zZWxlY3QgW2l0ZW1zXT1cInN0b3JlTGlzdFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidzdG9yZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInc3RvcmVJZCdcIiAoc2VsZWN0ZWQpPVwib25TdG9yZVNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdzdG9yZUxpc3QnKT8udmFsdWVcIj48L2xpYi1zdG9yZXMtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0yJyA6ICdjb2wtMidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShleWVUZXN0Rm9ybS5nZXQoJ2NvbXBsaWFuY2VTY29yZScpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBTY29yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdC1kcm9wIFtpdGVtc109XCJ0eXBlUGVyY2VudGFnZUFycmF5XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIChzZWxlY3RlZCk9XCJ0eXBlUGVyY2VudGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZXllVGVzdEZvcm0uZ2V0KCdjb21wbGlhbmNlU2NvcmUnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXNlbGVjdC1kcm9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJjb2wtMSBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImF1ZGl0VHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJhdWRpdFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGFuZ2UpPVwiYXVkaXRUeXBlQ2hhbmdlKCRldmVudClcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSA9PT0ncmVtb3RlJyA/ICdjb2wtMycgOiAnY29sLTInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlciBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZXllVGVzdEZvcm0uZ2V0KCdhdWRpdFN0YXR1cycpPy52YWx1ZT8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGl0IFN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdC1kcm9wIFtpdGVtc109XCJhdWRpdFN0YXR1c0FycmF5XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIChzZWxlY3RlZCk9XCJ0eXBlQXVkaXRTdGF0dXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImV5ZVRlc3RGb3JtLmdldCgnYXVkaXRTdGF0dXMnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXNlbGVjdC1kcm9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibmVhckFkZGl0aW9uXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwibmVhckFkZGl0aW9uQXJyYXlcIiAoaXRlbUNoYW5nZSk9XCJuZWFyQWRkaXRpb25DaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiY2F0ZWdvcnlBcnJheVwiIChpdGVtQ2hhbmdlKT1cImNhdGVnb3J5VHlwZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAqbmdJZj1cInVzZXJzPy5yb2xlXCIgXHJcbiAgY2xhc3M9XCJ0ZXh0LWVuZFwiXHJcbiAgW25nQ2xhc3NdPVwiZXllVGVzdEZvcm0uZ2V0KCd0eXBlJyk/LnZhbHVlID09PSdyZW1vdGUnID8gJ2NvbC0xIG1iLTQnIDogJ2NvbC0xIG1iLTQnXCJcclxuPlxyXG48IS0tIFtuZ0NsYXNzXT1cImdldEFwcGx5QnV0dG9uQ2xhc3ModXNlcnM/LnJvbGUsIGV5ZVRlc3RGb3JtLmdldCgndHlwZScpPy52YWx1ZSlcIiAtLT5cclxuXHJcbiAgICA8YSAoY2xpY2spPVwib25TdWJtaXQoKTtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IHB5LTMgXCI+XHJcbiAgICAgICAgPHNwYW4+QXBwbHk8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuXHJcbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RXllVGVzdFwiIGNsYXNzPVwibXMtNiBtYi0zXCI+XHJcblxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgZGFzaGVkIHctMTAwICByb3dcIj5cclxuICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2wtMTAgdGl0bGUtdGV4dCBweS0zXCI+PHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0ZFRTRFMlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjM1XzI0MjM0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDEzLjMzMzVWMTYuMDAwMk0xNiAxOC42NjY4SDE2LjAwNjdNMjIuNjY2NyAxNi4wMDAyQzIyLjY2NjcgMTkuNjgyMSAxOS42ODE5IDIyLjY2NjggMTYgMjIuNjY2OEMxMi4zMTgxIDIyLjY2NjggOS4zMzMzNyAxOS42ODIxIDkuMzMzMzcgMTYuMDAwMkM5LjMzMzM3IDEyLjMxODMgMTIuMzE4MSA5LjMzMzUgMTYgOS4zMzM1QzE5LjY4MTkgOS4zMzM1IDIyLjY2NjcgMTIuMzE4MyAyMi42NjY3IDE2LjAwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzNV8yNDIzNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4IDgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJkYXNoZWQtZGVzY1wiPkV5ZSB0ZXN0IHZpZGVvIHByZXZpZXcgaXMgYXZhaWxhYmxlIGZvciAzMCBkYXlzLiBBdWRpdCBkYXRhXHJcbiAgICAgICAgICAgICAgICAgcmVtYWlucyBhY2Nlc3NpYmxlLCBidXQgdmlkZW9zIHdpbGwgbm90IGJlIHJldGFpbmVkIGJleW9uZCB0aGlzIHBlcmlvZC48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sLTIgcHQtMiB0ZXh0LWVuZCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZUV5ZVRlc3QoKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yNSAxNUwxNSAyNU0xNSAxNUwyNSAyNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZCBteS0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHktMVwiPlxyXG4gXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgbWluLWgtNTVweCBweS0xIHB4LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZSBteS0wXCI+UmVnaW9uYWwgTWFuYWdlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3tSbUxpc3REYXRhID8/ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTUgcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBtaW4taC01NXB4IHB5LTEgcHgtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlIG15LTBcIj5DbHVzdGVyczwvaDU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57e2dyb3Vwcz8ubGVuZ3RoID8/ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nICYmIGtleVR5cGUgIT09J3JtJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCIgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggIHB5LTEgcHgtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj5DbHVzdGVyczwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57eyBncm91cHM/Lmxlbmd0aCA/PyAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC0xMDAgcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBtaW4taC00NXB4ICBweS0xIHB4LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VG90YWwgVGFuZ28gQUkgRmlsZXM8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3sgZXllVGVzdENhcmREYXRhPy50b3RhbEZpbGVzID8/ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRydXN0IEF1ZGl0IENvbXBsZXRlZDwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdmFsdWVcIj57eyBleWVUZXN0Q2FyZERhdGE/LmNvbXBsZXRlZEZpbGVzID8/ICctJyB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcHktMCBib3JkZXItMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJcIj57eyAoZXllVGVzdENhcmREYXRhPy5jb21wbGV0ZWRSYXRpbyA/PyAnLScpICsgJyUnIH19IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGVzdC1zdWJcIj5Db21wbGV0ZWQ8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtMTAwIHAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgbWluLWgtNDVweCAgcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRhbmdvIFNjb3JlPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC12YWx1ZVwiPnt7IGV5ZVRlc3RDYXJkRGF0YT8udGFuZ29TY29yZSA/PyAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcGUtMCBwcy0zIHB5LTAgYm9yZGVyLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImV5ZVRlc3RDYXJkRGF0YT8udHJlbmRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFleWVUZXN0Q2FyZERhdGE/LnRyZW5kXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTMgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc2MF85Nzc2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41NzUgOUw2LjgyNDk1IDQuMjVMNC4zMjQ5NSA2Ljc1TDAuNTc0OTUxIDNNMTEuNTc1IDlIOC41NzQ5NU0xMS41NzUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzc2MF85Nzc2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDc0OTUxMilcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1zLTJcIj57eyBleWVUZXN0Q2FyZERhdGE/LnRhbmdvU2NvcmVUcmVuZCAhPT0gbnVsbCBcclxuICAgICAgPyAoZ2V0QWJzVmFsdWUoZXllVGVzdENhcmREYXRhLnRhbmdvU2NvcmVUcmVuZCkgfCBudW1iZXI6JzEuMC0wJzonZW4tVVMnKSArICclJyBcclxuICAgICAgOiAnLScgfX1cclxuIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRlc3Qtc3ViMVwiPnZzIHByZXZpb3VzIHdlZWs8L3NwYW4+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPlRydXN0IFNjb3JlPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC12YWx1ZVwiPnt7IChleWVUZXN0Q2FyZERhdGE/LnRydXN0U2NvcmUgJiYgZXllVGVzdENhcmREYXRhPy50cnVzdFNjb3JlICE9PSAnTkEnIFxyXG4gID8gZXllVGVzdENhcmREYXRhLnRydXN0U2NvcmUgKyAnJScgXHJcbiAgOiAnTkEnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMCBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIG1pbi1oLTQ1cHggcHktMSBweC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPkh1bWFuIEF1ZGl0ZWQgU2NvcmU8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXZhbHVlXCI+e3sgKGV5ZVRlc3RDYXJkRGF0YT8uaHVtYW5TY29yZSAmJiBleWVUZXN0Q2FyZERhdGE/Lmh1bWFuU2NvcmUgIT09ICdOQScgXHJcbiAgPyBleWVUZXN0Q2FyZERhdGEuaHVtYW5TY29yZSBcclxuICA6ICdOQScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgQXVkaXQgU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IHRvdGFsSXRlbXMgfX0gVG90YWw8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQWRtaW4gKyBjbHVzdGVyIHByZXNlbnQg4oaSIFJNIFN1bW1hcnkgLS0+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJrZXlUeXBlID09PSdjbHVzdGVyJyAmJiB1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nXCIgKGNsaWNrKT1cInR5cGVWYWwxKCdybScsJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ1XzEyMTI4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzOVwiIGhlaWdodD1cIjM5XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI3LjgzMzQgMjEuMDAwM0gxNi4xNjY3TTE2LjE2NjcgMjEuMDAwM0wyMi4wMDAxIDI2LjgzMzdNMTYuMTY2NyAyMS4wMDAzTDIyLjAwMDEgMTUuMTY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDVfMTIxMjhcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0NV8xMjEyOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ1XzEyMTI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09ICdhZG1pbicgJiYga2V5VHlwZSA9PT0nY2x1c3RlcicgfHwgdXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdjbHVzdGVyJ1wiIGNsYXNzPVwidGl0bGUtdGV4dCBteS00IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgUk0gU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IHRleHQtY2FwaXRhbGl6ZVwiPnt7IGV5ZVRlc3REYXRhWzBdPy5STU5hbWUgPyBleWVUZXN0RGF0YVswXT8uUk1OYW1lIDogJycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEFsbCBvdGhlciBjYXNlcyDihpIgRXllIFRlc3QgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImtleVR5cGUgPT09J3N0b3JlJyAmJiAodXNlcnM/LnJvbGUgPT09ICdzdXBlcmFkbWluJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0eXBlVmFsMSgnY2x1c3RlcicsdGhpcy5ybUVtYWlsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF83NDVfMTIxMjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzOVwiIGhlaWdodD1cIjM5XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNy44MzM0IDIxLjAwMDNIMTYuMTY2N00xNi4xNjY3IDIxLjAwMDNMMjIuMDAwMSAyNi44MzM3TTE2LjE2NjcgMjEuMDAwM0wyMi4wMDAxIDE1LjE2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDVfMTIxMjhcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0NV8xMjEyOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDVfMTIxMjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJrZXlUeXBlID09PSdzdG9yZScgJiYgKHVzZXJzPy5yb2xlID09PSAnYWRtaW4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInR5cGVWYWwxKCdjbHVzdGVyJyx0aGlzLmdyb3VwcylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiNDRcIiB2aWV3Qm94PVwiMCAwIDQ0IDQ0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ1XzEyMTI4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzlcIiBoZWlnaHQ9XCIzOVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjcuODMzNCAyMS4wMDAzSDE2LjE2NjdNMTYuMTY2NyAyMS4wMDAzTDIyLjAwMDEgMjYuODMzN00xNi4xNjY3IDIxLjAwMDNMMjIuMDAwMSAxNS4xNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfNzQ1XzEyMTI4XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd183NDVfMTIxMjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ1XzEyMTI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nICYmIGtleVR5cGUgPT09J3JtJykgJiYgISh1c2Vycz8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nICYmIGtleVR5cGUgPT09J2NsdXN0ZXInKSBcclxuICAgICAgICAgICAgICAgICYmICEodXNlcnM/LnJvbGUgPT09ICdhZG1pbicgJiYga2V5VHlwZSA9PT0nY2x1c3RlcicpXCIgY2xhc3M9XCJ0aXRsZS10ZXh0IG15LTQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEV5ZSBUZXN0XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IHRvdGFsSXRlbXMgfX0gVG90YWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyAmJiBrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInRleHQtc3ViIG15LTJcIj5CYXNlZCBvbiB7eyBoZWFkRGF0ZSB8IGRhdGU6ICdNTU0gZCcgfX0gLSB7e1xyXG4gICAgICAgICAgICAgICAgaGVhZERhdGVFbmQgfCBkYXRlOiAnTU1NIGQsIHknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nYWRtaW4nICYmIGtleVR5cGUgPT09J2NsdXN0ZXInXCIgY2xhc3M9XCJ0ZXh0LXN1YiBteS0yXCI+QmFzZWQgb24ge3sgaGVhZERhdGUgfCBkYXRlOiAnTU1NIGQnIH19IC0ge3tcclxuICAgICAgICAgICAgICAgIGhlYWREYXRlRW5kIHwgZGF0ZTogJ01NTSBkLCB5JyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3VzZXInICYmIGtleVR5cGUgPT09J3N0b3JlJ1wiIGNsYXNzPVwidGV4dC1zdWIgbXktMlwiPkJhc2VkIG9uIHt7IGhlYWREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICBoZWFkRGF0ZUVuZCB8IGRhdGU6ICdNTU0gZCwgeScgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5VHlwZSA9PT0gJ3JtJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1NlYXJjaCBieSBSTU5hbWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrZXlUeXBlID09PSAnY2x1c3RlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdTZWFyY2ggYnkgQ2x1c3RlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdTZWFyY2gnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiAvPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwidXNlcnM/LnJvbGUgPT09J3N1cGVyYWRtaW4nXCIgKGNsaWNrKT1cInNldHRpbmdzVmlldygpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0NVwiIGhlaWdodD1cIjQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDUgNDZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzYwXzk5ODgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNzE5NzNcIiB5PVwiMS45ODA0N1wiIHdpZHRoPVwiNDAuMDRcIiBoZWlnaHQ9XCI0MC4wNFwiIHJ4PVwiNy4yOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjMuMTc0NzNcIiB5PVwiMi40MzU0N1wiIHdpZHRoPVwiMzkuMTNcIiBoZWlnaHQ9XCIzOS4xM1wiIHJ4PVwiNi44MjVcIiBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC45MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF83NjBfOTk4OClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNzM5NiAyNC4yNzQ5QzIzLjk5NjEgMjQuMjc0OSAyNS4wMTQ2IDIzLjI1NjMgMjUuMDE0NiAyMS45OTk5QzI1LjAxNDYgMjAuNzQzNCAyMy45OTYxIDE5LjcyNDkgMjIuNzM5NiAxOS43MjQ5QzIxLjQ4MzIgMTkuNzI0OSAyMC40NjQ2IDIwLjc0MzQgMjAuNDY0NiAyMS45OTk5QzIwLjQ2NDYgMjMuMjU2MyAyMS40ODMyIDI0LjI3NDkgMjIuNzM5NiAyNC4yNzQ5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41MTk3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4LjM1MTMgMjQuMjc0OUMyOC4yNTAzIDI0LjUwMzYgMjguMjIwMiAyNC43NTczIDI4LjI2NDggMjUuMDAzM0MyOC4zMDk0IDI1LjI0OTMgMjguNDI2NyAyNS40NzYzIDI4LjYwMTUgMjUuNjU1TDI4LjY0NyAyNS43MDA1QzI4Ljc4OCAyNS44NDE0IDI4Ljg5OTkgMjYuMDA4NyAyOC45NzYyIDI2LjE5MjhDMjkuMDUyNiAyNi4zNzY5IDI5LjA5MTkgMjYuNTc0MyAyOS4wOTE5IDI2Ljc3MzZDMjkuMDkxOSAyNi45NzI5IDI5LjA1MjYgMjcuMTcwMyAyOC45NzYyIDI3LjM1NDRDMjguODk5OSAyNy41Mzg1IDI4Ljc4OCAyNy43MDU4IDI4LjY0NyAyNy44NDY2QzI4LjUwNjIgMjcuOTg3NiAyOC4zMzg5IDI4LjA5OTUgMjguMTU0OCAyOC4xNzU4QzI3Ljk3MDcgMjguMjUyMiAyNy43NzMzIDI4LjI5MTQgMjcuNTc0IDI4LjI5MTRDMjcuMzc0NyAyOC4yOTE0IDI3LjE3NzMgMjguMjUyMiAyNi45OTMyIDI4LjE3NThDMjYuODA5MSAyOC4wOTk1IDI2LjY0MTggMjcuOTg3NiAyNi41MDA5IDI3Ljg0NjZMMjYuNDU1NCAyNy44MDExQzI2LjI3NjcgMjcuNjI2MyAyNi4wNDk3IDI3LjUwOSAyNS44MDM3IDI3LjQ2NDRDMjUuNTU3NyAyNy40MTk4IDI1LjMwNCAyNy40NDk5IDI1LjA3NTMgMjcuNTUwOUMyNC44NTEgMjcuNjQ3IDI0LjY1OTcgMjcuODA2NiAyNC41MjUgMjguMDEwMUMyNC4zOTAyIDI4LjIxMzUgMjQuMzE3OSAyOC40NTE5IDI0LjMxNjkgMjguNjk2VjI4LjgyNDlDMjQuMzE2OSAyOS4yMjcxIDI0LjE1NzIgMjkuNjEyOSAyMy44NzI3IDI5Ljg5NzNDMjMuNTg4MyAzMC4xODE3IDIzLjIwMjUgMzAuMzQxNSAyMi44MDAzIDMwLjM0MTVDMjIuMzk4IDMwLjM0MTUgMjIuMDEyMyAzMC4xODE3IDIxLjcyNzggMjkuODk3M0MyMS40NDM0IDI5LjYxMjkgMjEuMjgzNiAyOS4yMjcxIDIxLjI4MzYgMjguODI0OVYyOC43NTY2QzIxLjI3NzcgMjguNTA1NiAyMS4xOTY1IDI4LjI2MjIgMjEuMDUwNCAyOC4wNThDMjAuOTA0NCAyNy44NTM4IDIwLjcwMDMgMjcuNjk4MiAyMC40NjQ2IDI3LjYxMTVDMjAuMjM1OSAyNy41MTA2IDE5Ljk4MjIgMjcuNDgwNSAxOS43MzYyIDI3LjUyNTFDMTkuNDkwMiAyNy41Njk3IDE5LjI2MzIgMjcuNjg3IDE5LjA4NDQgMjcuODYxOEwxOS4wMzg5IDI3LjkwNzNDMTguODk4MSAyOC4wNDgzIDE4LjczMDggMjguMTYwMiAxOC41NDY3IDI4LjIzNjVDMTguMzYyNiAyOC4zMTI4IDE4LjE2NTIgMjguMzUyMSAxNy45NjU5IDI4LjM1MjFDMTcuNzY2NiAyOC4zNTIxIDE3LjU2OTIgMjguMzEyOCAxNy4zODUxIDI4LjIzNjVDMTcuMjAxIDI4LjE2MDIgMTcuMDMzNyAyOC4wNDgzIDE2Ljg5MjkgMjcuOTA3M0MxNi43NTE5IDI3Ljc2NjQgMTYuNjQgMjcuNTk5MiAxNi41NjM3IDI3LjQxNUMxNi40ODczIDI3LjIzMDkgMTYuNDQ4IDI3LjAzMzYgMTYuNDQ4IDI2LjgzNDJDMTYuNDQ4IDI2LjYzNDkgMTYuNDg3MyAyNi40Mzc2IDE2LjU2MzcgMjYuMjUzNUMxNi42NCAyNi4wNjkzIDE2Ljc1MTkgMjUuOTAyMSAxNi44OTI5IDI1Ljc2MTJMMTYuOTM4NCAyNS43MTU3QzE3LjExMzIgMjUuNTM3IDE3LjIzMDUgMjUuMzEgMTcuMjc1MSAyNS4wNjRDMTcuMzE5NyAyNC44MTggMTcuMjg5NiAyNC41NjQzIDE3LjE4ODYgMjQuMzM1NUMxNy4wOTI1IDI0LjExMTIgMTYuOTMyOSAyMy45MiAxNi43Mjk0IDIzLjc4NTJDMTYuNTI2IDIzLjY1MDUgMTYuMjg3NiAyMy41NzgyIDE2LjA0MzUgMjMuNTc3MkgxNS45MTQ2QzE1LjUxMjQgMjMuNTc3MiAxNS4xMjY2IDIzLjQxNzQgMTQuODQyMiAyMy4xMzNDMTQuNTU3NyAyMi44NDg2IDE0LjM5NzkgMjIuNDYyOCAxNC4zOTc5IDIyLjA2MDVDMTQuMzk3OSAyMS42NTgzIDE0LjU1NzcgMjEuMjcyNSAxNC44NDIyIDIwLjk4ODFDMTUuMTI2NiAyMC43MDM3IDE1LjUxMjQgMjAuNTQzOSAxNS45MTQ2IDIwLjU0MzlIMTUuOTgyOUMxNi4yMzM5IDIwLjUzOCAxNi40NzczIDIwLjQ1NjggMTYuNjgxNSAyMC4zMTA3QzE2Ljg4NTcgMjAuMTY0NiAxNy4wNDEzIDE5Ljk2MDUgMTcuMTI3OSAxOS43MjQ5QzE3LjIyODkgMTkuNDk2MSAxNy4yNTkgMTkuMjQyNCAxNy4yMTQ0IDE4Ljk5NjRDMTcuMTY5OCAxOC43NTA0IDE3LjA1MjUgMTguNTIzNCAxNi44Nzc3IDE4LjM0NDdMMTYuODMyMiAxOC4yOTkyQzE2LjY5MTIgMTguMTU4MyAxNi41NzkzIDE3Ljk5MTEgMTYuNTAzIDE3LjgwN0MxNi40MjY3IDE3LjYyMjggMTYuMzg3NCAxNy40MjU1IDE2LjM4NzQgMTcuMjI2MkMxNi4zODc0IDE3LjAyNjggMTYuNDI2NyAxNi44Mjk1IDE2LjUwMyAxNi42NDU0QzE2LjU3OTMgMTYuNDYxMiAxNi42OTEyIDE2LjI5NCAxNi44MzIyIDE2LjE1MzFDMTYuOTczMSAxNi4wMTIxIDE3LjE0MDMgMTUuOTAwMiAxNy4zMjQ0IDE1LjgyMzlDMTcuNTA4NiAxNS43NDc2IDE3LjcwNTkgMTUuNzA4MyAxNy45MDUyIDE1LjcwODNDMTguMTA0NiAxNS43MDgzIDE4LjMwMTkgMTUuNzQ3NiAxOC40ODYgMTUuODIzOUMxOC42NzAyIDE1LjkwMDIgMTguODM3NCAxNi4wMTIxIDE4Ljk3ODMgMTYuMTUzMUwxOS4wMjM4IDE2LjE5ODZDMTkuMjAyNSAxNi4zNzM0IDE5LjQyOTUgMTYuNDkwNyAxOS42NzU1IDE2LjUzNTNDMTkuOTIxNSAxNi41Nzk5IDIwLjE3NTIgMTYuNTQ5OCAyMC40MDM5IDE2LjQ0ODlIMjAuNDY0NkMyMC42ODg5IDE2LjM1MjcgMjAuODgwMiAxNi4xOTMxIDIxLjAxNDkgMTUuOTg5N0MyMS4xNDk3IDE1Ljc4NjIgMjEuMjIyIDE1LjU0NzggMjEuMjIyOSAxNS4zMDM4VjE1LjE3NDlDMjEuMjIyOSAxNC43NzI2IDIxLjM4MjcgMTQuMzg2OSAyMS42NjcyIDE0LjEwMjRDMjEuOTUxNiAxMy44MTggMjIuMzM3NCAxMy42NTgyIDIyLjczOTYgMTMuNjU4MkMyMy4xNDE5IDEzLjY1ODIgMjMuNTI3NiAxMy44MTggMjMuODEyMSAxNC4xMDI0QzI0LjA5NjUgMTQuMzg2OSAyNC4yNTYzIDE0Ljc3MjYgMjQuMjU2MyAxNS4xNzQ5VjE1LjI0MzFDMjQuMjU3MyAxNS40ODcxIDI0LjMyOTYgMTUuNzI1NiAyNC40NjQzIDE1LjkyOUMyNC41OTkgMTYuMTMyNSAyNC43OTAzIDE2LjI5MjEgMjUuMDE0NiAxNi4zODgyQzI1LjI0MzMgMTYuNDg5MSAyNS40OTcxIDE2LjUxOTMgMjUuNzQzMSAxNi40NzQ3QzI1Ljk4OTEgMTYuNDMwMSAyNi4yMTYxIDE2LjMxMjggMjYuMzk0OCAxNi4xMzhMMjYuNDQwMyAxNi4wOTI1QzI2LjU4MTEgMTUuOTUxNCAyNi43NDg0IDE1LjgzOTYgMjYuOTMyNSAxNS43NjMyQzI3LjExNjcgMTUuNjg2OSAyNy4zMTQgMTUuNjQ3NiAyNy41MTMzIDE1LjY0NzZDMjcuNzEyNiAxNS42NDc2IDI3LjkxIDE1LjY4NjkgMjguMDk0MSAxNS43NjMyQzI4LjI3ODIgMTUuODM5NiAyOC40NDU1IDE1Ljk1MTQgMjguNTg2NCAxNi4wOTI1QzI4LjcyNzQgMTYuMjMzMyAyOC44MzkyIDE2LjQwMDYgMjguOTE1NiAxNi41ODQ3QzI4Ljk5MTkgMTYuNzY4OCAyOS4wMzEyIDE2Ljk2NjIgMjkuMDMxMiAxNy4xNjU1QzI5LjAzMTIgMTcuMzY0OCAyOC45OTE5IDE3LjU2MjIgMjguOTE1NiAxNy43NDYzQzI4LjgzOTIgMTcuOTMwNCAyOC43Mjc0IDE4LjA5NzcgMjguNTg2NCAxOC4yMzg1TDI4LjU0MDkgMTguMjg0QzI4LjM2NiAxOC40NjI4IDI4LjI0ODggMTguNjg5OCAyOC4yMDQyIDE4LjkzNThDMjguMTU5NiAxOS4xODE4IDI4LjE4OTcgMTkuNDM1NSAyOC4yOTA2IDE5LjY2NDJWMTkuNzI0OUMyOC4zODY3IDE5Ljk0OTIgMjguNTQ2NCAyMC4xNDA0IDI4Ljc0OTggMjAuMjc1MkMyOC45NTMzIDIwLjQwOTkgMjkuMTkxNyAyMC40ODIyIDI5LjQzNTcgMjAuNDgzMkgyOS41NjQ2QzI5Ljk2NjkgMjAuNDgzMiAzMC4zNTI2IDIwLjY0MyAzMC42MzcxIDIwLjkyNzRDMzAuOTIxNSAyMS4yMTE5IDMxLjA4MTMgMjEuNTk3NiAzMS4wODEzIDIxLjk5OTlDMzEuMDgxMyAyMi40MDIxIDMwLjkyMTUgMjIuNzg3OSAzMC42MzcxIDIzLjA3MjNDMzAuMzUyNiAyMy4zNTY3IDI5Ljk2NjkgMjMuNTE2NSAyOS41NjQ2IDIzLjUxNjVIMjkuNDk2NEMyOS4yNTIzIDIzLjUxNzUgMjkuMDEzOSAyMy41ODk4IDI4LjgxMDUgMjMuNzI0NkMyOC42MDcgMjMuODU5MyAyOC40NDc0IDI0LjA1MDYgMjguMzUxMyAyNC4yNzQ5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41MTk3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NjBfOTk4OFwiIHg9XCIwLjcxOTcyN1wiIHk9XCIwLjk4MDQ2OVwiIHdpZHRoPVwiNDQuMDRcIiBoZWlnaHQ9XCI0NC4wNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzYwXzk5ODhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc2MF85OTg4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF83NjBfOTk4OFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4LjJcIiBoZWlnaHQ9XCIxOC4yXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMy42Mzk2IDEyLjkwMDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDE5IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICA8cGF0aCBkPVwiTTcuNTMzNjkgMTIuODQ0MUgxNS4wMjQxTDEzLjU1NjggMTQuMzE3MkwxNC4zNTg3IDE1LjExOTFMMTcuMjAyNCAxMi4yNzU0TDE0LjM1ODcgOS40MzE2NEwxMy41NTY4IDEwLjIzMzZMMTUuMDI0MSAxMS43MDY2SDcuNTMzNjlWMTIuODQ0MVpcIiBmaWxsPVwiYmxhY2tcIi8+XHJcbiAgPHBhdGggZD1cIk0xMi42NTI2IDguODYzMVY2LjU4ODFDMTIuNjUzIDYuNTEzMjUgMTIuNjM4NyA2LjQzOTA0IDEyLjYxMDQgNi4zNjk3NUMxMi41ODIxIDYuMzAwNDUgMTIuNTQwNCA2LjIzNzQzIDEyLjQ4NzcgNi4xODQyOEw4LjUwNjQgMi4yMDMwM0M4LjQ1MzI2IDIuMTUwMzIgOC4zOTAyMyAyLjEwODYyIDguMzIwOTQgMi4wODAzMUM4LjI1MTY0IDIuMDUyMDEgOC4xNzc0NCAyLjAzNzY2IDguMTAyNTkgMi4wMzgxSDIuNDE1MDlDMi4xMTM0IDIuMDM4MSAxLjgyNDA4IDIuMTU3OTQgMS42MTA3NSAyLjM3MTI2QzEuMzk3NDMgMi41ODQ1OCAxLjI3NzU5IDIuODczOTEgMS4yNzc1OSAzLjE3NTZWMTYuODI1NkMxLjI3NzU5IDE3LjEyNzMgMS4zOTc0MyAxNy40MTY2IDEuNjEwNzUgMTcuNjI5OUMxLjgyNDA4IDE3Ljg0MzMgMi4xMTM0IDE3Ljk2MzEgMi40MTUwOSAxNy45NjMxSDExLjUxNTFDMTEuODE2OCAxNy45NjMxIDEyLjEwNjEgMTcuODQzMyAxMi4zMTk0IDE3LjYyOTlDMTIuNTMyNyAxNy40MTY2IDEyLjY1MjYgMTcuMTI3MyAxMi42NTI2IDE2LjgyNTZWMTUuNjg4MUgxMS41MTUxVjE2LjgyNTZIMi40MTUwOVYzLjE3NTZINi45NjUwOVY2LjU4ODFDNi45NjUwOSA2Ljg4OTc4IDcuMDg0OTMgNy4xNzkxMSA3LjI5ODI2IDcuMzkyNDNDNy41MTE1OCA3LjYwNTc1IDcuODAwOTEgNy43MjU2IDguMTAyNTkgNy43MjU2SDExLjUxNTFWOC44NjMxSDEyLjY1MjZaTTguMTAyNTkgNi41ODgxVjMuNDA4NzhMMTEuMjgxOSA2LjU4ODFIOC4xMDI1OVpcIiBmaWxsPVwiYmxhY2tcIi8+XHJcbjwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSDilIDilIAgVGFuZ28gQUkgU2VjdGlvbiAoQXVkaXQgU3VtbWFyeSArIFJNIFN1bW1hcnkgb25seSkg4pSA4pSAIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTYgcGItNFwiICpuZ0lmPVwiKHVzZXJzPy5yb2xlID09PSAnc3VwZXJhZG1pbicgJiYga2V5VHlwZSA9PT0gJ3JtJykgfHwga2V5VHlwZSA9PT0gJ2NsdXN0ZXInXCI+XHJcbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZ3LWJvbGQgbWItMVwiIHN0eWxlPVwiY29sb3I6ICMwNTkxRkY7XCI+XHJcbiAgICAgICAgICBUYW5nbyBBSVxyXG4gICAgICAgICAgPHN1cD5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNiAyM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjQwNjM0IDEuODgxODRMNS42MTE2OCAyLjc2NjQ4QzUuNzU4ODQgMy40MDE3MyA2LjA5MTgzIDMuOTkzMTUgNi41Nzg0MyA0LjQ4MzQ4QzcuMDY1MDMgNC45NzM4MiA3LjY4ODc2IDUuMzQ2NDYgOC4zODkyMyA1LjU2NTM0TDguNjQ4NjEgNS42NDYyOEw4LjM4OTIzIDUuNzI3MjFDNy42ODg3NiA1Ljk0NjA5IDcuMDY1MDMgNi4zMTg3NCA2LjU3ODQzIDYuODA5MDdDNi4wOTE4MyA3LjI5OTQgNS43NTg4NCA3Ljg5MDgyIDUuNjExNjggOC41MjYwN0w1LjQwNjM0IDkuNDEwNzJMNS4yMDA5OSA4LjUyNjA3QzUuMDUzODQgNy44OTA4MiA0LjcyMDg0IDcuMjk5NCA0LjIzNDI1IDYuODA5MDdDMy43NDc2NSA2LjMxODc0IDMuMTIzOTIgNS45NDYwOSAyLjQyMzQ0IDUuNzI3MjFMMi4xNjQwNiA1LjY0NjI4TDIuNDIzNDQgNS41NjUzNEMzLjEyMzkyIDUuMzQ2NDYgMy43NDc2NSA0Ljk3MzgyIDQuMjM0MjUgNC40ODM0OEM0LjcyMDg0IDMuOTkzMTUgNS4wNTM4NCAzLjQwMTczIDUuMjAwOTkgMi43NjY0OEw1LjQwNjM0IDEuODgxODRaTTE3LjI5NDcgMi44MjI5NUwxNy44OTU2IDUuMzIwNjVDMTguMjAxOCA2LjU5NDA1IDE4Ljg4MTggNy43NzY2MiAxOS44NjkyIDguNzUzMDRDMjAuODU2NiA5LjcyOTQ1IDIyLjExNzcgMTAuNDY2NCAyMy41Mjk2IDEwLjg5MkwyNC44NiAxMS4yOTI5TDIzLjUyOTYgMTEuNjkzOEMyMi4xMTc3IDEyLjExOTUgMjAuODU2NiAxMi44NTY0IDE5Ljg2OTIgMTMuODMyOEMxOC44ODE4IDE0LjgwOTMgMTguMjAxOCAxNS45OTE4IDE3Ljg5NTYgMTcuMjY1MkwxNy4yOTQ3IDE5Ljc2MjlMMTYuNjkzOCAxNy4yNjUyQzE2LjM4NzUgMTUuOTkxOCAxNS43MDc2IDE0LjgwOTMgMTQuNzIwMiAxMy44MzI4QzEzLjczMjggMTIuODU2NCAxMi40NzE3IDEyLjExOTUgMTEuMDU5OCAxMS42OTM4TDkuNzI5MzcgMTEuMjkyOUwxMS4wNTk4IDEwLjg5MkMxMi40NzE3IDEwLjQ2NjQgMTMuNzMyOCA5LjcyOTQ1IDE0LjcyMDIgOC43NTMwNEMxNS43MDc2IDcuNzc2NjIgMTYuMzg3NSA2LjU5NDA1IDE2LjY5MzggNS4zMjA2NUwxNy4yOTQ3IDIuODIyOTVaXCIgZmlsbD1cInVybCgjZXllVGVzdEFpR3JhZClcIi8+XHJcbiAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJleWVUZXN0QWlHcmFkXCIgeDE9XCIxMy41MTJcIiB5MT1cIjE5Ljc2MjlcIiB4Mj1cIjEzLjUxMlwiIHkyPVwiMS44ODE4NFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA1OTFGRlwiLz5cclxuICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvc3VwPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRhcmsgbWItMFwiIHN0eWxlPVwiZm9udC1zaXplOiAxM3B4O1wiPkFzayB0aGUgVGFuZ28gQUkgb24gd2hhdCB5b3Ugd2FudC4uPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSW5wdXQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA2MCU7IG1pbi13aWR0aDogMzAwcHg7XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBQbHVzIEJ1dHRvbiB3aXRoIE1vZGVsIFBvcHVwIChpbnNpZGUgaW5wdXQsIGxlZnQgc2lkZSkgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1tZW51LXdyYXAgcG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHRyYW5zbGF0ZS1taWRkbGUteSBwcy0yXCIgc3R5bGU9XCJsZWZ0OiA0cHg7IHotaW5kZXg6IDEwO1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXBsdXNcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBsdXNNZW51KClcIiBbY2xhc3Mub3Blbl09XCJzaG93UGx1c01lbnVcIj4vPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwXCIgKm5nSWY9XCJzaG93UGx1c01lbnVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1wb3B1cC1zZWN0aW9uLWxhYmVsXCI+TW9kZWw8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbSBvZiBtb2RlbE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkTW9kZWwgPT09IG0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGVsKG0udmFsdWUpOyBjbG9zZVBsdXNNZW51KClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9kZWwtaGludCBmdy1ib2xkIHRleHQtZGFya1wiPnt7IG0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBtcy0xXCIgc3R5bGU9XCJmb250LXNpemU6MTFweDtcIj57eyBtLnZhbHVlIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZE1vZGVsID09PSBtLnZhbHVlXCIgY2xhc3M9XCJjaGVjay1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjIwIDYgOSAxNyA0IDEyXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC1waWxsXCIgcGxhY2Vob2xkZXI9XCJBc2sgYW55dGhpbmcuLi5cIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogNDZweDtcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImV5ZVRlc3RDaGF0UXVlcnlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRXllVGVzdEFpU2VhcmNoKClcIiAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB0cmFuc2xhdGUtbWlkZGxlLXkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwZS0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtb2RlbC12ZXJzaW9uLXRhZyBtZS0xXCI+e3sgc2VsZWN0ZWRNb2RlbFZlcnNpb24gfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHRpdGxlPVwiSGlzdG9yeVwiPlxyXG4gICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjkzNzcyIDEwLjM1NTFMMy4zNTc2NyAxMC42NDg0TDIuNzc3NjMgMTAuOTQxN0wzLjMxODc0IDEyLjAxMTdMMy44OTg3OCAxMS43MTg0TDQuNDc4ODMgMTEuNDI1MUwzLjkzNzcyIDEwLjM1NTFaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHRpdGxlPVwiU2VuZFwiIChjbGljayk9XCJvbkV5ZVRlc3RBaVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY3OTcgMTAuMDAwM0gxNS44MzQ2TTE1LjgzNDYgMTAuMDAwM0wxMC4wMDEzIDQuMTY2OTlNMTUuODM0NiAxMC4wMDAzTDEwLjAwMTMgMTUuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+PCEtLSAvcG9zaXRpb24tcmVsYXRpdmUgLS0+XHJcbiAgICAgICAgPC9kaXY+PCEtLSAvd2lkdGggd3JhcHBlciAtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEFJIFJlc3BvbnNlIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0V5ZVRlc3RBaU1lc3NhZ2VcIiBjbGFzcz1cInJvdW5kZWQtMyBwLTQgbXgtYXV0b1wiIHN0eWxlPVwiYmFja2dyb3VuZDogI0VBRjhGRjtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWF2YXRhci1pY29uXCI+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDIyIDIyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzEyMFwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTE5Ljk5NDggMTguMDc1MkwxOS4yNzc5IDE3LjM1ODNMMTEuNTUzMyA5LjYzMzY5TDEzLjg0NDggNy4zNDIxOUwxNC4zOTM4IDYuNzkyMDZDMTQuNDQ2MiA2LjczODkyIDE0LjQ3NTggNi42Njc0MiAxNC40NzYyIDYuNTkyOEMxNC40NzYgNi41NTU5MSAxNC40Njg1IDYuNTE5NDEgMTQuNDU0MiA2LjQ4NTRDMTQuNDM5OSA2LjQ1MTQgMTQuNDE5IDYuNDIwNTUgMTQuMzkyOCA2LjM5NDYyTDEzLjg0MjYgNS44NDQ0OUwxMS40MTI1IDMuNDEwMDRMMTAuODYyNCAyLjg1OTkxQzEwLjgzNjQgMi44MzM0NiAxMC44MDU0IDIuODEyNDQgMTAuNzcxMiAyLjc5ODFDMTAuNzM2OSAyLjc4Mzc1IDEwLjcwMDIgMi43NzYzNyAxMC42NjMxIDIuNzc2MzdDMTAuNjI2IDIuNzc2MzcgMTAuNTg5MyAyLjc4Mzc1IDEwLjU1NTEgMi43OTgxQzEwLjUyMDkgMi44MTI0NCAxMC40ODk5IDIuODMzNDYgMTAuNDYzOSAyLjg1OTkxTDkuOTEzNzQgMy40MTExM0w2LjkzNTY2IDYuMzg5MjFDNi45MDkyMyA2LjQxNTEyIDYuODg4MjQgNi40NDYwNCA2Ljg3MzkxIDYuNDgwMTZDNi44NTk1OCA2LjUxNDI4IDYuODUyMiA2LjU1MDkyIDYuODUyMiA2LjU4NzkzQzYuODUyMiA2LjYyNDkzIDYuODU5NTggNi42NjE1NyA2Ljg3MzkxIDYuNjk1NjlDNi44ODgyNCA2LjcyOTgxIDYuOTA5MjMgNi43NjA3MyA2LjkzNTY2IDYuNzg2NjRMOS43ODA1MyA5LjYzMjYxTDIuMDU0ODUgMTcuMzU4M0wxLjM0MTIgMTguMDc1MkMxLjI4ODI4IDE4LjEyNzYgMS4yNTgzIDE4LjE5ODkgMS4yNTc4MSAxOC4yNzM0QzEuMjU4MTIgMTguMzQ1NCAxLjI4NTU4IDE4LjQxNDYgMS4zMzQ3IDE4LjQ2NzJDMS4zNjA5MyAxOC40OTUyIDEuMzkyNjIgMTguNTE3NiAxLjQyNzgzIDE4LjUzMjhDMS40NjMwMyAxOC41NDgxIDEuNTAxIDE4LjU1NiAxLjUzOTM4IDE4LjU1Nkg4LjQ4ODU5QzguNTYzMTggMTguNTU1NyA4LjYzNDYzIDE4LjUyNiA4LjY4NzM3IDE4LjQ3MzJDOC43NDAxMSAxOC40MjA1IDguNzY5ODcgMTguMzQ5IDguNzcwMTUgMTguMjc0NVYxNy41ODM1QzguNzcwMTUgMTcuNTA4OCA4Ljc0MDUyIDE3LjQzNyA4LjY4Nzc1IDE3LjM4NDFDOC42MzQ5OCAxNy4zMzExIDguNTYzMzYgMTcuMzAxMiA4LjQ4ODU5IDE3LjMwMDlIMy44ODYxTDEwLjY2NjQgMTAuNTIwNkwxNy40NDY2IDE3LjMwMDlIMTIuODA0MUMxMi43MjkzIDE3LjMwMTIgMTIuNjU3NyAxNy4zMzExIDEyLjYwNDkgMTcuMzg0MUMxMi41NTIyIDE3LjQzNyAxMi41MjI1IDE3LjUwODggMTIuNTIyNSAxNy41ODM1VjE4LjI3NDVDMTIuNTIyNCAxOC4zMTE2IDEyLjUyOTcgMTguMzQ4MyAxMi41NDQgMTguMzgyNUMxMi41NTgzIDE4LjQxNjggMTIuNTc5NCAxOC40NDc4IDEyLjYwNTkgMTguNDczN0MxMi42NTg1IDE4LjUyNjIgMTIuNzI5OCAxOC41NTU4IDEyLjgwNDEgMTguNTU2SDE5Ljc5NTVDMTkuODM0MSAxOC41NTYyIDE5Ljg3MjMgMTguNTQ4MyAxOS45MDc3IDE4LjUzMzFDMTkuOTQzMSAxOC41MTc4IDE5Ljk3NSAxOC40OTU0IDIwLjAwMTMgMTguNDY3MkMyMC4wNTE5IDE4LjQxNDEgMjAuMDc5NiAxOC4zNDMyIDIwLjA3ODQgMTguMjY5OUMyMC4wNzcxIDE4LjE5NjUgMjAuMDQ3MSAxOC4xMjY2IDE5Ljk5NDggMTguMDc1MlpNMTAuNjYyIDQuNDM1NTlMMTIuODIwMyA2LjU5Mzg4TDEwLjY2NzUgOC43NDY3Nkw4LjUwOTE3IDYuNTg4NDdMMTAuNjYyIDQuNDM1NTlaXCIgLz5cclxuICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTkuOTk0OCAxOC4wNzUyTC0xNy45NjkgNTYuMDM5TC0xNy44MDA0IDU2LjIwNzZMLTE3LjYzMDMgNTYuMzc0NkwxOS45OTQ4IDE4LjA3NTJaTTE5LjI3NzkgMTcuMzU4M0w1Ny4yNDE3IC0yMC42MDU1Vi0yMC42MDU1TDE5LjI3NzkgMTcuMzU4M1pNMTEuNTUzMyA5LjYzMzY5TC0yNi40MTA1IC0yOC4zMzAxTC02NC4zNzQzIDkuNjMzNjlMLTI2LjQxMDUgNDcuNTk3NUwxMS41NTMzIDkuNjMzNjlaTTEzLjg0NDggNy4zNDIxOUw1MS44MDg2IDQ1LjMwNkw1MS44MjczIDQ1LjI4NzNMNTEuODQ2IDQ1LjI2ODVMMTMuODQ0OCA3LjM0MjE5Wk0xNC4zOTM4IDYuNzkyMDZMNTIuMzk1MSA0NC43MTg0TDUyLjUxMSA0NC42MDIyTDUyLjYyNjIgNDQuNDg1NEwxNC4zOTM4IDYuNzkyMDZaTTE0LjQ3NjIgNi41OTI4TDY4LjE2NDQgNi44NjY2MUw2OC4xNjU3IDYuNTk3MzFMNjguMTY0NCA2LjMyODAxTDE0LjQ3NjIgNi41OTI4Wk0xNC4zOTI4IDYuMzk0NjJMLTIzLjU3MSA0NC4zNTg0TC0yMy40NTI4IDQ0LjQ3NjZMLTIzLjMzMzkgNDQuNTk0TDE0LjM5MjggNi4zOTQ2MlpNMTMuODQyNiA1Ljg0NDQ5TC0yNC4xNTQ5IDQzLjc3NDRMLTI0LjEzODEgNDMuNzkxNEwtMjQuMTIxMiA0My44MDgzTDEzLjg0MjYgNS44NDQ0OVpNMTEuNDEyNSAzLjQxMDA0TDQ5LjQxMDEgLTM0LjUxOTlMNDkuMzkzMiAtMzQuNTM2OEw0OS4zNzYzIC0zNC41NTM4TDExLjQxMjUgMy40MTAwNFpNMTAuODYyNCAyLjg1OTkxTC0yNy40Mjc0IDQwLjQ5NDlMLTI3LjI2NTEgNDAuNjZMLTI3LjEwMTQgNDAuODIzN0wxMC44NjI0IDIuODU5OTFaTTEwLjQ2MzkgMi44NTk5MUw0OC40NjQ5IDQwLjc4NjRMNDguNjA5OCA0MC42NDEyTDQ4Ljc1MzYgNDAuNDk0OUwxMC40NjM5IDIuODU5OTFaTTkuOTEzNzQgMy40MTExM0w0Ny44Nzc1IDQxLjM3NDlMNDcuODk2MiA0MS4zNTYzTDQ3LjkxNDggNDEuMzM3Nkw5LjkxMzc0IDMuNDExMTNaTTYuOTM1NjYgNi4zODkyMUw0NC41MjUzIDQ0LjcyMzVMNDQuNzEzMyA0NC41MzkyTDQ0Ljg5OTQgNDQuMzUzTDYuOTM1NjYgNi4zODkyMVpNNi44NTIyIDYuNTg3OTNINjAuNTQxMUg2Ljg1MjJaTTYuOTM1NjYgNi43ODY2NEw0NC45MDY3IC0zMS4xNjk5TDQ0LjcxNjkgLTMxLjM1OTdMNDQuNTI1MyAtMzEuNTQ3Nkw2LjkzNTY2IDYuNzg2NjRaTTkuNzgwNTMgOS42MzI2MUw0Ny43NDQzIDQ3LjU5NjRMODUuNzAwOSA5LjYzOTgzTDQ3Ljc1MTUgLTI4LjMyMzlMOS43ODA1MyA5LjYzMjYxWk0yLjA1NDg1IDE3LjM1ODNMLTM1LjkwODkgLTIwLjYwNTVMLTM1Ljk1MiAtMjAuNTYyNEwtMzUuOTk1IC0yMC41MTkyTDIuMDU0ODUgMTcuMzU4M1pNMS4zNDEyIDE4LjA3NTJMMzkuMTI4OCA1Ni4yMTQ0TDM5LjI2MDQgNTYuMDg0TDM5LjM5MTEgNTUuOTUyN0wxLjM0MTIgMTguMDc1MlpNMS4yNTc4MSAxOC4yNzM0TC01Mi40Mjk5IDE3LjkyMjlMLTUyLjQzMTggMTguMjEzNEwtNTIuNDMwNiAxOC41MDM4TDEuMjU3ODEgMTguMjczNFpNMS4zMzQ3IDE4LjQ2NzJMLTM3LjkxNDYgNTUuMTAwM0wtMzcuODg3NyA1NS4xMjkyTC0zNy44NjA3IDU1LjE1ODFMMS4zMzQ3IDE4LjQ2NzJaTTEuNTM5MzggMTguNTU2TDEuNTIyMzggNzIuMjQ0OUgxLjUzMDg4SDEuNTM5MzhWMTguNTU2Wk04LjQ4ODU5IDE4LjU1NlY3Mi4yNDQ5SDguNTkxMjVMOC42OTM5IDcyLjI0NDVMOC40ODg1OSAxOC41NTZaTTguNzcwMTUgMTguMjc0NUw2Mi40NTg3IDE4LjQ3OThMNjIuNDU5IDE4LjM3NzFWMTguMjc0NUg4Ljc3MDE1Wk04Ljc3MDE1IDE3LjU4MzVMLTQ0LjkxODcgMTcuNTgzMVYxNy41ODM1SDguNzcwMTVaTTguNDg4NTkgMTcuMzAwOUw4LjY5NDI5IC0zNi4zODc2TDguNTkxNDQgLTM2LjM4OEg4LjQ4ODU5VjE3LjMwMDlaTTMuODg2MSAxNy4zMDA5TC0zNC4wNzc3IC0yMC42NjI5TC0xMjUuNzMgNzAuOTg5OEgzLjg4NjFWMTcuMzAwOVpNMTAuNjY2NCAxMC41MjA2TDQ4LjYzMDIgLTI3LjQ0MzJMMTAuNjY2NCAtNjUuNDA3TC0yNy4yOTc0IC0yNy40NDMyTDEwLjY2NjQgMTAuNTIwNlpNMTcuNDQ2NiAxNy4zMDA5VjcwLjk4OThIMTQ3LjA2M0w1NS40MTA0IC0yMC42NjI5TDE3LjQ0NjYgMTcuMzAwOVpNMTIuODA0MSAxNy4zMDA5Vi0zNi4zODhIMTIuNzAxMkwxMi41OTg0IC0zNi4zODc2TDEyLjgwNDEgMTcuMzAwOVpNMTIuNTIyNSAxNy41ODM1SDY2LjIxMTRWMTcuNTgzMUwxMi41MjI1IDE3LjU4MzVaTTEyLjUyMjUgMTguMjc0NUw2Ni4yMTEgMTguNDgwM0w2Ni4yMTE0IDE4LjM3NzRWMTguMjc0NUgxMi41MjI1Wk0xMi42MDU5IDE4LjQ3MzdMNTAuNTM4NCAtMTkuNTIxM0w1MC4zNDMxIC0xOS43MTYzTDUwLjE0NTggLTE5LjkwOTNMMTIuNjA1OSAxOC40NzM3Wk0xMi44MDQxIDE4LjU1NkwxMi42NjAzIDcyLjI0NDdMMTIuNzMyMiA3Mi4yNDQ5SDEyLjgwNDFWMTguNTU2Wk0xOS43OTU1IDE4LjU1NkwxOS45ODU1IC0zNS4xMzI1TDE5Ljg5MDUgLTM1LjEzMjlIMTkuNzk1NVYxOC41NTZaTTIwLjAwMTMgMTguNDY3MkwtMTguODcyNCAtMTguNTY0M0wtMTkuMDM0MiAtMTguMzk0NUwtMTkuMTk0NCAtMTguMjIzM0wyMC4wMDEzIDE4LjQ2NzJaTTEwLjY2MiA0LjQzNTU5TDQ4LjYyNTggLTMzLjUyODJMMTAuNjYyIC03MS40OTJMLTI3LjMwMTcgLTMzLjUyODJMMTAuNjYyIDQuNDM1NTlaTTEyLjgyMDMgNi41OTM4OEw1MC43ODQxIDQ0LjU1NzdMODguNzQ3OSA2LjU5Mzg5TDUwLjc4NDEgLTMxLjM2OTlMMTIuODIwMyA2LjU5Mzg4Wk0xMC42Njc1IDguNzQ2NzZMLTI3LjI5NjMgNDYuNzEwNUwxMC42Njc0IDg0LjY3NDNMNDguNjMxMiA0Ni43MTA1TDEwLjY2NzUgOC43NDY3NlpNOC41MDkxNyA2LjU4ODQ3TC0yOS40NTQ2IC0zMS4zNzUzTC02Ny40MTg0IDYuNTg4NDdMLTI5LjQ1NDYgNDQuNTUyMkw4LjUwOTE3IDYuNTg4NDdaTTE5Ljk5NDggMTguMDc1Mkw1Ny45NTg2IC0xOS44ODg2TDU3LjI0MTcgLTIwLjYwNTVMMTkuMjc3OSAxNy4zNTgzTC0xOC42ODU5IDU1LjMyMjFMLTE3Ljk2OSA1Ni4wMzlMMTkuOTk0OCAxOC4wNzUyWk0xOS4yNzc5IDE3LjM1ODNMNTcuMjQxNyAtMjAuNjA1NUw0OS41MTcxIC0yOC4zMzAxTDExLjU1MzMgOS42MzM2OUwtMjYuNDEwNSA0Ny41OTc1TC0xOC42ODU5IDU1LjMyMjFMMTkuMjc3OSAxNy4zNTgzWk0xMS41NTMzIDkuNjMzNjlMNDkuNTE3MSA0Ny41OTc1TDUxLjgwODYgNDUuMzA2TDEzLjg0NDggNy4zNDIxOUwtMjQuMTE5IC0zMC42MjE2TC0yNi40MTA1IC0yOC4zMzAxTDExLjU1MzMgOS42MzM2OVpNMTMuODQ0OCA3LjM0MjE5TDUxLjg0NiA0NS4yNjg1TDUyLjM5NTEgNDQuNzE4NEwxNC4zOTM4IDYuNzkyMDZMLTIzLjYwNzQgLTMxLjEzNDNMLTI0LjE1NjQgLTMwLjU4NDFMMTMuODQ0OCA3LjM0MjE5Wk0xNC4zOTM4IDYuNzkyMDZMNTIuNjI2MiA0NC40ODU0QzYyLjUxNjQgMzQuNDUzOCA2OC4wOTI1IDIwLjk1MzIgNjguMTY0NCA2Ljg2NjYxTDE0LjQ3NjIgNi41OTI4TC0zOS4yMTIgNi4zMTg5OEMtMzkuMTQxIC03LjYxODM2IC0zMy42MjM5IC0yMC45NzU5IC0yMy44Mzg1IC0zMC45MDEzTDE0LjM5MzggNi43OTIwNlpNMTQuNDc2MiA2LjU5MjhMNjguMTY0NCA2LjMyODAxQzY4LjEyOTQgLTAuNzcwMTA3IDY2LjY5NDUgLTcuNzkyNTUgNjMuOTQwOSAtMTQuMzM2OUwxNC40NTQyIDYuNDg1NEwtMzUuMDMyNSAyNy4zMDc3Qy0zNy43NTc1IDIwLjgzMTQgLTM5LjE3NzQgMTMuODgxOSAtMzkuMjEyMSA2Ljg1NzU5TDE0LjQ3NjIgNi41OTI4Wk0xNC40NTQyIDYuNDg1NEw2My45NDA5IC0xNC4zMzY5QzYxLjE4NzcgLTIwLjg4MDIgNTcuMTcwNSAtMjYuODE2MiA1Mi4xMTk0IC0zMS44MDQ4TDE0LjM5MjggNi4zOTQ2MkwtMjMuMzMzOSA0NC41OTRDLTI4LjMzMjUgMzkuNjU3MyAtMzIuMzA3OSAzMy43ODMgLTM1LjAzMjUgMjcuMzA3N0wxNC40NTQyIDYuNDg1NFpNMTQuMzkyOCA2LjM5NDYyTDUyLjM1NjYgLTMxLjU2OTJMNTEuODA2NCAtMzIuMTE5M0wxMy44NDI2IDUuODQ0NDlMLTI0LjEyMTIgNDMuODA4M0wtMjMuNTcxIDQ0LjM1ODRMMTQuMzkyOCA2LjM5NDYyWk0xMy44NDI2IDUuODQ0NDlMNTEuODQwMiAtMzIuMDg1NUw0OS40MTAxIC0zNC41MTk5TDExLjQxMjUgMy40MTAwNEwtMjYuNTg1MSA0MS4zNEwtMjQuMTU0OSA0My43NzQ0TDEzLjg0MjYgNS44NDQ0OVpNMTEuNDEyNSAzLjQxMDA0TDQ5LjM3NjMgLTM0LjU1MzhMNDguODI2MSAtMzUuMTAzOUwxMC44NjI0IDIuODU5OTFMLTI3LjEwMTQgNDAuODIzN0wtMjYuNTUxMiA0MS4zNzM5TDExLjQxMjUgMy40MTAwNFpNMTAuODYyNCAyLjg1OTkxTDQ5LjE1MjEgLTM0Ljc3NTFDNDQuMTI5NyAtMzkuODg0OCAzOC4xMzk2IC00My45NDQgMzEuNTMwNyAtNDYuNzE0OUwxMC43NzEyIDIuNzk4MUwtOS45ODgzOCA1Mi4zMTExQy0xNi41Mjg5IDQ5LjU2ODkgLTIyLjQ1NyA0NS41NTE4IC0yNy40Mjc0IDQwLjQ5NDlMMTAuODYyNCAyLjg1OTkxWk0xMC43NzEyIDIuNzk4MUwzMS41MzA3IC00Ni43MTQ5QzI0LjkyMjMgLTQ5LjQ4NTcgMTcuODI4NSAtNTAuOTEyNSAxMC42NjMxIC01MC45MTI1VjIuNzc2MzdWNTYuNDY1M0MzLjU3MTk4IDU2LjQ2NTMgLTMuNDQ4MzkgNTUuMDUzMiAtOS45ODgzOCA1Mi4zMTExTDEwLjc3MTIgMi43OTgxWk0xMC42NjMxIDIuNzc2MzdWLTUwLjkxMjVDMy40OTc2MiAtNTAuOTEyNSAtMy41OTYxOSAtNDkuNDg1NiAtMTAuMjA0NCAtNDYuNzE0OUwxMC41NTUxIDIuNzk4MUwzMS4zMTQ2IDUyLjMxMTFDMjQuNzc0OCA1NS4wNTMxIDE3Ljc1NDQgNTYuNDY1MyAxMC42NjMxIDU2LjQ2NTNWMi43NzYzN1pNMTAuNTU1MSAyLjc5ODFMLTEwLjIwNDQgLTQ2LjcxNDlDLTE2LjgxMjkgLTQzLjk0NDIgLTIyLjgwMzIgLTM5Ljg4NTIgLTI3LjgyNTkgLTM0Ljc3NTFMMTAuNDYzOSAyLjg1OTkxTDQ4Ljc1MzYgNDAuNDk0OUM0My43ODI5IDQ1LjU1MjEgMzcuODU0NyA0OS41NjkgMzEuMzE0NiA1Mi4zMTExTDEwLjU1NTEgMi43OTgxWk0xMC40NjM5IDIuODU5OTFMLTI3LjUzNzIgLTM1LjA2NjVMLTI4LjA4NzMgLTM0LjUxNTNMOS45MTM3NCAzLjQxMTEzTDQ3LjkxNDggNDEuMzM3Nkw0OC40NjQ5IDQwLjc4NjRMMTAuNDYzOSAyLjg1OTkxWk05LjkxMzc0IDMuNDExMTNMLTI4LjA1IC0zNC41NTI3TC0zMS4wMjgxIC0zMS41NzQ2TDYuOTM1NjYgNi4zODkyMUw0NC44OTk0IDQ0LjM1M0w0Ny44Nzc1IDQxLjM3NDlMOS45MTM3NCAzLjQxMTEzWk02LjkzNTY2IDYuMzg5MjFMLTMwLjY1NCAtMzEuOTQ1MUMtMzUuNzc3NyAtMjYuOTIwOSAtMzkuODQ4MSAtMjAuOTI1MiAtNDIuNjI2OCAtMTQuMzA4N0w2Ljg3MzkxIDYuNDgwMTZMNTYuMzc0NiAyNy4yNjlDNTMuNjI0NiAzMy44MTcyIDQ5LjU5NjIgMzkuNzUxMSA0NC41MjUzIDQ0LjcyMzVMNi45MzU2NiA2LjM4OTIxWk02Ljg3MzkxIDYuNDgwMTZMLTQyLjYyNjggLTE0LjMwODdDLTQ1LjQwNTIgLTcuNjkyOTkgLTQ2LjgzNjcgLTAuNTg4OTQ3IC00Ni44MzY3IDYuNTg3OTNINi44NTIySDYwLjU0MTFDNjAuNTQxMSAxMy42OTA4IDU5LjEyNDQgMjAuNzIxNSA1Ni4zNzQ2IDI3LjI2OUw2Ljg3MzkxIDYuNDgwMTZaTTYuODUyMiA2LjU4NzkzSC00Ni44MzY3Qy00Ni44MzY3IDEzLjc2NDcgLTQ1LjQwNTIgMjAuODY4OCAtNDIuNjI2OCAyNy40ODQ1TDYuODczOTEgNi42OTU2OUw1Ni4zNzQ2IC0xNC4wOTMyQzU5LjEyNDQgLTcuNTQ1NjIgNjAuNTQxMSAtMC41MTQ4NDggNjAuNTQxMSA2LjU4NzkzSDYuODUyMlpNNi44NzM5MSA2LjY5NTY5TC00Mi42MjY4IDI3LjQ4NDVDLTM5Ljg0OCAzNC4xMDEyIC0zNS43Nzc1IDQwLjA5NjkgLTMwLjY1NCA0NS4xMjA5TDYuOTM1NjYgNi43ODY2NEw0NC41MjUzIC0zMS41NDc2QzQ5LjU5NiAtMjYuNTc1NCA1My42MjQ1IC0yMC42NDE2IDU2LjM3NDYgLTE0LjA5MzJMNi44NzM5MSA2LjY5NTY5Wk02LjkzNTY2IDYuNzg2NjRMLTMxLjAzNTQgNDQuNzQzMkwtMjguMTkwNSA0Ny41ODkyTDkuNzgwNTMgOS42MzI2MUw0Ny43NTE1IC0yOC4zMjM5TDQ0LjkwNjcgLTMxLjE2OTlMNi45MzU2NiA2Ljc4NjY0Wk05Ljc4MDUzIDkuNjMyNjFMLTI4LjE4MzMgLTI4LjMzMTJMLTM1LjkwODkgLTIwLjYwNTVMMi4wNTQ4NSAxNy4zNTgzTDQwLjAxODYgNTUuMzIyMUw0Ny43NDQzIDQ3LjU5NjRMOS43ODA1MyA5LjYzMjYxWk0yLjA1NDg1IDE3LjM1ODNMLTM1Ljk5NSAtMjAuNTE5MkwtMzYuNzA4NyAtMTkuODAyM0wxLjM0MTIgMTguMDc1MkwzOS4zOTExIDU1Ljk1MjdMNDAuMTA0NyA1NS4yMzU4TDIuMDU0ODUgMTcuMzU4M1pNMS4zNDEyIDE4LjA3NTJMLTM2LjQ0NjQgLTIwLjA2NEMtNDYuNTg5NCAtMTAuMDE0NSAtNTIuMzM2NyAzLjY0NDg1IC01Mi40Mjk5IDE3LjkyMjlMMS4yNTc4MSAxOC4yNzM0TDU0Ljk0NTYgMTguNjIzOEM1NC44NTMzIDMyLjc1MjkgNDkuMTY1OSA0Ni4yNjk3IDM5LjEyODggNTYuMjE0NEwxLjM0MTIgMTguMDc1MlpNMS4yNTc4MSAxOC4yNzM0TC01Mi40MzA2IDE4LjUwMzhDLTUyLjM3MjMgMzIuMDk1NSAtNDcuMTg4MyA0NS4xNjQ0IC0zNy45MTQ2IDU1LjEwMDNMMS4zMzQ3IDE4LjQ2NzJMNDAuNTg0IC0xOC4xNjU5QzQ5Ljc1OTQgLTguMzM1MjggNTQuODg4NSA0LjU5NTI2IDU0Ljk0NjIgMTguMDQyOUwxLjI1NzgxIDE4LjI3MzRaTTEuMzM0NyAxOC40NjcyTC0zNy44NjA3IDU1LjE1ODFDLTMyLjgxNDggNjAuNTQ4NCAtMjYuNzE2IDY0Ljg0NjUgLTE5Ljk0MTIgNjcuNzg1OUwxLjQyNzgzIDE4LjUzMjhMMjIuNzk2OSAtMzAuNzIwMkMyOS41MDEyIC0yNy44MTE0IDM1LjUzNjYgLTIzLjU1NzkgNDAuNTMwMSAtMTguMjIzNkwxLjMzNDcgMTguNDY3MlpNMS40Mjc4MyAxOC41MzI4TC0xOS45NDEyIDY3Ljc4NTlDLTEzLjE2NzggNzAuNzI0NiAtNS44NjI3IDcyLjI0MjYgMS41MjIzOCA3Mi4yNDQ5TDEuNTM5MzggMTguNTU2TDEuNTU2MzggLTM1LjEzMjlDOC44NjQ3IC0zNS4xMzA2IDE2LjA5MzkgLTMzLjYyODQgMjIuNzk2OSAtMzAuNzIwMkwxLjQyNzgzIDE4LjUzMjhaTTEuNTM5MzggMTguNTU2VjcyLjI0NDlIOC40ODg1OVYxOC41NTZWLTM1LjEzMjlIMS41MzkzOFYxOC41NTZaTTguNDg4NTkgMTguNTU2TDguNjkzOSA3Mi4yNDQ1QzIyLjkzNjcgNzIuMTkwMSAzNi41ODAyIDY2LjUwNzkgNDYuNjUxMiA1Ni40MzdMOC42ODczNyAxOC40NzMyTC0yOS4yNzY0IC0xOS40OTA1Qy0xOS4zMTEgLTI5LjQ1NiAtNS44MTAzIC0zNS4wNzg2IDguMjgzMjggLTM1LjEzMjVMOC40ODg1OSAxOC41NTZaTTguNjg3MzcgMTguNDczMkw0Ni42NTEyIDU2LjQzN0M1Ni43MjI5IDQ2LjM2NTIgNjIuNDA0MiAzMi43MjEzIDYyLjQ1ODcgMTguNDc5OEw4Ljc3MDE1IDE4LjI3NDVMLTQ0LjkxODQgMTguMDY5MUMtNDQuODY0NSAzLjk3NjgxIC0zOS4yNDI3IC05LjUyNDI0IC0yOS4yNzY0IC0xOS40OTA1TDguNjg3MzcgMTguNDczMlpNOC43NzAxNSAxOC4yNzQ1SDYyLjQ1OVYxNy41ODM1SDguNzcwMTVILTQ0LjkxODdWMTguMjc0NUg4Ljc3MDE1Wk04Ljc3MDE1IDE3LjU4MzVMNjIuNDU5IDE3LjU4MzlDNjIuNDU5MiAzLjMwNTQ1IDU2LjgwMTIgLTEwLjM5MTEgNDYuNzI0MyAtMjAuNTA2OEw4LjY4Nzc1IDE3LjM4NDFMLTI5LjM0ODggNTUuMjc0OUMtMzkuMzIwMiA0NS4yNjUyIC00NC45MTg4IDMxLjcxMjEgLTQ0LjkxODcgMTcuNTgzMUw4Ljc3MDE1IDE3LjU4MzVaTTguNjg3NzUgMTcuMzg0MUw0Ni43MjQzIC0yMC41MDY4QzM2LjY0OCAtMzAuNjIxOCAyMi45NzM1IC0zNi4zMzI5IDguNjk0MjkgLTM2LjM4NzZMOC40ODg1OSAxNy4zMDA5TDguMjgyODggNzAuOTg5NEMtNS44NDY3OSA3MC45MzUzIC0xOS4zNzgxIDY1LjI4NCAtMjkuMzQ4OCA1NS4yNzQ5TDguNjg3NzUgMTcuMzg0MVpNOC40ODg1OSAxNy4zMDA5Vi0zNi4zODhIMy44ODYxVjE3LjMwMDlWNzAuOTg5OEg4LjQ4ODU5VjE3LjMwMDlaTTMuODg2MSAxNy4zMDA5TDQxLjg0OTkgNTUuMjY0N0w0OC42MzAyIDQ4LjQ4NDRMMTAuNjY2NCAxMC41MjA2TC0yNy4yOTc0IC0yNy40NDMyTC0zNC4wNzc3IC0yMC42NjI5TDMuODg2MSAxNy4zMDA5Wk0xMC42NjY0IDEwLjUyMDZMLTI3LjI5NzQgNDguNDg0NEwtMjAuNTE3MSA1NS4yNjQ3TDE3LjQ0NjYgMTcuMzAwOUw1NS40MTA0IC0yMC42NjI5TDQ4LjYzMDIgLTI3LjQ0MzJMMTAuNjY2NCAxMC41MjA2Wk0xNy40NDY2IDE3LjMwMDlWLTM2LjM4OEgxMi44MDQxVjE3LjMwMDlWNzAuOTg5OEgxNy40NDY2VjE3LjMwMDlaTTEyLjgwNDEgMTcuMzAwOUwxMi41OTg0IC0zNi4zODc2Qy0xLjY4MDY2IC0zNi4zMzI5IC0xNS4zNTUyIC0zMC42MjE5IC0yNS40MzE2IC0yMC41MDY4TDEyLjYwNDkgMTcuMzg0MUw1MC42NDE1IDU1LjI3NDlDNDAuNjcwNyA2NS4yODQxIDI3LjEzOTMgNzAuOTM1MyAxMy4wMDk4IDcwLjk4OTRMMTIuODA0MSAxNy4zMDA5Wk0xMi42MDQ5IDE3LjM4NDFMLTI1LjQzMTYgLTIwLjUwNjhDLTM1LjUwODIgLTEwLjM5MTQgLTQxLjE2NjUgMy4zMDUwNCAtNDEuMTY2NCAxNy41ODM5TDEyLjUyMjUgMTcuNTgzNUw2Ni4yMTE0IDE3LjU4MzFDNjYuMjExNSAzMS43MTI1IDYwLjYxMjYgNDUuMjY1NSA1MC42NDE1IDU1LjI3NDlMMTIuNjA0OSAxNy4zODQxWk0xMi41MjI1IDE3LjU4MzVILTQxLjE2NjRWMTguMjc0NUgxMi41MjI1SDY2LjIxMTRWMTcuNTgzNUgxMi41MjI1Wk0xMi41MjI1IDE4LjI3NDVMLTQxLjE2NiAxOC4wNjg2Qy00MS4xOTM3IDI1LjI5MTMgLTM5Ljc3MTIgMzIuNDQ1OSAtMzYuOTgzIDM5LjEwODVMMTIuNTQ0IDE4LjM4MjVMNjIuMDcxMSAtMi4zNDM0NkM2NC44MzA2IDQuMjUwNzEgNjYuMjM4NCAxMS4zMzE4IDY2LjIxMSAxOC40ODAzTDEyLjUyMjUgMTguMjc0NVpNMTIuNTQ0IDE4LjM4MjVMLTM2Ljk4MyAzOS4xMDg1Qy0zNC4xOTQ3IDQ1Ljc3MTYgLTMwLjA5NzMgNTEuODA2OCAtMjQuOTM0IDU2Ljg1NjdMMTIuNjA1OSAxOC40NzM3TDUwLjE0NTggLTE5LjkwOTNDNTUuMjU2MSAtMTQuOTExMyA1OS4zMTE0IC04LjkzODA5IDYyLjA3MTEgLTIuMzQzNDZMMTIuNTQ0IDE4LjM4MjVaTTEyLjYwNTkgMTguNDczN0wtMjUuMzI2NiA1Ni40Njg3Qy0xNS4yNDM1IDY2LjUzNTMgLTEuNTg4NDYgNzIuMjA2NiAxMi42NjAzIDcyLjI0NDdMMTIuODA0MSAxOC41NTZMMTIuOTQ3OSAtMzUuMTMyN0MyNy4wNDggLTM1LjA5NDkgNDAuNTYwNSAtMjkuNDgyOCA1MC41Mzg0IC0xOS41MjEzTDEyLjYwNTkgMTguNDczN1pNMTIuODA0MSAxOC41NTZWNzIuMjQ0OUgxOS43OTU1VjE4LjU1NlYtMzUuMTMyOUgxMi44MDQxVjE4LjU1NlpNMTkuNzk1NSAxOC41NTZMMTkuNjA1NiA3Mi4yNDQ2QzI3LjAyNjcgNzIuMjcwOCAzNC4zNzE2IDcwLjc2NjMgNDEuMTgxOSA2Ny44MjcxTDE5LjkwNzcgMTguNTMzMUwtMS4zNjY2IC0zMC43NjFDNS4zNzI5NyAtMzMuNjY5NiAxMi42NDE1IC0zNS4xNTg1IDE5Ljk4NTUgLTM1LjEzMjVMMTkuNzk1NSAxOC41NTZaTTE5LjkwNzcgMTguNTMzMUw0MS4xODE5IDY3LjgyNzFDNDcuOTk0MyA2NC44ODcgNTQuMTI2OSA2MC41NzQgNTkuMTk3IDU1LjE1NzdMMjAuMDAxMyAxOC40NjcyTC0xOS4xOTQ0IC0xOC4yMjMzQy0xNC4xNzcgLTIzLjU4MzMgLTguMTA4MTcgLTI3Ljg1MTUgLTEuMzY2NiAtMzAuNzYxTDE5LjkwNzcgMTguNTMzMVpNMjAuMDAxMyAxOC40NjcyTDU4Ljg3NSA1NS40OTg3QzY4LjY0NzUgNDUuMjQgNzMuOTk0NyAzMS41NDg4IDczLjc1OTkgMTcuMzgwMUwyMC4wNzg0IDE4LjI2OTlMLTMzLjYwMzIgMTkuMTU5NkMtMzMuODM1NiA1LjEzNzY2IC0yOC41NDM3IC04LjQxMTgzIC0xOC44NzI0IC0xOC41NjQzTDIwLjAwMTMgMTguNDY3MlpNMjAuMDc4NCAxOC4yNjk5TDczLjc1OTkgMTcuMzgwMUM3My41MjUxIDMuMjExOTIgNjcuNzI3NCAtMTAuMjk0NyA1Ny42MTk5IC0yMC4yMjQyTDE5Ljk5NDggMTguMDc1MkwtMTcuNjMwMyA1Ni4zNzQ2Qy0yNy42MzMxIDQ2LjU0NzkgLTMzLjM3MDggMzMuMTgxMSAtMzMuNjAzMiAxOS4xNTk2TDIwLjA3ODQgMTguMjY5OVpNMTAuNjYyIDQuNDM1NTlMLTI3LjMwMTcgNDIuMzk5NEwtMjUuMTQzNCA0NC41NTc3TDEyLjgyMDMgNi41OTM4OEw1MC43ODQxIC0zMS4zNjk5TDQ4LjYyNTggLTMzLjUyODJMMTAuNjYyIDQuNDM1NTlaTTEyLjgyMDMgNi41OTM4OEwtMjUuMTQzNCAtMzEuMzY5OUwtMjcuMjk2MyAtMjkuMjE3TDEwLjY2NzUgOC43NDY3Nkw0OC42MzEyIDQ2LjcxMDVMNTAuNzg0MSA0NC41NTc3TDEyLjgyMDMgNi41OTM4OFpNMTAuNjY3NSA4Ljc0Njc2TDQ4LjYzMTMgLTI5LjIxN0w0Ni40NzMgLTMxLjM3NTNMOC41MDkxNyA2LjU4ODQ3TC0yOS40NTQ2IDQ0LjU1MjJMLTI3LjI5NjMgNDYuNzEwNUwxMC42Njc1IDguNzQ2NzZaTTguNTA5MTcgNi41ODg0N0w0Ni40NzMgNDQuNTUyMkw0OC42MjU4IDQyLjM5OTRMMTAuNjYyIDQuNDM1NTlMLTI3LjMwMTcgLTMzLjUyODJMLTI5LjQ1NDYgLTMxLjM3NTNMOC41MDkxNyA2LjU4ODQ3WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBtYXNrPVwidXJsKCNwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzEyMClcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHN0cm9uZz5BSSBBc3Npc3RhbnQ8L3N0cm9uZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdEFpTWVzc2FnZTsgZWxzZSBhaUxvYWRpbmdcIiBbaW5uZXJIVE1MXT1cInBhcnNlQWlNYXJrZG93bihleWVUZXN0QWlNZXNzYWdlKVwiPjwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYWlMb2FkaW5nPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDtcIj5BSSBpcyB0aGlua2luZy4uLjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgZXllIHRlc3QgdGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCJrZXlUeXBlID09PSdzdG9yZSdcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdkYXRlJylcIj4gRGF0ZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdhdWRpdGVkRGF0ZScpXCI+QXVkaXRlZCBEYXRlIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXVkaXRlZERhdGUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F1ZGl0ZWREYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ1c2Vycz8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJNIE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2x1c3RlciBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVOYW1lJylcIj5TdG9yZSBOYW1lIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlSWQnKVwiPlN0b3JlIElEIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+RW5nYWdlbWVudCBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+T3B0b20gSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGNsYXNzPVwidGV4dC1zdGFydFwiPk9wdG9tIEVtYWlsIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgPT09J3JlbW90ZSdcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5PcHRvbSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwidGV4dC1zdGFydFwiPlF1ZXVlIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwidGV4dC1zdGFydFwiPlRva2VuIE5vPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+UG93ZXIgVHlwZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnQ29tcGxpYW5jZVNjb3JlJylcIj5UYW5nbyBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ0NvbXBsaWFuY2VTY29yZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnQ29tcGxpYW5jZVNjb3JlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY292ZXJlZFN0ZXBzQUknKVwiPlN0ZXBzIENvdmVyZWQgQnkgQUkgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb3ZlcmVkU3RlcHNBSScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY292ZXJlZFN0ZXBzQUknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCd0cnVzdFNjb3JlJylcIj5UcnVzdCBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuXHJcbjx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXVkaXRlZFN0ZXBzJylcIj5TdGVwcyBDb3ZlcmVkIEJ5IEh1bWFuIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYXVkaXRlZFN0ZXBzJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdGVkU3RlcHMnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SHVtYW4gQXVkaXRlZCBTY29yZTwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCd2aXNpdG9yc1R5cGUnKVwiPlZpc2l0b3IgVHlwZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3Zpc2l0b3JzVHlwZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAndmlzaXRvcnNUeXBlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5UZXN0IER1cmF0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCdjb21tZW50JylcIj5FeWUgVGVzdCBTdGF0dXMgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21tZW50JyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21tZW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNvcnQoJ3N1YkNvbW1lbnQnKVwiPkNvbW1lbnRzIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3ViQ29tbWVudCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3ViQ29tbWVudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXVkaXRTdGF0dXMnKVwiPkF1ZGl0IFN0YXR1cyA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F1ZGl0U3RhdHVzJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdFN0YXR1cycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5BdWRpdGVkIEJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvYmogb2YgZXllVGVzdERhdGE7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWREYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSAnc3VwZXJhZG1pbidcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqPy5STU5hbWVcIj5cclxuICAgIDwhLS0gU3BsaXQgYW5kIHNob3cgdGhlIGZpcnN0IHZhbHVlIC0tPlxyXG4gICAge3sgb2JqLlJNTmFtZS5zcGxpdCgnLCcpWzBdIH19XHJcblxyXG4gICAgPCEtLSBTaG93ICtOIGJhZGdlIGlmIG1vcmUgdmFsdWVzIGV4aXN0IC0tPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJvYmouUk1OYW1lLnNwbGl0KCcsJykubGVuZ3RoID4gMVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XHJcbiAgICAgICt7eyBvYmouUk1OYW1lLnNwbGl0KCcsJykubGVuZ3RoIC0gMSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInVzZXJzPy5yb2xlID09PSdzdXBlcmFkbWluJyB8fCB1c2Vycz8ucm9sZSA9PT0nYWRtaW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqPy5jbHVzdGVyTmFtZVwiPlxyXG4ge3sgb2JqLmNsdXN0ZXJOYW1lLnNwbGl0KCcsJylbMF0gfX1cclxuIDxzcGFuICpuZ0lmPVwib2JqLmNsdXN0ZXJOYW1lLnNwbGl0KCcsJykubGVuZ3RoID4gMVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XHJcbiAgICAgICt7eyBvYmouY2x1c3Rlck5hbWUuc3BsaXQoJywnKS5sZW5ndGggLSAxIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN0b3JlSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPnt7b2JqPy5lbmdhZ2VtZW50SWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCI+PHNwYW4gKm5nSWY9XCJvYmo/Lm9wdHVtSWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSB1bmRlcmxpbmVcIiBbbmdDbGFzc109XCJmaWx0ZXJCeU9wdG9tID09PSBnZXRSb3dPcHRvbUlkKG9iaikgPyAnZnctYm9sZCcgOiAnJ1wiIChjbGljayk9XCJmaWx0ZXJPcHRvbShvYmopXCI+e3tvYmo/Lm9wdHVtSWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCI+PHNwYW4gKm5nSWY9XCJvYmo/Lm9wdG1fdXNlcklkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lXCIgW25nQ2xhc3NdPVwiZmlsdGVyQnlPcHRvbSA9PT0gZ2V0Um93T3B0b21JZChvYmopID8gJ2Z3LWJvbGQnIDogJydcIiAoY2xpY2spPVwiZmlsdGVyT3B0b20ob2JqKVwiPnt7b2JqPy5vcHRtX3VzZXJJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiPnt7b2JqPy5zYWxlc21hbkVtYWlsSWQgPyBvYmo/LnNhbGVzbWFuRW1haWxJZCA6Jyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgPT09J3JlbW90ZSdcIj57e29iaj8udXNlckVtYWlsID8gb2JqPy51c2VyRW1haWwgOicnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlID09PSdyZW1vdGUnXCI+e3tvYmo/LmRpc3BsYXlOYW1lID8gb2JqPy5kaXNwbGF5TmFtZSA6Jyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiIGNsYXNzPVwiZW5nYWdlLXRleHRcIj57e29iaj8ucXVldWVJZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnF1ZXVlSWQ6Jyd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ0aGlzLnR5cGVWYWx1ZSAhPT0ncmVtb3RlJ1wiPnt7b2JqPy50b2tlbk5vID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnRva2VuTm86Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRoaXMudHlwZVZhbHVlICE9PSdyZW1vdGUnXCIgPnt7b2JqPy5uZWFyQWRkaXRpb24gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqPy5uZWFyQWRkaXRpb24gPT09IFwidHJ1ZVwiPyBcIldpdGggTmVhciBBZGRpdGlvblwiIDpcIldpdGhvdXQgTmVhciBBZGRpdGlvblwiOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gIHt7IG9iaj8uY29tcGxpYW5jZVNjb3JlID8/ICctLScgfX1cclxuPC90ZD5cclxuPHRkPnt7b2JqPy5jb3ZlcmVkU3RlcHNBSSA/IG9iaj8uY292ZXJlZFN0ZXBzQUk6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnRydXN0U2NvcmUgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWRTdGVwcyA/IG9iaj8uYXVkaXRlZFN0ZXBzOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5odW1hbkNvbXBsaWFuY2VTY29yZSA/IG9iaj8uaHVtYW5Db21wbGlhbmNlU2NvcmUgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj57e29iaj8udmlzaXRvcnNUeXBlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8udmlzaXRvcnNUeXBlOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8ubWluID8gb2JqPy5taW4gOicwJ319IG1pbnMge3tvYmo/LnNlYyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnNlYzonMCd9fSBzZWNzPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidGhpcy50eXBlVmFsdWUgIT09J3JlbW90ZSdcIj5cclxuICA8c3BhbiBcclxuICAgIGNsYXNzPVwiYmFkZ2VcIiBcclxuICAgIFtuZ0NsYXNzXT1cIm9iaj8uY29tbWVudCA/ICdiYWRnZS1saWdodC1kYW5nZXInIDogJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnXCI+XHJcbiAgICB7eyBvYmo/LmNvbW1lbnQgPyAnRmFrZScgOiAnR2VudWluZScgfX1cclxuICA8L3NwYW4+XHJcbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN1YkNvbW1lbnQgPyBvYmo/LnN1YkNvbW1lbnQ6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmo/LmF1ZGl0U3RhdHVzID09PSdZZXQtdG8tQXVkaXQnXCI+e3tvYmo/LmF1ZGl0U3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib2JqPy5hdWRpdFN0YXR1cyA9PT0nUmUtQXVkaXRlZCdcIj57e29iaj8uYXVkaXRTdGF0dXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmo/LmF1ZGl0U3RhdHVzID09PSdBdWRpdGVkJ1wiPnt7b2JqPy5hdWRpdFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9iaj8uYXVkaXRTdGF0dXMgPT09J0luLVByb2dyZXNzJ1wiPnt7b2JqPy5hdWRpdFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LmF1ZGl0ZWRCeT9vYmo/LmF1ZGl0ZWRCeTpcIi1cIn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZXllVGVzdFZpZXcob2JqKVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjgzMzQ5NiA4LjAwMDE2QzAuODMzNDk2IDguMDAwMTYgNC4xNjY4MyAxLjMzMzUgMTAuMDAwMiAxLjMzMzVDMTUuODMzNSAxLjMzMzUgMTkuMTY2OCA4LjAwMDE2IDE5LjE2NjggOC4wMDAxNkMxOS4xNjY4IDguMDAwMTYgMTUuODMzNSAxNC42NjY4IDEwLjAwMDIgMTQuNjY2OEM0LjE2NjgzIDE0LjY2NjggMC44MzM0OTYgOC4wMDAxNiAwLjgzMzQ5NiA4LjAwMDE2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMDIgMTAuNTAwMkMxMS4zODA5IDEwLjUwMDIgMTIuNTAwMiA5LjM4MDg3IDEyLjUwMDIgOC4wMDAxNkMxMi41MDAyIDYuNjE5NDUgMTEuMzgwOSA1LjUwMDE2IDEwLjAwMDIgNS41MDAxNkM4LjYxOTQ1IDUuNTAwMTYgNy41MDAxNiA2LjYxOTQ1IDcuNTAwMTYgOC4wMDAxNkM3LjUwMDE2IDkuMzgwODcgOC42MTk0NSAxMC41MDAyIDEwLjAwMDIgMTAuNTAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCJrZXlUeXBlID09PSdybSdcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdSTU5hbWUnKVwiPiBSTSBOYW1lIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnUk1OYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdSTU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjbHVzdGVyQ291bnQnKVwiPiBDbHVzdGVycyBDb3VudCA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NsdXN0ZXJDb3VudCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3RlckNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVzQ291bnQnKVwiPlN0b3JlcyBDb3VudCA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3Jlc0NvdW50JyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZXNDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIFRhbmdvIEFJIEZpbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgIFRydXN0IEF1ZGl0IENvbXBsZXRlZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ28gU2NvcmUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0IFNjb3JlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9iaiBvZiBleWVUZXN0RGF0YTsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uUk1OYW1lID8gb2JqPy5STU5hbWU6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jbHVzdGVyQ291bnQgPyBvYmo/LmNsdXN0ZXJDb3VudDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnN0b3Jlc0NvdW50ID8gb2JqPy5zdG9yZXNDb3VudDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmo/LnRvdGFsRmlsZXMgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jb21wbGV0ZWRGaWxlcyA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5jb21wbGlhbmNlU2NvcmUgPz8gJy0tJ319XHJcbiBcclxuPC90ZD5cclxuPHRkPlxyXG4gIHt7IG9iaj8udHJ1c3RTY29yZSA/PyAnLS0nIH19XHJcbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInR5cGVWYWwoJ2NsdXN0ZXInLG9iailcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwia2V5VHlwZSA9PT0nY2x1c3RlcidcIiBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjbHVzdGVyTmFtZScpXCI+IENsdXN0ZXJzIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjbHVzdGVyTmFtZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZXNDb3VudCcpXCI+U3RvcmVzIENvdW50IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVzQ291bnQnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3Jlc0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgVGFuZ28gQUkgRmlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1c3QgQXVkaXQgQ29tcGxldGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIFNjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0IFNjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb2JqIG9mIGV5ZVRlc3REYXRhOyBsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5jbHVzdGVyTmFtZSA/IG9iaj8uY2x1c3Rlck5hbWU6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy5zdG9yZXNDb3VudCA/IG9iaj8uc3RvcmVzQ291bnQ6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqPy50b3RhbEZpbGVzID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iaj8uY29tcGxldGVkRmlsZXMgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICB7eyBvYmo/LmNvbXBsaWFuY2VTY29yZSA/PyAgJy0tJyB9fVxyXG48L3RkPlxyXG48dGQ+XHJcbiAge3sgb2JqPy50cnVzdFNjb3JlID8/ICctLScgfX1cclxuPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidHlwZVZhbCgnc3RvcmUnLG9iailcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlclwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcblxyXG48c2VjdGlvbiAqbmdJZj1cImV5ZVZpZXdcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBuZXcxIG10LTRcIj5cclxuPGRpdiAgY2xhc3M9XCJjYXJkIHAtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJiYWNrTmF2aWdhdGlvbigpXCIgIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDkuOTk5ODRINC4xNjY1TTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgMTUuODMzMk00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDQuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiAgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlICE9PSAncmVtb3RlJ1wiIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+e3thdWRpdERldGFpbHM/Lm9wdHVtSWR9fTwvc3Bhbj4gXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTAuNVY5LjVDMTAgOC45Njk1NyA5Ljc4OTI5IDguNDYwODYgOS40MTQyMSA4LjA4NTc5QzkuMDM5MTQgNy43MTA3MSA4LjUzMDQzIDcuNSA4IDcuNUg0QzMuNDY5NTcgNy41IDIuOTYwODYgNy43MTA3MSAyLjU4NTc5IDguMDg1NzlDMi4yMTA3MSA4LjQ2MDg2IDIgOC45Njk1NyAyIDkuNVYxMC41TTggMy41QzggNC42MDQ1NyA3LjEwNDU3IDUuNSA2IDUuNUM0Ljg5NTQzIDUuNSA0IDQuNjA0NTcgNCAzLjVDNCAyLjM5NTQzIDQuODk1NDMgMS41IDYgMS41QzcuMTA0NTcgMS41IDggMi4zOTU0MyA4IDMuNVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/LmRpc3BsYXlOYW1lID8gYXVkaXREZXRhaWxzPy5kaXNwbGF5TmFtZTonLS0nfX08L3NwYW4+IFxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBtcy0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyAgd2lkdGg9XCI0NlwiIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA0NiA0NlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCJcIiBvcGFjaXR5PVwiMC4xXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIlwiIHN0cm9rZS13aWR0aD1cIjZcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggIGQ9XCJNMTUuNjc5OSAxOC44MDM5TDE1LjYyNjcgMTguODg3MUMxNS4wNjg2IDE5Ljg3NDEgMTUuNjY0NCAyMS4xMjE1IDE2LjczNjEgMjEuMjY0NkMxNi44MzMxIDIxLjI3NjUgMTYuOTIzNSAyMS4yODI4IDE3LjAxMTggMjEuMjgyOEMxNy41ODk5IDIxLjI4MjggMTguMTAxMSAyMS4wMzQ4IDE4LjQ1NzQgMjAuNjQ4TDE5LjAxMDcgMjAuMDQ3NEwxOS41NjIxIDIwLjY0OThDMTkuOTE0MSAyMS4wMzQyIDIwLjQyNDEgMjEuMjgyOCAyMS4wMDYxIDIxLjI4MjhDMjEuNTg1NiAyMS4yODI4IDIyLjA5ODUgMjEuMDMzOCAyMi40NTAyIDIwLjY0OThMMjMuMDAzMyAyMC4wNDU1TDIzLjU1NjUgMjAuNjQ5OEMyMy45MDgxIDIxLjAzMzggMjQuNDIxMSAyMS4yODI4IDI1LjAwMDUgMjEuMjgyOEMyNS41OCAyMS4yODI4IDI2LjA5MjkgMjEuMDMzOCAyNi40NDQ1IDIwLjY0OThMMjYuOTk3NyAyMC4wNDU1TDI3LjU1MDkgMjAuNjQ5OEMyNy45MDI1IDIxLjAzMzggMjguNDE1NSAyMS4yODI4IDI4Ljk5NDkgMjEuMjgyOEMyOS4wODAzIDIxLjI4MjggMjkuMTczMyAyMS4yNzY1IDI5LjI2OTcgMjEuMjY0N0MzMC4zNjQ5IDIxLjExNTQgMzAuOTYyNyAxOS44MDEyIDMwLjMyNCAxOC44MDQ0QzMwLjMyNCAxOC44MDQzIDMwLjMyNCAxOC44MDQzIDMwLjMyMzkgMTguODA0MkwyOC41NjU4IDE2LjA2MjhMMjguNTY1OCAxNi4wNjI4TDI4LjU2NDggMTYuMDYxNEMyOC41NDk2IDE2LjAzNzUgMjguNTEyMSAxNi4wMTIgMjguNDY1IDE2LjAxMkgxNy41MzU2QzE3LjQ4ODQgMTYuMDEyIDE3LjQ1MDkgMTYuMDM3NSAxNy40MzU3IDE2LjA2MTRMMTcuNDM1MSAxNi4wNjIzTDE1LjY3OTkgMTguODAzOVpNMjguNjUxNCAyMy43MzcyVjI2Ljg2OTFWMjcuNjE5MUgyNy45MDE0SDE4LjA5OTJIMTcuMzQ5MlYyNi44NjkxVjIzLjczNzZDMTcuMjM5IDIzLjc0NTggMTcuMTI3NCAyMy43NTAxIDE3LjAxNDggMjMuNzUwMUMxNi45NzI1IDIzLjc1MDEgMTYuOTMwNSAyMy43NDk0IDE2Ljg4ODggMjMuNzQ4MlYyNi44NjkxVjI4LjgwMzZDMTYuODg4OCAyOS40NDcxIDE3LjQyMjcgMjkuOTg4MiAxOC4wOTkyIDI5Ljk4ODJIMjcuOTAxNEMyOC41Nzc5IDI5Ljk4ODIgMjkuMTExOCAyOS40NDcxIDI5LjExMTggMjguODAzNlYyNi44NjkxVjIzLjc0ODRDMjkuMDcyIDIzLjc0OTUgMjkuMDMyIDIzLjc1MDEgMjguOTkxOCAyMy43NTAxQzI4Ljg3NzQgMjMuNzUwMSAyOC43NjM5IDIzLjc0NTcgMjguNjUxNCAyMy43MzcyWlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIj48L3BhdGg+PC9zdmc+IFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMSBzdWItdGl0bGVcIj4ge3thdWRpdERldGFpbHMuc3RvcmVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIDwhLS0gZGlzcGxheU5hbWUgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRBdWRpdFR5cGUgIT09ICdyZW1vdGUnXCIgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjI1MDIxIDYuNTAwMjhDNS45MTMyOSA2LjUwMDI4IDYuNTQ5MjEgNi4yMzY4OSA3LjAxODA3IDUuNzY4MDdDNy40ODY5NCA1LjI5OTI0IDcuNzUwMzUgNC42NjMzNyA3Ljc1MDM1IDQuMDAwMzVDNy43NTAzNSAzLjMzNzMyIDcuNDg2OTQgMi43MDE0NiA3LjAxODA3IDIuMjMyNjNDNi41NDkyMSAxLjc2MzggNS45MTMyOSAxLjUwMDQyIDUuMjUwMjEgMS41MDA0MkM0LjU4NzEzIDEuNTAwNDIgMy45NTEyMSAxLjc2MzggMy40ODIzNCAyLjIzMjYzQzMuMDEzNDggMi43MDE0NiAyLjc1MDA3IDMuMzM3MzIgMi43NTAwNyA0LjAwMDM1QzIuNzUwMDcgNC42NjMzNyAzLjAxMzQ4IDUuMjk5MjQgMy40ODIzNCA1Ljc2ODA3QzMuOTUxMjEgNi4yMzY4OSA0LjU4NzEzIDYuNTAwMjggNS4yNTAyMSA2LjUwMDI4Wk01LjI1MDIxIDUuMjUwMzFDNC45MTg2NyA1LjI1MDMxIDQuNjAwNzEgNS4xMTg2MiA0LjM2NjI4IDQuODg0MjFDNC4xMzE4NCA0LjY0OTc5IDQuMDAwMTQgNC4zMzE4NiA0LjAwMDE0IDQuMDAwMzVDNC4wMDAxNCAzLjY2ODg0IDQuMTMxODQgMy4zNTA5IDQuMzY2MjggMy4xMTY0OUM0LjYwMDcxIDIuODgyMDcgNC45MTg2NyAyLjc1MDM4IDUuMjUwMjEgMi43NTAzOEM1LjU4MTc1IDIuNzUwMzggNS44OTk3MSAyLjg4MjA3IDYuMTM0MTQgMy4xMTY0OUM2LjM2ODU3IDMuMzUwOSA2LjUwMDI4IDMuNjY4ODQgNi41MDAyOCA0LjAwMDM1QzYuNTAwMjggNC4zMzE4NiA2LjM2ODU3IDQuNjQ5NzkgNi4xMzQxNCA0Ljg4NDIxQzUuODk5NzEgNS4xMTg2MiA1LjU4MTc1IDUuMjUwMzEgNS4yNTAyMSA1LjI1MDMxWk0xLjUgOC43OTE4OEMxLjUgNy45ODY5IDIuMTUzMzcgNy4zMzM1OSAyLjk1ODQxIDcuMzMzNTlINy41NDJDOC4zNDcwNSA3LjMzMzU5IDkuMDAwNDIgNy45ODY5IDkuMDAwNDIgOC43OTE4OFYxMi43NTAxQzkuMDAwNDIgMTMuNzQ0NiA4LjYwNTMxIDE0LjY5ODQgNy45MDIwMSAxNS40MDE3QzcuMTk4NyAxNi4xMDQ5IDYuMjQ0ODMgMTYuNSA1LjI1MDIxIDE2LjVDNC4yNTU1OSAxNi41IDMuMzAxNzEgMTYuMTA0OSAyLjU5ODQxIDE1LjQwMTdDMS44OTUxMSAxNC42OTg0IDEuNSAxMy43NDQ2IDEuNSAxMi43NTAxVjguNzkxODhaTTIuOTU4NDEgOC41ODM1NUMyLjkwMzE2IDguNTgzNTUgMi44NTAxNiA4LjYwNTUgMi44MTEwOSA4LjY0NDU3QzIuNzcyMDIgOC42ODM2NCAyLjc1MDA3IDguNzM2NjMgMi43NTAwNyA4Ljc5MTg4VjEyLjc1MDFDMi43NTAwNyAxMy40MTMxIDMuMDEzNDggMTQuMDQ5IDMuNDgyMzQgMTQuNTE3OEMzLjk1MTIxIDE0Ljk4NjcgNC41ODcxMyAxNS4yNSA1LjI1MDIxIDE1LjI1QzUuOTEzMjkgMTUuMjUgNi41NDkyMSAxNC45ODY3IDcuMDE4MDcgMTQuNTE3OEM3LjQ4Njk0IDE0LjA0OSA3Ljc1MDM1IDEzLjQxMzEgNy43NTAzNSAxMi43NTAxVjguNzkxODhDNy43NTAzNSA4LjczNjYzIDcuNzI4NCA4LjY4MzY0IDcuNjg5MzIgOC42NDQ1N0M3LjY1MDI1IDguNjA1NSA3LjU5NzI2IDguNTgzNTUgNy41NDIgOC41ODM1NUgyLjk1ODQxWk03Ljc3Mjg1IDYuMTc4NjJDOC4xNTMyOCA2LjM5MjY3IDguNTgzMTMgNi41MDM0IDkuMDE5NjMgNi40OTk3OEM5LjQ1NjE0IDYuNDk2MTYgOS44ODQxIDYuMzc4MzIgMTAuMjYwOSA2LjE1Nzk5QzEwLjYzNzggNS45Mzc2NiAxMC45NTAzIDUuNjIyNTIgMTEuMTY3NSA1LjI0MzkxQzExLjM4NDggNC44NjUzIDExLjQ5OSA0LjQzNjQyIDExLjQ5OSAzLjk5OTkzQzExLjQ5OSAzLjU2MzQ0IDExLjM4NDggMy4xMzQ1NiAxMS4xNjc1IDIuNzU1OTVDMTAuOTUwMyAyLjM3NzM0IDEwLjYzNzggMi4wNjIyIDEwLjI2MDkgMS44NDE4N0M5Ljg4NDEgMS42MjE1NCA5LjQ1NjE0IDEuNTAzNzEgOS4wMTk2MyAxLjUwMDA5QzguNTgzMTMgMS40OTY0NyA4LjE1MzI4IDEuNjA3MTkgNy43NzI4NSAxLjgyMTI0QzguMDQ1MzYgMi4xMzYyMyA4LjI1OTU0IDIuNTAyODkgOC4zOTk1NSAyLjkwNDU0QzguNTg5OTEgMi44MDAyNiA4LjgwNDE1IDIuNzQ3MzMgOS4wMjExOCAyLjc1MDk3QzkuMjM4MjEgMi43NTQ2MiA5LjQ1MDU1IDIuODE0NzEgOS42MzczMSAyLjkyNTMzQzkuODI0MDYgMy4wMzU5NCA5Ljk3ODc5IDMuMTkzMjggMTAuMDg2MyAzLjM4MTg1QzEwLjE5MzcgMy41NzA0MiAxMC4yNTAzIDMuNzgzNzIgMTAuMjUwMyA0LjAwMDc2QzEwLjI1MDMgNC4yMTc4MSAxMC4xOTM3IDQuNDMxMTEgMTAuMDg2MyA0LjYxOTY4QzkuOTc4NzkgNC44MDgyNSA5LjgyNDA2IDQuOTY1NTggOS42MzczMSA1LjA3NjJDOS40NTA1NSA1LjE4NjgyIDkuMjM4MjEgNS4yNDY5MSA5LjAyMTE4IDUuMjUwNTVDOC44MDQxNSA1LjI1NDIgOC41ODk5MSA1LjIwMTI3IDguMzk5NTUgNS4wOTY5OEM4LjI2MDc0IDUuNDkzODIgOC4wNDgxIDUuODYwODIgNy43NzI4NSA2LjE3ODYyWk04LjA1MDM2IDE2LjM3ODNDOC4zNTQ4MyAxNi40NTgzIDguNjcxNTEgMTYuNDk4OSA5LjAwMDQyIDE2LjVDOS45OTUwMyAxNi41IDEwLjk0ODkgMTYuMTA0OSAxMS42NTIyIDE1LjQwMTdDMTIuMzU1NSAxNC42OTg0IDEyLjc1MDYgMTMuNzQ0NiAxMi43NTA2IDEyLjc1MDFWOC43OTE4OEMxMi43NTA2IDguNDA1MTIgMTIuNTk3IDguMDM0MTkgMTIuMzIzNSA3Ljc2MDcxQzEyLjA1IDcuNDg3MjMgMTEuNjc5IDcuMzMzNTkgMTEuMjkyMiA3LjMzMzU5SDkuMzA4NzdDOS41OTQ2MiA3LjY3OTQxIDkuNzgwNDYgOC4xMTEwNyA5LjgyMzggOC41ODM1NUgxMS4yOTA1QzExLjM0NTggOC41ODM1NSAxMS4zOTg4IDguNjA1NSAxMS40Mzc5IDguNjQ0NTdDMTEuNDc2OSA4LjY4MzY0IDExLjQ5ODkgOC43MzY2MyAxMS40OTg5IDguNzkxODhWMTIuNzUwMUMxMS40OTg5IDEzLjM5NjggMTEuMjQ4MyAxNC4wMTg0IDEwLjc5OTYgMTQuNDg0M0MxMC4zNTEgMTQuOTUwMSA5LjczOTI1IDE1LjIyNCA5LjA5MjkyIDE1LjI0ODRDOC44MTA0MSAxNS42ODE3IDguNDU4NzIgMTYuMDYzMyA4LjA1MDM2IDE2LjM3ODNaTTExLjUyMjIgNi4xNzg2MkMxMS45MDI3IDYuMzkyNjcgMTIuMzMyNSA2LjUwMzQgMTIuNzY5IDYuNDk5NzhDMTMuMjA1NSA2LjQ5NjE2IDEzLjYzMzUgNi4zNzgzMiAxNC4wMTAzIDYuMTU3OTlDMTQuMzg3MSA1LjkzNzY2IDE0LjY5OTcgNS42MjI1MiAxNC45MTY5IDUuMjQzOTFDMTUuMTM0MSA0Ljg2NTMgMTUuMjQ4NCA0LjQzNjQyIDE1LjI0ODQgMy45OTk5M0MxNS4yNDg0IDMuNTYzNDQgMTUuMTM0MSAzLjEzNDU2IDE0LjkxNjkgMi43NTU5NUMxNC42OTk3IDIuMzc3MzQgMTQuMzg3MSAyLjA2MjIgMTQuMDEwMyAxLjg0MTg3QzEzLjYzMzUgMS42MjE1NCAxMy4yMDU1IDEuNTAzNzEgMTIuNzY5IDEuNTAwMDlDMTIuMzMyNSAxLjQ5NjQ3IDExLjkwMjcgMS42MDcxOSAxMS41MjIyIDEuODIxMjRDMTEuNzk0NyAyLjEzNjIzIDEyLjAwODkgMi41MDI4OSAxMi4xNDg5IDIuOTA0NTRDMTIuMzM5MyAyLjgwMDI2IDEyLjU1MzUgMi43NDczMyAxMi43NzA2IDIuNzUwOTdDMTIuOTg3NiAyLjc1NDYyIDEzLjE5OTkgMi44MTQ3MSAxMy4zODY3IDIuOTI1MzNDMTMuNTczNCAzLjAzNTk0IDEzLjcyODIgMy4xOTMyOCAxMy44MzU2IDMuMzgxODVDMTMuOTQzMSAzLjU3MDQyIDEzLjk5OTYgMy43ODM3MiAxMy45OTk2IDQuMDAwNzZDMTMuOTk5NiA0LjIxNzgxIDEzLjk0MzEgNC40MzExMSAxMy44MzU2IDQuNjE5NjhDMTMuNzI4MiA0LjgwODI1IDEzLjU3MzQgNC45NjU1OCAxMy4zODY3IDUuMDc2MkMxMy4xOTk5IDUuMTg2ODIgMTIuOTg3NiA1LjI0NjkxIDEyLjc3MDYgNS4yNTA1NUMxMi41NTM1IDUuMjU0MiAxMi4zMzkzIDUuMjAxMjcgMTIuMTQ4OSA1LjA5Njk4QzEyLjAxMDEgNS40OTM4MiAxMS43OTc1IDUuODYwODIgMTEuNTIyMiA2LjE3ODYyWk0xMS43OTk3IDE2LjM3ODNDMTIuMTA0MiAxNi40NTgzIDEyLjQyMDkgMTYuNDk4OSAxMi43NDk4IDE2LjVDMTMuNzQ0NCAxNi41IDE0LjY5ODMgMTYuMTA0OSAxNS40MDE2IDE1LjQwMTdDMTYuMTA0OSAxNC42OTg0IDE2LjUgMTMuNzQ0NiAxNi41IDEyLjc1MDFWOC43OTE4OEMxNi41IDguNDA1MjYgMTYuMzQ2NSA4LjAzNDQ3IDE2LjA3MzEgNy43NjEwMUMxNS43OTk4IDcuNDg3NTUgMTUuNDI5MSA3LjMzMzgxIDE1LjA0MjQgNy4zMzM1OUgxMy4wNTlDMTMuMzQ0OCA3LjY3OTQxIDEzLjUzMTUgOC4xMTEwNyAxMy41NzQgOC41ODM1NUgxNS4wNDA4QzE1LjA5NiA4LjU4MzU1IDE1LjE0OSA4LjYwNTUgMTUuMTg4MSA4LjY0NDU3QzE1LjIyNzEgOC42ODM2NCAxNS4yNDkxIDguNzM2NjMgMTUuMjQ5MSA4Ljc5MTg4VjEyLjc1MDFDMTUuMjQ5MSAxMy4zOTY4IDE0Ljk5ODUgMTQuMDE4NCAxNC41NDk4IDE0LjQ4NDNDMTQuMTAxMiAxNC45NTAxIDEzLjQ4OTUgMTUuMjI0IDEyLjg0MzEgMTUuMjQ4NEMxMi41NjA2IDE1LjY4MTcgMTIuMjA4MSAxNi4wNjMzIDExLjc5OTcgMTYuMzc4M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2F1ZGl0RGV0YWlscz8ucXVldWVJZH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4yNTAyMSA2LjUwMDI4QzUuOTEzMjkgNi41MDAyOCA2LjU0OTIxIDYuMjM2ODkgNy4wMTgwNyA1Ljc2ODA3QzcuNDg2OTQgNS4yOTkyNCA3Ljc1MDM1IDQuNjYzMzcgNy43NTAzNSA0LjAwMDM1QzcuNzUwMzUgMy4zMzczMiA3LjQ4Njk0IDIuNzAxNDYgNy4wMTgwNyAyLjIzMjYzQzYuNTQ5MjEgMS43NjM4IDUuOTEzMjkgMS41MDA0MiA1LjI1MDIxIDEuNTAwNDJDNC41ODcxMyAxLjUwMDQyIDMuOTUxMjEgMS43NjM4IDMuNDgyMzQgMi4yMzI2M0MzLjAxMzQ4IDIuNzAxNDYgMi43NTAwNyAzLjMzNzMyIDIuNzUwMDcgNC4wMDAzNUMyLjc1MDA3IDQuNjYzMzcgMy4wMTM0OCA1LjI5OTI0IDMuNDgyMzQgNS43NjgwN0MzLjk1MTIxIDYuMjM2ODkgNC41ODcxMyA2LjUwMDI4IDUuMjUwMjEgNi41MDAyOFpNNS4yNTAyMSA1LjI1MDMxQzQuOTE4NjcgNS4yNTAzMSA0LjYwMDcxIDUuMTE4NjIgNC4zNjYyOCA0Ljg4NDIxQzQuMTMxODQgNC42NDk3OSA0LjAwMDE0IDQuMzMxODYgNC4wMDAxNCA0LjAwMDM1QzQuMDAwMTQgMy42Njg4NCA0LjEzMTg0IDMuMzUwOSA0LjM2NjI4IDMuMTE2NDlDNC42MDA3MSAyLjg4MjA3IDQuOTE4NjcgMi43NTAzOCA1LjI1MDIxIDIuNzUwMzhDNS41ODE3NSAyLjc1MDM4IDUuODk5NzEgMi44ODIwNyA2LjEzNDE0IDMuMTE2NDlDNi4zNjg1NyAzLjM1MDkgNi41MDAyOCAzLjY2ODg0IDYuNTAwMjggNC4wMDAzNUM2LjUwMDI4IDQuMzMxODYgNi4zNjg1NyA0LjY0OTc5IDYuMTM0MTQgNC44ODQyMUM1Ljg5OTcxIDUuMTE4NjIgNS41ODE3NSA1LjI1MDMxIDUuMjUwMjEgNS4yNTAzMVpNMS41IDguNzkxODhDMS41IDcuOTg2OSAyLjE1MzM3IDcuMzMzNTkgMi45NTg0MSA3LjMzMzU5SDcuNTQyQzguMzQ3MDUgNy4zMzM1OSA5LjAwMDQyIDcuOTg2OSA5LjAwMDQyIDguNzkxODhWMTIuNzUwMUM5LjAwMDQyIDEzLjc0NDYgOC42MDUzMSAxNC42OTg0IDcuOTAyMDEgMTUuNDAxN0M3LjE5ODcgMTYuMTA0OSA2LjI0NDgzIDE2LjUgNS4yNTAyMSAxNi41QzQuMjU1NTkgMTYuNSAzLjMwMTcxIDE2LjEwNDkgMi41OTg0MSAxNS40MDE3QzEuODk1MTEgMTQuNjk4NCAxLjUgMTMuNzQ0NiAxLjUgMTIuNzUwMVY4Ljc5MTg4Wk0yLjk1ODQxIDguNTgzNTVDMi45MDMxNiA4LjU4MzU1IDIuODUwMTYgOC42MDU1IDIuODExMDkgOC42NDQ1N0MyLjc3MjAyIDguNjgzNjQgMi43NTAwNyA4LjczNjYzIDIuNzUwMDcgOC43OTE4OFYxMi43NTAxQzIuNzUwMDcgMTMuNDEzMSAzLjAxMzQ4IDE0LjA0OSAzLjQ4MjM0IDE0LjUxNzhDMy45NTEyMSAxNC45ODY3IDQuNTg3MTMgMTUuMjUgNS4yNTAyMSAxNS4yNUM1LjkxMzI5IDE1LjI1IDYuNTQ5MjEgMTQuOTg2NyA3LjAxODA3IDE0LjUxNzhDNy40ODY5NCAxNC4wNDkgNy43NTAzNSAxMy40MTMxIDcuNzUwMzUgMTIuNzUwMVY4Ljc5MTg4QzcuNzUwMzUgOC43MzY2MyA3LjcyODQgOC42ODM2NCA3LjY4OTMyIDguNjQ0NTdDNy42NTAyNSA4LjYwNTUgNy41OTcyNiA4LjU4MzU1IDcuNTQyIDguNTgzNTVIMi45NTg0MVpNNy43NzI4NSA2LjE3ODYyQzguMTUzMjggNi4zOTI2NyA4LjU4MzEzIDYuNTAzNCA5LjAxOTYzIDYuNDk5NzhDOS40NTYxNCA2LjQ5NjE2IDkuODg0MSA2LjM3ODMyIDEwLjI2MDkgNi4xNTc5OUMxMC42Mzc4IDUuOTM3NjYgMTAuOTUwMyA1LjYyMjUyIDExLjE2NzUgNS4yNDM5MUMxMS4zODQ4IDQuODY1MyAxMS40OTkgNC40MzY0MiAxMS40OTkgMy45OTk5M0MxMS40OTkgMy41NjM0NCAxMS4zODQ4IDMuMTM0NTYgMTEuMTY3NSAyLjc1NTk1QzEwLjk1MDMgMi4zNzczNCAxMC42Mzc4IDIuMDYyMiAxMC4yNjA5IDEuODQxODdDOS44ODQxIDEuNjIxNTQgOS40NTYxNCAxLjUwMzcxIDkuMDE5NjMgMS41MDAwOUM4LjU4MzEzIDEuNDk2NDcgOC4xNTMyOCAxLjYwNzE5IDcuNzcyODUgMS44MjEyNEM4LjA0NTM2IDIuMTM2MjMgOC4yNTk1NCAyLjUwMjg5IDguMzk5NTUgMi45MDQ1NEM4LjU4OTkxIDIuODAwMjYgOC44MDQxNSAyLjc0NzMzIDkuMDIxMTggMi43NTA5N0M5LjIzODIxIDIuNzU0NjIgOS40NTA1NSAyLjgxNDcxIDkuNjM3MzEgMi45MjUzM0M5LjgyNDA2IDMuMDM1OTQgOS45Nzg3OSAzLjE5MzI4IDEwLjA4NjMgMy4zODE4NUMxMC4xOTM3IDMuNTcwNDIgMTAuMjUwMyAzLjc4MzcyIDEwLjI1MDMgNC4wMDA3NkMxMC4yNTAzIDQuMjE3ODEgMTAuMTkzNyA0LjQzMTExIDEwLjA4NjMgNC42MTk2OEM5Ljk3ODc5IDQuODA4MjUgOS44MjQwNiA0Ljk2NTU4IDkuNjM3MzEgNS4wNzYyQzkuNDUwNTUgNS4xODY4MiA5LjIzODIxIDUuMjQ2OTEgOS4wMjExOCA1LjI1MDU1QzguODA0MTUgNS4yNTQyIDguNTg5OTEgNS4yMDEyNyA4LjM5OTU1IDUuMDk2OThDOC4yNjA3NCA1LjQ5MzgyIDguMDQ4MSA1Ljg2MDgyIDcuNzcyODUgNi4xNzg2MlpNOC4wNTAzNiAxNi4zNzgzQzguMzU0ODMgMTYuNDU4MyA4LjY3MTUxIDE2LjQ5ODkgOS4wMDA0MiAxNi41QzkuOTk1MDMgMTYuNSAxMC45NDg5IDE2LjEwNDkgMTEuNjUyMiAxNS40MDE3QzEyLjM1NTUgMTQuNjk4NCAxMi43NTA2IDEzLjc0NDYgMTIuNzUwNiAxMi43NTAxVjguNzkxODhDMTIuNzUwNiA4LjQwNTEyIDEyLjU5NyA4LjAzNDE5IDEyLjMyMzUgNy43NjA3MUMxMi4wNSA3LjQ4NzIzIDExLjY3OSA3LjMzMzU5IDExLjI5MjIgNy4zMzM1OUg5LjMwODc3QzkuNTk0NjIgNy42Nzk0MSA5Ljc4MDQ2IDguMTExMDcgOS44MjM4IDguNTgzNTVIMTEuMjkwNUMxMS4zNDU4IDguNTgzNTUgMTEuMzk4OCA4LjYwNTUgMTEuNDM3OSA4LjY0NDU3QzExLjQ3NjkgOC42ODM2NCAxMS40OTg5IDguNzM2NjMgMTEuNDk4OSA4Ljc5MTg4VjEyLjc1MDFDMTEuNDk4OSAxMy4zOTY4IDExLjI0ODMgMTQuMDE4NCAxMC43OTk2IDE0LjQ4NDNDMTAuMzUxIDE0Ljk1MDEgOS43MzkyNSAxNS4yMjQgOS4wOTI5MiAxNS4yNDg0QzguODEwNDEgMTUuNjgxNyA4LjQ1ODcyIDE2LjA2MzMgOC4wNTAzNiAxNi4zNzgzWk0xMS41MjIyIDYuMTc4NjJDMTEuOTAyNyA2LjM5MjY3IDEyLjMzMjUgNi41MDM0IDEyLjc2OSA2LjQ5OTc4QzEzLjIwNTUgNi40OTYxNiAxMy42MzM1IDYuMzc4MzIgMTQuMDEwMyA2LjE1Nzk5QzE0LjM4NzEgNS45Mzc2NiAxNC42OTk3IDUuNjIyNTIgMTQuOTE2OSA1LjI0MzkxQzE1LjEzNDEgNC44NjUzIDE1LjI0ODQgNC40MzY0MiAxNS4yNDg0IDMuOTk5OTNDMTUuMjQ4NCAzLjU2MzQ0IDE1LjEzNDEgMy4xMzQ1NiAxNC45MTY5IDIuNzU1OTVDMTQuNjk5NyAyLjM3NzM0IDE0LjM4NzEgMi4wNjIyIDE0LjAxMDMgMS44NDE4N0MxMy42MzM1IDEuNjIxNTQgMTMuMjA1NSAxLjUwMzcxIDEyLjc2OSAxLjUwMDA5QzEyLjMzMjUgMS40OTY0NyAxMS45MDI3IDEuNjA3MTkgMTEuNTIyMiAxLjgyMTI0QzExLjc5NDcgMi4xMzYyMyAxMi4wMDg5IDIuNTAyODkgMTIuMTQ4OSAyLjkwNDU0QzEyLjMzOTMgMi44MDAyNiAxMi41NTM1IDIuNzQ3MzMgMTIuNzcwNiAyLjc1MDk3QzEyLjk4NzYgMi43NTQ2MiAxMy4xOTk5IDIuODE0NzEgMTMuMzg2NyAyLjkyNTMzQzEzLjU3MzQgMy4wMzU5NCAxMy43MjgyIDMuMTkzMjggMTMuODM1NiAzLjM4MTg1QzEzLjk0MzEgMy41NzA0MiAxMy45OTk2IDMuNzgzNzIgMTMuOTk5NiA0LjAwMDc2QzEzLjk5OTYgNC4yMTc4MSAxMy45NDMxIDQuNDMxMTEgMTMuODM1NiA0LjYxOTY4QzEzLjcyODIgNC44MDgyNSAxMy41NzM0IDQuOTY1NTggMTMuMzg2NyA1LjA3NjJDMTMuMTk5OSA1LjE4NjgyIDEyLjk4NzYgNS4yNDY5MSAxMi43NzA2IDUuMjUwNTVDMTIuNTUzNSA1LjI1NDIgMTIuMzM5MyA1LjIwMTI3IDEyLjE0ODkgNS4wOTY5OEMxMi4wMTAxIDUuNDkzODIgMTEuNzk3NSA1Ljg2MDgyIDExLjUyMjIgNi4xNzg2MlpNMTEuNzk5NyAxNi4zNzgzQzEyLjEwNDIgMTYuNDU4MyAxMi40MjA5IDE2LjQ5ODkgMTIuNzQ5OCAxNi41QzEzLjc0NDQgMTYuNSAxNC42OTgzIDE2LjEwNDkgMTUuNDAxNiAxNS40MDE3QzE2LjEwNDkgMTQuNjk4NCAxNi41IDEzLjc0NDYgMTYuNSAxMi43NTAxVjguNzkxODhDMTYuNSA4LjQwNTI2IDE2LjM0NjUgOC4wMzQ0NyAxNi4wNzMxIDcuNzYxMDFDMTUuNzk5OCA3LjQ4NzU1IDE1LjQyOTEgNy4zMzM4MSAxNS4wNDI0IDcuMzMzNTlIMTMuMDU5QzEzLjM0NDggNy42Nzk0MSAxMy41MzE1IDguMTExMDcgMTMuNTc0IDguNTgzNTVIMTUuMDQwOEMxNS4wOTYgOC41ODM1NSAxNS4xNDkgOC42MDU1IDE1LjE4ODEgOC42NDQ1N0MxNS4yMjcxIDguNjgzNjQgMTUuMjQ5MSA4LjczNjYzIDE1LjI0OTEgOC43OTE4OFYxMi43NTAxQzE1LjI0OTEgMTMuMzk2OCAxNC45OTg1IDE0LjAxODQgMTQuNTQ5OCAxNC40ODQzQzE0LjEwMTIgMTQuOTUwMSAxMy40ODk1IDE1LjIyNCAxMi44NDMxIDE1LjI0ODRDMTIuNTYwNiAxNS42ODE3IDEyLjIwODEgMTYuMDYzMyAxMS43OTk3IDE2LjM3ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmVuZ2FnZW1lbnRJZCA/YXVkaXREZXRhaWxzPy5lbmdhZ2VtZW50SWQ6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAzSDEzLjVDMTMuODk3OCAzIDE0LjI3OTQgMy4xNTgwNCAxNC41NjA3IDMuNDM5MzRDMTQuODQyIDMuNzIwNjQgMTUgNC4xMDIxOCAxNSA0LjVWMTVDMTUgMTUuMzk3OCAxNC44NDIgMTUuNzc5NCAxNC41NjA3IDE2LjA2MDdDMTQuMjc5NCAxNi4zNDIgMTMuODk3OCAxNi41IDEzLjUgMTYuNUg0LjVDNC4xMDIxOCAxNi41IDMuNzIwNjQgMTYuMzQyIDMuNDM5MzQgMTYuMDYwN0MzLjE1ODA0IDE1Ljc3OTQgMyAxNS4zOTc4IDMgMTVWNC41QzMgNC4xMDIxOCAzLjE1ODA0IDMuNzIwNjQgMy40MzkzNCAzLjQzOTM0QzMuNzIwNjQgMy4xNTgwNCA0LjEwMjE4IDMgNC41IDNINk02Ljc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWMy43NUMxMiA0LjE2NDIxIDExLjY2NDIgNC41IDExLjI1IDQuNUg2Ljc1QzYuMzM1NzkgNC41IDYgNC4xNjQyMSA2IDMuNzVWMi4yNUM2IDEuODM1NzkgNi4zMzU3OSAxLjUgNi43NSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2N1cnJlbnRBdWRpdFR5cGUgfCB0aXRsZWNhc2V9fSBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMS41VjQuNU02IDEuNVY0LjVNMi4yNSA3LjVIMTUuNzVNMy43NSAzSDE0LjI1QzE1LjA3ODQgMyAxNS43NSAzLjY3MTU3IDE1Ljc1IDQuNVYxNUMxNS43NSAxNS44Mjg0IDE1LjA3ODQgMTYuNSAxNC4yNSAxNi41SDMuNzVDMi45MjE1NyAxNi41IDIuMjUgMTUuODI4NCAyLjI1IDE1VjQuNUMyLjI1IDMuNjcxNTcgMi45MjE1NyAzIDMuNzUgM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy5maWxlRGF0ZSB8IGRhdGU6ICdkZC9NTS9ZWVlZJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNjZfNTUwMTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTY2XzU1MDE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy50ZXN0U3RhcnRUaW1lfX0ge3thdWRpdERldGFpbHM/LnRlc3RTdGFydFRpbWU/LnNwbGl0KCc6JylbMF0+MTI/J1BNJzonQU0nfX0gLSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWV9fSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWU/LnNwbGl0KCc6JylbMF0+MTI/J1BNJzonQU0nfX1cclxuICAgICAgICAgICAgICAgICh7e2F1ZGl0RGV0YWlscz8udGVzdER1cmF0aW9ufX0gTWlucyk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e2F1ZGl0RGV0YWlscz8udmlzaXRvcnNUeXBlIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIlsnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cylcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgWWV0IHRvIEF1ZGl0XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXN1Y2Nlc3NcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgQXVkaXRlZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ0F1ZGl0ZWQnIHx8IGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnUmUtQXVkaXRlZCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXdhcm5pbmdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgUmUtQXVkaXRlZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBmdy1ib2xkIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgdGV4dC1jZW50ZXIgaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIEFJIFZlcmlmaWVkIFN0ZXBzIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIk51bWJlciBvZiBzdGVwcyBkZXRlY3RlZCBhbmQgdmFsaWRhdGVkIGF1dG9tYXRpY2FsbHkgd2l0aG91dCBtYW51YWwgcmV2aWV3LlwiIHBsYWNlbWVudD1cInJpZ2h0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNjJfMjk3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTg0IDEzLjMzMzJWOS45OTk4NE05Ljk5OTg0IDYuNjY2NUgxMC4wMDgyTTE4LjMzMzIgOS45OTk4NEMxOC4zMzMyIDE0LjYwMjIgMTQuNjAyMiAxOC4zMzMyIDkuOTk5ODQgMTguMzMzMkM1LjM5NzQ2IDE4LjMzMzIgMS42NjY1IDE0LjYwMjIgMS42NjY1IDkuOTk5ODRDMS42NjY1IDUuMzk3NDYgNS4zOTc0NiAxLjY2NjUgOS45OTk4NCAxLjY2NjVDMTQuNjAyMiAxLjY2NjUgMTguMzMzMiA1LjM5NzQ2IDE4LjMzMzIgOS45OTk4NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzYyXzI5NzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdGV4dC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2F1ZGl0RGV0YWlscz8uY292ZXJlZFN0ZXBzQUk/YXVkaXREZXRhaWxzPy5jb3ZlcmVkU3RlcHNBSTowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyB0ZXh0LWNlbnRlciBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgSHVtYW4gVmVyaWZpZWQgU3RlcHMgPHNwYW4+PHN2ZyBuZ2JUb29sdGlwPVwiTnVtYmVyIG9mIHN0ZXBzIHRoYXQgcmVxdWlyZWQgaHVtYW4gdmFsaWRhdGlvbiB0byBlbnN1cmUgY29tcGxpYW5jZSBhbmQgYWNjdXJhY3kuXCIgcGxhY2VtZW50PVwicmlnaHRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwcz9hdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwczowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgQUkgQ29tcGxpYW5jZSBTY29yZSA8c3Bhbj48c3ZnIG5nYlRvb2x0aXA9XCJNZWFzdXJlcyB0aGUgcGVyY2VudGFnZSBvZiBzdGVwcyBBSSBmbGFnZ2VkIGFzIGNvbXBsaWFudCB3aXRob3V0IGh1bWFuIGludGVydmVudGlvbi5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM2Ml8yOTc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5ODQgMTMuMzMzMlY5Ljk5OTg0TTkuOTk5ODQgNi42NjY1SDEwLjAwODJNMTguMzMzMiA5Ljk5OTg0QzE4LjMzMzIgMTQuNjAyMiAxNC42MDIyIDE4LjMzMzIgOS45OTk4NCAxOC4zMzMyQzUuMzk3NDYgMTguMzMzMiAxLjY2NjUgMTQuNjAyMiAxLjY2NjUgOS45OTk4NEMxLjY2NjUgNS4zOTc0NiA1LjM5NzQ2IDEuNjY2NSA5Ljk5OTg0IDEuNjY2NUMxNC42MDIyIDEuNjY2NSAxOC4zMzMyIDUuMzk3NDYgMTguMzMzMiA5Ljk5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNjJfMjk3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB0ZXh0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXVkaXREZXRhaWxzPy5jb21wbGlhbmNlU2NvcmUgP2F1ZGl0RGV0YWlscz8uY29tcGxpYW5jZVNjb3JlIDogMH19JTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBmdy1ib2xkIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIEFJIFRydXN0IFNjb3JlIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIlRoaXMgc2NvcmUgcmVmbGVjdHMgaG93IG9mdGVuIEFJIHByZWRpY3Rpb25zIHdlcmUgYWNjZXB0ZWQgd2l0aG91dCBtYW51YWwgb3ZlcnJpZGVzLlwiIHBsYWNlbWVudD1cImxlZnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LnRydXN0U2NvcmUgPyBhdWRpdERldGFpbHM/LnRydXN0U2NvcmU6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJleWVUZXN0VHlwZSA9PT0nZmFrZScgPyAnY29sLW1kLTEyJyA6ICdjb2wtbWQtNidcIiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC01MDBweCBweC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnctYm9sZGVyIGJnLW5vbmVcIj5QcmV2aWV3IEV5ZSBUZXN0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0wIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tcG9zaXRpb24gdy0xMDBcIj5cclxuIDx2aWRlbyBjbGFzcz1cInctMTAwIHJvdW5kZWQtMyBoLWF1dG9cIiBjb250cm9sc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF1ZGl0RGV0YWlscz8uZmlsZVBhdGhcIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXllVGVzdFR5cGUgIT09J2Zha2UnXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtNTAwcHggcHgtNSBvdmVyZmxvdy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTMgcC0wIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUgbS0wIGZ3LWJvbGRlciBiZy1ub25lXCI+U3RlcC13aXNlIEJyZWFrZG93bjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc3ViLXRpdGxlIG10LTJcIiAqbmdJZj1cImF1ZGl0RGV0YWlscz8ubGFzdEF1ZGl0ZWREZXRhaWxzPy5hdWRpdGVkQnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiPiA8c3BhbiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uc3Bva2VuTGFuZ3VhZ2VcIj4gPHNwYW4gKm5nSWY9XCIhdGFrZUF1ZGl0XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvIG10LTAgbWUtMlwiPkxhbmd1YWdlIFNwb2tlbjoge3thdWRpdERldGFpbHM/LnNwb2tlbkxhbmd1YWdlfX08L3NwYW4+PC9zcGFuPjwvc3Bhbj4gIDxzcGFuIGNsYXNzPVwibXQtMVwiPlJlY2VudGx5IEF1ZGl0ZWQgQnkgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzcgMTRWMTIuNjY2N0MxMy4zMzM3IDExLjk1OTQgMTMuMDUyNyAxMS4yODExIDEyLjU1MjYgMTAuNzgxQzEyLjA1MjUgMTAuMjgxIDExLjM3NDIgMTAgMTAuNjY3IDEwSDUuMzMzNjZDNC42MjY0MSAxMCAzLjk0ODE0IDEwLjI4MSAzLjQ0ODA0IDEwLjc4MUMyLjk0Nzk0IDExLjI4MTEgMi42NjY5OSAxMS45NTk0IDIuNjY2OTkgMTIuNjY2N1YxNE0xMC42NjcgNC42NjY2N0MxMC42NjcgNi4xMzk0MyA5LjQ3MzA4IDcuMzMzMzMgOC4wMDAzMyA3LjMzMzMzQzYuNTI3NTcgNy4zMzMzMyA1LjMzMzY2IDYuMTM5NDMgNS4zMzM2NiA0LjY2NjY3QzUuMzMzNjYgMy4xOTM5MSA2LjUyNzU3IDIgOC4wMDAzMyAyQzkuNDczMDggMiAxMC42NjcgMy4xOTM5MSAxMC42NjcgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3BhbiA+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uYXVkaXRlZEJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTUyXzI5NDMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTUyXzI5NDMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uY29tcGxldGlvblRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8udGltZVpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWtlQXVkaXQgJiYgY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic3Bva2VuTGFuZ3VhZ2VcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIGRpc2FibGVkID5MYW5ndWFnZSBTcG9rZW4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkVuZ2xpc2hcIj5FbmdsaXNoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiSGluZGlcIj5IaW5kaTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ0F1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1lldC10by1BdWRpdCcgJiYgIXRha2VBdWRpdFwiIChjbGljayk9XCJzdGFydEF1ZGl0KCdhdWRpdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC0yIGN1cnNvci1wb2ludGVyIGJnLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIFN0YXJ0IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnQXVkaXRlZCcsJ1JlLUF1ZGl0JywnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cykmJmF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnICYmICF0YWtlQXVkaXR8fGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHxhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1JlLUF1ZGl0ZWQnJiYgIXRha2VBdWRpdCBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydEF1ZGl0KCdSZS1BdWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTIgYnRuLXdhcm5pbmdcIj5SZS1BdWRpdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRha2VBdWRpdFwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbXMtMiBidG4tc20gYnRuLXN1Y2Nlc3NcIiAgW2Rpc2FibGVkXT1cImRpc2FibGVjYW5jZWxcIiAoY2xpY2spPVwib25zdWJtaXQoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXQtMSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRha2VBdWRpdCAmJiBzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aFwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBib3JkZXIgYm9yZGVyLTEgcm91bmRlZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLWJ5LXN0ZXAgUHJvY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljdGVkIFRyYW5zY3JpcHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFzb24gZm9yIEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZWQgVGltZSBSYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3RlcFdpc2VQcm9jZXNzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJkYXRhPy5pbWFnZVVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnByb2Nlc3NOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeTEgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9J2JvdHRvbSc+e3tkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0P2RhdGE/LnByZWRpY3RlZFRyYW5zY3JpcHQ6XCJOL0FcIn19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10b29sdGlwLWNvbnRlbnQgdG9vbHRpcC1jb250ZW50IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW4tdy01MDBweFwiPnt7ZGF0YT8ucHJlZGljdGVkVHJhbnNjcmlwdD9kYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0OlwiTi9BXCJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkFJU3RhdHVzID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcidcIj57e2RhdGEuQUlTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3Bhc3MnIDogJ2ZhaWwnfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhPy5hdWRpdGVkU3RhdHVzID09PSB0cnVlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogKGRhdGE/LmF1ZGl0ZWRTdGF0dXMgPT09IGZhbHNlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcicgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uYXVkaXRlZFN0YXR1cyA9PT0gdHJ1ZSA/ICdwYXNzJyA6IChkYXRhPy5hdWRpdGVkU3RhdHVzID09PSBmYWxzZSA/ICdmYWlsJyA6ICdOL0EnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJkYXRhLkFJU3RhdHVzICE9PSBkYXRhLmF1ZGl0ZWRTdGF0dXMgfHwgZGF0YS5hdWRpdGVkU3RhdHVzID09PSBudWxsIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gdW5kZWZpbmVkIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gJyc7IGVsc2UgRXF1YWxCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyBkYXRhPy5yZWFzb24gfHwgJ04vQScgfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEucmVhc29uICE9PSdvdGhlcnMnXCI+e3tkYXRhLnJlYXNvbiB8fCAnTi9BJ319PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0YS5yZWFzb24gPT09J290aGVycydcIj57e2RhdGEub3RoZXJSZWFzb24gfHwgJ04vQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjRXF1YWxCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5OL0E8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YT8uc3RhcnRUaW1lfX0gLSB7e2RhdGE/LmVuZFRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aCAmJiB0YWtlQXVkaXQmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXM9PT0nWWV0LXRvLUF1ZGl0J3x8YXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cz09PSdJbi1Qcm9ncmVzcydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9jZXNzIG9mIHN0ZXBXaXNlUHJvY2VzczsgbGV0IGk9aW5kZXggO2xldCBsYXN0PWxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLXt7aSsxIHwgbnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidy0yMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInctNDBweCBoLTQwcHggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJwcm9jZXNzLmltYWdlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvY2Vzcy5wcm9jZXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuICpuZ0lmPVwicHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyB0ZXh0LWNhcGl0YWxpemVcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHRleHQtY2FwaXRhbGl6ZVwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0SHVtYW5WZXJpZmllZChpLHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyA/ICd0ZXh0LXdoaXRlIGJ0bi1zdWNjZXNzJyA6ICd0ZXh0LXN1Y2Nlc3MgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zdWNjZXNzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSAgcm91bmRlZC01XCI+PHNwYW4+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTY2NyA0TDYuODMzMzMgMTEuMzMzM0wzLjUgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzID8gJ3doaXRlJyA6ICcjMTdDNjUzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXMtMlwiPlBhc3M8L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEh1bWFuVmVyaWZpZWQoaSxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzPT09ZmFsc2UgPyAndGV4dC13aGl0ZSBiZy1kYW5nZXInIDogJ3RleHQtZGFuZ2VyIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZGFuZ2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMyBweC01IHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC01IGN1cnNvci1wb2ludGVyIHJvdW5kZWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi42NjY1IDRMNC42NjY1IDEyTTQuNjY2NSA0TDEyLjY2NjUgMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cz09PWZhbHNlID8gJ3doaXRlJyA6ICcjRjgyODVBJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvd3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RmFpbDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgJiYgcHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdFwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWN0ZWQgVHJhbnNjcmlwdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1zbS0xMiBwLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD0nYm90dG9tJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRvb2x0aXAtY29udGVudCB0b29sdGlwLWNvbnRlbnQgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWluLXctNTAwcHhcIj57e3Byb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSAnJyAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSBwcm9jZXNzPy5BSVN0YXR1c1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFzb24gJiBUaW1lIFN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLXNtLTEyIHAtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGksJ3JlYXNvbicpXCIgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2Nlc3M/LnJlYXNvbiA/IHByb2Nlc3M/LnJlYXNvbiA6ICdTZWxlY3QgUmVhc29uJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIiAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8ucmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gbXktMiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRyb3Bkb3duTGlzdFwiIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwicHJvY2Vzcz8ucmVhc29uID09PSBpdGVtPy5rZXkgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FtZXJhIHB4LTUgaXRlbXMgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgcHktMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVhc29uKGksIGl0ZW0/LmtleSwgJ3JlYXNvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8uaXRlbSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIElucHV0IGZvciBcIk90aGVyc1wiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9jZXNzPy5yZWFzb24gPT09ICdvdGhlcnMnXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvY2Vzcy5vdGhlclJlYXNvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgcmVhc29uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdzdGFydFRpbWUnKVwiIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgZnctc2VtaWJvbGQgYmctd2hpdGUgcHgtMlwiPlN0YXJ0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWxlY3RcIj57e3Byb2Nlc3M/LnN0YXJ0VGltZSA/IHByb2Nlc3M/LnN0YXJ0VGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6J01NOlNTJ319PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8uc3RhcnRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaW4gb2YgbWludXRlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TWludXRlKGksbWluLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJtaW4gPT09IHNlbGVjdGVkTWludXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW4gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2Vjb25kKGksc2VjLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdlbmRUaW1lJylcIiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkIGJnLXdoaXRlIHB4LTJcIj5FbmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPjxzcGFuPnt7cHJvY2Vzcy5lbmRUaW1lID8gcHJvY2Vzcy5lbmRUaW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNTTpTUyd9fTwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYXN0ID8gJ2Ryb3Bkb3duLWNvbnRlbnQxJyA6ICdkcm9wZG93bi1jb250ZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuW2ldPy5lbmRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pbiBvZiBtaW51dGVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm1pbiA9PT0gc2VsZWN0ZWRNaW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZ2V0U2Vjb25kc0Zyb21UaW1lKG1pbiArICc6JyArIHNlbGVjdGVkU2Vjb25kcykgPD0gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY29uZHNGcm9tVGltZShtaW4gKyAnOicgKyBzZWxlY3RlZFNlY29uZHMpID4gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdE1pbnV0ZShpLG1pbiwnZW5kVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWluIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImdldFNlY29uZHNGcm9tVGltZShzZWxlY3RlZE1pbnV0ZXMgKyAnOicgKyBzZWMpIDw9IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWNvbmRzRnJvbVRpbWUoc2VsZWN0ZWRNaW51dGVzICsgJzonICsgc2VjKSA+IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RTZWNvbmQoaSxzZWMsJ2VuZFRpbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlYyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3RlcFdpc2VQcm9jZXNzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIih0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkZWQnXCIgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhlIHRlc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSDilIDilIAgQ29udmVyc2F0aW9uIFJlY29yZGluZyArIFRyYW5zY3JpcHQg4pSA4pSAIC0tPlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIiAqbmdJZj1cImNvbnZlcnNhdGlvbkRhdGFcIj5cclxuICAgIDwhLS0gTGVmdDogUmVjb3JkaW5nICsgVHJhbnNjcmlwdCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cclxuICAgICAgICA8IS0tIENvbnZlcnNhdGlvbiBSZWNvcmRpbmcgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy1ib3hcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy10aXRsZVwiPkNvbnZlcnNhdGlvbiBSZWNvcmRpbmc8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBBdWRpbyBlbGVtZW50IC0tPlxyXG4gICAgICAgICAgICA8YXVkaW8gaWQ9XCJjb252LWF1ZGlvXCIgW3NyY109XCJjb252ZXJzYXRpb25EYXRhPy5hdWRpb191cmxcIlxyXG4gICAgICAgICAgICAgICAgKHRpbWV1cGRhdGUpPVwib25Db252VGltZVVwZGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgIChsb2FkZWRtZXRhZGF0YSk9XCJvbkNvbnZMb2FkZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAoZW5kZWQpPVwiY29udklzUGxheWluZyA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvYXVkaW8+XHJcbiAgICAgICAgICAgIDwhLS0gV2F2ZWZvcm0gYmFycyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdmVmb3JtLWJhcnNcIiBbY2xhc3MuaXMtcGxheWluZ109XCJjb252SXNQbGF5aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYmFyXCIgKm5nRm9yPVwibGV0IGggb2Ygd2F2ZWZvcm1IZWlnaHRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy53Zi1iYXItLXBsYXllZF09XCJjb252UHJvZ3Jlc3MgPiBpIC8gd2F2ZWZvcm1IZWlnaHRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFBsYXllciBjb250cm9scyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXllci1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGF5LWJ0bi13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBsYXktYnRuLWNpcmNsZVwiIChjbGljayk9XCJ0b2dnbGVDb252UGxheSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNvbnZJc1BsYXlpbmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIndoaXRlXCI+PHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjb252SXNQbGF5aW5nXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPjxwYXRoIGQ9XCJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6XCIvPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxheWVyLXByb2dyZXNzIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYXllci10aW1lIHN0YXJ0LXRpbWVcIj57eyBjb252Q3VycmVudFRpbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxheWVyLXRpbWUgZW5kLXRpbWVcIj57eyBjb252RHVyYXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXRyYWNrXCIgKGNsaWNrKT1cInNlZWtDb252QXVkaW8oJGV2ZW50KVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1maWxsXCIgW3N0eWxlLndpZHRoLiVdPVwiY29udlByb2dyZXNzICogMTAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtdXRlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVDb252TXV0ZSgpXCIgW3RpdGxlXT1cImNvbnZJc011dGVkID8gJ1VubXV0ZScgOiAnTXV0ZSdcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjb252SXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem0xMy41IDNjMC0xLjc3LTEuMDItMy4yOS0yLjUtNC4wM3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyek0xNCAzLjIzdjIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxcy0yLjExIDUuODUtNSA2LjcxdjIuMDZjNC4wMS0uOTEgNy00LjQ5IDctOC43N3MtMi45OS03Ljg2LTctOC43N3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNvbnZJc011dGVkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTE2LjUgMTJjMC0xLjc3LTEuMDItMy4yOS0yLjUtNC4wM3YyLjIxbDIuNDUgMi40NWMuMDMtLjIuMDUtLjQxLjA1LS42M3ptMi41IDBjMCAuOTQtLjIgMS44Mi0uNTQgMi42NGwxLjUxIDEuNTFDMjAuNjMgMTQuOTEgMjEgMTMuNSAyMSAxMmMwLTQuMjgtMi45OS03Ljg2LTctOC43N3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXpNNC4yNyAzTDMgNC4yNyA3LjczIDlIM3Y2aDRsNSA1di02LjczbDQuMjUgNC4yNWMtLjY3LjUyLTEuNDIuOTMtMi4yNSAxLjE4djIuMDZjMS4zOC0uMzEgMi42My0uOTUgMy42OS0xLjgxTDE5LjczIDIxIDIxIDE5LjczbC05LTlMNC4yNyAzek0xMiA0TDkuOTEgNi4wOSAxMiA4LjE4VjR6XCIvPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ29udmVyc2F0aW9uIFRyYW5zY3JpcHQgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC00IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmRpbmctdGl0bGUgbWItM1wiPkNvbnZlcnNhdGlvbiBUcmFuc2NyaXB0PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiAjMzQ0MDU0OyBsaW5lLWhlaWdodDogMS42OyBtYXgtaGVpZ2h0OiAxODBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2F0aW9uRGF0YT8udHJhbnNjcmlwdF9zdW1tYXJ5OyBlbHNlIG5vVHJhbnNjcmlwdFwiPnt7IGNvbnZlcnNhdGlvbkRhdGE/LnRyYW5zY3JpcHRfc3VtbWFyeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2NyaXB0PjxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPk5vIHRyYW5zY3JpcHQgYXZhaWxhYmxlLjwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmlnaHQ6IFN0ZXAgdGFicyArIGF1ZGlvIGluZm8gKyBldmlkZW5jZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWluLWhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udi1jYXJkLXRpdGxlXCI+U3RlcC13aXNlIEJyZWFrZG93bjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0xXCI+QXVkaW88L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFJlY2VudGx5IEF1ZGl0ZWQgQnkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG1iLTMgcGItMiBib3JkZXItYm90dG9tXCIgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0ZWRCeSB8fCBhdWRpdERldGFpbHM/LmF1ZGl0ZWREYXRlXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjNjY3MDg1O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc3ViLXRpdGxlIG10LTJcIiAqbmdJZj1cImF1ZGl0RGV0YWlscz8ubGFzdEF1ZGl0ZWREZXRhaWxzPy5hdWRpdGVkQnlcIj5cclxuICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMVwiPlJlY2VudGx5IEF1ZGl0ZWQgQnkgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzcgMTRWMTIuNjY2N0MxMy4zMzM3IDExLjk1OTQgMTMuMDUyNyAxMS4yODExIDEyLjU1MjYgMTAuNzgxQzEyLjA1MjUgMTAuMjgxIDExLjM3NDIgMTAgMTAuNjY3IDEwSDUuMzMzNjZDNC42MjY0MSAxMCAzLjk0ODE0IDEwLjI4MSAzLjQ0ODA0IDEwLjc4MUMyLjk0Nzk0IDExLjI4MTEgMi42NjY5OSAxMS45NTk0IDIuNjY2OTkgMTIuNjY2N1YxNE0xMC42NjcgNC42NjY2N0MxMC42NjcgNi4xMzk0MyA5LjQ3MzA4IDcuMzMzMzMgOC4wMDAzMyA3LjMzMzMzQzYuNTI3NTcgNy4zMzMzMyA1LjMzMzY2IDYuMTM5NDMgNS4zMzM2NiA0LjY2NjY3QzUuMzMzNjYgMy4xOTM5MSA2LjUyNzU3IDIgOC4wMDAzMyAyQzkuNDczMDggMiAxMC42NjcgMy4xOTM5MSAxMC42NjcgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3BhbiA+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uYXVkaXRlZEJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTUyXzI5NDMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTUyXzI5NDMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uY29tcGxldGlvblRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8udGltZVpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIEJvZHkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXQtMTBcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDI4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGVwIHBpbGwgbGlzdCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDE5MHB4OyBtYXgtaGVpZ2h0OiAzMjBweDsgb3ZlcmZsb3cteTogYXV0bzsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0VBRUNGMDsgcGFkZGluZy1yaWdodDogMTJweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIGNvbnZlcnNhdGlvbkRhdGE/Lm1ldHJpY3NfcmVzdWx0czsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udi1zdGVwLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkU3RlcEluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU3RlcEluZGV4ID0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwPy5tZXRyaWNOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0ZWQgc3RlcCBkZXRhaWwgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgcHMtMlwiICpuZ0lmPVwiY29udmVyc2F0aW9uRGF0YT8ubWV0cmljc19yZXN1bHRzPy5bc2VsZWN0ZWRTdGVwSW5kZXhdIGFzIHN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENsaWNrIHRvIFBsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtcGxheS1yb3dcIiAqbmdJZj1cInN0ZXA/LnN0YXJ0VGltZVwiIChjbGljayk9XCJwbGF5RnJvbVN0ZXAoc3RlcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtcGxheS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIndoaXRlXCI+PHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIi8+PC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICMxMDE4Mjg7XCI+Q2xpY2sgdG8gUGxheTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2NjcwODU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW8gU3RhcnRzIGF0IHt7IHN0ZXA/LnN0YXJ0VGltZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJzdGVwPy5lbmRUaW1lXCI+IOKAkyB7eyBzdGVwPy5lbmRUaW1lIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1bW1hcnkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMxMDE4Mjg7IG1hcmdpbi1ib3R0b206IDhweDtcIj5TdW1tYXJ5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMzQ0MDU0OyBsaW5lLWhlaWdodDogMS42O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwPy5ldmlkZW5jZV9xdW90ZTsgZWxzZSBub0V2aWRlbmNlXCI+e3sgc3RlcD8uZXZpZGVuY2VfcXVvdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRXZpZGVuY2U+PHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+Tm8gZXZpZGVuY2UgYXZhaWxhYmxlLjwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjYXJkIG10LTMgcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5IaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQtM1wiICpuZ0lmPVwiaGlzdG9yeURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+QXVkaXRlZCBCeTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIiA+QXVkaXRlZCBEYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiID5UaW1lIFN0YW1wPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiID5WaWV3IExvZ3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaXN0b3J5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnVzZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLkRhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uVGltZX19IElTVDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwidmlld0hpc3RvcnlNb2RlbChpdGVtKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoaGlzdG9yeXRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCByb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihoaXN0b3J5dGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwicm93IG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoZSB0ZXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN2aWV3SGlzdG9yeSBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC01IHRzNzAwcHggc2Nyb2xsXCI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGQtZmxleFwiPlxyXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4IDIyVjI4TDMyIDMwTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0zIHB0LTIgZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BdWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cImhpc3RvcnlEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5TdGVwLWJ5LVN0ZXAgUHJvY2VzczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+U3RhdHVzIGNoYW5nZWQgZnJvbTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+Tm90ZWQgVGltZSBSYW5nZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+UmVhc29uIGZvciBFcnJvcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aWV3SGlzdG9yeURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0ucHJvY2Vzc05hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1lLTJcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtZS0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMxXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMzEgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwLjM1MzYgNC4zNTM1NUMzMC41NDg4IDQuMTU4MjkgMzAuNTQ4OCAzLjg0MTcxIDMwLjM1MzYgMy42NDY0NUwyNy4xNzE2IDAuNDY0NDY2QzI2Ljk3NjMgMC4yNjkyMDQgMjYuNjU5NyAwLjI2OTIwNCAyNi40NjQ1IDAuNDY0NDY2QzI2LjI2OTIgMC42NTk3MjggMjYuMjY5MiAwLjk3NjMxMSAyNi40NjQ1IDEuMTcxNTdMMjkuMjkyOSA0TDI2LjQ2NDUgNi44Mjg0M0MyNi4yNjkyIDcuMDIzNjkgMjYuMjY5MiA3LjM0MDI3IDI2LjQ2NDUgNy41MzU1M0MyNi42NTk3IDcuNzMwOCAyNi45NzYzIDcuNzMwOCAyNy4xNzE2IDcuNTM1NTNMMzAuMzUzNiA0LjM1MzU1Wk0wIDQuNUgzMFYzLjVIMFY0LjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uYXVkaXRlZFN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtcy0yXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmF1ZGl0ZWRTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtcy0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiaXRlbS5zdGFydFRpbWVcIj5Ob3RlZCBUaW1lIFJhbmdlIDogPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmsxXCI+e3tpdGVtLnN0YXJ0VGltZSA/IGl0ZW0uc3RhcnRUaW1lOictLSd9fSAtIHt7aXRlbS5lbmRUaW1lfX08L3NwYW4+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPjxzcGFuICpuZ0lmPVwiaXRlbS5yZWFzb24gIT09J290aGVycydcIj57e2l0ZW0ucmVhc29ufX08L3NwYW4+PHNwYW4gKm5nSWY9XCJpdGVtLnJlYXNvbiA9PT0nb3RoZXJzJ1wiPnt7aXRlbS5vdGhlclJlYXNvbn19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZpZXdDYW5jZWwgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgZ3JvdXAtZGVsZXRlIHB5LTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjcuOTk4OCAyNFYyOE0yNy45OTg4IDMySDI4LjAwODhNMjYuMjg4OCAxOC44NkwxNy44MTg4IDMzQzE3LjY0NDIgMzMuMzAyNCAxNy41NTE4IDMzLjY0NTMgMTcuNTUwOCAzMy45OTQ1QzE3LjU0OTggMzQuMzQzNyAxNy42NDAzIDM0LjY4NzEgMTcuODEzMiAzNC45OTA1QzE3Ljk4NjIgMzUuMjkzOSAxOC4yMzU1IDM1LjU0NjcgMTguNTM2NSAzNS43MjM4QzE4LjgzNzUgMzUuOTAwOSAxOS4xNzk2IDM1Ljk5NjEgMTkuNTI4OCAzNkgzNi40Njg4QzM2LjgxOCAzNS45OTYxIDM3LjE2MDEgMzUuOTAwOSAzNy40NjExIDM1LjcyMzhDMzcuNzYyMSAzNS41NDY3IDM4LjAxMTQgMzUuMjkzOSAzOC4xODQ0IDM0Ljk5MDVDMzguMzU3MyAzNC42ODcxIDM4LjQ0NzggMzQuMzQzNyAzOC40NDY4IDMzLjk5NDVDMzguNDQ1OCAzMy42NDUzIDM4LjM1MzQgMzMuMzAyNCAzOC4xNzg4IDMzTDI5LjcwODggMTguODZDMjkuNTMwNSAxOC41NjYxIDI5LjI3OTUgMTguMzIzMSAyOC45OCAxOC4xNTQ0QzI4LjY4MDUgMTcuOTg1OCAyOC4zNDI1IDE3Ljg5NzIgMjcuOTk4OCAxNy44OTcyQzI3LjY1NTEgMTcuODk3MiAyNy4zMTcxIDE3Ljk4NTggMjcuMDE3NiAxOC4xNTQ0QzI2LjcxODEgMTguMzIzMSAyNi40NjcxIDE4LjU2NjEgMjYuMjg4OCAxOC44NlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+ICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkFyZSB5b3Ugc3VyZT88L2E+XHJcbiAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cInN1Yi10aXRsZSBmdy1ub3JtYWwgbXQtMlwiPldvdWxkIHlvdSBsaWtlIHRvIGNhbmNlbCB0aGlzPzwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiByb2xlPVwiZ3JvdXBcIiBjbGFzcz1cImQtZmxleCBtdC0zIG1iLTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbWUtM1wiIChjbGljayk9XCJPbkNhbmNlbCgpXCI+Tm88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFsZXJ0LXRvYXN0XCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciB3LTEwMCBtcy0zXCIgKGNsaWNrKT1cIm9uWWVzKClcIj5ZZXM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPC9zZWN0aW9uPiJdfQ==