tango-app-ui-store-builder 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +14 -3
- package/fesm2022/tango-app-ui-store-builder.mjs +13 -2
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +2 -2
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -239,6 +239,17 @@ export class VerificationFeedbackComponent {
|
|
|
239
239
|
tab: dataToEdit?.tab,
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
|
+
onEditFeedback() {
|
|
243
|
+
this.action.emit({
|
|
244
|
+
action: "editWithPlano",
|
|
245
|
+
type: "agree",
|
|
246
|
+
fixtureData: this.planoFixture,
|
|
247
|
+
feedback: this.feedbackDetails?.fixtureFeedback,
|
|
248
|
+
planoId: this.floorData.planoId,
|
|
249
|
+
floorId: this.floorData._id,
|
|
250
|
+
taskType: "fixture",
|
|
251
|
+
});
|
|
252
|
+
}
|
|
242
253
|
toggleAIQuickEdit() {
|
|
243
254
|
this.isAIQuickEdit = !this.isAIQuickEdit;
|
|
244
255
|
}
|
|
@@ -292,11 +303,11 @@ export class VerificationFeedbackComponent {
|
|
|
292
303
|
this.destroy$.complete();
|
|
293
304
|
}
|
|
294
305
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VerificationFeedbackComponent, deps: [{ token: i1.GlobalStateService }, { token: i2.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
295
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VerificationFeedbackComponent, selector: "lib-verification-feedback", inputs: { floorData: "floorData", totalFixtures: "totalFixtures", feedbackDetails: "feedbackDetails", cdn: "cdn", showAction: "showAction", vmList: "vmList" }, outputs: { changeFixture: "changeFixture", action: "action" }, usesOnChanges: true, ngImport: i0, template: "<section id=\"verification-feedback\">\r\n\r\n <div *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\" id=\"task-info\" ngbAccordion #accordion=\"ngbAccordion\">\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"feedbackDetails?.taskInfoToggle\">\r\n <div ngbAccordionHeader class=\"accordion-button task-info-header\">\r\n <div ngbAccordionToggle class=\"w-100\">\r\n <h2>Fixture verification assigned</h2>\r\n <p>{{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n </div>\r\n\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"log-block\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{feedbackDetails?.fixtureFeedback?.taskData?.createdByName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mma, dd MMM yyyy'}}\r\n </p>\r\n <h5>Assigner</h5>\r\n </div>\r\n </div>\r\n\r\n <div class=\"log-block\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4> {{feedbackDetails?.fixtureFeedback?.taskData?.userName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.submitTime_string}}\r\n </p>\r\n <h5>Assignee</h5>\r\n </div>\r\n </div>\r\n\r\n\r\n @if (feedbackDetails?.globalComments?.length) {\r\n <h5 class=\"mb-2\">Comments</h5>\r\n <div class=\"log-block\" *ngFor=\"let c of feedbackDetails?.globalComments;let i= index\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n <h5>{{c?.comment}}</h5>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <hr *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\">\r\n\r\n <div id=\"feedback-handler\" class=\"d-flex align-items-center gap-6 my-6 px-3 fixture-navigate\">\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('previous')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n\r\n <h3 class=\"m-0\">{{planoFixture?.header?.label}}</h3>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureCategory\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureCategory | titlecase}}\r\n </span>\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureWidth?.value\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureWidth.value }} {{ planoFixture.fixtureWidth?.unit ?? 'ft' }}\r\n </span>\r\n\r\n </div>\r\n\r\n <h3 *ngIf=\"showAction\" class=\"m-0 ms-auto\">\r\n {{currentFixtureIndex}}/{{totalFixtures.length}}\r\n </h3>\r\n\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('next')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n\r\n @if( this.aiFixture?.fixtureId){\r\n <div id=\"fixture-comparison\" class=\"row g-0 my-3\">\r\n @if (showAction) {\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n <div class=\"d-flex justify-content-end\">\r\n @if (!isApproved && showAction) {\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickKeepPlano()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Keep plano\r\n </button>\r\n }\r\n </div>\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.725 5.80008L10 10.0084L17.275 5.80008M10 18.4001V10.0001M17.5 13.3334V6.66675C17.4997 6.37448 17.4225 6.08742 17.2763 5.83438C17.13 5.58134 16.9198 5.37122 16.6667 5.22508L10.8333 1.89175C10.58 1.74547 10.2926 1.66846 10 1.66846C9.70744 1.66846 9.42003 1.74547 9.16667 1.89175L3.33333 5.22508C3.08022 5.37122 2.86998 5.58134 2.72372 5.83438C2.57745 6.08742 2.5003 6.37448 2.5 6.66675V13.3334C2.5003 13.6257 2.57745 13.9127 2.72372 14.1658C2.86998 14.4188 3.08022 14.6289 3.33333 14.7751L9.16667 18.1084C9.42003 18.2547 9.70744 18.3317 10 18.3317C10.2926 18.3317 10.58 18.2547 10.8333 18.1084L16.6667 14.7751C16.9198 14.6289 17.13 14.4188 17.2763 14.1658C17.4225 13.9127 17.4997 13.6257 17.5 13.3334Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <h4 class=\"m-0\">Existing template </h4>\r\n <svg [ngbTooltip]=\"planoFixture?.fixtureName\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_496_31664)\">\r\n <path\r\n d=\"M10.0013 13.3337V10.0003M10.0013 6.66699H10.0096M18.3346 10.0003C18.3346 14.6027 14.6037 18.3337 10.0013 18.3337C5.39893 18.3337 1.66797 14.6027 1.66797 10.0003C1.66797 5.39795 5.39893 1.66699 10.0013 1.66699C14.6037 1.66699 18.3346 5.39795 18.3346 10.0003Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_496_31664\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'keepPlano' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithPlano' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n }\r\n </div>\r\n </div>\r\n <fixture [fixture]=\"planoFixture\" [vmList]=\"vmList\"></fixture>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n @if (!isApproved && showAction) {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <button class=\"btn redo-btn\" (click)=\"onClickRedo()\" [class.disabled]=\"isAIQuickEdit\">\r\n Redo\r\n </button>\r\n\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditAIFeedback()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickAcceptAI()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Accept store response\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.6504 14.6191H4.34863V10.7373C4.23826 10.7455 4.12644 10.75 4.01367 10.75C3.97137 10.75 3.92943 10.7463 3.8877 10.7451V15.8037C3.88788 16.447 4.42222 16.9883 5.09863 16.9883H14.9004C15.5768 16.9883 16.1102 16.447 16.1104 15.8037V10.7451C16.0708 10.7462 16.0311 10.75 15.9912 10.75C15.8768 10.75 15.7629 10.7449 15.6504 10.7363V14.6191ZM15.4639 3.01172H4.53418C4.48723 3.01187 4.44973 3.03776 4.43457 3.06152V3.0625L2.67871 5.80371L2.66016 5.83301C2.04768 6.82786 2.64325 8.11739 3.73438 8.26367C3.83174 8.27561 3.92224 8.28222 4.01074 8.28223C4.58889 8.28223 5.09978 8.03419 5.45605 7.64746L6.00977 7.04688L6.56152 7.64941C6.91341 8.03371 7.42301 8.28215 8.00488 8.28223C8.58433 8.28223 9.09759 8.03349 9.44922 7.64941L10.002 7.04492L10.5557 7.64941C10.9073 8.03349 11.4206 8.28223 12 8.28223C12.5792 8.2821 13.0918 8.03337 13.4434 7.64941L13.9971 7.04492L14.5498 7.64941C14.9014 8.03349 15.4147 8.28223 15.9941 8.28223C16.0791 8.28222 16.1716 8.27533 16.2676 8.26367C17.3635 8.11504 17.9623 6.8008 17.3232 5.80371L15.5645 3.0625L15.5635 3.06152C15.5483 3.03769 15.511 3.01172 15.4639 3.01172Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" />\r\n </svg>\r\n\r\n\r\n <h4>Store response </h4>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'acceptAi' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithAi'\"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'redo' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.25065 15.8335C6.90343 15.8335 5.74704 15.396 4.78148 14.521C3.81593 13.646 3.33343 12.5557 3.33398 11.2502C3.33398 9.94461 3.81676 8.85433 4.78232 7.97933C5.74787 7.10433 6.90398 6.66683 8.25065 6.66683H13.5007L11.334 4.50016L12.5007 3.3335L16.6673 7.50016L12.5007 11.6668L11.334 10.5002L13.5007 8.3335H8.25065C7.37565 8.3335 6.6151 8.61127 5.96898 9.16683C5.32287 9.72238 5.0001 10.4168 5.00065 11.2502C5.00065 12.0835 5.32371 12.7779 5.96982 13.3335C6.61593 13.8891 7.37621 14.1668 8.25065 14.1668H14.1673V15.8335H8.25065Z\"\r\n fill=\"black\" />\r\n </svg>\r\n }@else {\r\n <svg *ngIf=\"showAction && !isAIQuickEdit\" class=\"ms-auto cursor-pointer\"\r\n (click)=\"toggleAIQuickEdit()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 15.0002H15.75M12.375 2.62517C12.6734 2.3268 13.078 2.15918 13.5 2.15918C13.7089 2.15918 13.9158 2.20033 14.1088 2.28029C14.3019 2.36024 14.4773 2.47743 14.625 2.62517C14.7727 2.77291 14.8899 2.9483 14.9699 3.14132C15.0498 3.33435 15.091 3.54124 15.091 3.75017C15.091 3.9591 15.0498 4.16599 14.9699 4.35902C14.8899 4.55204 14.7727 4.72743 14.625 4.87517L5.25 14.2502L2.25 15.0002L3 12.0002L12.375 2.62517Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n <editable-fixture [fixture]=\"aiFixture\" [editMode]=\"isAIQuickEdit\" [vmList]=\"vmList\"\r\n (onCancel)=\"onCancelAIQuickEdit()\" (onDone)=\"onSaveAIQuickEdit($event)\"\r\n (editTab)=\"onEditAIFeedback($event)\"></editable-fixture>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"p-2\" [ngClass]=\"{'col-4':showAction,'col':!showAction}\">\r\n <div class=\"wrapper\">\r\n <div class=\"mb-4\" [ngStyle]=\"{'margin-top':showAction && !isApproved ? '50px' : '12px'}\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <h4>Store Image </h4>\r\n </div>\r\n </div>\r\n @if(cdn && aiFixture?.fixtureImage){\r\n <div class=\"fixture-image\" (click)=\"onClickImagePreview(cdn + aiFixture?.fixtureImage)\">\r\n <img [src]=\"cdn + aiFixture?.fixtureImage\" alt=\"Store response image\">\r\n </div>\r\n }@else {\r\n <div class=\"text-center my-7\">\r\n <svg width=\"186\" height=\"84\" viewBox=\"0 0 186 84\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M130.256 15.3284C140.092 15.3284 148.065 23.302 148.065 33.1379C148.065 37.2176 150.826 41.8684 154.906 41.8684H167.972C177.807 41.8687 185.781 49.8422 185.781 59.678C185.781 69.5141 177.807 77.4885 167.971 77.4885H81.3662C69.7186 77.4883 58.6349 68.4084 46.9873 68.4084H5.93652C2.65782 68.4084 0 65.7506 0 62.4719C0.000127823 59.1933 2.6579 56.5354 5.93652 56.5354H61.8728C63.0069 56.5354 63.9669 55.6929 64.2897 54.6056C64.7994 52.8892 63.6267 50.9485 61.8361 50.9485H43.6514C33.8153 50.9485 25.8418 42.974 25.8418 33.1379C25.842 23.302 33.8154 15.3284 43.6514 15.3284H130.256Z\"\r\n fill=\"#EAECF0\" />\r\n <path\r\n d=\"M126.664 27.335V48.65L120.959 43.75C118.229 41.405 113.819 41.405 111.089 43.75L96.5291 56.245C93.7991 58.59 89.3891 58.59 86.6591 56.245L85.4691 55.265C82.9841 53.095 79.0291 52.885 76.2291 54.775L59.0091 66.325L58.6241 66.605C57.3291 63.805 56.6641 60.48 56.6641 56.665V27.335C56.6641 14.595 64.2591 7 76.9991 7H106.329C119.069 7 126.664 14.595 126.664 27.335Z\"\r\n fill=\"#6BCAFF\" />\r\n <path\r\n d=\"M81.164 36.3299C85.7645 36.3299 89.494 32.6005 89.494 27.9999C89.494 23.3994 85.7645 19.6699 81.164 19.6699C76.5635 19.6699 72.834 23.3994 72.834 27.9999C72.834 32.6005 76.5635 36.3299 81.164 36.3299Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M126.665 48.65V56.665C126.665 69.405 119.07 77 106.33 77H77C68.075 77 61.635 73.255 58.625 66.605L59.01 66.325L76.23 54.775C79.03 52.885 82.985 53.095 85.47 55.265L86.66 56.245C89.39 58.59 93.8 58.59 96.53 56.245L111.09 43.75C113.82 41.405 118.23 41.405 120.96 43.75L126.665 48.65Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"138.064\" cy=\"28.3128\" r=\"4.40042\" fill=\"#6BCAFF\" />\r\n <circle cx=\"47.8256\" cy=\"39.2409\" r=\"2.45255\" fill=\"#6BCAFF\" />\r\n <ellipse cx=\"139.183\" cy=\"61.0072\" rx=\"4.29197\" ry=\"4.59854\" fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"vm-comparison\" *ngIf=\"feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig.length\">\r\n <h5 class=\"mb-1\">Visual Merchandise Images from AI output:</h5>\r\n\r\n <div class=\"row g-0\">\r\n\r\n @for (vm of feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig; track $index) {\r\n <div class=\"p-2\" [ngClass]=\"{'col-6':showAction, 'col-12':!showAction}\">\r\n <div class=\"vm-container\" (click)=\"onClickImagePreview(cdn+vm?.vmImage)\">\r\n <div class=\"vm-img\">\r\n <img [src]=\"cdn+vm?.vmImage\" alt=\"VM Image\">\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 vm-details \">\r\n <h5>{{vm?.vmType}}</h5>\r\n <h5>{{vm?.vmName}}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"img-preview\" *ngIf=\"selectedImageForPreview\" (click)=\"closeImagePreview()\">\r\n <img [src]=\"selectedImageForPreview\" class=\"full-img\" />\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"my-6\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No response</div>\r\n <div class=\"mt-4\">No AI response found for this fixture.</div>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if (feedbackDetails?.fixtureFeedback?.answers?.[0]?.comments.length) {\r\n <div id=\"fixture-comments\">\r\n <h5 class=\"mb-2\">Comments</h5>\r\n\r\n <div class=\"log-block\"\r\n *ngFor=\"let c of feedbackDetails?.fixtureFeedback?.answers[0]?.comments;let i= index\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.timeStamp | date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n\r\n @if(c?.responsetype === 'comment'){\r\n <h5>{{c?.comment}}</h5>\r\n }@else if(c?.responsetype === 'agree'){\r\n\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'keepPlano'\">\r\n Marked as \"Keep Plano\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithPlano'\">\r\n Marked as \"Keep Plano with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'acceptAi'\">\r\n Marked as \"Accept AI\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithAi'\">\r\n Marked as \"Accept AI with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }@else if(c?.responsetype === 'disagree'){\r\n <h5>\r\n Marked as \"Redo\"\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</section>", styles: [".nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#verification-feedback{height:100%;overflow-y:auto}#verification-feedback .fixture-navigate,#verification-feedback .task-info-header{user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#verification-feedback h5{color:#1d2939;font-family:Inter;font-weight:600;font-size:12px;line-height:18px;margin:0}#verification-feedback .log-block{display:flex;gap:12px;padding:4px;margin-bottom:18px}#verification-feedback .log-block h4{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback .log-block p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085;margin:0}#verification-feedback #task-info .task-info-header{background-color:#fff!important;padding:6px;width:100%}#verification-feedback #task-info .task-info-header h2{font-weight:600;font-size:14px;line-height:20px;color:#1d2939}#verification-feedback #task-info .task-info-header p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085}#verification-feedback #fixture-quick-details .quick-edit-container{background:#f9fafb;padding:12px;border-radius:6px;width:100%;height:100%}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-quick-details .quick-edit-container .redo-btn{font-family:Inter;font-weight:600;font-size:14px;line-height:18px;color:#1d2939;cursor:pointer}#verification-feedback #fixture-quick-details .quick-edit-container h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .label{font-family:Inter;font-weight:500;font-size:14px;line-height:20px;color:#475467;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .value{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .diff .value{color:#d92d20!important;font-weight:600}#verification-feedback #fixture-quick-details .quick-edit-container .edit-input{padding:0 4px;border-radius:4px;width:50%;height:20px}#verification-feedback #fixture-comparison .wrapper{padding:12px;background:#f9fafb;border-radius:4px;height:100%}#verification-feedback #fixture-comparison .primary-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#009bf3;background:#eaf8ff;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .primary-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-comparison .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .redo-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#344054;background:#fff;border:1px solid #d0d5dd;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .redo-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison p{font-weight:400;font-size:12px;line-height:18px;color:#475467;margin:0}#verification-feedback #fixture-comparison .fixture-image{margin-bottom:12px}#verification-feedback #fixture-comparison .fixture-image img{object-fit:contain;width:100%}#verification-feedback #vm-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #vm-comparison .vm-container{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);display:flex;gap:12px;cursor:pointer}#verification-feedback #vm-comparison .vm-container .vm-img{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}#verification-feedback #vm-comparison .vm-container .vm-img img{border-radius:2px;min-width:132px;min-height:134px;object-fit:contain;width:100%;height:100%;display:block}#verification-feedback #vm-comparison .vm-container .vm-details,#verification-feedback #vm-comparison .vm-container .vm-details h5{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#verification-feedback #vm-comparison .img-preview{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:zoom-out}#verification-feedback #vm-comparison .full-img{max-width:98vw;max-height:98vh;border-radius:10px;object-fit:contain}#verification-feedback .disabled{pointer-events:none;cursor:not-allowed!important;opacity:.6}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionToggle, selector: "[ngbAccordionToggle]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i4.FixtureComponent, selector: "fixture", inputs: ["fixture", "vmList", "showColors", "showVMs", "showBCs"] }, { kind: "component", type: i5.EditableFixtureComponent, selector: "editable-fixture", inputs: ["vmList", "fixture", "showColors", "showVMs", "showBCs", "editMode"], outputs: ["onCancel", "onDone", "editTab"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
306
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VerificationFeedbackComponent, selector: "lib-verification-feedback", inputs: { floorData: "floorData", totalFixtures: "totalFixtures", feedbackDetails: "feedbackDetails", cdn: "cdn", showAction: "showAction", vmList: "vmList" }, outputs: { changeFixture: "changeFixture", action: "action" }, usesOnChanges: true, ngImport: i0, template: "<section id=\"verification-feedback\">\r\n\r\n <div *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\" id=\"task-info\" ngbAccordion #accordion=\"ngbAccordion\">\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"feedbackDetails?.taskInfoToggle\">\r\n <div ngbAccordionHeader class=\"accordion-button task-info-header\">\r\n <div ngbAccordionToggle class=\"w-100\">\r\n <h2>Fixture verification assigned</h2>\r\n <p>{{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n </div>\r\n\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"log-block\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{feedbackDetails?.fixtureFeedback?.taskData?.createdByName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mma, dd MMM yyyy'}}\r\n </p>\r\n <h5>Assigner</h5>\r\n </div>\r\n </div>\r\n\r\n <div class=\"log-block\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4> {{feedbackDetails?.fixtureFeedback?.taskData?.userName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.submitTime_string}}\r\n </p>\r\n <h5>Assignee</h5>\r\n </div>\r\n </div>\r\n\r\n\r\n @if (feedbackDetails?.globalComments?.length) {\r\n <h5 class=\"mb-2\">Comments</h5>\r\n <div class=\"log-block\" *ngFor=\"let c of feedbackDetails?.globalComments;let i= index\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n <h5>{{c?.comment}}</h5>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <hr *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\">\r\n\r\n <div id=\"feedback-handler\" class=\"d-flex align-items-center gap-6 my-6 px-3 fixture-navigate\">\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('previous')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n\r\n <h3 class=\"m-0\">{{planoFixture?.header?.label}}</h3>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureCategory\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureCategory | titlecase}}\r\n </span>\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureWidth?.value\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureWidth.value }} {{ planoFixture.fixtureWidth?.unit ?? 'ft' }}\r\n </span>\r\n\r\n </div>\r\n\r\n <h3 *ngIf=\"showAction\" class=\"m-0 ms-auto\">\r\n {{currentFixtureIndex}}/{{totalFixtures.length}}\r\n </h3>\r\n\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('next')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n\r\n @if( this.aiFixture?.fixtureId){\r\n <div id=\"fixture-comparison\" class=\"row g-0 my-3\">\r\n @if (showAction) {\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n @if (!isApproved && showAction) {\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditFeedback()\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickKeepPlano()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Keep plano\r\n </button>\r\n }\r\n </div>\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.725 5.80008L10 10.0084L17.275 5.80008M10 18.4001V10.0001M17.5 13.3334V6.66675C17.4997 6.37448 17.4225 6.08742 17.2763 5.83438C17.13 5.58134 16.9198 5.37122 16.6667 5.22508L10.8333 1.89175C10.58 1.74547 10.2926 1.66846 10 1.66846C9.70744 1.66846 9.42003 1.74547 9.16667 1.89175L3.33333 5.22508C3.08022 5.37122 2.86998 5.58134 2.72372 5.83438C2.57745 6.08742 2.5003 6.37448 2.5 6.66675V13.3334C2.5003 13.6257 2.57745 13.9127 2.72372 14.1658C2.86998 14.4188 3.08022 14.6289 3.33333 14.7751L9.16667 18.1084C9.42003 18.2547 9.70744 18.3317 10 18.3317C10.2926 18.3317 10.58 18.2547 10.8333 18.1084L16.6667 14.7751C16.9198 14.6289 17.13 14.4188 17.2763 14.1658C17.4225 13.9127 17.4997 13.6257 17.5 13.3334Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <h4 class=\"m-0\">Existing template </h4>\r\n <svg [ngbTooltip]=\"planoFixture?.fixtureName\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_496_31664)\">\r\n <path\r\n d=\"M10.0013 13.3337V10.0003M10.0013 6.66699H10.0096M18.3346 10.0003C18.3346 14.6027 14.6037 18.3337 10.0013 18.3337C5.39893 18.3337 1.66797 14.6027 1.66797 10.0003C1.66797 5.39795 5.39893 1.66699 10.0013 1.66699C14.6037 1.66699 18.3346 5.39795 18.3346 10.0003Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_496_31664\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'keepPlano' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithPlano' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n }\r\n </div>\r\n </div>\r\n <fixture [fixture]=\"planoFixture\" [vmList]=\"vmList\"></fixture>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n @if (!isApproved && showAction) {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <button class=\"btn redo-btn\" (click)=\"onClickRedo()\" [class.disabled]=\"isAIQuickEdit\">\r\n Redo\r\n </button>\r\n\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditAIFeedback()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickAcceptAI()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Accept store response\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.6504 14.6191H4.34863V10.7373C4.23826 10.7455 4.12644 10.75 4.01367 10.75C3.97137 10.75 3.92943 10.7463 3.8877 10.7451V15.8037C3.88788 16.447 4.42222 16.9883 5.09863 16.9883H14.9004C15.5768 16.9883 16.1102 16.447 16.1104 15.8037V10.7451C16.0708 10.7462 16.0311 10.75 15.9912 10.75C15.8768 10.75 15.7629 10.7449 15.6504 10.7363V14.6191ZM15.4639 3.01172H4.53418C4.48723 3.01187 4.44973 3.03776 4.43457 3.06152V3.0625L2.67871 5.80371L2.66016 5.83301C2.04768 6.82786 2.64325 8.11739 3.73438 8.26367C3.83174 8.27561 3.92224 8.28222 4.01074 8.28223C4.58889 8.28223 5.09978 8.03419 5.45605 7.64746L6.00977 7.04688L6.56152 7.64941C6.91341 8.03371 7.42301 8.28215 8.00488 8.28223C8.58433 8.28223 9.09759 8.03349 9.44922 7.64941L10.002 7.04492L10.5557 7.64941C10.9073 8.03349 11.4206 8.28223 12 8.28223C12.5792 8.2821 13.0918 8.03337 13.4434 7.64941L13.9971 7.04492L14.5498 7.64941C14.9014 8.03349 15.4147 8.28223 15.9941 8.28223C16.0791 8.28222 16.1716 8.27533 16.2676 8.26367C17.3635 8.11504 17.9623 6.8008 17.3232 5.80371L15.5645 3.0625L15.5635 3.06152C15.5483 3.03769 15.511 3.01172 15.4639 3.01172Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" />\r\n </svg>\r\n\r\n\r\n <h4>Store response </h4>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'acceptAi' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithAi'\"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'redo' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.25065 15.8335C6.90343 15.8335 5.74704 15.396 4.78148 14.521C3.81593 13.646 3.33343 12.5557 3.33398 11.2502C3.33398 9.94461 3.81676 8.85433 4.78232 7.97933C5.74787 7.10433 6.90398 6.66683 8.25065 6.66683H13.5007L11.334 4.50016L12.5007 3.3335L16.6673 7.50016L12.5007 11.6668L11.334 10.5002L13.5007 8.3335H8.25065C7.37565 8.3335 6.6151 8.61127 5.96898 9.16683C5.32287 9.72238 5.0001 10.4168 5.00065 11.2502C5.00065 12.0835 5.32371 12.7779 5.96982 13.3335C6.61593 13.8891 7.37621 14.1668 8.25065 14.1668H14.1673V15.8335H8.25065Z\"\r\n fill=\"black\" />\r\n </svg>\r\n }@else {\r\n <svg *ngIf=\"showAction && !isAIQuickEdit\" class=\"ms-auto cursor-pointer\"\r\n (click)=\"toggleAIQuickEdit()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 15.0002H15.75M12.375 2.62517C12.6734 2.3268 13.078 2.15918 13.5 2.15918C13.7089 2.15918 13.9158 2.20033 14.1088 2.28029C14.3019 2.36024 14.4773 2.47743 14.625 2.62517C14.7727 2.77291 14.8899 2.9483 14.9699 3.14132C15.0498 3.33435 15.091 3.54124 15.091 3.75017C15.091 3.9591 15.0498 4.16599 14.9699 4.35902C14.8899 4.55204 14.7727 4.72743 14.625 4.87517L5.25 14.2502L2.25 15.0002L3 12.0002L12.375 2.62517Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n <editable-fixture [fixture]=\"aiFixture\" [editMode]=\"isAIQuickEdit\" [vmList]=\"vmList\"\r\n (onCancel)=\"onCancelAIQuickEdit()\" (onDone)=\"onSaveAIQuickEdit($event)\"\r\n (editTab)=\"onEditAIFeedback($event)\"></editable-fixture>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"p-2\" [ngClass]=\"{'col-4':showAction,'col':!showAction}\">\r\n <div class=\"wrapper\">\r\n <div class=\"mb-4\" [ngStyle]=\"{'margin-top':showAction && !isApproved ? '50px' : '12px'}\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <h4>Store Image </h4>\r\n </div>\r\n </div>\r\n @if(cdn && aiFixture?.fixtureImage){\r\n <div class=\"fixture-image\" (click)=\"onClickImagePreview(cdn + aiFixture?.fixtureImage)\">\r\n <img [src]=\"cdn + aiFixture?.fixtureImage\" alt=\"Store response image\">\r\n </div>\r\n }@else {\r\n <div class=\"text-center my-7\">\r\n <svg width=\"186\" height=\"84\" viewBox=\"0 0 186 84\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M130.256 15.3284C140.092 15.3284 148.065 23.302 148.065 33.1379C148.065 37.2176 150.826 41.8684 154.906 41.8684H167.972C177.807 41.8687 185.781 49.8422 185.781 59.678C185.781 69.5141 177.807 77.4885 167.971 77.4885H81.3662C69.7186 77.4883 58.6349 68.4084 46.9873 68.4084H5.93652C2.65782 68.4084 0 65.7506 0 62.4719C0.000127823 59.1933 2.6579 56.5354 5.93652 56.5354H61.8728C63.0069 56.5354 63.9669 55.6929 64.2897 54.6056C64.7994 52.8892 63.6267 50.9485 61.8361 50.9485H43.6514C33.8153 50.9485 25.8418 42.974 25.8418 33.1379C25.842 23.302 33.8154 15.3284 43.6514 15.3284H130.256Z\"\r\n fill=\"#EAECF0\" />\r\n <path\r\n d=\"M126.664 27.335V48.65L120.959 43.75C118.229 41.405 113.819 41.405 111.089 43.75L96.5291 56.245C93.7991 58.59 89.3891 58.59 86.6591 56.245L85.4691 55.265C82.9841 53.095 79.0291 52.885 76.2291 54.775L59.0091 66.325L58.6241 66.605C57.3291 63.805 56.6641 60.48 56.6641 56.665V27.335C56.6641 14.595 64.2591 7 76.9991 7H106.329C119.069 7 126.664 14.595 126.664 27.335Z\"\r\n fill=\"#6BCAFF\" />\r\n <path\r\n d=\"M81.164 36.3299C85.7645 36.3299 89.494 32.6005 89.494 27.9999C89.494 23.3994 85.7645 19.6699 81.164 19.6699C76.5635 19.6699 72.834 23.3994 72.834 27.9999C72.834 32.6005 76.5635 36.3299 81.164 36.3299Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M126.665 48.65V56.665C126.665 69.405 119.07 77 106.33 77H77C68.075 77 61.635 73.255 58.625 66.605L59.01 66.325L76.23 54.775C79.03 52.885 82.985 53.095 85.47 55.265L86.66 56.245C89.39 58.59 93.8 58.59 96.53 56.245L111.09 43.75C113.82 41.405 118.23 41.405 120.96 43.75L126.665 48.65Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"138.064\" cy=\"28.3128\" r=\"4.40042\" fill=\"#6BCAFF\" />\r\n <circle cx=\"47.8256\" cy=\"39.2409\" r=\"2.45255\" fill=\"#6BCAFF\" />\r\n <ellipse cx=\"139.183\" cy=\"61.0072\" rx=\"4.29197\" ry=\"4.59854\" fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"vm-comparison\" *ngIf=\"feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig.length\">\r\n <h5 class=\"mb-1\">Visual Merchandise Images from AI output:</h5>\r\n\r\n <div class=\"row g-0\">\r\n\r\n @for (vm of feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig; track $index) {\r\n <div class=\"p-2\" [ngClass]=\"{'col-6':showAction, 'col-12':!showAction}\">\r\n <div class=\"vm-container\" (click)=\"onClickImagePreview(cdn+vm?.vmImage)\">\r\n <div class=\"vm-img\">\r\n <img [src]=\"cdn+vm?.vmImage\" alt=\"VM Image\">\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 vm-details \">\r\n <h5>{{vm?.vmType}}</h5>\r\n <h5>{{vm?.vmName}}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"img-preview\" *ngIf=\"selectedImageForPreview\" (click)=\"closeImagePreview()\">\r\n <img [src]=\"selectedImageForPreview\" class=\"full-img\" />\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"my-6\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No response</div>\r\n <div class=\"mt-4\">No AI response found for this fixture.</div>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if (feedbackDetails?.fixtureFeedback?.answers?.[0]?.comments.length) {\r\n <div id=\"fixture-comments\">\r\n <h5 class=\"mb-2\">Comments</h5>\r\n\r\n <div class=\"log-block\"\r\n *ngFor=\"let c of feedbackDetails?.fixtureFeedback?.answers[0]?.comments;let i= index\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.timeStamp | date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n\r\n @if(c?.responsetype === 'comment'){\r\n <h5>{{c?.comment}}</h5>\r\n }@else if(c?.responsetype === 'agree'){\r\n\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'keepPlano'\">\r\n Marked as \"Keep Plano\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithPlano'\">\r\n Marked as \"Keep Plano with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'acceptAi'\">\r\n Marked as \"Accept AI\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithAi'\">\r\n Marked as \"Accept AI with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }@else if(c?.responsetype === 'disagree'){\r\n <h5>\r\n Marked as \"Redo\"\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</section>", styles: [".nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#verification-feedback{height:100%;overflow-y:auto}#verification-feedback .fixture-navigate,#verification-feedback .task-info-header{user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#verification-feedback h5{color:#1d2939;font-family:Inter;font-weight:600;font-size:12px;line-height:18px;margin:0}#verification-feedback .log-block{display:flex;gap:12px;padding:4px;margin-bottom:18px}#verification-feedback .log-block h4{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback .log-block p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085;margin:0}#verification-feedback #task-info .task-info-header{background-color:#fff!important;padding:6px;width:100%}#verification-feedback #task-info .task-info-header h2{font-weight:600;font-size:14px;line-height:20px;color:#1d2939}#verification-feedback #task-info .task-info-header p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085}#verification-feedback #fixture-quick-details .quick-edit-container{background:#f9fafb;padding:12px;border-radius:6px;width:100%;height:100%}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-quick-details .quick-edit-container .redo-btn{font-family:Inter;font-weight:600;font-size:14px;line-height:18px;color:#1d2939;cursor:pointer}#verification-feedback #fixture-quick-details .quick-edit-container h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .label{font-family:Inter;font-weight:500;font-size:14px;line-height:20px;color:#475467;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .value{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .diff .value{color:#d92d20!important;font-weight:600}#verification-feedback #fixture-quick-details .quick-edit-container .edit-input{padding:0 4px;border-radius:4px;width:50%;height:20px}#verification-feedback #fixture-comparison .wrapper{padding:12px;background:#f9fafb;border-radius:4px;height:100%}#verification-feedback #fixture-comparison .primary-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#009bf3;background:#eaf8ff;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .primary-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-comparison .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .redo-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#344054;background:#fff;border:1px solid #d0d5dd;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .redo-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison p{font-weight:400;font-size:12px;line-height:18px;color:#475467;margin:0}#verification-feedback #fixture-comparison .fixture-image{margin-bottom:12px}#verification-feedback #fixture-comparison .fixture-image img{object-fit:contain;width:100%}#verification-feedback #vm-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #vm-comparison .vm-container{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);display:flex;gap:12px;cursor:pointer}#verification-feedback #vm-comparison .vm-container .vm-img{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}#verification-feedback #vm-comparison .vm-container .vm-img img{border-radius:2px;min-width:132px;min-height:134px;object-fit:contain;width:100%;height:100%;display:block}#verification-feedback #vm-comparison .vm-container .vm-details,#verification-feedback #vm-comparison .vm-container .vm-details h5{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#verification-feedback #vm-comparison .img-preview{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:zoom-out}#verification-feedback #vm-comparison .full-img{max-width:98vw;max-height:98vh;border-radius:10px;object-fit:contain}#verification-feedback .disabled{pointer-events:none;cursor:not-allowed!important;opacity:.6}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionToggle, selector: "[ngbAccordionToggle]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i4.FixtureComponent, selector: "fixture", inputs: ["fixture", "vmList", "showColors", "showVMs", "showBCs"] }, { kind: "component", type: i5.EditableFixtureComponent, selector: "editable-fixture", inputs: ["vmList", "fixture", "showColors", "showVMs", "showBCs", "editMode"], outputs: ["onCancel", "onDone", "editTab"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
296
307
|
}
|
|
297
308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VerificationFeedbackComponent, decorators: [{
|
|
298
309
|
type: Component,
|
|
299
|
-
args: [{ selector: "lib-verification-feedback", template: "<section id=\"verification-feedback\">\r\n\r\n <div *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\" id=\"task-info\" ngbAccordion #accordion=\"ngbAccordion\">\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"feedbackDetails?.taskInfoToggle\">\r\n <div ngbAccordionHeader class=\"accordion-button task-info-header\">\r\n <div ngbAccordionToggle class=\"w-100\">\r\n <h2>Fixture verification assigned</h2>\r\n <p>{{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n </div>\r\n\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"log-block\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{feedbackDetails?.fixtureFeedback?.taskData?.createdByName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mma, dd MMM yyyy'}}\r\n </p>\r\n <h5>Assigner</h5>\r\n </div>\r\n </div>\r\n\r\n <div class=\"log-block\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4> {{feedbackDetails?.fixtureFeedback?.taskData?.userName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.submitTime_string}}\r\n </p>\r\n <h5>Assignee</h5>\r\n </div>\r\n </div>\r\n\r\n\r\n @if (feedbackDetails?.globalComments?.length) {\r\n <h5 class=\"mb-2\">Comments</h5>\r\n <div class=\"log-block\" *ngFor=\"let c of feedbackDetails?.globalComments;let i= index\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n <h5>{{c?.comment}}</h5>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <hr *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\">\r\n\r\n <div id=\"feedback-handler\" class=\"d-flex align-items-center gap-6 my-6 px-3 fixture-navigate\">\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('previous')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n\r\n <h3 class=\"m-0\">{{planoFixture?.header?.label}}</h3>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureCategory\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureCategory | titlecase}}\r\n </span>\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureWidth?.value\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureWidth.value }} {{ planoFixture.fixtureWidth?.unit ?? 'ft' }}\r\n </span>\r\n\r\n </div>\r\n\r\n <h3 *ngIf=\"showAction\" class=\"m-0 ms-auto\">\r\n {{currentFixtureIndex}}/{{totalFixtures.length}}\r\n </h3>\r\n\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('next')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n\r\n @if( this.aiFixture?.fixtureId){\r\n <div id=\"fixture-comparison\" class=\"row g-0 my-3\">\r\n @if (showAction) {\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n <div class=\"d-flex justify-content-end\">\r\n @if (!isApproved && showAction) {\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickKeepPlano()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Keep plano\r\n </button>\r\n }\r\n </div>\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.725 5.80008L10 10.0084L17.275 5.80008M10 18.4001V10.0001M17.5 13.3334V6.66675C17.4997 6.37448 17.4225 6.08742 17.2763 5.83438C17.13 5.58134 16.9198 5.37122 16.6667 5.22508L10.8333 1.89175C10.58 1.74547 10.2926 1.66846 10 1.66846C9.70744 1.66846 9.42003 1.74547 9.16667 1.89175L3.33333 5.22508C3.08022 5.37122 2.86998 5.58134 2.72372 5.83438C2.57745 6.08742 2.5003 6.37448 2.5 6.66675V13.3334C2.5003 13.6257 2.57745 13.9127 2.72372 14.1658C2.86998 14.4188 3.08022 14.6289 3.33333 14.7751L9.16667 18.1084C9.42003 18.2547 9.70744 18.3317 10 18.3317C10.2926 18.3317 10.58 18.2547 10.8333 18.1084L16.6667 14.7751C16.9198 14.6289 17.13 14.4188 17.2763 14.1658C17.4225 13.9127 17.4997 13.6257 17.5 13.3334Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <h4 class=\"m-0\">Existing template </h4>\r\n <svg [ngbTooltip]=\"planoFixture?.fixtureName\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_496_31664)\">\r\n <path\r\n d=\"M10.0013 13.3337V10.0003M10.0013 6.66699H10.0096M18.3346 10.0003C18.3346 14.6027 14.6037 18.3337 10.0013 18.3337C5.39893 18.3337 1.66797 14.6027 1.66797 10.0003C1.66797 5.39795 5.39893 1.66699 10.0013 1.66699C14.6037 1.66699 18.3346 5.39795 18.3346 10.0003Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_496_31664\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'keepPlano' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithPlano' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n }\r\n </div>\r\n </div>\r\n <fixture [fixture]=\"planoFixture\" [vmList]=\"vmList\"></fixture>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n @if (!isApproved && showAction) {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <button class=\"btn redo-btn\" (click)=\"onClickRedo()\" [class.disabled]=\"isAIQuickEdit\">\r\n Redo\r\n </button>\r\n\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditAIFeedback()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickAcceptAI()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Accept store response\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.6504 14.6191H4.34863V10.7373C4.23826 10.7455 4.12644 10.75 4.01367 10.75C3.97137 10.75 3.92943 10.7463 3.8877 10.7451V15.8037C3.88788 16.447 4.42222 16.9883 5.09863 16.9883H14.9004C15.5768 16.9883 16.1102 16.447 16.1104 15.8037V10.7451C16.0708 10.7462 16.0311 10.75 15.9912 10.75C15.8768 10.75 15.7629 10.7449 15.6504 10.7363V14.6191ZM15.4639 3.01172H4.53418C4.48723 3.01187 4.44973 3.03776 4.43457 3.06152V3.0625L2.67871 5.80371L2.66016 5.83301C2.04768 6.82786 2.64325 8.11739 3.73438 8.26367C3.83174 8.27561 3.92224 8.28222 4.01074 8.28223C4.58889 8.28223 5.09978 8.03419 5.45605 7.64746L6.00977 7.04688L6.56152 7.64941C6.91341 8.03371 7.42301 8.28215 8.00488 8.28223C8.58433 8.28223 9.09759 8.03349 9.44922 7.64941L10.002 7.04492L10.5557 7.64941C10.9073 8.03349 11.4206 8.28223 12 8.28223C12.5792 8.2821 13.0918 8.03337 13.4434 7.64941L13.9971 7.04492L14.5498 7.64941C14.9014 8.03349 15.4147 8.28223 15.9941 8.28223C16.0791 8.28222 16.1716 8.27533 16.2676 8.26367C17.3635 8.11504 17.9623 6.8008 17.3232 5.80371L15.5645 3.0625L15.5635 3.06152C15.5483 3.03769 15.511 3.01172 15.4639 3.01172Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" />\r\n </svg>\r\n\r\n\r\n <h4>Store response </h4>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'acceptAi' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithAi'\"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'redo' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.25065 15.8335C6.90343 15.8335 5.74704 15.396 4.78148 14.521C3.81593 13.646 3.33343 12.5557 3.33398 11.2502C3.33398 9.94461 3.81676 8.85433 4.78232 7.97933C5.74787 7.10433 6.90398 6.66683 8.25065 6.66683H13.5007L11.334 4.50016L12.5007 3.3335L16.6673 7.50016L12.5007 11.6668L11.334 10.5002L13.5007 8.3335H8.25065C7.37565 8.3335 6.6151 8.61127 5.96898 9.16683C5.32287 9.72238 5.0001 10.4168 5.00065 11.2502C5.00065 12.0835 5.32371 12.7779 5.96982 13.3335C6.61593 13.8891 7.37621 14.1668 8.25065 14.1668H14.1673V15.8335H8.25065Z\"\r\n fill=\"black\" />\r\n </svg>\r\n }@else {\r\n <svg *ngIf=\"showAction && !isAIQuickEdit\" class=\"ms-auto cursor-pointer\"\r\n (click)=\"toggleAIQuickEdit()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 15.0002H15.75M12.375 2.62517C12.6734 2.3268 13.078 2.15918 13.5 2.15918C13.7089 2.15918 13.9158 2.20033 14.1088 2.28029C14.3019 2.36024 14.4773 2.47743 14.625 2.62517C14.7727 2.77291 14.8899 2.9483 14.9699 3.14132C15.0498 3.33435 15.091 3.54124 15.091 3.75017C15.091 3.9591 15.0498 4.16599 14.9699 4.35902C14.8899 4.55204 14.7727 4.72743 14.625 4.87517L5.25 14.2502L2.25 15.0002L3 12.0002L12.375 2.62517Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n <editable-fixture [fixture]=\"aiFixture\" [editMode]=\"isAIQuickEdit\" [vmList]=\"vmList\"\r\n (onCancel)=\"onCancelAIQuickEdit()\" (onDone)=\"onSaveAIQuickEdit($event)\"\r\n (editTab)=\"onEditAIFeedback($event)\"></editable-fixture>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"p-2\" [ngClass]=\"{'col-4':showAction,'col':!showAction}\">\r\n <div class=\"wrapper\">\r\n <div class=\"mb-4\" [ngStyle]=\"{'margin-top':showAction && !isApproved ? '50px' : '12px'}\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <h4>Store Image </h4>\r\n </div>\r\n </div>\r\n @if(cdn && aiFixture?.fixtureImage){\r\n <div class=\"fixture-image\" (click)=\"onClickImagePreview(cdn + aiFixture?.fixtureImage)\">\r\n <img [src]=\"cdn + aiFixture?.fixtureImage\" alt=\"Store response image\">\r\n </div>\r\n }@else {\r\n <div class=\"text-center my-7\">\r\n <svg width=\"186\" height=\"84\" viewBox=\"0 0 186 84\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M130.256 15.3284C140.092 15.3284 148.065 23.302 148.065 33.1379C148.065 37.2176 150.826 41.8684 154.906 41.8684H167.972C177.807 41.8687 185.781 49.8422 185.781 59.678C185.781 69.5141 177.807 77.4885 167.971 77.4885H81.3662C69.7186 77.4883 58.6349 68.4084 46.9873 68.4084H5.93652C2.65782 68.4084 0 65.7506 0 62.4719C0.000127823 59.1933 2.6579 56.5354 5.93652 56.5354H61.8728C63.0069 56.5354 63.9669 55.6929 64.2897 54.6056C64.7994 52.8892 63.6267 50.9485 61.8361 50.9485H43.6514C33.8153 50.9485 25.8418 42.974 25.8418 33.1379C25.842 23.302 33.8154 15.3284 43.6514 15.3284H130.256Z\"\r\n fill=\"#EAECF0\" />\r\n <path\r\n d=\"M126.664 27.335V48.65L120.959 43.75C118.229 41.405 113.819 41.405 111.089 43.75L96.5291 56.245C93.7991 58.59 89.3891 58.59 86.6591 56.245L85.4691 55.265C82.9841 53.095 79.0291 52.885 76.2291 54.775L59.0091 66.325L58.6241 66.605C57.3291 63.805 56.6641 60.48 56.6641 56.665V27.335C56.6641 14.595 64.2591 7 76.9991 7H106.329C119.069 7 126.664 14.595 126.664 27.335Z\"\r\n fill=\"#6BCAFF\" />\r\n <path\r\n d=\"M81.164 36.3299C85.7645 36.3299 89.494 32.6005 89.494 27.9999C89.494 23.3994 85.7645 19.6699 81.164 19.6699C76.5635 19.6699 72.834 23.3994 72.834 27.9999C72.834 32.6005 76.5635 36.3299 81.164 36.3299Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M126.665 48.65V56.665C126.665 69.405 119.07 77 106.33 77H77C68.075 77 61.635 73.255 58.625 66.605L59.01 66.325L76.23 54.775C79.03 52.885 82.985 53.095 85.47 55.265L86.66 56.245C89.39 58.59 93.8 58.59 96.53 56.245L111.09 43.75C113.82 41.405 118.23 41.405 120.96 43.75L126.665 48.65Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"138.064\" cy=\"28.3128\" r=\"4.40042\" fill=\"#6BCAFF\" />\r\n <circle cx=\"47.8256\" cy=\"39.2409\" r=\"2.45255\" fill=\"#6BCAFF\" />\r\n <ellipse cx=\"139.183\" cy=\"61.0072\" rx=\"4.29197\" ry=\"4.59854\" fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"vm-comparison\" *ngIf=\"feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig.length\">\r\n <h5 class=\"mb-1\">Visual Merchandise Images from AI output:</h5>\r\n\r\n <div class=\"row g-0\">\r\n\r\n @for (vm of feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig; track $index) {\r\n <div class=\"p-2\" [ngClass]=\"{'col-6':showAction, 'col-12':!showAction}\">\r\n <div class=\"vm-container\" (click)=\"onClickImagePreview(cdn+vm?.vmImage)\">\r\n <div class=\"vm-img\">\r\n <img [src]=\"cdn+vm?.vmImage\" alt=\"VM Image\">\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 vm-details \">\r\n <h5>{{vm?.vmType}}</h5>\r\n <h5>{{vm?.vmName}}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"img-preview\" *ngIf=\"selectedImageForPreview\" (click)=\"closeImagePreview()\">\r\n <img [src]=\"selectedImageForPreview\" class=\"full-img\" />\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"my-6\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No response</div>\r\n <div class=\"mt-4\">No AI response found for this fixture.</div>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if (feedbackDetails?.fixtureFeedback?.answers?.[0]?.comments.length) {\r\n <div id=\"fixture-comments\">\r\n <h5 class=\"mb-2\">Comments</h5>\r\n\r\n <div class=\"log-block\"\r\n *ngFor=\"let c of feedbackDetails?.fixtureFeedback?.answers[0]?.comments;let i= index\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.timeStamp | date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n\r\n @if(c?.responsetype === 'comment'){\r\n <h5>{{c?.comment}}</h5>\r\n }@else if(c?.responsetype === 'agree'){\r\n\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'keepPlano'\">\r\n Marked as \"Keep Plano\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithPlano'\">\r\n Marked as \"Keep Plano with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'acceptAi'\">\r\n Marked as \"Accept AI\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithAi'\">\r\n Marked as \"Accept AI with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }@else if(c?.responsetype === 'disagree'){\r\n <h5>\r\n Marked as \"Redo\"\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</section>", styles: [".nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#verification-feedback{height:100%;overflow-y:auto}#verification-feedback .fixture-navigate,#verification-feedback .task-info-header{user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#verification-feedback h5{color:#1d2939;font-family:Inter;font-weight:600;font-size:12px;line-height:18px;margin:0}#verification-feedback .log-block{display:flex;gap:12px;padding:4px;margin-bottom:18px}#verification-feedback .log-block h4{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback .log-block p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085;margin:0}#verification-feedback #task-info .task-info-header{background-color:#fff!important;padding:6px;width:100%}#verification-feedback #task-info .task-info-header h2{font-weight:600;font-size:14px;line-height:20px;color:#1d2939}#verification-feedback #task-info .task-info-header p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085}#verification-feedback #fixture-quick-details .quick-edit-container{background:#f9fafb;padding:12px;border-radius:6px;width:100%;height:100%}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-quick-details .quick-edit-container .redo-btn{font-family:Inter;font-weight:600;font-size:14px;line-height:18px;color:#1d2939;cursor:pointer}#verification-feedback #fixture-quick-details .quick-edit-container h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .label{font-family:Inter;font-weight:500;font-size:14px;line-height:20px;color:#475467;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .value{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .diff .value{color:#d92d20!important;font-weight:600}#verification-feedback #fixture-quick-details .quick-edit-container .edit-input{padding:0 4px;border-radius:4px;width:50%;height:20px}#verification-feedback #fixture-comparison .wrapper{padding:12px;background:#f9fafb;border-radius:4px;height:100%}#verification-feedback #fixture-comparison .primary-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#009bf3;background:#eaf8ff;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .primary-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-comparison .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .redo-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#344054;background:#fff;border:1px solid #d0d5dd;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .redo-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison p{font-weight:400;font-size:12px;line-height:18px;color:#475467;margin:0}#verification-feedback #fixture-comparison .fixture-image{margin-bottom:12px}#verification-feedback #fixture-comparison .fixture-image img{object-fit:contain;width:100%}#verification-feedback #vm-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #vm-comparison .vm-container{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);display:flex;gap:12px;cursor:pointer}#verification-feedback #vm-comparison .vm-container .vm-img{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}#verification-feedback #vm-comparison .vm-container .vm-img img{border-radius:2px;min-width:132px;min-height:134px;object-fit:contain;width:100%;height:100%;display:block}#verification-feedback #vm-comparison .vm-container .vm-details,#verification-feedback #vm-comparison .vm-container .vm-details h5{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#verification-feedback #vm-comparison .img-preview{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:zoom-out}#verification-feedback #vm-comparison .full-img{max-width:98vw;max-height:98vh;border-radius:10px;object-fit:contain}#verification-feedback .disabled{pointer-events:none;cursor:not-allowed!important;opacity:.6}\n"] }]
|
|
310
|
+
args: [{ selector: "lib-verification-feedback", template: "<section id=\"verification-feedback\">\r\n\r\n <div *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\" id=\"task-info\" ngbAccordion #accordion=\"ngbAccordion\">\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"feedbackDetails?.taskInfoToggle\">\r\n <div ngbAccordionHeader class=\"accordion-button task-info-header\">\r\n <div ngbAccordionToggle class=\"w-100\">\r\n <h2>Fixture verification assigned</h2>\r\n <p>{{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n </div>\r\n\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"log-block\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{feedbackDetails?.fixtureFeedback?.taskData?.createdByName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.createdAt | date: 'hh:mma, dd MMM yyyy'}}\r\n </p>\r\n <h5>Assigner</h5>\r\n </div>\r\n </div>\r\n\r\n <div class=\"log-block\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4> {{feedbackDetails?.fixtureFeedback?.taskData?.userName}}</h4>\r\n <p>\r\n {{feedbackDetails?.fixtureFeedback?.taskData?.submitTime_string}}\r\n </p>\r\n <h5>Assignee</h5>\r\n </div>\r\n </div>\r\n\r\n\r\n @if (feedbackDetails?.globalComments?.length) {\r\n <h5 class=\"mb-2\">Comments</h5>\r\n <div class=\"log-block\" *ngFor=\"let c of feedbackDetails?.globalComments;let i= index\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n <h5>{{c?.comment}}</h5>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <hr *ngIf=\"feedbackDetails?.fixtureFeedback?.taskData\">\r\n\r\n <div id=\"feedback-handler\" class=\"d-flex align-items-center gap-6 my-6 px-3 fixture-navigate\">\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('previous')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n\r\n <h3 class=\"m-0\">{{planoFixture?.header?.label}}</h3>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureCategory\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureCategory | titlecase}}\r\n </span>\r\n\r\n <svg width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"#EAECF0\" />\r\n </svg>\r\n\r\n <span *ngIf=\"planoFixture?.fixtureWidth?.value\" class=\"badge inactive me-1\">\r\n {{ planoFixture.fixtureWidth.value }} {{ planoFixture.fixtureWidth?.unit ?? 'ft' }}\r\n </span>\r\n\r\n </div>\r\n\r\n <h3 *ngIf=\"showAction\" class=\"m-0 ms-auto\">\r\n {{currentFixtureIndex}}/{{totalFixtures.length}}\r\n </h3>\r\n\r\n <svg *ngIf=\"showAction\" (click)=\"onChangeFixture('next')\" class=\"cursor-pointer\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n\r\n @if( this.aiFixture?.fixtureId){\r\n <div id=\"fixture-comparison\" class=\"row g-0 my-3\">\r\n @if (showAction) {\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n @if (!isApproved && showAction) {\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditFeedback()\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickKeepPlano()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Keep plano\r\n </button>\r\n }\r\n </div>\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.725 5.80008L10 10.0084L17.275 5.80008M10 18.4001V10.0001M17.5 13.3334V6.66675C17.4997 6.37448 17.4225 6.08742 17.2763 5.83438C17.13 5.58134 16.9198 5.37122 16.6667 5.22508L10.8333 1.89175C10.58 1.74547 10.2926 1.66846 10 1.66846C9.70744 1.66846 9.42003 1.74547 9.16667 1.89175L3.33333 5.22508C3.08022 5.37122 2.86998 5.58134 2.72372 5.83438C2.57745 6.08742 2.5003 6.37448 2.5 6.66675V13.3334C2.5003 13.6257 2.57745 13.9127 2.72372 14.1658C2.86998 14.4188 3.08022 14.6289 3.33333 14.7751L9.16667 18.1084C9.42003 18.2547 9.70744 18.3317 10 18.3317C10.2926 18.3317 10.58 18.2547 10.8333 18.1084L16.6667 14.7751C16.9198 14.6289 17.13 14.4188 17.2763 14.1658C17.4225 13.9127 17.4997 13.6257 17.5 13.3334Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <h4 class=\"m-0\">Existing template </h4>\r\n <svg [ngbTooltip]=\"planoFixture?.fixtureName\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_496_31664)\">\r\n <path\r\n d=\"M10.0013 13.3337V10.0003M10.0013 6.66699H10.0096M18.3346 10.0003C18.3346 14.6027 14.6037 18.3337 10.0013 18.3337C5.39893 18.3337 1.66797 14.6027 1.66797 10.0003C1.66797 5.39795 5.39893 1.66699 10.0013 1.66699C14.6037 1.66699 18.3346 5.39795 18.3346 10.0003Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_496_31664\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'keepPlano' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithPlano' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n }\r\n </div>\r\n </div>\r\n <fixture [fixture]=\"planoFixture\" [vmList]=\"vmList\"></fixture>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4 p-2\">\r\n <div class=\"wrapper\">\r\n @if (!isApproved && showAction) {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <button class=\"btn redo-btn\" (click)=\"onClickRedo()\" [class.disabled]=\"isAIQuickEdit\">\r\n Redo\r\n </button>\r\n\r\n <button class=\"btn quick-btn ms-auto\" type=\"button\" (click)=\"onEditAIFeedback()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_228_12536)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#1D2939\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_228_12536\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n\r\n <button class=\"btn primary-btn\" type=\"button\" (click)=\"onClickAcceptAI()\"\r\n [disabled]=\"isAIQuickEdit\">\r\n Accept store response\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"mb-4\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.6504 14.6191H4.34863V10.7373C4.23826 10.7455 4.12644 10.75 4.01367 10.75C3.97137 10.75 3.92943 10.7463 3.8877 10.7451V15.8037C3.88788 16.447 4.42222 16.9883 5.09863 16.9883H14.9004C15.5768 16.9883 16.1102 16.447 16.1104 15.8037V10.7451C16.0708 10.7462 16.0311 10.75 15.9912 10.75C15.8768 10.75 15.7629 10.7449 15.6504 10.7363V14.6191ZM15.4639 3.01172H4.53418C4.48723 3.01187 4.44973 3.03776 4.43457 3.06152V3.0625L2.67871 5.80371L2.66016 5.83301C2.04768 6.82786 2.64325 8.11739 3.73438 8.26367C3.83174 8.27561 3.92224 8.28222 4.01074 8.28223C4.58889 8.28223 5.09978 8.03419 5.45605 7.64746L6.00977 7.04688L6.56152 7.64941C6.91341 8.03371 7.42301 8.28215 8.00488 8.28223C8.58433 8.28223 9.09759 8.03349 9.44922 7.64941L10.002 7.04492L10.5557 7.64941C10.9073 8.03349 11.4206 8.28223 12 8.28223C12.5792 8.2821 13.0918 8.03337 13.4434 7.64941L13.9971 7.04492L14.5498 7.64941C14.9014 8.03349 15.4147 8.28223 15.9941 8.28223C16.0791 8.28222 16.1716 8.27533 16.2676 8.26367C17.3635 8.11504 17.9623 6.8008 17.3232 5.80371L15.5645 3.0625L15.5635 3.06152C15.5483 3.03769 15.511 3.01172 15.4639 3.01172Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" />\r\n </svg>\r\n\r\n\r\n <h4>Store response </h4>\r\n\r\n @if (isApproved) {\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'acceptAi' || feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'editWithAi'\"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"8.74228e-07\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#D1FADF\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.2464 6.15839L8.27969 11.9167L6.69635 10.2251C6.40469 9.95005 5.94635 9.93339 5.61302 10.1667C5.28802 10.4084 5.19635 10.8334 5.39635 11.1751L7.27135 14.2251C7.45469 14.5084 7.77135 14.6834 8.12969 14.6834C8.47135 14.6834 8.79635 14.5084 8.97969 14.2251C9.27969 13.8334 15.0047 7.00839 15.0047 7.00839C15.7547 6.24172 14.8464 5.56672 14.2464 6.15005L14.2464 6.15839Z\"\r\n fill=\"#12B76A\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"feedbackDetails?.fixtureFeedback?.answers[0]?.userAction === 'redo' \"\r\n class=\"ms-auto\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.25065 15.8335C6.90343 15.8335 5.74704 15.396 4.78148 14.521C3.81593 13.646 3.33343 12.5557 3.33398 11.2502C3.33398 9.94461 3.81676 8.85433 4.78232 7.97933C5.74787 7.10433 6.90398 6.66683 8.25065 6.66683H13.5007L11.334 4.50016L12.5007 3.3335L16.6673 7.50016L12.5007 11.6668L11.334 10.5002L13.5007 8.3335H8.25065C7.37565 8.3335 6.6151 8.61127 5.96898 9.16683C5.32287 9.72238 5.0001 10.4168 5.00065 11.2502C5.00065 12.0835 5.32371 12.7779 5.96982 13.3335C6.61593 13.8891 7.37621 14.1668 8.25065 14.1668H14.1673V15.8335H8.25065Z\"\r\n fill=\"black\" />\r\n </svg>\r\n }@else {\r\n <svg *ngIf=\"showAction && !isAIQuickEdit\" class=\"ms-auto cursor-pointer\"\r\n (click)=\"toggleAIQuickEdit()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 15.0002H15.75M12.375 2.62517C12.6734 2.3268 13.078 2.15918 13.5 2.15918C13.7089 2.15918 13.9158 2.20033 14.1088 2.28029C14.3019 2.36024 14.4773 2.47743 14.625 2.62517C14.7727 2.77291 14.8899 2.9483 14.9699 3.14132C15.0498 3.33435 15.091 3.54124 15.091 3.75017C15.091 3.9591 15.0498 4.16599 14.9699 4.35902C14.8899 4.55204 14.7727 4.72743 14.625 4.87517L5.25 14.2502L2.25 15.0002L3 12.0002L12.375 2.62517Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n <editable-fixture [fixture]=\"aiFixture\" [editMode]=\"isAIQuickEdit\" [vmList]=\"vmList\"\r\n (onCancel)=\"onCancelAIQuickEdit()\" (onDone)=\"onSaveAIQuickEdit($event)\"\r\n (editTab)=\"onEditAIFeedback($event)\"></editable-fixture>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"p-2\" [ngClass]=\"{'col-4':showAction,'col':!showAction}\">\r\n <div class=\"wrapper\">\r\n <div class=\"mb-4\" [ngStyle]=\"{'margin-top':showAction && !isApproved ? '50px' : '12px'}\">\r\n <div class=\"d-flex align-items-center gap-2 my-4\">\r\n <h4>Store Image </h4>\r\n </div>\r\n </div>\r\n @if(cdn && aiFixture?.fixtureImage){\r\n <div class=\"fixture-image\" (click)=\"onClickImagePreview(cdn + aiFixture?.fixtureImage)\">\r\n <img [src]=\"cdn + aiFixture?.fixtureImage\" alt=\"Store response image\">\r\n </div>\r\n }@else {\r\n <div class=\"text-center my-7\">\r\n <svg width=\"186\" height=\"84\" viewBox=\"0 0 186 84\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M130.256 15.3284C140.092 15.3284 148.065 23.302 148.065 33.1379C148.065 37.2176 150.826 41.8684 154.906 41.8684H167.972C177.807 41.8687 185.781 49.8422 185.781 59.678C185.781 69.5141 177.807 77.4885 167.971 77.4885H81.3662C69.7186 77.4883 58.6349 68.4084 46.9873 68.4084H5.93652C2.65782 68.4084 0 65.7506 0 62.4719C0.000127823 59.1933 2.6579 56.5354 5.93652 56.5354H61.8728C63.0069 56.5354 63.9669 55.6929 64.2897 54.6056C64.7994 52.8892 63.6267 50.9485 61.8361 50.9485H43.6514C33.8153 50.9485 25.8418 42.974 25.8418 33.1379C25.842 23.302 33.8154 15.3284 43.6514 15.3284H130.256Z\"\r\n fill=\"#EAECF0\" />\r\n <path\r\n d=\"M126.664 27.335V48.65L120.959 43.75C118.229 41.405 113.819 41.405 111.089 43.75L96.5291 56.245C93.7991 58.59 89.3891 58.59 86.6591 56.245L85.4691 55.265C82.9841 53.095 79.0291 52.885 76.2291 54.775L59.0091 66.325L58.6241 66.605C57.3291 63.805 56.6641 60.48 56.6641 56.665V27.335C56.6641 14.595 64.2591 7 76.9991 7H106.329C119.069 7 126.664 14.595 126.664 27.335Z\"\r\n fill=\"#6BCAFF\" />\r\n <path\r\n d=\"M81.164 36.3299C85.7645 36.3299 89.494 32.6005 89.494 27.9999C89.494 23.3994 85.7645 19.6699 81.164 19.6699C76.5635 19.6699 72.834 23.3994 72.834 27.9999C72.834 32.6005 76.5635 36.3299 81.164 36.3299Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M126.665 48.65V56.665C126.665 69.405 119.07 77 106.33 77H77C68.075 77 61.635 73.255 58.625 66.605L59.01 66.325L76.23 54.775C79.03 52.885 82.985 53.095 85.47 55.265L86.66 56.245C89.39 58.59 93.8 58.59 96.53 56.245L111.09 43.75C113.82 41.405 118.23 41.405 120.96 43.75L126.665 48.65Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"138.064\" cy=\"28.3128\" r=\"4.40042\" fill=\"#6BCAFF\" />\r\n <circle cx=\"47.8256\" cy=\"39.2409\" r=\"2.45255\" fill=\"#6BCAFF\" />\r\n <ellipse cx=\"139.183\" cy=\"61.0072\" rx=\"4.29197\" ry=\"4.59854\" fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"vm-comparison\" *ngIf=\"feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig.length\">\r\n <h5 class=\"mb-1\">Visual Merchandise Images from AI output:</h5>\r\n\r\n <div class=\"row g-0\">\r\n\r\n @for (vm of feedbackDetails?.fixtureFeedback?.fixtureAIData?.vmConfig; track $index) {\r\n <div class=\"p-2\" [ngClass]=\"{'col-6':showAction, 'col-12':!showAction}\">\r\n <div class=\"vm-container\" (click)=\"onClickImagePreview(cdn+vm?.vmImage)\">\r\n <div class=\"vm-img\">\r\n <img [src]=\"cdn+vm?.vmImage\" alt=\"VM Image\">\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 vm-details \">\r\n <h5>{{vm?.vmType}}</h5>\r\n <h5>{{vm?.vmName}}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"img-preview\" *ngIf=\"selectedImageForPreview\" (click)=\"closeImagePreview()\">\r\n <img [src]=\"selectedImageForPreview\" class=\"full-img\" />\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"my-6\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No response</div>\r\n <div class=\"mt-4\">No AI response found for this fixture.</div>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if (feedbackDetails?.fixtureFeedback?.answers?.[0]?.comments.length) {\r\n <div id=\"fixture-comments\">\r\n <h5 class=\"mb-2\">Comments</h5>\r\n\r\n <div class=\"log-block\"\r\n *ngFor=\"let c of feedbackDetails?.fixtureFeedback?.answers[0]?.comments;let i= index\">\r\n <!-- User avatar -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M22.6673 23.5V21.8333C22.6673 20.9493 22.3161 20.1014 21.691 19.4763C21.0659 18.8512 20.218 18.5 19.334 18.5H12.6673C11.7833 18.5 10.9354 18.8512 10.3103 19.4763C9.68517 20.1014 9.33398 20.9493 9.33398 21.8333V23.5M19.334 11.8333C19.334 13.6743 17.8416 15.1667 16.0007 15.1667C14.1597 15.1667 12.6673 13.6743 12.6673 11.8333C12.6673 9.99238 14.1597 8.5 16.0007 8.5C17.8416 8.5 19.334 9.99238 19.334 11.8333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n\r\n <div class=\"d-flex gap-1 flex-column\">\r\n <h4>{{c?.userName}}</h4>\r\n <p>{{c?.timeStamp | date:'hh:mm:ss a - dd MMM yyyy'}}</p>\r\n </div>\r\n\r\n @if(c?.responsetype === 'comment'){\r\n <h5>{{c?.comment}}</h5>\r\n }@else if(c?.responsetype === 'agree'){\r\n\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'keepPlano'\">\r\n Marked as \"Keep Plano\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithPlano'\">\r\n Marked as \"Keep Plano with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'acceptAi'\">\r\n Marked as \"Accept AI\".\r\n </h5>\r\n <h5 *ngIf=\"feedbackDetails?.fixtureFeedback?.answers?.[0]?.userAction === 'editWithAi'\">\r\n Marked as \"Accept AI with Modification\".\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }@else if(c?.responsetype === 'disagree'){\r\n <h5>\r\n Marked as \"Redo\"\r\n </h5>\r\n <h5 *ngIf=\"c?.comment\">Note: {{c.comment}}</h5>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</section>", styles: [".nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#verification-feedback{height:100%;overflow-y:auto}#verification-feedback .fixture-navigate,#verification-feedback .task-info-header{user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#verification-feedback h5{color:#1d2939;font-family:Inter;font-weight:600;font-size:12px;line-height:18px;margin:0}#verification-feedback .log-block{display:flex;gap:12px;padding:4px;margin-bottom:18px}#verification-feedback .log-block h4{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback .log-block p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085;margin:0}#verification-feedback #task-info .task-info-header{background-color:#fff!important;padding:6px;width:100%}#verification-feedback #task-info .task-info-header h2{font-weight:600;font-size:14px;line-height:20px;color:#1d2939}#verification-feedback #task-info .task-info-header p{font-family:Inter;font-weight:400;font-size:12px;line-height:18px;color:#667085}#verification-feedback #fixture-quick-details .quick-edit-container{background:#f9fafb;padding:12px;border-radius:6px;width:100%;height:100%}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-quick-details .quick-edit-container .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-quick-details .quick-edit-container .redo-btn{font-family:Inter;font-weight:600;font-size:14px;line-height:18px;color:#1d2939;cursor:pointer}#verification-feedback #fixture-quick-details .quick-edit-container h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .label{font-family:Inter;font-weight:500;font-size:14px;line-height:20px;color:#475467;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .quick-details .value{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin-bottom:0}#verification-feedback #fixture-quick-details .quick-edit-container .diff .value{color:#d92d20!important;font-weight:600}#verification-feedback #fixture-quick-details .quick-edit-container .edit-input{padding:0 4px;border-radius:4px;width:50%;height:20px}#verification-feedback #fixture-comparison .wrapper{padding:12px;background:#f9fafb;border-radius:4px;height:100%}#verification-feedback #fixture-comparison .primary-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#009bf3;background:#eaf8ff;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .primary-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .quick-btn{font-size:13px!important;line-height:10px!important;padding:6px 8px!important;border:1px solid rgb(208,213,221);box-shadow:0 1px 2px #1018280d;background:#fff}#verification-feedback #fixture-comparison .quick-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison .redo-btn{font-weight:600;font-size:12px;padding:8px 16px;line-height:18px;border-radius:8px;color:#344054;background:#fff;border:1px solid #d0d5dd;box-shadow:0 1px 2px #1018280d}#verification-feedback #fixture-comparison .redo-btn:hover{box-shadow:0 1px 2px #10182834}#verification-feedback #fixture-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison h4{font-family:Inter;font-weight:500;font-size:16px;line-height:24px;color:#1d2939;margin:0}#verification-feedback #fixture-comparison p{font-weight:400;font-size:12px;line-height:18px;color:#475467;margin:0}#verification-feedback #fixture-comparison .fixture-image{margin-bottom:12px}#verification-feedback #fixture-comparison .fixture-image img{object-fit:contain;width:100%}#verification-feedback #vm-comparison h5{font-family:Inter;font-weight:600;font-size:14px;line-height:20px;color:#1d2939;margin:0}#verification-feedback #vm-comparison .vm-container{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);display:flex;gap:12px;cursor:pointer}#verification-feedback #vm-comparison .vm-container .vm-img{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}#verification-feedback #vm-comparison .vm-container .vm-img img{border-radius:2px;min-width:132px;min-height:134px;object-fit:contain;width:100%;height:100%;display:block}#verification-feedback #vm-comparison .vm-container .vm-details,#verification-feedback #vm-comparison .vm-container .vm-details h5{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#verification-feedback #vm-comparison .img-preview{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:zoom-out}#verification-feedback #vm-comparison .full-img{max-width:98vw;max-height:98vh;border-radius:10px;object-fit:contain}#verification-feedback .disabled{pointer-events:none;cursor:not-allowed!important;opacity:.6}\n"] }]
|
|
300
311
|
}], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.NgbModal }], propDecorators: { floorData: [{
|
|
301
312
|
type: Input
|
|
302
313
|
}], totalFixtures: [{
|
|
@@ -314,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
314
325
|
}], action: [{
|
|
315
326
|
type: Output
|
|
316
327
|
}] } });
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby92ZXJpZmljYXRpb24tZmVlZGJhY2svdmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby92ZXJpZmljYXRpb24tZmVlZGJhY2svdmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7QUFTcEcsTUFBTSxPQUFPLDZCQUE2QjtJQXVDcEI7SUFBZ0M7SUFwQzNDLFNBQVMsQ0FBTTtJQUNmLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsZUFBZSxDQUFNO0lBRXJCLEdBQUcsQ0FBUztJQUNaLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0IsTUFBTSxHQUFvQixFQUFFLENBQUM7SUFFNUIsYUFBYSxHQUFHLElBQUksWUFBWSxFQUd0QyxDQUFDO0lBRUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFM0Msb0JBQW9CLENBR2xCO0lBRUYsYUFBYSxHQUFZLElBQUksQ0FBQztJQUU5QixtQkFBbUIsQ0FBUztJQUU1QixZQUFZLENBQU07SUFDbEIsU0FBUyxD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QUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUV2QyxPQUFPLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBRzlCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQ2hDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FqV1UsNkJBQTZCOzRGQUE3Qiw2QkFBNkIscVRDckIxQyxtMDhCQXdZVTs7NEZEblhHLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSwyQkFBMkI7OEdBTzVCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUtHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25Db25maXJtUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi9hY3Rpb24tY29uZmlybS1wb3B1cC9hY3Rpb24tY29uZmlybS1wb3B1cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVm1MaWJyYXJ5TGlzdCB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL3ZtLWxpYnJhcnkuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi12ZXJpZmljYXRpb24tZmVlZGJhY2tcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3ZlcmlmaWNhdGlvbi1mZWVkYmFjay5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vdmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxyXG57XHJcbiAgQElucHV0KCkgZmxvb3JEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgdG90YWxGaXh0dXJlczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBmZWVkYmFja0RldGFpbHM6IGFueTtcclxuXHJcbiAgQElucHV0KCkgY2RuOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdm1MaXN0OiBWbUxpYnJhcnlMaXN0W10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZUZpeHR1cmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGN1cnJlbnRGaXh0dXJlOiBzdHJpbmc7XHJcbiAgICBhY3Rpb246IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiO1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgc2VsZWN0ZWRGZWVkYmFja0RhdGE6IHtcclxuICAgIGN1cnJlbnRGaXh0dXJlOiBhbnk7XHJcbiAgICBhaUZlZWRiYWNrRml4dHVyZTogYW55O1xyXG4gIH07XHJcblxyXG4gIGlzUGFnZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjdXJyZW50Rml4dHVyZUluZGV4OiBudW1iZXI7XHJcblxyXG4gIHBsYW5vRml4dHVyZTogYW55O1xyXG4gIGFpRml4dHVyZTogYW55O1xyXG5cclxuICBzZWxlY3RlZEltYWdlRm9yUHJldmlldzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGlzQUlRdWlja0VkaXQgPSBmYWxzZTtcclxuXHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuICBpbWdDRE46IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSwgcHJpdmF0ZSBuZ2JNb2RhbDogTmdiTW9kYWwpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudikgPT4gKHRoaXMuaW1nQ0ROID0gZW52LnBsYW5vZ3JhbUNETikpO1xyXG5cclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgYXMgc3RyaW5nXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGhlYWRlckRhdGE/LmNsaWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGF3YWl0IHRoaXMuZ2V0Vm1zTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiZmVlZGJhY2tEZXRhaWxzXCJdPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5vbkNhbmNlbEFJUXVpY2tFZGl0KCk7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpeHR1cmVJbmRleCA9XHJcbiAgICAgICAgdGhpcy50b3RhbEZpeHR1cmVzLmZpbmRJbmRleChcclxuICAgICAgICAgIChmOiBhbnkpID0+IGYuX2lkID09PSB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5maXh0dXJlSWRcclxuICAgICAgICApICsgMTtcclxuXHJcbiAgICAgIHRoaXMucGxhbm9GaXh0dXJlID0gc3RydWN0dXJlZENsb25lKFxyXG4gICAgICAgIHRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LkZpeHR1cmVEYXRhXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmFpRml4dHVyZSA9IHRoaXMucHJvY2Vzc0FJRml4dHVyZURhdGEoKTtcclxuICAgICAgdGhpcy51cGRhdGVWTWxpc3RXaXRoQWlEYXRhKCk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaXNBcHByb3ZlZCkge1xyXG4gICAgICAgIHRoaXMuY29tcGFyZUZpeHR1cmUodGhpcy5haUZpeHR1cmUsIHRoaXMucGxhbm9GaXh0dXJlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0FJRml4dHVyZURhdGEoKSB7XHJcbiAgICBsZXQgYWlEYXRhID0gc3RydWN0dXJlZENsb25lKHtcclxuICAgICAgLi4udGhpcy5wbGFub0ZpeHR1cmUsXHJcbiAgICAgIC4uLnRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmZpeHR1cmVBSURhdGEsXHJcbiAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgIC4uLnRoaXMucGxhbm9GaXh0dXJlLmhlYWRlcixcclxuICAgICAgICAuLi50aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5maXh0dXJlQUlEYXRhPy5oZWFkZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBhaURhdGE/LnNoZWxmQ29uZmlnPy5mb3JFYWNoKChzOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHMuc2hlbGZUeXBlID09IFwidHJheVwiICYmXHJcbiAgICAgICAgIXM/Lm9yaWdpbmFsUHJvZHVjdENvdW50ICYmXHJcbiAgICAgICAgIWFpRGF0YT8udXBkYXRlZEJ5XHJcbiAgICAgICkge1xyXG4gICAgICAgIHMub3JpZ2luYWxQcm9kdWN0Q291bnQgPSBzLnByb2R1Y3RQZXJTaGVsZjtcclxuICAgICAgICBzLnByb2R1Y3RQZXJTaGVsZiA9IE1hdGguZmxvb3Iocy5wcm9kdWN0UGVyU2hlbGYgLyBzLnRyYXlSb3dzKTtcclxuXHJcbiAgICAgICAgLy8gcy50cmF5Um93cyA9IHMudHJheVJvd3MgPT0gMCA/IDEgOiBzLnRyYXlSb3dzO1xyXG4gICAgICAgIC8vIHMucHJvZHVjdFBlclNoZWxmIDw9IDIxID8gMyA6IDc7XHJcblxyXG4gICAgICAgIC8vIHMub3JpZ2luYWxQcm9kdWN0Q291bnQgPSBzLnByb2R1Y3RQZXJTaGVsZjtcclxuICAgICAgICAvLyBzLnByb2R1Y3RQZXJTaGVsZiA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgLy8gICBzLnByb2R1Y3RQZXJTaGVsZiAvIChzLnByb2R1Y3RQZXJTaGVsZiA8PSAyMSA/IDMgOiA3KVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBzaGVsZlpvbmUgPSB0aGlzLnBsYW5vRml4dHVyZT8uc2hlbGZDb25maWcuZmluZChcclxuICAgICAgICAoc2hlbHZlOiBhbnkpID0+IHMuc2hlbGZOdW1iZXIgPT0gc2hlbHZlLnNoZWxmTnVtYmVyXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoc2hlbGZab25lKSB7XHJcbiAgICAgICAgYWlEYXRhLnNoZWxmQ29uZmlnW2luZGV4XSA9IHsgLi4uc2hlbGZab25lLCAuLi5zIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcy56b25lID0gXCJCb3R0b21cIjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYWlEYXRhO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZUZpeHR1cmUoYWlGaXh0dXJlOiBhbnksIGN1cnJlbnRGaXh0dXJlOiBhbnkpIHtcclxuICAgIGlmICghYWlGaXh0dXJlIHx8ICFjdXJyZW50Rml4dHVyZSkgcmV0dXJuO1xyXG4gICAgLyogPT09PT09PT09PT09PT09PT0gSEVBREVSID09PT09PT09PT09PT09PT09ICovXHJcbiAgICBjb25zdCBhaUhlYWRlciA9IChhaUZpeHR1cmUuaGVhZGVyPy5sYWJlbCA/PyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGN1ckhlYWRlciA9IChjdXJyZW50Rml4dHVyZS5oZWFkZXI/LmxhYmVsID8/IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGFpRml4dHVyZS5oZWFkZXIuaXNEaWZmZXJlbnQgPSBhaUhlYWRlciAhPT0gY3VySGVhZGVyO1xyXG5cclxuICAgIC8qID09PT09PT09PT09PT09PT09IFNIRUxWRVMgPT09PT09PT09PT09PT09PT0gKi9cclxuICAgIGNvbnN0IGN1cnJlbnRTaGVsZk1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KFxyXG4gICAgICAoY3VycmVudEZpeHR1cmUuc2hlbGZDb25maWcgPz8gW10pLm1hcCgoczogYW55KSA9PiBbcy5zaGVsZk51bWJlciwgc10pXHJcbiAgICApO1xyXG5cclxuICAgIChhaUZpeHR1cmUuc2hlbGZDb25maWcgPz8gW10pLmZvckVhY2goKGFpU2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICBhaVNoZWxmLmlzRGlmZmVyZW50ID0gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBjdXJTaGVsZiA9IGN1cnJlbnRTaGVsZk1hcC5nZXQoYWlTaGVsZi5zaGVsZk51bWJlcik7XHJcbiAgICAgIGlmICghY3VyU2hlbGYpIHtcclxuICAgICAgICBhaVNoZWxmLmlzRGlmZmVyZW50ID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBhaVNoZWxmLnNoZWxmVHlwZSAhPT0gY3VyU2hlbGYuc2hlbGZUeXBlIHx8XHJcbiAgICAgICAgYWlTaGVsZi5wcm9kdWN0UGVyU2hlbGYgIT09IGN1clNoZWxmLnByb2R1Y3RQZXJTaGVsZiB8fFxyXG4gICAgICAgIGFpU2hlbGYudHJheVJvd3MgIT09IGN1clNoZWxmLnRyYXlSb3dzXHJcbiAgICAgICkge1xyXG4gICAgICAgIGFpU2hlbGYuaXNEaWZmZXJlbnQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiA9PT09PT09PT09PT09PT09PSBWTXMgPT09PT09PT09PT09PT09PT0gKi9cclxuICAgIGNvbnN0IHZtS2V5ID0gKHY6IGFueSkgPT5cclxuICAgICAgYCR7di52bVR5cGV9fCR7di52bU5hbWV9fCR7di5zdGFydFlQb3NpdGlvbn18JHt2LmVuZFlQb3NpdGlvbn1gXHJcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAudHJpbSgpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRWTVNldCA9IG5ldyBTZXQoKGN1cnJlbnRGaXh0dXJlLnZtQ29uZmlnID8/IFtdKS5tYXAodm1LZXkpKTtcclxuXHJcbiAgICAoYWlGaXh0dXJlLnZtQ29uZmlnID8/IFtdKS5mb3JFYWNoKChhaVZNOiBhbnkpID0+IHtcclxuICAgICAgYWlWTS5pc0RpZmZlcmVudCA9ICFjdXJyZW50Vk1TZXQuaGFzKHZtS2V5KGFpVk0pKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVk1saXN0V2l0aEFpRGF0YSgpIHtcclxuICAgIHRoaXMuYWlGaXh0dXJlPy52bUNvbmZpZz8uZm9yRWFjaCgoYWlWbTogYW55KSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiQEAgfiBhaVZtOlwiLCBhaVZtKTtcclxuXHJcbiAgICAgIGNvbnN0IHZtSW5MaXN0ID0gdGhpcy52bUxpc3QuZmluZChcclxuICAgICAgICAodm0pID0+IHZtLm5hbWUgPT09IGFpVm0/LnZtTmFtZSAmJiB2bS50eXBlID09PSBhaVZtPy52bVR5cGVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh2bUluTGlzdCkge1xyXG4gICAgICAgIC8vIHZtSW5MaXN0LmlkID0gYWlWbS52bU5hbWU7XHJcbiAgICAgICAgaWYgKGFpVm0/LnZtSW1hZ2UpIHtcclxuICAgICAgICAgIHZtSW5MaXN0LmltZ1VybCA9IGAke3RoaXMuaW1nQ0ROfSR7YWlWbS52bUltYWdlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudm1MaXN0LnB1c2goe1xyXG4gICAgICAgICAgaWQ6IGFpVm0udm1OYW1lLFxyXG4gICAgICAgICAgbmFtZTogYWlWbS52bU5hbWUsXHJcbiAgICAgICAgICBkaXNwbGF5TmFtZTogYWlWbS52bU5hbWUgKyAoYWlWbT8udm1UeXBlID8gYCgke2FpVm0udm1UeXBlfSlgIDogXCJcIiksXHJcbiAgICAgICAgICB3aWR0aDogMTAwLFxyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAsXHJcbiAgICAgICAgICB0eXBlOiBhaVZtLnZtVHlwZSxcclxuICAgICAgICAgIC4uLihhaVZtLnZtSW1hZ2UgPyB7IGltZ1VybDogYCR7dGhpcy5pbWdDRE59JHthaVZtLnZtSW1hZ2V9YCB9IDoge30pLFxyXG4gICAgICAgIH0gYXMgYW55KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBcHByb3ZlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hcHByb3ZhbFN0YXR1cyA9PT0gXCJhcHByb3ZlZFwiO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VGaXh0dXJlKGNoYW5nZTogXCJuZXh0XCIgfCBcInByZXZpb3VzXCIpIHtcclxuICAgIHRoaXMuY2hhbmdlRml4dHVyZS5lbWl0KHtcclxuICAgICAgY3VycmVudEZpeHR1cmU6IHRoaXMuZmVlZGJhY2tEZXRhaWxzLmZpeHR1cmVGZWVkYmFjay5maXh0dXJlSWQsXHJcbiAgICAgIGFjdGlvbjogY2hhbmdlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uQ2FuY2VsQUlRdWlja0VkaXQoKTtcclxuICAgIC8vIHRoaXMub25DYW5jZWxQbGFub1F1aWNrRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25DbGlja0tlZXBQbGFubygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybUFjdGlvbihcImtlZXBQbGFub1wiKTtcclxuICAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSBcIm5vdE9rXCIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLmVtaXQoe1xyXG4gICAgICAgIGFjdGlvbjogXCJrZWVwUGxhbm9cIixcclxuICAgICAgICB0eXBlOiBcImFncmVlXCIsXHJcbiAgICAgICAgZml4dHVyZURhdGE6IHRoaXMucGxhbm9GaXh0dXJlLFxyXG4gICAgICAgIGZlZWRiYWNrOiB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrLFxyXG4gICAgICAgIHJlbWFya3M6IHJlc3VsdD8ucmVtYXJrLFxyXG4gICAgICAgIHBsYW5vSWQ6IHRoaXMuZmxvb3JEYXRhLnBsYW5vSWQsXHJcbiAgICAgICAgZmxvb3JJZDogdGhpcy5mbG9vckRhdGEuX2lkLFxyXG4gICAgICAgIHRhc2tUeXBlOiBcImZpeHR1cmVcIixcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkBAIH4gb25DbGlja0tlZXBQbGFubyBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2xpY2tBY2NlcHRBSSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybUFjdGlvbihcImFjY2VwdEFJXCIpO1xyXG4gICAgICBpZiAocmVzdWx0Py5hY3Rpb24gPT09IFwibm90T2tcIikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgYWN0aW9uOiBcImFjY2VwdEFpXCIsXHJcbiAgICAgICAgdHlwZTogXCJhZ3JlZVwiLFxyXG4gICAgICAgIGZpeHR1cmVEYXRhOiB0aGlzLmFpRml4dHVyZSxcclxuICAgICAgICBmZWVkYmFjazogdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjayxcclxuICAgICAgICByZW1hcmtzOiByZXN1bHQ/LnJlbWFyayxcclxuICAgICAgICBwbGFub0lkOiB0aGlzLmZsb29yRGF0YS5wbGFub0lkLFxyXG4gICAgICAgIGZsb29ySWQ6IHRoaXMuZmxvb3JEYXRhLl9pZCxcclxuICAgICAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IG9uQ2xpY2tBY2NlcHRBSSBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2xpY2tSZWRvKCkge1xyXG4gICAgaWYgKHRoaXMuaXNBSVF1aWNrRWRpdCkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybUFjdGlvbihcInJlZG9cIik7XHJcbiAgICAgIGlmIChyZXN1bHQ/LmFjdGlvbiA9PT0gXCJub3RPa1wiKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi5lbWl0KHtcclxuICAgICAgICBhY3Rpb246IFwicmVkb1wiLFxyXG4gICAgICAgIHR5cGU6IFwiZGlzYWdyZWVcIixcclxuICAgICAgICBmaXh0dXJlRGF0YTogbnVsbCxcclxuICAgICAgICBmZWVkYmFjazogdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjayxcclxuICAgICAgICByZW1hcms6IHJlc3VsdCxcclxuICAgICAgICBwbGFub0lkOiB0aGlzLmZsb29yRGF0YS5wbGFub0lkLFxyXG4gICAgICAgIGZsb29ySWQ6IHRoaXMuZmxvb3JEYXRhLl9pZCxcclxuICAgICAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IG9uQ2xpY2tSZWRvIFtFUlJdOlwiLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRBSUZlZWRiYWNrKGRhdGFUb0VkaXQ/OiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aW9uLmVtaXQoe1xyXG4gICAgICBhY3Rpb246IFwiZWRpdFdpdGhBaVwiLFxyXG4gICAgICB0eXBlOiBcImFncmVlXCIsXHJcbiAgICAgIGZpeHR1cmVEYXRhOiBkYXRhVG9FZGl0Py5maXh0dXJlRGF0YSA/PyB0aGlzLmFpRml4dHVyZSxcclxuICAgICAgZmVlZGJhY2s6IHRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2ssXHJcbiAgICAgIHBsYW5vSWQ6IHRoaXMuZmxvb3JEYXRhLnBsYW5vSWQsXHJcbiAgICAgIGZsb29ySWQ6IHRoaXMuZmxvb3JEYXRhLl9pZCxcclxuICAgICAgdGFza1R5cGU6IFwiZml4dHVyZVwiLFxyXG4gICAgICB0YWI6IGRhdGFUb0VkaXQ/LnRhYixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQUlRdWlja0VkaXQoKSB7XHJcbiAgICB0aGlzLmlzQUlRdWlja0VkaXQgPSAhdGhpcy5pc0FJUXVpY2tFZGl0O1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWxBSVF1aWNrRWRpdCgpIHtcclxuICAgIHRoaXMuaXNBSVF1aWNrRWRpdCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TYXZlQUlRdWlja0VkaXQobmV3QWlEYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybUFjdGlvbihcImFjY2VwdEFJXCIpO1xyXG4gICAgICBpZiAocmVzdWx0Py5hY3Rpb24gPT09IFwibm90T2tcIikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5haUZpeHR1cmUgPSBzdHJ1Y3R1cmVkQ2xvbmUobmV3QWlEYXRhKTtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLmVtaXQoe1xyXG4gICAgICAgIGFjdGlvbjogXCJhY2NlcHRBaVwiLFxyXG4gICAgICAgIHR5cGU6IFwiYWdyZWVcIixcclxuICAgICAgICBmaXh0dXJlRGF0YTogdGhpcy5haUZpeHR1cmUsXHJcbiAgICAgICAgZmVlZGJhY2s6IHRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2ssXHJcbiAgICAgICAgcmVtYXJrczogcmVzdWx0Py5yZW1hcmssXHJcbiAgICAgICAgcGxhbm9JZDogdGhpcy5mbG9vckRhdGEucGxhbm9JZCxcclxuICAgICAgICBmbG9vcklkOiB0aGlzLmZsb29yRGF0YS5faWQsXHJcbiAgICAgICAgdGFza1R5cGU6IFwiZml4dHVyZVwiLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuaXNBSVF1aWNrRWRpdCA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IG9uU2F2ZUFJUXVpY2tFZGl0IFtFUlJdOlwiLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb25maXJtQWN0aW9uKFxyXG4gICAgdHlwZTogXCJyZWRvXCIgfCBcImFjY2VwdEFJXCIgfCBcImtlZXBQbGFub1wiXHJcbiAgKTogUHJvbWlzZTx7IGFjdGlvbjogc3RyaW5nOyByZW1hcms6IHN0cmluZyB8IG51bGwgfSB8IG51bGw+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKEFjdGlvbkNvbmZpcm1Qb3B1cENvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHNpemU6IFwibWRcIixcclxuICAgICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG5cclxuICAgICAgcmV0dXJuIGF3YWl0IG1vZGVsUmVmLnJlc3VsdC50aGVuPHtcclxuICAgICAgICBhY3Rpb246IHN0cmluZztcclxuICAgICAgICByZW1hcms6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgIH0+KChyZXN1bHQpID0+IHJlc3VsdCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tJbWFnZVByZXZpZXcoaW1nVXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZUZvclByZXZpZXcgPSBpbWdVcmw7XHJcbiAgfVxyXG5cclxuICBjbG9zZUltYWdlUHJldmlldygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZUZvclByZXZpZXcgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBGaXh0dXJlUXVpY2tEZXRhaWwge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBlZGl0YWJsZTogYm9vbGVhbjtcclxuICBpc0RpZmZlcmVudD86IGJvb2xlYW47XHJcblxyXG4gIG1ldGE/OiB7XHJcbiAgICB0eXBlOiBcImZpeHR1cmVcIiB8IFwic2hlbGZcIiB8IFwidHJheVwiO1xyXG4gICAgc2hlbGZOdW1iZXI/OiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG4iLCI8c2VjdGlvbiBpZD1cInZlcmlmaWNhdGlvbi1mZWVkYmFja1wiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8udGFza0RhdGFcIiBpZD1cInRhc2staW5mb1wiIG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc1wiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2tEZXRhaWxzPy50YXNrSW5mb1RvZ2dsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkhlYWRlciBjbGFzcz1cImFjY29yZGlvbi1idXR0b24gdGFzay1pbmZvLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Ub2dnbGUgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMj5GaXh0dXJlIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8udGFza0RhdGE/LmNyZWF0ZWRBdCB8IGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNjY3MyAyMy41VjIxLjgzMzNDMjIuNjY3MyAyMC45NDkzIDIyLjMxNjEgMjAuMTAxNCAyMS42OTEgMTkuNDc2M0MyMS4wNjU5IDE4Ljg1MTIgMjAuMjE4IDE4LjUgMTkuMzM0IDE4LjVIMTIuNjY3M0MxMS43ODMzIDE4LjUgMTAuOTM1NCAxOC44NTEyIDEwLjMxMDMgMTkuNDc2M0M5LjY4NTE3IDIwLjEwMTQgOS4zMzM5OCAyMC45NDkzIDkuMzMzOTggMjEuODMzM1YyMy41TTE5LjMzNCAxMS44MzMzQzE5LjMzNCAxMy42NzQzIDE3Ljg0MTYgMTUuMTY2NyAxNi4wMDA3IDE1LjE2NjdDMTQuMTU5NyAxNS4xNjY3IDEyLjY2NzMgMTMuNjc0MyAxMi42NjczIDExLjgzMzNDMTIuNjY3MyA5Ljk5MjM4IDE0LjE1OTcgOC41IDE2LjAwMDcgOC41QzE3Ljg0MTYgOC41IDE5LjMzNCA5Ljk5MjM4IDE5LjMzNCAxMS44MzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTEgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfCBkYXRlOiAnaGg6bW1hLCBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+QXNzaWduZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVc2VyIGF2YXRhciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIyLjY2NzMgMjMuNVYyMS44MzMzQzIyLjY2NzMgMjAuOTQ5MyAyMi4zMTYxIDIwLjEwMTQgMjEuNjkxIDE5LjQ3NjNDMjEuMDY1OSAxOC44NTEyIDIwLjIxOCAxOC41IDE5LjMzNCAxOC41SDEyLjY2NzNDMTEuNzgzMyAxOC41IDEwLjkzNTQgMTguODUxMiAxMC4zMTAzIDE5LjQ3NjNDOS42ODUxNyAyMC4xMDE0IDkuMzMzOTggMjAuOTQ5MyA5LjMzMzk4IDIxLjgzMzNWMjMuNU0xOS4zMzQgMTEuODMzM0MxOS4zMzQgMTMuNjc0MyAxNy44NDE2IDE1LjE2NjcgMTYuMDAwNyAxNS4xNjY3QzE0LjE1OTcgMTUuMTY2NyAxMi42NjczIDEzLjY3NDMgMTIuNjY3MyAxMS44MzMzQzEyLjY2NzMgOS45OTIzOCAxNC4xNTk3IDguNSAxNi4wMDA3IDguNUMxNy44NDE2IDguNSAxOS4zMzQgOS45OTIzOCAxOS4zMzQgMTEuODMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PiB7e2ZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhPy5zdWJtaXRUaW1lX3N0cmluZ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5Bc3NpZ25lZTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmZWVkYmFja0RldGFpbHM/Lmdsb2JhbENvbW1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTJcIj5Db21tZW50czwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nLWJsb2NrXCIgKm5nRm9yPVwibGV0IGMgb2YgZmVlZGJhY2tEZXRhaWxzPy5nbG9iYWxDb21tZW50cztsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNjY3MyAyMy41VjIxLjgzMzNDMjIuNjY3MyAyMC45NDkzIDIyLjMxNjEgMjAuMTAxNCAyMS42OTEgMTkuNDc2M0MyMS4wNjU5IDE4Ljg1MTIgMjAuMjE4IDE4LjUgMTkuMzM0IDE4LjVIMTIuNjY3M0MxMS43ODMzIDE4LjUgMTAuOTM1NCAxOC44NTEyIDEwLjMxMDMgMTkuNDc2M0M5LjY4NTE3IDIwLjEwMTQgOS4zMzM5OCAyMC45NDkzIDkuMzMzOTggMjEuODMzM1YyMy41TTE5LjMzNCAxMS44MzMzQzE5LjMzNCAxMy42NzQzIDE3Ljg0MTYgMTUuMTY2NyAxNi4wMDA3IDE1LjE2NjdDMTQuMTU5NyAxNS4xNjY3IDEyLjY2NzMgMTMuNjc0MyAxMi42NjczIDExLjgzMzNDMTIuNjY3MyA5Ljk5MjM4IDE0LjE1OTcgOC41IDE2LjAwMDcgOC41QzE3Ljg0MTYgOC41IDE5LjMzNCA5Ljk5MjM4IDE5LjMzNCAxMS44MzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e2M/LnVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e2M/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57e2M/LmNvbW1lbnR9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8udGFza0RhdGFcIj5cclxuXHJcbiAgICA8ZGl2IGlkPVwiZmVlZGJhY2staGFuZGxlclwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtNiBteS02IHB4LTMgZml4dHVyZS1uYXZpZ2F0ZVwiPlxyXG4gICAgICAgIDxzdmcgKm5nSWY9XCJzaG93QWN0aW9uXCIgKGNsaWNrKT1cIm9uQ2hhbmdlRml4dHVyZSgncHJldmlvdXMnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiIzFEMjkzOVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuXHJcblxyXG4gICAgICAgIDxoMyBjbGFzcz1cIm0tMFwiPnt7cGxhbm9GaXh0dXJlPy5oZWFkZXI/LmxhYmVsfX08L2gzPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgdmlld0JveD1cIjAgMCA1IDVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIyLjVcIiBjeT1cIjIuNVwiIHI9XCIyLjVcIiBmaWxsPVwiI0VBRUNGMFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwbGFub0ZpeHR1cmU/LmZpeHR1cmVDYXRlZ29yeVwiIGNsYXNzPVwiYmFkZ2UgaW5hY3RpdmUgbWUtMVwiPlxyXG4gICAgICAgICAgICAgICAge3sgcGxhbm9GaXh0dXJlLmZpeHR1cmVDYXRlZ29yeSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIHZpZXdCb3g9XCIwIDAgNSA1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMi41XCIgY3k9XCIyLjVcIiByPVwiMi41XCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGxhbm9GaXh0dXJlPy5maXh0dXJlV2lkdGg/LnZhbHVlXCIgY2xhc3M9XCJiYWRnZSBpbmFjdGl2ZSBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBwbGFub0ZpeHR1cmUuZml4dHVyZVdpZHRoLnZhbHVlIH19IHt7IHBsYW5vRml4dHVyZS5maXh0dXJlV2lkdGg/LnVuaXQgPz8gJ2Z0JyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aDMgKm5nSWY9XCJzaG93QWN0aW9uXCIgY2xhc3M9XCJtLTAgbXMtYXV0b1wiPlxyXG4gICAgICAgICAgICB7e2N1cnJlbnRGaXh0dXJlSW5kZXh9fS97e3RvdGFsRml4dHVyZXMubGVuZ3RofX1cclxuICAgICAgICA8L2gzPlxyXG5cclxuICAgICAgICA8c3ZnICpuZ0lmPVwic2hvd0FjdGlvblwiIChjbGljayk9XCJvbkNoYW5nZUZpeHR1cmUoJ25leHQnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjMUQyOTM5XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiggdGhpcy5haUZpeHR1cmU/LmZpeHR1cmVJZCl7XHJcbiAgICAgICAgPGRpdiBpZD1cImZpeHR1cmUtY29tcGFyaXNvblwiIGNsYXNzPVwicm93IGctMCBteS0zXCI+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0FjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaXNBcHByb3ZlZCAmJiBzaG93QWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBwcmltYXJ5LWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGlja0tlZXBQbGFubygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzQUlRdWlja0VkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VlcCBwbGFub1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yICBteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNzI1IDUuODAwMDhMMTAgMTAuMDA4NEwxNy4yNzUgNS44MDAwOE0xMCAxOC40MDAxVjEwLjAwMDFNMTcuNSAxMy4zMzM0VjYuNjY2NzVDMTcuNDk5NyA2LjM3NDQ4IDE3LjQyMjUgNi4wODc0MiAxNy4yNzYzIDUuODM0MzhDMTcuMTMgNS41ODEzNCAxNi45MTk4IDUuMzcxMjIgMTYuNjY2NyA1LjIyNTA4TDEwLjgzMzMgMS44OTE3NUMxMC41OCAxLjc0NTQ3IDEwLjI5MjYgMS42Njg0NiAxMCAxLjY2ODQ2QzkuNzA3NDQgMS42Njg0NiA5LjQyMDAzIDEuNzQ1NDcgOS4xNjY2NyAxLjg5MTc1TDMuMzMzMzMgNS4yMjUwOEMzLjA4MDIyIDUuMzcxMjIgMi44Njk5OCA1LjU4MTM0IDIuNzIzNzIgNS44MzQzOEMyLjU3NzQ1IDYuMDg3NDIgMi41MDAzIDYuMzc0NDggMi41IDYuNjY2NzVWMTMuMzMzNEMyLjUwMDMgMTMuNjI1NyAyLjU3NzQ1IDEzLjkxMjcgMi43MjM3MiAxNC4xNjU4QzIuODY5OTggMTQuNDE4OCAzLjA4MDIyIDE0LjYyODkgMy4zMzMzMyAxNC43NzUxTDkuMTY2NjcgMTguMTA4NEM5LjQyMDAzIDE4LjI1NDcgOS43MDc0NCAxOC4zMzE3IDEwIDE4LjMzMTdDMTAuMjkyNiAxOC4zMzE3IDEwLjU4IDE4LjI1NDcgMTAuODMzMyAxOC4xMDg0TDE2LjY2NjcgMTQuNzc1MUMxNi45MTk4IDE0LjYyODkgMTcuMTMgMTQuNDE4OCAxNy4yNzYzIDE0LjE2NThDMTcuNDIyNSAxMy45MTI3IDE3LjQ5OTcgMTMuNjI1NyAxNy41IDEzLjMzMzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm0tMFwiPkV4aXN0aW5nIHRlbXBsYXRlIDwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nYlRvb2x0aXBdPVwicGxhbm9GaXh0dXJlPy5maXh0dXJlTmFtZVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQ5Nl8zMTY2NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMTMgMTMuMzMzN1YxMC4wMDAzTTEwLjAwMTMgNi42NjY5OUgxMC4wMDk2TTE4LjMzNDYgMTAuMDAwM0MxOC4zMzQ2IDE0LjYwMjcgMTQuNjAzNyAxOC4zMzM3IDEwLjAwMTMgMTguMzMzN0M1LjM5ODkzIDE4LjMzMzcgMS42Njc5NyAxNC42MDI3IDEuNjY3OTcgMTAuMDAwM0MxLjY2Nzk3IDUuMzk3OTUgNS4zOTg5MyAxLjY2Njk5IDEwLjAwMTMgMS42NjY5OUMxNC42MDM3IDEuNjY2OTkgMTguMzM0NiA1LjM5Nzk1IDE4LjMzNDYgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80OTZfMzE2NjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNBcHByb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdrZWVwUGxhbm8nIHx8IGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy51c2VyQWN0aW9uID09PSAnZWRpdFdpdGhQbGFubycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0b1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiOC43NDIyOGUtMDdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNEMUZBREZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMjQ2NCA2LjE1ODM5TDguMjc5NjkgMTEuOTE2N0w2LjY5NjM1IDEwLjIyNTFDNi40MDQ2OSA5Ljk1MDA1IDUuOTQ2MzUgOS45MzMzOSA1LjYxMzAyIDEwLjE2NjdDNS4yODgwMiAxMC40MDg0IDUuMTk2MzUgMTAuODMzNCA1LjM5NjM1IDExLjE3NTFMNy4yNzEzNSAxNC4yMjUxQzcuNDU0NjkgMTQuNTA4NCA3Ljc3MTM1IDE0LjY4MzQgOC4xMjk2OSAxNC42ODM0QzguNDcxMzUgMTQuNjgzNCA4Ljc5NjM1IDE0LjUwODQgOC45Nzk2OSAxNC4yMjUxQzkuMjc5NjkgMTMuODMzNCAxNS4wMDQ3IDcuMDA4MzkgMTUuMDA0NyA3LjAwODM5QzE1Ljc1NDcgNi4yNDE3MiAxNC44NDY0IDUuNTY2NzIgMTQuMjQ2NCA2LjE1MDA1TDE0LjI0NjQgNi4xNTgzOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zml4dHVyZSBbZml4dHVyZV09XCJwbGFub0ZpeHR1cmVcIiBbdm1MaXN0XT1cInZtTGlzdFwiPjwvZml4dHVyZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0FwcHJvdmVkICYmIHNob3dBY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biByZWRvLWJ0blwiIChjbGljayk9XCJvbkNsaWNrUmVkbygpXCIgW2NsYXNzLmRpc2FibGVkXT1cImlzQUlRdWlja0VkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHF1aWNrLWJ0biBtcy1hdXRvXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkVkaXRBSUZlZWRiYWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBSVF1aWNrRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIyOF8xMjUzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2MDIgMy4zMzMySDMuMzMyNjhDMi44OTA2NSAzLjMzMzIgMi40NjY3MyAzLjUwODc5IDIuMTU0MTcgMy44MjEzNUMxLjg0MTYxIDQuMTMzOTEgMS42NjYwMiA0LjU1Nzg0IDEuNjY2MDIgNC45OTk4NlYxNi42NjY1QzEuNjY2MDIgMTcuMTA4NiAxLjg0MTYxIDE3LjUzMjUgMi4xNTQxNyAxNy44NDVDMi40NjY3MyAxOC4xNTc2IDIuODkwNjUgMTguMzMzMiAzLjMzMjY4IDE4LjMzMzJIMTQuOTk5M0MxNS40NDE0IDE4LjMzMzIgMTUuODY1MyAxOC4xNTc2IDE2LjE3NzkgMTcuODQ1QzE2LjQ5MDQgMTcuNTMyNSAxNi42NjYgMTcuMTA4NiAxNi42NjYgMTYuNjY2NVYxMC44MzMyTTE1LjQxNiAyLjA4MzJDMTUuNzQ3NSAxLjc1MTY4IDE2LjE5NzIgMS41NjU0MyAxNi42NjYgMS41NjU0M0MxNy4xMzQ5IDEuNTY1NDMgMTcuNTg0NSAxLjc1MTY4IDE3LjkxNiAyLjA4MzJDMTguMjQ3NSAyLjQxNDcyIDE4LjQzMzggMi44NjQzNiAxOC40MzM4IDMuMzMzMkMxOC40MzM4IDMuODAyMDQgMTguMjQ3NSA0LjI1MTY4IDE3LjkxNiA0LjU4MzJMOS45OTkzNSAxMi40OTk5TDYuNjY2MDIgMTMuMzMzMkw3LjQ5OTM1IDkuOTk5ODZMMTUuNDE2IDIuMDgzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMUQyOTM5XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMjhfMTI1MzZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBwcmltYXJ5LWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGlja0FjY2VwdEFJKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBSVF1aWNrRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgc3RvcmUgcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgIG15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuNjUwNCAxNC42MTkxSDQuMzQ4NjNWMTAuNzM3M0M0LjIzODI2IDEwLjc0NTUgNC4xMjY0NCAxMC43NSA0LjAxMzY3IDEwLjc1QzMuOTcxMzcgMTAuNzUgMy45Mjk0MyAxMC43NDYzIDMuODg3NyAxMC43NDUxVjE1LjgwMzdDMy44ODc4OCAxNi40NDcgNC40MjIyMiAxNi45ODgzIDUuMDk4NjMgMTYuOTg4M0gxNC45MDA0QzE1LjU3NjggMTYuOTg4MyAxNi4xMTAyIDE2LjQ0NyAxNi4xMTA0IDE1LjgwMzdWMTAuNzQ1MUMxNi4wNzA4IDEwLjc0NjIgMTYuMDMxMSAxMC43NSAxNS45OTEyIDEwLjc1QzE1Ljg3NjggMTAuNzUgMTUuNzYyOSAxMC43NDQ5IDE1LjY1MDQgMTAuNzM2M1YxNC42MTkxWk0xNS40NjM5IDMuMDExNzJINC41MzQxOEM0LjQ4NzIzIDMuMDExODcgNC40NDk3MyAzLjAzNzc2IDQuNDM0NTcgMy4wNjE1MlYzLjA2MjVMMi42Nzg3MSA1LjgwMzcxTDIuNjYwMTYgNS44MzMwMUMyLjA0NzY4IDYuODI3ODYgMi42NDMyNSA4LjExNzM5IDMuNzM0MzggOC4yNjM2N0MzLjgzMTc0IDguMjc1NjEgMy45MjIyNCA4LjI4MjIyIDQuMDEwNzQgOC4yODIyM0M0LjU4ODg5IDguMjgyMjMgNS4wOTk3OCA4LjAzNDE5IDUuNDU2MDUgNy42NDc0Nkw2LjAwOTc3IDcuMDQ2ODhMNi41NjE1MiA3LjY0OTQxQzYuOTEzNDEgOC4wMzM3MSA3LjQyMzAxIDguMjgyMTUgOC4wMDQ4OCA4LjI4MjIzQzguNTg0MzMgOC4yODIyMyA5LjA5NzU5IDguMDMzNDkgOS40NDkyMiA3LjY0OTQxTDEwLjAwMiA3LjA0NDkyTDEwLjU1NTcgNy42NDk0MUMxMC45MDczIDguMDMzNDkgMTEuNDIwNiA4LjI4MjIzIDEyIDguMjgyMjNDMTIuNTc5MiA4LjI4MjEgMTMuMDkxOCA4LjAzMzM3IDEzLjQ0MzQgNy42NDk0MUwxMy45OTcxIDcuMDQ0OTJMMTQuNTQ5OCA3LjY0OTQxQzE0LjkwMTQgOC4wMzM0OSAxNS40MTQ3IDguMjgyMjMgMTUuOTk0MSA4LjI4MjIzQzE2LjA3OTEgOC4yODIyMiAxNi4xNzE2IDguMjc1MzMgMTYuMjY3NiA4LjI2MzY3QzE3LjM2MzUgOC4xMTUwNCAxNy45NjIzIDYuODAwOCAxNy4zMjMyIDUuODAzNzFMMTUuNTY0NSAzLjA2MjVMMTUuNTYzNSAzLjA2MTUyQzE1LjU0ODMgMy4wMzc2OSAxNS41MTEgMy4wMTE3MiAxNS40NjM5IDMuMDExNzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlN0b3JlIHJlc3BvbnNlIDwvaDQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNBcHByb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdhY2NlcHRBaScgfHwgZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdlZGl0V2l0aEFpJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG9cIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjguNzQyMjhlLTA3XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRDFGQURGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjI0NjQgNi4xNTgzOUw4LjI3OTY5IDExLjkxNjdMNi42OTYzNSAxMC4yMjUxQzYuNDA0NjkgOS45NTAwNSA1Ljk0NjM1IDkuOTMzMzkgNS42MTMwMiAxMC4xNjY3QzUuMjg4MDIgMTAuNDA4NCA1LjE5NjM1IDEwLjgzMzQgNS4zOTYzNSAxMS4xNzUxTDcuMjcxMzUgMTQuMjI1MUM3LjQ1NDY5IDE0LjUwODQgNy43NzEzNSAxNC42ODM0IDguMTI5NjkgMTQuNjgzNEM4LjQ3MTM1IDE0LjY4MzQgOC43OTYzNSAxNC41MDg0IDguOTc5NjkgMTQuMjI1MUM5LjI3OTY5IDEzLjgzMzQgMTUuMDA0NyA3LjAwODM5IDE1LjAwNDcgNy4wMDgzOUMxNS43NTQ3IDYuMjQxNzIgMTQuODQ2NCA1LjU2NjcyIDE0LjI0NjQgNi4xNTAwNUwxNC4yNDY0IDYuMTU4MzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy51c2VyQWN0aW9uID09PSAncmVkbycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0b1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yNTA2NSAxNS44MzM1QzYuOTAzNDMgMTUuODMzNSA1Ljc0NzA0IDE1LjM5NiA0Ljc4MTQ4IDE0LjUyMUMzLjgxNTkzIDEzLjY0NiAzLjMzMzQzIDEyLjU1NTcgMy4zMzM5OCAxMS4yNTAyQzMuMzMzOTggOS45NDQ2MSAzLjgxNjc2IDguODU0MzMgNC43ODIzMiA3Ljk3OTMzQzUuNzQ3ODcgNy4xMDQzMyA2LjkwMzk4IDYuNjY2ODMgOC4yNTA2NSA2LjY2NjgzSDEzLjUwMDdMMTEuMzM0IDQuNTAwMTZMMTIuNTAwNyAzLjMzMzVMMTYuNjY3MyA3LjUwMDE2TDEyLjUwMDcgMTEuNjY2OEwxMS4zMzQgMTAuNTAwMkwxMy41MDA3IDguMzMzNUg4LjI1MDY1QzcuMzc1NjUgOC4zMzM1IDYuNjE1MSA4LjYxMTI3IDUuOTY4OTggOS4xNjY4M0M1LjMyMjg3IDkuNzIyMzggNS4wMDAxIDEwLjQxNjggNS4wMDA2NSAxMS4yNTAyQzUuMDAwNjUgMTIuMDgzNSA1LjMyMzcxIDEyLjc3NzkgNS45Njk4MiAxMy4zMzM1QzYuNjE1OTMgMTMuODg5MSA3LjM3NjIxIDE0LjE2NjggOC4yNTA2NSAxNC4xNjY4SDE0LjE2NzNWMTUuODMzNUg4LjI1MDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNob3dBY3Rpb24gJiYgIWlzQUlRdWlja0VkaXRcIiBjbGFzcz1cIm1zLWF1dG8gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFJUXVpY2tFZGl0KClcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgMTUuMDAwMkgxNS43NU0xMi4zNzUgMi42MjUxN0MxMi42NzM0IDIuMzI2OCAxMy4wNzggMi4xNTkxOCAxMy41IDIuMTU5MThDMTMuNzA4OSAyLjE1OTE4IDEzLjkxNTggMi4yMDAzMyAxNC4xMDg4IDIuMjgwMjlDMTQuMzAxOSAyLjM2MDI0IDE0LjQ3NzMgMi40Nzc0MyAxNC42MjUgMi42MjUxN0MxNC43NzI3IDIuNzcyOTEgMTQuODg5OSAyLjk0ODMgMTQuOTY5OSAzLjE0MTMyQzE1LjA0OTggMy4zMzQzNSAxNS4wOTEgMy41NDEyNCAxNS4wOTEgMy43NTAxN0MxNS4wOTEgMy45NTkxIDE1LjA0OTggNC4xNjU5OSAxNC45Njk5IDQuMzU5MDJDMTQuODg5OSA0LjU1MjA0IDE0Ljc3MjcgNC43Mjc0MyAxNC42MjUgNC44NzUxN0w1LjI1IDE0LjI1MDJMMi4yNSAxNS4wMDAyTDMgMTIuMDAwMkwxMi4zNzUgMi42MjUxN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGVkaXRhYmxlLWZpeHR1cmUgW2ZpeHR1cmVdPVwiYWlGaXh0dXJlXCIgW2VkaXRNb2RlXT1cImlzQUlRdWlja0VkaXRcIiBbdm1MaXN0XT1cInZtTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWxBSVF1aWNrRWRpdCgpXCIgKG9uRG9uZSk9XCJvblNhdmVBSVF1aWNrRWRpdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0VGFiKT1cIm9uRWRpdEFJRmVlZGJhY2soJGV2ZW50KVwiPjwvZWRpdGFibGUtZml4dHVyZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCIgW25nQ2xhc3NdPVwieydjb2wtNCc6c2hvd0FjdGlvbiwnY29sJzohc2hvd0FjdGlvbn1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIiBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOnNob3dBY3Rpb24gJiYgIWlzQXBwcm92ZWQgPyAnNTBweCcgOiAnMTJweCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yICBteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+U3RvcmUgSW1hZ2UgPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGNkbiAmJiBhaUZpeHR1cmU/LmZpeHR1cmVJbWFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXh0dXJlLWltYWdlXCIgKGNsaWNrKT1cIm9uQ2xpY2tJbWFnZVByZXZpZXcoY2RuICsgYWlGaXh0dXJlPy5maXh0dXJlSW1hZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2RuICsgYWlGaXh0dXJlPy5maXh0dXJlSW1hZ2VcIiBhbHQ9XCJTdG9yZSByZXNwb25zZSBpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4NlwiIGhlaWdodD1cIjg0XCIgdmlld0JveD1cIjAgMCAxODYgODRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMwLjI1NiAxNS4zMjg0QzE0MC4wOTIgMTUuMzI4NCAxNDguMDY1IDIzLjMwMiAxNDguMDY1IDMzLjEzNzlDMTQ4LjA2NSAzNy4yMTc2IDE1MC44MjYgNDEuODY4NCAxNTQuOTA2IDQxLjg2ODRIMTY3Ljk3MkMxNzcuODA3IDQxLjg2ODcgMTg1Ljc4MSA0OS44NDIyIDE4NS43ODEgNTkuNjc4QzE4NS43ODEgNjkuNTE0MSAxNzcuODA3IDc3LjQ4ODUgMTY3Ljk3MSA3Ny40ODg1SDgxLjM2NjJDNjkuNzE4NiA3Ny40ODgzIDU4LjYzNDkgNjguNDA4NCA0Ni45ODczIDY4LjQwODRINS45MzY1MkMyLjY1NzgyIDY4LjQwODQgMCA2NS43NTA2IDAgNjIuNDcxOUMwLjAwMDEyNzgyMyA1OS4xOTMzIDIuNjU3OSA1Ni41MzU0IDUuOTM2NTIgNTYuNTM1NEg2MS44NzI4QzYzLjAwNjkgNTYuNTM1NCA2My45NjY5IDU1LjY5MjkgNjQuMjg5NyA1NC42MDU2QzY0Ljc5OTQgNTIuODg5MiA2My42MjY3IDUwLjk0ODUgNjEuODM2MSA1MC45NDg1SDQzLjY1MTRDMzMuODE1MyA1MC45NDg1IDI1Ljg0MTggNDIuOTc0IDI1Ljg0MTggMzMuMTM3OUMyNS44NDIgMjMuMzAyIDMzLjgxNTQgMTUuMzI4NCA0My42NTE0IDE1LjMyODRIMTMwLjI1NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0VBRUNGMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMjYuNjY0IDI3LjMzNVY0OC42NUwxMjAuOTU5IDQzLjc1QzExOC4yMjkgNDEuNDA1IDExMy44MTkgNDEuNDA1IDExMS4wODkgNDMuNzVMOTYuNTI5MSA1Ni4yNDVDOTMuNzk5MSA1OC41OSA4OS4zODkxIDU4LjU5IDg2LjY1OTEgNTYuMjQ1TDg1LjQ2OTEgNTUuMjY1QzgyLjk4NDEgNTMuMDk1IDc5LjAyOTEgNTIuODg1IDc2LjIyOTEgNTQuNzc1TDU5LjAwOTEgNjYuMzI1TDU4LjYyNDEgNjYuNjA1QzU3LjMyOTEgNjMuODA1IDU2LjY2NDEgNjAuNDggNTYuNjY0MSA1Ni42NjVWMjcuMzM1QzU2LjY2NDEgMTQuNTk1IDY0LjI1OTEgNyA3Ni45OTkxIDdIMTA2LjMyOUMxMTkuMDY5IDcgMTI2LjY2NCAxNC41OTUgMTI2LjY2NCAyNy4zMzVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2QkNBRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNODEuMTY0IDM2LjMyOTlDODUuNzY0NSAzNi4zMjk5IDg5LjQ5NCAzMi42MDA1IDg5LjQ5NCAyNy45OTk5Qzg5LjQ5NCAyMy4zOTk0IDg1Ljc2NDUgMTkuNjY5OSA4MS4xNjQgMTkuNjY5OUM3Ni41NjM1IDE5LjY2OTkgNzIuODM0IDIzLjM5OTQgNzIuODM0IDI3Ljk5OTlDNzIuODM0IDMyLjYwMDUgNzYuNTYzNSAzNi4zMjk5IDgxLjE2NCAzNi4zMjk5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyNi42NjUgNDguNjVWNTYuNjY1QzEyNi42NjUgNjkuNDA1IDExOS4wNyA3NyAxMDYuMzMgNzdINzdDNjguMDc1IDc3IDYxLjYzNSA3My4yNTUgNTguNjI1IDY2LjYwNUw1OS4wMSA2Ni4zMjVMNzYuMjMgNTQuNzc1Qzc5LjAzIDUyLjg4NSA4Mi45ODUgNTMuMDk1IDg1LjQ3IDU1LjI2NUw4Ni42NiA1Ni4yNDVDODkuMzkgNTguNTkgOTMuOCA1OC41OSA5Ni41MyA1Ni4yNDVMMTExLjA5IDQzLjc1QzExMy44MiA0MS40MDUgMTE4LjIzIDQxLjQwNSAxMjAuOTYgNDMuNzVMMTI2LjY2NSA0OC42NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEzOC4wNjRcIiBjeT1cIjI4LjMxMjhcIiByPVwiNC40MDA0MlwiIGZpbGw9XCIjNkJDQUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNDcuODI1NlwiIGN5PVwiMzkuMjQwOVwiIHI9XCIyLjQ1MjU1XCIgZmlsbD1cIiM2QkNBRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiMTM5LjE4M1wiIGN5PVwiNjEuMDA3MlwiIHJ4PVwiNC4yOTE5N1wiIHJ5PVwiNC41OTg1NFwiIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgaWQ9XCJ2bS1jb21wYXJpc29uXCIgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uZml4dHVyZUFJRGF0YT8udm1Db25maWcubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTFcIj5WaXN1YWwgTWVyY2hhbmRpc2UgSW1hZ2VzIGZyb20gQUkgb3V0cHV0OjwvaDU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHZtIG9mIGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZzsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMlwiIFtuZ0NsYXNzXT1cInsnY29sLTYnOnNob3dBY3Rpb24sICdjb2wtMTInOiFzaG93QWN0aW9ufVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tY29udGFpbmVyXCIgKGNsaWNrKT1cIm9uQ2xpY2tJbWFnZVByZXZpZXcoY2RuK3ZtPy52bUltYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJjZG4rdm0/LnZtSW1hZ2VcIiBhbHQ9XCJWTSBJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIHZtLWRldGFpbHMgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7dm0/LnZtVHlwZX19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3t2bT8udm1OYW1lfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctcHJldmlld1wiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZUZvclByZXZpZXdcIiAoY2xpY2spPVwiY2xvc2VJbWFnZVByZXZpZXcoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkSW1hZ2VGb3JQcmV2aWV3XCIgY2xhc3M9XCJmdWxsLWltZ1wiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgaDMgbXQtMlwiPk5vIHJlc3BvbnNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPk5vIEFJIHJlc3BvbnNlIGZvdW5kIGZvciB0aGlzIGZpeHR1cmUuPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaWYgKGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzPy5bMF0/LmNvbW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIDxkaXYgaWQ9XCJmaXh0dXJlLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTJcIj5Db21tZW50czwvaDU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjIG9mIGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5jb21tZW50cztsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXNlciBhdmF0YXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNjY3MyAyMy41VjIxLjgzMzNDMjIuNjY3MyAyMC45NDkzIDIyLjMxNjEgMjAuMTAxNCAyMS42OTEgMTkuNDc2M0MyMS4wNjU5IDE4Ljg1MTIgMjAuMjE4IDE4LjUgMTkuMzM0IDE4LjVIMTIuNjY3M0MxMS43ODMzIDE4LjUgMTAuOTM1NCAxOC44NTEyIDEwLjMxMDMgMTkuNDc2M0M5LjY4NTE3IDIwLjEwMTQgOS4zMzM5OCAyMC45NDkzIDkuMzMzOTggMjEuODMzM1YyMy41TTE5LjMzNCAxMS44MzMzQzE5LjMzNCAxMy42NzQzIDE3Ljg0MTYgMTUuMTY2NyAxNi4wMDA3IDE1LjE2NjdDMTQuMTU5NyAxNS4xNjY3IDEyLjY2NzMgMTMuNjc0MyAxMi42NjczIDExLjgzMzNDMTIuNjY3MyA5Ljk5MjM4IDE0LjE1OTcgOC41IDE2LjAwMDcgOC41QzE3Ljg0MTYgOC41IDE5LjMzNCA5Ljk5MjM4IDE5LjMzNCAxMS44MzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTEgZmxleC1jb2x1bW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tjPy51c2VyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3tjPy50aW1lU3RhbXAgfCBkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihjPy5yZXNwb25zZXR5cGUgPT09ICdjb21tZW50Jyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57e2M/LmNvbW1lbnR9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgfUBlbHNlIGlmKGM/LnJlc3BvbnNldHlwZSA9PT0gJ2FncmVlJyl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uYW5zd2Vycz8uWzBdPy51c2VyQWN0aW9uID09PSAna2VlcFBsYW5vJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiS2VlcCBQbGFub1wiLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uYW5zd2Vycz8uWzBdPy51c2VyQWN0aW9uID09PSAnZWRpdFdpdGhQbGFubydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyBcIktlZXAgUGxhbm8gd2l0aCBNb2RpZmljYXRpb25cIi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnM/LlswXT8udXNlckFjdGlvbiA9PT0gJ2FjY2VwdEFpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiQWNjZXB0IEFJXCIuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzPy5bMF0/LnVzZXJBY3Rpb24gPT09ICdlZGl0V2l0aEFpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiQWNjZXB0IEFJIHdpdGggTW9kaWZpY2F0aW9uXCIuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImM/LmNvbW1lbnRcIj5Ob3RlOiB7e2MuY29tbWVudH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2UgaWYoYz8ucmVzcG9uc2V0eXBlID09PSAnZGlzYWdyZWUnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiUmVkb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImM/LmNvbW1lbnRcIj5Ob3RlOiB7e2MuY29tbWVudH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvc2VjdGlvbj4iXX0=
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby92ZXJpZmljYXRpb24tZmVlZGJhY2svdmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby92ZXJpZmljYXRpb24tZmVlZGJhY2svdmVyaWZpY2F0aW9uLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7QUFTcEcsTUFBTSxPQUFPLDZCQUE2QjtJQXVDcEI7SUFBZ0M7SUFwQzNDLFNBQVMsQ0FBTTtJQUNmLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsZUFBZSxDQUFNO0lBRXJCLEdBQUcsQ0FBUztJQUNaLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0IsTUFBTSxHQUFvQixFQUFFLENBQUM7SUFFNUIsYUFBYSxHQUFHLElBQUksWUFBWSxFQUd0QyxDQUFDO0lBRUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFM0Msb0JBQW9CLENBR2xCO0lBRUYsYUFBYSxHQUFZLElBQUksQ0FBQztJQUU5QixtQkFBbUIsQ0FBUztJQUU1QixZQUFZLENBQU07SUFDbEIsU0FBUyxD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O3NCQUFkLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFLRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQWN0aW9uQ29uZmlybVBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4vYWN0aW9uLWNvbmZpcm0tcG9wdXAvYWN0aW9uLWNvbmZpcm0tcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFZtTGlicmFyeUxpc3QgfSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlcy92bS1saWJyYXJ5LmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdmVyaWZpY2F0aW9uLWZlZWRiYWNrXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi92ZXJpZmljYXRpb24tZmVlZGJhY2suY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3ZlcmlmaWNhdGlvbi1mZWVkYmFjay5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmVyaWZpY2F0aW9uRmVlZGJhY2tDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcclxue1xyXG4gIEBJbnB1dCgpIGZsb29yRGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHRvdGFsRml4dHVyZXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgZmVlZGJhY2tEZXRhaWxzOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGNkbjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dBY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHZtTGlzdDogVm1MaWJyYXJ5TGlzdFtdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSBjaGFuZ2VGaXh0dXJlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBjdXJyZW50Rml4dHVyZTogc3RyaW5nO1xyXG4gICAgYWN0aW9uOiBcIm5leHRcIiB8IFwicHJldmlvdXNcIjtcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHNlbGVjdGVkRmVlZGJhY2tEYXRhOiB7XHJcbiAgICBjdXJyZW50Rml4dHVyZTogYW55O1xyXG4gICAgYWlGZWVkYmFja0ZpeHR1cmU6IGFueTtcclxuICB9O1xyXG5cclxuICBpc1BhZ2VMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY3VycmVudEZpeHR1cmVJbmRleDogbnVtYmVyO1xyXG5cclxuICBwbGFub0ZpeHR1cmU6IGFueTtcclxuICBhaUZpeHR1cmU6IGFueTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZUZvclByZXZpZXc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBpc0FJUXVpY2tFZGl0ID0gZmFsc2U7XHJcblxyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgaW1nQ0ROOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgbmdiTW9kYWw6IE5nYk1vZGFsKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnYpID0+ICh0aGlzLmltZ0NETiA9IGVudi5wbGFub2dyYW1DRE4pKTtcclxuXHJcbiAgICB0aGlzLmlzUGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBoZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhd2FpdCB0aGlzLmdldFZtc0xpc3QoKTtcclxuICAgICAgICB0aGlzLmlzUGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImZlZWRiYWNrRGV0YWlsc1wiXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMub25DYW5jZWxBSVF1aWNrRWRpdCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaXh0dXJlSW5kZXggPVxyXG4gICAgICAgIHRoaXMudG90YWxGaXh0dXJlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoZjogYW55KSA9PiBmLl9pZCA9PT0gdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uZml4dHVyZUlkXHJcbiAgICAgICAgKSArIDE7XHJcblxyXG4gICAgICB0aGlzLnBsYW5vRml4dHVyZSA9IHN0cnVjdHVyZWRDbG9uZShcclxuICAgICAgICB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5GaXh0dXJlRGF0YVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5haUZpeHR1cmUgPSB0aGlzLnByb2Nlc3NBSUZpeHR1cmVEYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVk1saXN0V2l0aEFpRGF0YSgpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzQXBwcm92ZWQpIHtcclxuICAgICAgICB0aGlzLmNvbXBhcmVGaXh0dXJlKHRoaXMuYWlGaXh0dXJlLCB0aGlzLnBsYW5vRml4dHVyZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2Nlc3NBSUZpeHR1cmVEYXRhKCkge1xyXG4gICAgbGV0IGFpRGF0YSA9IHN0cnVjdHVyZWRDbG9uZSh7XHJcbiAgICAgIC4uLnRoaXMucGxhbm9GaXh0dXJlLFxyXG4gICAgICAuLi50aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5maXh0dXJlQUlEYXRhLFxyXG4gICAgICBoZWFkZXI6IHtcclxuICAgICAgICAuLi50aGlzLnBsYW5vRml4dHVyZS5oZWFkZXIsXHJcbiAgICAgICAgLi4udGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uZml4dHVyZUFJRGF0YT8uaGVhZGVyLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgYWlEYXRhPy5zaGVsZkNvbmZpZz8uZm9yRWFjaCgoczogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBzLnNoZWxmVHlwZSA9PSBcInRyYXlcIiAmJlxyXG4gICAgICAgICFzPy5vcmlnaW5hbFByb2R1Y3RDb3VudCAmJlxyXG4gICAgICAgICFhaURhdGE/LnVwZGF0ZWRCeVxyXG4gICAgICApIHtcclxuICAgICAgICBzLm9yaWdpbmFsUHJvZHVjdENvdW50ID0gcy5wcm9kdWN0UGVyU2hlbGY7XHJcbiAgICAgICAgcy5wcm9kdWN0UGVyU2hlbGYgPSBNYXRoLmZsb29yKHMucHJvZHVjdFBlclNoZWxmIC8gcy50cmF5Um93cyk7XHJcblxyXG4gICAgICAgIC8vIHMudHJheVJvd3MgPSBzLnRyYXlSb3dzID09IDAgPyAxIDogcy50cmF5Um93cztcclxuICAgICAgICAvLyBzLnByb2R1Y3RQZXJTaGVsZiA8PSAyMSA/IDMgOiA3O1xyXG5cclxuICAgICAgICAvLyBzLm9yaWdpbmFsUHJvZHVjdENvdW50ID0gcy5wcm9kdWN0UGVyU2hlbGY7XHJcbiAgICAgICAgLy8gcy5wcm9kdWN0UGVyU2hlbGYgPSBNYXRoLmZsb29yKFxyXG4gICAgICAgIC8vICAgcy5wcm9kdWN0UGVyU2hlbGYgLyAocy5wcm9kdWN0UGVyU2hlbGYgPD0gMjEgPyAzIDogNylcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgc2hlbGZab25lID0gdGhpcy5wbGFub0ZpeHR1cmU/LnNoZWxmQ29uZmlnLmZpbmQoXHJcbiAgICAgICAgKHNoZWx2ZTogYW55KSA9PiBzLnNoZWxmTnVtYmVyID09IHNoZWx2ZS5zaGVsZk51bWJlclxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHNoZWxmWm9uZSkge1xyXG4gICAgICAgIGFpRGF0YS5zaGVsZkNvbmZpZ1tpbmRleF0gPSB7IC4uLnNoZWxmWm9uZSwgLi4ucyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHMuem9uZSA9IFwiQm90dG9tXCI7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFpRGF0YTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVGaXh0dXJlKGFpRml4dHVyZTogYW55LCBjdXJyZW50Rml4dHVyZTogYW55KSB7XHJcbiAgICBpZiAoIWFpRml4dHVyZSB8fCAhY3VycmVudEZpeHR1cmUpIHJldHVybjtcclxuICAgIC8qID09PT09PT09PT09PT09PT09IEhFQURFUiA9PT09PT09PT09PT09PT09PSAqL1xyXG4gICAgY29uc3QgYWlIZWFkZXIgPSAoYWlGaXh0dXJlLmhlYWRlcj8ubGFiZWwgPz8gXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBjdXJIZWFkZXIgPSAoY3VycmVudEZpeHR1cmUuaGVhZGVyPy5sYWJlbCA/PyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICBhaUZpeHR1cmUuaGVhZGVyLmlzRGlmZmVyZW50ID0gYWlIZWFkZXIgIT09IGN1ckhlYWRlcjtcclxuXHJcbiAgICAvKiA9PT09PT09PT09PT09PT09PSBTSEVMVkVTID09PT09PT09PT09PT09PT09ICovXHJcbiAgICBjb25zdCBjdXJyZW50U2hlbGZNYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PihcclxuICAgICAgKGN1cnJlbnRGaXh0dXJlLnNoZWxmQ29uZmlnID8/IFtdKS5tYXAoKHM6IGFueSkgPT4gW3Muc2hlbGZOdW1iZXIsIHNdKVxyXG4gICAgKTtcclxuXHJcbiAgICAoYWlGaXh0dXJlLnNoZWxmQ29uZmlnID8/IFtdKS5mb3JFYWNoKChhaVNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgYWlTaGVsZi5pc0RpZmZlcmVudCA9IGZhbHNlO1xyXG5cclxuICAgICAgY29uc3QgY3VyU2hlbGYgPSBjdXJyZW50U2hlbGZNYXAuZ2V0KGFpU2hlbGYuc2hlbGZOdW1iZXIpO1xyXG4gICAgICBpZiAoIWN1clNoZWxmKSB7XHJcbiAgICAgICAgYWlTaGVsZi5pc0RpZmZlcmVudCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYWlTaGVsZi5zaGVsZlR5cGUgIT09IGN1clNoZWxmLnNoZWxmVHlwZSB8fFxyXG4gICAgICAgIGFpU2hlbGYucHJvZHVjdFBlclNoZWxmICE9PSBjdXJTaGVsZi5wcm9kdWN0UGVyU2hlbGYgfHxcclxuICAgICAgICBhaVNoZWxmLnRyYXlSb3dzICE9PSBjdXJTaGVsZi50cmF5Um93c1xyXG4gICAgICApIHtcclxuICAgICAgICBhaVNoZWxmLmlzRGlmZmVyZW50ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLyogPT09PT09PT09PT09PT09PT0gVk1zID09PT09PT09PT09PT09PT09ICovXHJcbiAgICBjb25zdCB2bUtleSA9ICh2OiBhbnkpID0+XHJcbiAgICAgIGAke3Yudm1UeXBlfXwke3Yudm1OYW1lfXwke3Yuc3RhcnRZUG9zaXRpb259fCR7di5lbmRZUG9zaXRpb259YFxyXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgLnRyaW0oKTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50Vk1TZXQgPSBuZXcgU2V0KChjdXJyZW50Rml4dHVyZS52bUNvbmZpZyA/PyBbXSkubWFwKHZtS2V5KSk7XHJcblxyXG4gICAgKGFpRml4dHVyZS52bUNvbmZpZyA/PyBbXSkuZm9yRWFjaCgoYWlWTTogYW55KSA9PiB7XHJcbiAgICAgIGFpVk0uaXNEaWZmZXJlbnQgPSAhY3VycmVudFZNU2V0Lmhhcyh2bUtleShhaVZNKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZNbGlzdFdpdGhBaURhdGEoKSB7XHJcbiAgICB0aGlzLmFpRml4dHVyZT8udm1Db25maWc/LmZvckVhY2goKGFpVm06IGFueSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkBAIH4gYWlWbTpcIiwgYWlWbSk7XHJcblxyXG4gICAgICBjb25zdCB2bUluTGlzdCA9IHRoaXMudm1MaXN0LmZpbmQoXHJcbiAgICAgICAgKHZtKSA9PiB2bS5uYW1lID09PSBhaVZtPy52bU5hbWUgJiYgdm0udHlwZSA9PT0gYWlWbT8udm1UeXBlXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodm1Jbkxpc3QpIHtcclxuICAgICAgICAvLyB2bUluTGlzdC5pZCA9IGFpVm0udm1OYW1lO1xyXG4gICAgICAgIGlmIChhaVZtPy52bUltYWdlKSB7XHJcbiAgICAgICAgICB2bUluTGlzdC5pbWdVcmwgPSBgJHt0aGlzLmltZ0NETn0ke2FpVm0udm1JbWFnZX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZtTGlzdC5wdXNoKHtcclxuICAgICAgICAgIGlkOiBhaVZtLnZtTmFtZSxcclxuICAgICAgICAgIG5hbWU6IGFpVm0udm1OYW1lLFxyXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGFpVm0udm1OYW1lICsgKGFpVm0/LnZtVHlwZSA/IGAoJHthaVZtLnZtVHlwZX0pYCA6IFwiXCIpLFxyXG4gICAgICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgICAgIGhlaWdodDogMTAwLFxyXG4gICAgICAgICAgdHlwZTogYWlWbS52bVR5cGUsXHJcbiAgICAgICAgICAuLi4oYWlWbS52bUltYWdlID8geyBpbWdVcmw6IGAke3RoaXMuaW1nQ0ROfSR7YWlWbS52bUltYWdlfWAgfSA6IHt9KSxcclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXBwcm92ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uYXBwcm92YWxTdGF0dXMgPT09IFwiYXBwcm92ZWRcIjtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRml4dHVyZShjaGFuZ2U6IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiKSB7XHJcbiAgICB0aGlzLmNoYW5nZUZpeHR1cmUuZW1pdCh7XHJcbiAgICAgIGN1cnJlbnRGaXh0dXJlOiB0aGlzLmZlZWRiYWNrRGV0YWlscy5maXh0dXJlRmVlZGJhY2suZml4dHVyZUlkLFxyXG4gICAgICBhY3Rpb246IGNoYW5nZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNhbmNlbEFJUXVpY2tFZGl0KCk7XHJcbiAgICAvLyB0aGlzLm9uQ2FuY2VsUGxhbm9RdWlja0VkaXQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2xpY2tLZWVwUGxhbm8oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1BY3Rpb24oXCJrZWVwUGxhbm9cIik7XHJcbiAgICAgIGlmIChyZXN1bHQ/LmFjdGlvbiA9PT0gXCJub3RPa1wiKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi5lbWl0KHtcclxuICAgICAgICBhY3Rpb246IFwia2VlcFBsYW5vXCIsXHJcbiAgICAgICAgdHlwZTogXCJhZ3JlZVwiLFxyXG4gICAgICAgIGZpeHR1cmVEYXRhOiB0aGlzLnBsYW5vRml4dHVyZSxcclxuICAgICAgICBmZWVkYmFjazogdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjayxcclxuICAgICAgICByZW1hcmtzOiByZXN1bHQ/LnJlbWFyayxcclxuICAgICAgICBwbGFub0lkOiB0aGlzLmZsb29yRGF0YS5wbGFub0lkLFxyXG4gICAgICAgIGZsb29ySWQ6IHRoaXMuZmxvb3JEYXRhLl9pZCxcclxuICAgICAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IG9uQ2xpY2tLZWVwUGxhbm8gW0VSUl06XCIsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkNsaWNrQWNjZXB0QUkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1BY3Rpb24oXCJhY2NlcHRBSVwiKTtcclxuICAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSBcIm5vdE9rXCIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLmVtaXQoe1xyXG4gICAgICAgIGFjdGlvbjogXCJhY2NlcHRBaVwiLFxyXG4gICAgICAgIHR5cGU6IFwiYWdyZWVcIixcclxuICAgICAgICBmaXh0dXJlRGF0YTogdGhpcy5haUZpeHR1cmUsXHJcbiAgICAgICAgZmVlZGJhY2s6IHRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2ssXHJcbiAgICAgICAgcmVtYXJrczogcmVzdWx0Py5yZW1hcmssXHJcbiAgICAgICAgcGxhbm9JZDogdGhpcy5mbG9vckRhdGEucGxhbm9JZCxcclxuICAgICAgICBmbG9vcklkOiB0aGlzLmZsb29yRGF0YS5faWQsXHJcbiAgICAgICAgdGFza1R5cGU6IFwiZml4dHVyZVwiLFxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBvbkNsaWNrQWNjZXB0QUkgW0VSUl06XCIsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkNsaWNrUmVkbygpIHtcclxuICAgIGlmICh0aGlzLmlzQUlRdWlja0VkaXQpIHJldHVybjtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1BY3Rpb24oXCJyZWRvXCIpO1xyXG4gICAgICBpZiAocmVzdWx0Py5hY3Rpb24gPT09IFwibm90T2tcIikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgYWN0aW9uOiBcInJlZG9cIixcclxuICAgICAgICB0eXBlOiBcImRpc2FncmVlXCIsXHJcbiAgICAgICAgZml4dHVyZURhdGE6IG51bGwsXHJcbiAgICAgICAgZmVlZGJhY2s6IHRoaXMuZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2ssXHJcbiAgICAgICAgcmVtYXJrOiByZXN1bHQsXHJcbiAgICAgICAgcGxhbm9JZDogdGhpcy5mbG9vckRhdGEucGxhbm9JZCxcclxuICAgICAgICBmbG9vcklkOiB0aGlzLmZsb29yRGF0YS5faWQsXHJcbiAgICAgICAgdGFza1R5cGU6IFwiZml4dHVyZVwiLFxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBvbkNsaWNrUmVkbyBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FZGl0QUlGZWVkYmFjayhkYXRhVG9FZGl0PzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHtcclxuICAgICAgYWN0aW9uOiBcImVkaXRXaXRoQWlcIixcclxuICAgICAgdHlwZTogXCJhZ3JlZVwiLFxyXG4gICAgICBmaXh0dXJlRGF0YTogZGF0YVRvRWRpdD8uZml4dHVyZURhdGEgPz8gdGhpcy5haUZpeHR1cmUsXHJcbiAgICAgIGZlZWRiYWNrOiB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrLFxyXG4gICAgICBwbGFub0lkOiB0aGlzLmZsb29yRGF0YS5wbGFub0lkLFxyXG4gICAgICBmbG9vcklkOiB0aGlzLmZsb29yRGF0YS5faWQsXHJcbiAgICAgIHRhc2tUeXBlOiBcImZpeHR1cmVcIixcclxuICAgICAgdGFiOiBkYXRhVG9FZGl0Py50YWIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRWRpdEZlZWRiYWNrKCkge1xyXG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgIGFjdGlvbjogXCJlZGl0V2l0aFBsYW5vXCIsXHJcbiAgICAgIHR5cGU6IFwiYWdyZWVcIixcclxuICAgICAgZml4dHVyZURhdGE6IHRoaXMucGxhbm9GaXh0dXJlLFxyXG4gICAgICBmZWVkYmFjazogdGhpcy5mZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjayxcclxuICAgICAgcGxhbm9JZDogdGhpcy5mbG9vckRhdGEucGxhbm9JZCxcclxuICAgICAgZmxvb3JJZDogdGhpcy5mbG9vckRhdGEuX2lkLFxyXG4gICAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFJUXVpY2tFZGl0KCkge1xyXG4gICAgdGhpcy5pc0FJUXVpY2tFZGl0ID0gIXRoaXMuaXNBSVF1aWNrRWRpdDtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsQUlRdWlja0VkaXQoKSB7XHJcbiAgICB0aGlzLmlzQUlRdWlja0VkaXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2F2ZUFJUXVpY2tFZGl0KG5ld0FpRGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1BY3Rpb24oXCJhY2NlcHRBSVwiKTtcclxuICAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSBcIm5vdE9rXCIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYWlGaXh0dXJlID0gc3RydWN0dXJlZENsb25lKG5ld0FpRGF0YSk7XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi5lbWl0KHtcclxuICAgICAgICBhY3Rpb246IFwiYWNjZXB0QWlcIixcclxuICAgICAgICB0eXBlOiBcImFncmVlXCIsXHJcbiAgICAgICAgZml4dHVyZURhdGE6IHRoaXMuYWlGaXh0dXJlLFxyXG4gICAgICAgIGZlZWRiYWNrOiB0aGlzLmZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrLFxyXG4gICAgICAgIHJlbWFya3M6IHJlc3VsdD8ucmVtYXJrLFxyXG4gICAgICAgIHBsYW5vSWQ6IHRoaXMuZmxvb3JEYXRhLnBsYW5vSWQsXHJcbiAgICAgICAgZmxvb3JJZDogdGhpcy5mbG9vckRhdGEuX2lkLFxyXG4gICAgICAgIHRhc2tUeXBlOiBcImZpeHR1cmVcIixcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmlzQUlRdWlja0VkaXQgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBvblNhdmVBSVF1aWNrRWRpdCBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29uZmlybUFjdGlvbihcclxuICAgIHR5cGU6IFwicmVkb1wiIHwgXCJhY2NlcHRBSVwiIHwgXCJrZWVwUGxhbm9cIlxyXG4gICk6IFByb21pc2U8eyBhY3Rpb246IHN0cmluZzsgcmVtYXJrOiBzdHJpbmcgfCBudWxsIH0gfCBudWxsPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubmdiTW9kYWwub3BlbihBY3Rpb25Db25maXJtUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuXHJcbiAgICAgIHJldHVybiBhd2FpdCBtb2RlbFJlZi5yZXN1bHQudGhlbjx7XHJcbiAgICAgICAgYWN0aW9uOiBzdHJpbmc7XHJcbiAgICAgICAgcmVtYXJrOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICB9PigocmVzdWx0KSA9PiByZXN1bHQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrSW1hZ2VQcmV2aWV3KGltZ1VybDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSW1hZ2VGb3JQcmV2aWV3ID0gaW1nVXJsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VJbWFnZVByZXZpZXcoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSW1hZ2VGb3JQcmV2aWV3ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRml4dHVyZVF1aWNrRGV0YWlsIHtcclxuICBrZXk6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgZWRpdGFibGU6IGJvb2xlYW47XHJcbiAgaXNEaWZmZXJlbnQ/OiBib29sZWFuO1xyXG5cclxuICBtZXRhPzoge1xyXG4gICAgdHlwZTogXCJmaXh0dXJlXCIgfCBcInNoZWxmXCIgfCBcInRyYXlcIjtcclxuICAgIHNoZWxmTnVtYmVyPzogbnVtYmVyO1xyXG4gIH07XHJcbn1cclxuIiwiPHNlY3Rpb24gaWQ9XCJ2ZXJpZmljYXRpb24tZmVlZGJhY2tcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhXCIgaWQ9XCJ0YXNrLWluZm9cIiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cImRldGFpbHNcIiBbY29sbGFwc2VkXT1cImZlZWRiYWNrRGV0YWlscz8udGFza0luZm9Ub2dnbGVcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25IZWFkZXIgY2xhc3M9XCJhY2NvcmRpb24tYnV0dG9uIHRhc2staW5mby1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uVG9nZ2xlIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDI+Rml4dHVyZSB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPnt7ZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfCBkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2ctYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIyLjY2NzMgMjMuNVYyMS44MzMzQzIyLjY2NzMgMjAuOTQ5MyAyMi4zMTYxIDIwLjEwMTQgMjEuNjkxIDE5LjQ3NjNDMjEuMDY1OSAxOC44NTEyIDIwLjIxOCAxOC41IDE5LjMzNCAxOC41SDEyLjY2NzNDMTEuNzgzMyAxOC41IDEwLjkzNTQgMTguODUxMiAxMC4zMTAzIDE5LjQ3NjNDOS42ODUxNyAyMC4xMDE0IDkuMzMzOTggMjAuOTQ5MyA5LjMzMzk4IDIxLjgzMzNWMjMuNU0xOS4zMzQgMTEuODMzM0MxOS4zMzQgMTMuNjc0MyAxNy44NDE2IDE1LjE2NjcgMTYuMDAwNyAxNS4xNjY3QzE0LjE1OTcgMTUuMTY2NyAxMi42NjczIDEzLjY3NDMgMTIuNjY3MyAxMS44MzMzQzEyLjY2NzMgOS45OTIzOCAxNC4xNTk3IDguNSAxNi4wMDA3IDguNUMxNy44NDE2IDguNSAxOS4zMzQgOS45OTIzOCAxOS4zMzQgMTEuODMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7ZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQnlOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEF0IHwgZGF0ZTogJ2hoOm1tYSwgZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PkFzc2lnbmVyPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2ctYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVXNlciBhdmF0YXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMi42NjczIDIzLjVWMjEuODMzM0MyMi42NjczIDIwLjk0OTMgMjIuMzE2MSAyMC4xMDE0IDIxLjY5MSAxOS40NzYzQzIxLjA2NTkgMTguODUxMiAyMC4yMTggMTguNSAxOS4zMzQgMTguNUgxMi42NjczQzExLjc4MzMgMTguNSAxMC45MzU0IDE4Ljg1MTIgMTAuMzEwMyAxOS40NzYzQzkuNjg1MTcgMjAuMTAxNCA5LjMzMzk4IDIwLjk0OTMgOS4zMzM5OCAyMS44MzMzVjIzLjVNMTkuMzM0IDExLjgzMzNDMTkuMzM0IDEzLjY3NDMgMTcuODQxNiAxNS4xNjY3IDE2LjAwMDcgMTUuMTY2N0MxNC4xNTk3IDE1LjE2NjcgMTIuNjY3MyAxMy42NzQzIDEyLjY2NzMgMTEuODMzM0MxMi42NjczIDkuOTkyMzggMTQuMTU5NyA4LjUgMTYuMDAwNyA4LjVDMTcuODQxNiA4LjUgMTkuMzM0IDkuOTkyMzggMTkuMzM0IDExLjgzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND4ge3tmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8udGFza0RhdGE/LnVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+QXNzaWduZWU8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmVlZGJhY2tEZXRhaWxzPy5nbG9iYWxDb21tZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0yXCI+Q29tbWVudHM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZy1ibG9ja1wiICpuZ0Zvcj1cImxldCBjIG9mIGZlZWRiYWNrRGV0YWlscz8uZ2xvYmFsQ29tbWVudHM7bGV0IGk9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIyLjY2NzMgMjMuNVYyMS44MzMzQzIyLjY2NzMgMjAuOTQ5MyAyMi4zMTYxIDIwLjEwMTQgMjEuNjkxIDE5LjQ3NjNDMjEuMDY1OSAxOC44NTEyIDIwLjIxOCAxOC41IDE5LjMzNCAxOC41SDEyLjY2NzNDMTEuNzgzMyAxOC41IDEwLjkzNTQgMTguODUxMiAxMC4zMTAzIDE5LjQ3NjNDOS42ODUxNyAyMC4xMDE0IDkuMzMzOTggMjAuOTQ5MyA5LjMzMzk4IDIxLjgzMzNWMjMuNU0xOS4zMzQgMTEuODMzM0MxOS4zMzQgMTMuNjc0MyAxNy44NDE2IDE1LjE2NjcgMTYuMDAwNyAxNS4xNjY3QzE0LjE1OTcgMTUuMTY2NyAxMi42NjczIDEzLjY3NDMgMTIuNjY3MyAxMS44MzMzQzEyLjY2NzMgOS45OTIzOCAxNC4xNTk3IDguNSAxNi4wMDA3IDguNUMxNy44NDE2IDguNSAxOS4zMzQgOS45OTIzOCAxOS4zMzQgMTEuODMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tjPy51c2VyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3tjPy5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3tjPy5jb21tZW50fX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LnRhc2tEYXRhXCI+XHJcblxyXG4gICAgPGRpdiBpZD1cImZlZWRiYWNrLWhhbmRsZXJcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTYgbXktNiBweC0zIGZpeHR1cmUtbmF2aWdhdGVcIj5cclxuICAgICAgICA8c3ZnICpuZ0lmPVwic2hvd0FjdGlvblwiIChjbGljayk9XCJvbkNoYW5nZUZpeHR1cmUoJ3ByZXZpb3VzJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMxRDI5MzlcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcblxyXG5cclxuICAgICAgICA8aDMgY2xhc3M9XCJtLTBcIj57e3BsYW5vRml4dHVyZT8uaGVhZGVyPy5sYWJlbH19PC9oMz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIHZpZXdCb3g9XCIwIDAgNSA1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMi41XCIgY3k9XCIyLjVcIiByPVwiMi41XCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGxhbm9GaXh0dXJlPy5maXh0dXJlQ2F0ZWdvcnlcIiBjbGFzcz1cImJhZGdlIGluYWN0aXZlIG1lLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7IHBsYW5vRml4dHVyZS5maXh0dXJlQ2F0ZWdvcnkgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB2aWV3Qm94PVwiMCAwIDUgNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjIuNVwiIGN5PVwiMi41XCIgcj1cIjIuNVwiIGZpbGw9XCIjRUFFQ0YwXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBsYW5vRml4dHVyZT8uZml4dHVyZVdpZHRoPy52YWx1ZVwiIGNsYXNzPVwiYmFkZ2UgaW5hY3RpdmUgbWUtMVwiPlxyXG4gICAgICAgICAgICAgICAge3sgcGxhbm9GaXh0dXJlLmZpeHR1cmVXaWR0aC52YWx1ZSB9fSB7eyBwbGFub0ZpeHR1cmUuZml4dHVyZVdpZHRoPy51bml0ID8/ICdmdCcgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGgzICpuZ0lmPVwic2hvd0FjdGlvblwiIGNsYXNzPVwibS0wIG1zLWF1dG9cIj5cclxuICAgICAgICAgICAge3tjdXJyZW50Rml4dHVyZUluZGV4fX0ve3t0b3RhbEZpeHR1cmVzLmxlbmd0aH19XHJcbiAgICAgICAgPC9oMz5cclxuXHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cInNob3dBY3Rpb25cIiAoY2xpY2spPVwib25DaGFuZ2VGaXh0dXJlKCduZXh0JylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzFEMjkzOVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoIHRoaXMuYWlGaXh0dXJlPy5maXh0dXJlSWQpe1xyXG4gICAgICAgIDxkaXYgaWQ9XCJmaXh0dXJlLWNvbXBhcmlzb25cIiBjbGFzcz1cInJvdyBnLTAgbXktM1wiPlxyXG4gICAgICAgICAgICBAaWYgKHNob3dBY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaXNBcHByb3ZlZCAmJiBzaG93QWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBxdWljay1idG4gbXMtYXV0b1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0RmVlZGJhY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIyOF8xMjUzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2MDIgMy4zMzMySDMuMzMyNjhDMi44OTA2NSAzLjMzMzIgMi40NjY3MyAzLjUwODc5IDIuMTU0MTcgMy44MjEzNUMxLjg0MTYxIDQuMTMzOTEgMS42NjYwMiA0LjU1Nzg0IDEuNjY2MDIgNC45OTk4NlYxNi42NjY1QzEuNjY2MDIgMTcuMTA4NiAxLjg0MTYxIDE3LjUzMjUgMi4xNTQxNyAxNy44NDVDMi40NjY3MyAxOC4xNTc2IDIuODkwNjUgMTguMzMzMiAzLjMzMjY4IDE4LjMzMzJIMTQuOTk5M0MxNS40NDE0IDE4LjMzMzIgMTUuODY1MyAxOC4xNTc2IDE2LjE3NzkgMTcuODQ1QzE2LjQ5MDQgMTcuNTMyNSAxNi42NjYgMTcuMTA4NiAxNi42NjYgMTYuNjY2NVYxMC44MzMyTTE1LjQxNiAyLjA4MzJDMTUuNzQ3NSAxLjc1MTY4IDE2LjE5NzIgMS41NjU0MyAxNi42NjYgMS41NjU0M0MxNy4xMzQ5IDEuNTY1NDMgMTcuNTg0NSAxLjc1MTY4IDE3LjkxNiAyLjA4MzJDMTguMjQ3NSAyLjQxNDcyIDE4LjQzMzggMi44NjQzNiAxOC40MzM4IDMuMzMzMkMxOC40MzM4IDMuODAyMDQgMTguMjQ3NSA0LjI1MTY4IDE3LjkxNiA0LjU4MzJMOS45OTkzNSAxMi40OTk5TDYuNjY2MDIgMTMuMzMzMkw3LjQ5OTM1IDkuOTk5ODZMMTUuNDE2IDIuMDgzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMUQyOTM5XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMjhfMTI1MzZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBwcmltYXJ5LWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGlja0tlZXBQbGFubygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzQUlRdWlja0VkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VlcCBwbGFub1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yICBteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNzI1IDUuODAwMDhMMTAgMTAuMDA4NEwxNy4yNzUgNS44MDAwOE0xMCAxOC40MDAxVjEwLjAwMDFNMTcuNSAxMy4zMzM0VjYuNjY2NzVDMTcuNDk5NyA2LjM3NDQ4IDE3LjQyMjUgNi4wODc0MiAxNy4yNzYzIDUuODM0MzhDMTcuMTMgNS41ODEzNCAxNi45MTk4IDUuMzcxMjIgMTYuNjY2NyA1LjIyNTA4TDEwLjgzMzMgMS44OTE3NUMxMC41OCAxLjc0NTQ3IDEwLjI5MjYgMS42Njg0NiAxMCAxLjY2ODQ2QzkuNzA3NDQgMS42Njg0NiA5LjQyMDAzIDEuNzQ1NDcgOS4xNjY2NyAxLjg5MTc1TDMuMzMzMzMgNS4yMjUwOEMzLjA4MDIyIDUuMzcxMjIgMi44Njk5OCA1LjU4MTM0IDIuNzIzNzIgNS44MzQzOEMyLjU3NzQ1IDYuMDg3NDIgMi41MDAzIDYuMzc0NDggMi41IDYuNjY2NzVWMTMuMzMzNEMyLjUwMDMgMTMuNjI1NyAyLjU3NzQ1IDEzLjkxMjcgMi43MjM3MiAxNC4xNjU4QzIuODY5OTggMTQuNDE4OCAzLjA4MDIyIDE0LjYyODkgMy4zMzMzMyAxNC43NzUxTDkuMTY2NjcgMTguMTA4NEM5LjQyMDAzIDE4LjI1NDcgOS43MDc0NCAxOC4zMzE3IDEwIDE4LjMzMTdDMTAuMjkyNiAxOC4zMzE3IDEwLjU4IDE4LjI1NDcgMTAuODMzMyAxOC4xMDg0TDE2LjY2NjcgMTQuNzc1MUMxNi45MTk4IDE0LjYyODkgMTcuMTMgMTQuNDE4OCAxNy4yNzYzIDE0LjE2NThDMTcuNDIyNSAxMy45MTI3IDE3LjQ5OTcgMTMuNjI1NyAxNy41IDEzLjMzMzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm0tMFwiPkV4aXN0aW5nIHRlbXBsYXRlIDwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nYlRvb2x0aXBdPVwicGxhbm9GaXh0dXJlPy5maXh0dXJlTmFtZVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQ5Nl8zMTY2NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMTMgMTMuMzMzN1YxMC4wMDAzTTEwLjAwMTMgNi42NjY5OUgxMC4wMDk2TTE4LjMzNDYgMTAuMDAwM0MxOC4zMzQ2IDE0LjYwMjcgMTQuNjAzNyAxOC4zMzM3IDEwLjAwMTMgMTguMzMzN0M1LjM5ODkzIDE4LjMzMzcgMS42Njc5NyAxNC42MDI3IDEuNjY3OTcgMTAuMDAwM0MxLjY2Nzk3IDUuMzk3OTUgNS4zOTg5MyAxLjY2Njk5IDEwLjAwMTMgMS42NjY5OUMxNC42MDM3IDEuNjY2OTkgMTguMzM0NiA1LjM5Nzk1IDE4LjMzNDYgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80OTZfMzE2NjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNBcHByb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdrZWVwUGxhbm8nIHx8IGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy51c2VyQWN0aW9uID09PSAnZWRpdFdpdGhQbGFubycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0b1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiOC43NDIyOGUtMDdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNEMUZBREZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMjQ2NCA2LjE1ODM5TDguMjc5NjkgMTEuOTE2N0w2LjY5NjM1IDEwLjIyNTFDNi40MDQ2OSA5Ljk1MDA1IDUuOTQ2MzUgOS45MzMzOSA1LjYxMzAyIDEwLjE2NjdDNS4yODgwMiAxMC40MDg0IDUuMTk2MzUgMTAuODMzNCA1LjM5NjM1IDExLjE3NTFMNy4yNzEzNSAxNC4yMjUxQzcuNDU0NjkgMTQuNTA4NCA3Ljc3MTM1IDE0LjY4MzQgOC4xMjk2OSAxNC42ODM0QzguNDcxMzUgMTQuNjgzNCA4Ljc5NjM1IDE0LjUwODQgOC45Nzk2OSAxNC4yMjUxQzkuMjc5NjkgMTMuODMzNCAxNS4wMDQ3IDcuMDA4MzkgMTUuMDA0NyA3LjAwODM5QzE1Ljc1NDcgNi4yNDE3MiAxNC44NDY0IDUuNTY2NzIgMTQuMjQ2NCA2LjE1MDA1TDE0LjI0NjQgNi4xNTgzOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zml4dHVyZSBbZml4dHVyZV09XCJwbGFub0ZpeHR1cmVcIiBbdm1MaXN0XT1cInZtTGlzdFwiPjwvZml4dHVyZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0FwcHJvdmVkICYmIHNob3dBY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biByZWRvLWJ0blwiIChjbGljayk9XCJvbkNsaWNrUmVkbygpXCIgW2NsYXNzLmRpc2FibGVkXT1cImlzQUlRdWlja0VkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHF1aWNrLWJ0biBtcy1hdXRvXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkVkaXRBSUZlZWRiYWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBSVF1aWNrRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIyOF8xMjUzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2MDIgMy4zMzMySDMuMzMyNjhDMi44OTA2NSAzLjMzMzIgMi40NjY3MyAzLjUwODc5IDIuMTU0MTcgMy44MjEzNUMxLjg0MTYxIDQuMTMzOTEgMS42NjYwMiA0LjU1Nzg0IDEuNjY2MDIgNC45OTk4NlYxNi42NjY1QzEuNjY2MDIgMTcuMTA4NiAxLjg0MTYxIDE3LjUzMjUgMi4xNTQxNyAxNy44NDVDMi40NjY3MyAxOC4xNTc2IDIuODkwNjUgMTguMzMzMiAzLjMzMjY4IDE4LjMzMzJIMTQuOTk5M0MxNS40NDE0IDE4LjMzMzIgMTUuODY1MyAxOC4xNTc2IDE2LjE3NzkgMTcuODQ1QzE2LjQ5MDQgMTcuNTMyNSAxNi42NjYgMTcuMTA4NiAxNi42NjYgMTYuNjY2NVYxMC44MzMyTTE1LjQxNiAyLjA4MzJDMTUuNzQ3NSAxLjc1MTY4IDE2LjE5NzIgMS41NjU0MyAxNi42NjYgMS41NjU0M0MxNy4xMzQ5IDEuNTY1NDMgMTcuNTg0NSAxLjc1MTY4IDE3LjkxNiAyLjA4MzJDMTguMjQ3NSAyLjQxNDcyIDE4LjQzMzggMi44NjQzNiAxOC40MzM4IDMuMzMzMkMxOC40MzM4IDMuODAyMDQgMTguMjQ3NSA0LjI1MTY4IDE3LjkxNiA0LjU4MzJMOS45OTkzNSAxMi40OTk5TDYuNjY2MDIgMTMuMzMzMkw3LjQ5OTM1IDkuOTk5ODZMMTUuNDE2IDIuMDgzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMUQyOTM5XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMjhfMTI1MzZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBwcmltYXJ5LWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGlja0FjY2VwdEFJKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBSVF1aWNrRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgc3RvcmUgcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgIG15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuNjUwNCAxNC42MTkxSDQuMzQ4NjNWMTAuNzM3M0M0LjIzODI2IDEwLjc0NTUgNC4xMjY0NCAxMC43NSA0LjAxMzY3IDEwLjc1QzMuOTcxMzcgMTAuNzUgMy45Mjk0MyAxMC43NDYzIDMuODg3NyAxMC43NDUxVjE1LjgwMzdDMy44ODc4OCAxNi40NDcgNC40MjIyMiAxNi45ODgzIDUuMDk4NjMgMTYuOTg4M0gxNC45MDA0QzE1LjU3NjggMTYuOTg4MyAxNi4xMTAyIDE2LjQ0NyAxNi4xMTA0IDE1LjgwMzdWMTAuNzQ1MUMxNi4wNzA4IDEwLjc0NjIgMTYuMDMxMSAxMC43NSAxNS45OTEyIDEwLjc1QzE1Ljg3NjggMTAuNzUgMTUuNzYyOSAxMC43NDQ5IDE1LjY1MDQgMTAuNzM2M1YxNC42MTkxWk0xNS40NjM5IDMuMDExNzJINC41MzQxOEM0LjQ4NzIzIDMuMDExODcgNC40NDk3MyAzLjAzNzc2IDQuNDM0NTcgMy4wNjE1MlYzLjA2MjVMMi42Nzg3MSA1LjgwMzcxTDIuNjYwMTYgNS44MzMwMUMyLjA0NzY4IDYuODI3ODYgMi42NDMyNSA4LjExNzM5IDMuNzM0MzggOC4yNjM2N0MzLjgzMTc0IDguMjc1NjEgMy45MjIyNCA4LjI4MjIyIDQuMDEwNzQgOC4yODIyM0M0LjU4ODg5IDguMjgyMjMgNS4wOTk3OCA4LjAzNDE5IDUuNDU2MDUgNy42NDc0Nkw2LjAwOTc3IDcuMDQ2ODhMNi41NjE1MiA3LjY0OTQxQzYuOTEzNDEgOC4wMzM3MSA3LjQyMzAxIDguMjgyMTUgOC4wMDQ4OCA4LjI4MjIzQzguNTg0MzMgOC4yODIyMyA5LjA5NzU5IDguMDMzNDkgOS40NDkyMiA3LjY0OTQxTDEwLjAwMiA3LjA0NDkyTDEwLjU1NTcgNy42NDk0MUMxMC45MDczIDguMDMzNDkgMTEuNDIwNiA4LjI4MjIzIDEyIDguMjgyMjNDMTIuNTc5MiA4LjI4MjEgMTMuMDkxOCA4LjAzMzM3IDEzLjQ0MzQgNy42NDk0MUwxMy45OTcxIDcuMDQ0OTJMMTQuNTQ5OCA3LjY0OTQxQzE0LjkwMTQgOC4wMzM0OSAxNS40MTQ3IDguMjgyMjMgMTUuOTk0MSA4LjI4MjIzQzE2LjA3OTEgOC4yODIyMiAxNi4xNzE2IDguMjc1MzMgMTYuMjY3NiA4LjI2MzY3QzE3LjM2MzUgOC4xMTUwNCAxNy45NjIzIDYuODAwOCAxNy4zMjMyIDUuODAzNzFMMTUuNTY0NSAzLjA2MjVMMTUuNTYzNSAzLjA2MTUyQzE1LjU0ODMgMy4wMzc2OSAxNS41MTEgMy4wMTE3MiAxNS40NjM5IDMuMDExNzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlN0b3JlIHJlc3BvbnNlIDwvaDQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNBcHByb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdhY2NlcHRBaScgfHwgZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnNbMF0/LnVzZXJBY3Rpb24gPT09ICdlZGl0V2l0aEFpJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG9cIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjguNzQyMjhlLTA3XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRDFGQURGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjI0NjQgNi4xNTgzOUw4LjI3OTY5IDExLjkxNjdMNi42OTYzNSAxMC4yMjUxQzYuNDA0NjkgOS45NTAwNSA1Ljk0NjM1IDkuOTMzMzkgNS42MTMwMiAxMC4xNjY3QzUuMjg4MDIgMTAuNDA4NCA1LjE5NjM1IDEwLjgzMzQgNS4zOTYzNSAxMS4xNzUxTDcuMjcxMzUgMTQuMjI1MUM3LjQ1NDY5IDE0LjUwODQgNy43NzEzNSAxNC42ODM0IDguMTI5NjkgMTQuNjgzNEM4LjQ3MTM1IDE0LjY4MzQgOC43OTYzNSAxNC41MDg0IDguOTc5NjkgMTQuMjI1MUM5LjI3OTY5IDEzLjgzMzQgMTUuMDA0NyA3LjAwODM5IDE1LjAwNDcgNy4wMDgzOUMxNS43NTQ3IDYuMjQxNzIgMTQuODQ2NCA1LjU2NjcyIDE0LjI0NjQgNi4xNTAwNUwxNC4yNDY0IDYuMTU4MzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy51c2VyQWN0aW9uID09PSAncmVkbycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0b1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yNTA2NSAxNS44MzM1QzYuOTAzNDMgMTUuODMzNSA1Ljc0NzA0IDE1LjM5NiA0Ljc4MTQ4IDE0LjUyMUMzLjgxNTkzIDEzLjY0NiAzLjMzMzQzIDEyLjU1NTcgMy4zMzM5OCAxMS4yNTAyQzMuMzMzOTggOS45NDQ2MSAzLjgxNjc2IDguODU0MzMgNC43ODIzMiA3Ljk3OTMzQzUuNzQ3ODcgNy4xMDQzMyA2LjkwMzk4IDYuNjY2ODMgOC4yNTA2NSA2LjY2NjgzSDEzLjUwMDdMMTEuMzM0IDQuNTAwMTZMMTIuNTAwNyAzLjMzMzVMMTYuNjY3MyA3LjUwMDE2TDEyLjUwMDcgMTEuNjY2OEwxMS4zMzQgMTAuNTAwMkwxMy41MDA3IDguMzMzNUg4LjI1MDY1QzcuMzc1NjUgOC4zMzM1IDYuNjE1MSA4LjYxMTI3IDUuOTY4OTggOS4xNjY4M0M1LjMyMjg3IDkuNzIyMzggNS4wMDAxIDEwLjQxNjggNS4wMDA2NSAxMS4yNTAyQzUuMDAwNjUgMTIuMDgzNSA1LjMyMzcxIDEyLjc3NzkgNS45Njk4MiAxMy4zMzM1QzYuNjE1OTMgMTMuODg5MSA3LjM3NjIxIDE0LjE2NjggOC4yNTA2NSAxNC4xNjY4SDE0LjE2NzNWMTUuODMzNUg4LjI1MDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNob3dBY3Rpb24gJiYgIWlzQUlRdWlja0VkaXRcIiBjbGFzcz1cIm1zLWF1dG8gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFJUXVpY2tFZGl0KClcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgMTUuMDAwMkgxNS43NU0xMi4zNzUgMi42MjUxN0MxMi42NzM0IDIuMzI2OCAxMy4wNzggMi4xNTkxOCAxMy41IDIuMTU5MThDMTMuNzA4OSAyLjE1OTE4IDEzLjkxNTggMi4yMDAzMyAxNC4xMDg4IDIuMjgwMjlDMTQuMzAxOSAyLjM2MDI0IDE0LjQ3NzMgMi40Nzc0MyAxNC42MjUgMi42MjUxN0MxNC43NzI3IDIuNzcyOTEgMTQuODg5OSAyLjk0ODMgMTQuOTY5OSAzLjE0MTMyQzE1LjA0OTggMy4zMzQzNSAxNS4wOTEgMy41NDEyNCAxNS4wOTEgMy43NTAxN0MxNS4wOTEgMy45NTkxIDE1LjA0OTggNC4xNjU5OSAxNC45Njk5IDQuMzU5MDJDMTQuODg5OSA0LjU1MjA0IDE0Ljc3MjcgNC43Mjc0MyAxNC42MjUgNC44NzUxN0w1LjI1IDE0LjI1MDJMMi4yNSAxNS4wMDAyTDMgMTIuMDAwMkwxMi4zNzUgMi42MjUxN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGVkaXRhYmxlLWZpeHR1cmUgW2ZpeHR1cmVdPVwiYWlGaXh0dXJlXCIgW2VkaXRNb2RlXT1cImlzQUlRdWlja0VkaXRcIiBbdm1MaXN0XT1cInZtTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWxBSVF1aWNrRWRpdCgpXCIgKG9uRG9uZSk9XCJvblNhdmVBSVF1aWNrRWRpdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0VGFiKT1cIm9uRWRpdEFJRmVlZGJhY2soJGV2ZW50KVwiPjwvZWRpdGFibGUtZml4dHVyZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCIgW25nQ2xhc3NdPVwieydjb2wtNCc6c2hvd0FjdGlvbiwnY29sJzohc2hvd0FjdGlvbn1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIiBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOnNob3dBY3Rpb24gJiYgIWlzQXBwcm92ZWQgPyAnNTBweCcgOiAnMTJweCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yICBteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+U3RvcmUgSW1hZ2UgPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGNkbiAmJiBhaUZpeHR1cmU/LmZpeHR1cmVJbWFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXh0dXJlLWltYWdlXCIgKGNsaWNrKT1cIm9uQ2xpY2tJbWFnZVByZXZpZXcoY2RuICsgYWlGaXh0dXJlPy5maXh0dXJlSW1hZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2RuICsgYWlGaXh0dXJlPy5maXh0dXJlSW1hZ2VcIiBhbHQ9XCJTdG9yZSByZXNwb25zZSBpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4NlwiIGhlaWdodD1cIjg0XCIgdmlld0JveD1cIjAgMCAxODYgODRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMwLjI1NiAxNS4zMjg0QzE0MC4wOTIgMTUuMzI4NCAxNDguMDY1IDIzLjMwMiAxNDguMDY1IDMzLjEzNzlDMTQ4LjA2NSAzNy4yMTc2IDE1MC44MjYgNDEuODY4NCAxNTQuOTA2IDQxLjg2ODRIMTY3Ljk3MkMxNzcuODA3IDQxLjg2ODcgMTg1Ljc4MSA0OS44NDIyIDE4NS43ODEgNTkuNjc4QzE4NS43ODEgNjkuNTE0MSAxNzcuODA3IDc3LjQ4ODUgMTY3Ljk3MSA3Ny40ODg1SDgxLjM2NjJDNjkuNzE4NiA3Ny40ODgzIDU4LjYzNDkgNjguNDA4NCA0Ni45ODczIDY4LjQwODRINS45MzY1MkMyLjY1NzgyIDY4LjQwODQgMCA2NS43NTA2IDAgNjIuNDcxOUMwLjAwMDEyNzgyMyA1OS4xOTMzIDIuNjU3OSA1Ni41MzU0IDUuOTM2NTIgNTYuNTM1NEg2MS44NzI4QzYzLjAwNjkgNTYuNTM1NCA2My45NjY5IDU1LjY5MjkgNjQuMjg5NyA1NC42MDU2QzY0Ljc5OTQgNTIuODg5MiA2My42MjY3IDUwLjk0ODUgNjEuODM2MSA1MC45NDg1SDQzLjY1MTRDMzMuODE1MyA1MC45NDg1IDI1Ljg0MTggNDIuOTc0IDI1Ljg0MTggMzMuMTM3OUMyNS44NDIgMjMuMzAyIDMzLjgxNTQgMTUuMzI4NCA0My42NTE0IDE1LjMyODRIMTMwLjI1NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0VBRUNGMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMjYuNjY0IDI3LjMzNVY0OC42NUwxMjAuOTU5IDQzLjc1QzExOC4yMjkgNDEuNDA1IDExMy44MTkgNDEuNDA1IDExMS4wODkgNDMuNzVMOTYuNTI5MSA1Ni4yNDVDOTMuNzk5MSA1OC41OSA4OS4zODkxIDU4LjU5IDg2LjY1OTEgNTYuMjQ1TDg1LjQ2OTEgNTUuMjY1QzgyLjk4NDEgNTMuMDk1IDc5LjAyOTEgNTIuODg1IDc2LjIyOTEgNTQuNzc1TDU5LjAwOTEgNjYuMzI1TDU4LjYyNDEgNjYuNjA1QzU3LjMyOTEgNjMuODA1IDU2LjY2NDEgNjAuNDggNTYuNjY0MSA1Ni42NjVWMjcuMzM1QzU2LjY2NDEgMTQuNTk1IDY0LjI1OTEgNyA3Ni45OTkxIDdIMTA2LjMyOUMxMTkuMDY5IDcgMTI2LjY2NCAxNC41OTUgMTI2LjY2NCAyNy4zMzVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2QkNBRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNODEuMTY0IDM2LjMyOTlDODUuNzY0NSAzNi4zMjk5IDg5LjQ5NCAzMi42MDA1IDg5LjQ5NCAyNy45OTk5Qzg5LjQ5NCAyMy4zOTk0IDg1Ljc2NDUgMTkuNjY5OSA4MS4xNjQgMTkuNjY5OUM3Ni41NjM1IDE5LjY2OTkgNzIuODM0IDIzLjM5OTQgNzIuODM0IDI3Ljk5OTlDNzIuODM0IDMyLjYwMDUgNzYuNTYzNSAzNi4zMjk5IDgxLjE2NCAzNi4zMjk5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyNi42NjUgNDguNjVWNTYuNjY1QzEyNi42NjUgNjkuNDA1IDExOS4wNyA3NyAxMDYuMzMgNzdINzdDNjguMDc1IDc3IDYxLjYzNSA3My4yNTUgNTguNjI1IDY2LjYwNUw1OS4wMSA2Ni4zMjVMNzYuMjMgNTQuNzc1Qzc5LjAzIDUyLjg4NSA4Mi45ODUgNTMuMDk1IDg1LjQ3IDU1LjI2NUw4Ni42NiA1Ni4yNDVDODkuMzkgNTguNTkgOTMuOCA1OC41OSA5Ni41MyA1Ni4yNDVMMTExLjA5IDQzLjc1QzExMy44MiA0MS40MDUgMTE4LjIzIDQxLjQwNSAxMjAuOTYgNDMuNzVMMTI2LjY2NSA0OC42NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEzOC4wNjRcIiBjeT1cIjI4LjMxMjhcIiByPVwiNC40MDA0MlwiIGZpbGw9XCIjNkJDQUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNDcuODI1NlwiIGN5PVwiMzkuMjQwOVwiIHI9XCIyLjQ1MjU1XCIgZmlsbD1cIiM2QkNBRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiMTM5LjE4M1wiIGN5PVwiNjEuMDA3MlwiIHJ4PVwiNC4yOTE5N1wiIHJ5PVwiNC41OTg1NFwiIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgaWQ9XCJ2bS1jb21wYXJpc29uXCIgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uZml4dHVyZUFJRGF0YT8udm1Db25maWcubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTFcIj5WaXN1YWwgTWVyY2hhbmRpc2UgSW1hZ2VzIGZyb20gQUkgb3V0cHV0OjwvaDU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHZtIG9mIGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZzsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMlwiIFtuZ0NsYXNzXT1cInsnY29sLTYnOnNob3dBY3Rpb24sICdjb2wtMTInOiFzaG93QWN0aW9ufVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tY29udGFpbmVyXCIgKGNsaWNrKT1cIm9uQ2xpY2tJbWFnZVByZXZpZXcoY2RuK3ZtPy52bUltYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJjZG4rdm0/LnZtSW1hZ2VcIiBhbHQ9XCJWTSBJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIHZtLWRldGFpbHMgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7dm0/LnZtVHlwZX19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3t2bT8udm1OYW1lfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctcHJldmlld1wiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZUZvclByZXZpZXdcIiAoY2xpY2spPVwiY2xvc2VJbWFnZVByZXZpZXcoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkSW1hZ2VGb3JQcmV2aWV3XCIgY2xhc3M9XCJmdWxsLWltZ1wiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgaDMgbXQtMlwiPk5vIHJlc3BvbnNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPk5vIEFJIHJlc3BvbnNlIGZvdW5kIGZvciB0aGlzIGZpeHR1cmUuPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaWYgKGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzPy5bMF0/LmNvbW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIDxkaXYgaWQ9XCJmaXh0dXJlLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTJcIj5Db21tZW50czwvaDU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjIG9mIGZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5jb21tZW50cztsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXNlciBhdmF0YXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuNjY3MyAyMy41VjIxLjgzMzNDMjIuNjY3MyAyMC45NDkzIDIyLjMxNjEgMjAuMTAxNCAyMS42OTEgMTkuNDc2M0MyMS4wNjU5IDE4Ljg1MTIgMjAuMjE4IDE4LjUgMTkuMzM0IDE4LjVIMTIuNjY3M0MxMS43ODMzIDE4LjUgMTAuOTM1NCAxOC44NTEyIDEwLjMxMDMgMTkuNDc2M0M5LjY4NTE3IDIwLjEwMTQgOS4zMzM5OCAyMC45NDkzIDkuMzMzOTggMjEuODMzM1YyMy41TTE5LjMzNCAxMS44MzMzQzE5LjMzNCAxMy42NzQzIDE3Ljg0MTYgMTUuMTY2NyAxNi4wMDA3IDE1LjE2NjdDMTQuMTU5NyAxNS4xNjY3IDEyLjY2NzMgMTMuNjc0MyAxMi42NjczIDExLjgzMzNDMTIuNjY3MyA5Ljk5MjM4IDE0LjE1OTcgOC41IDE2LjAwMDcgOC41QzE3Ljg0MTYgOC41IDE5LjMzNCA5Ljk5MjM4IDE5LjMzNCAxMS44MzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTEgZmxleC1jb2x1bW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tjPy51c2VyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3tjPy50aW1lU3RhbXAgfCBkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihjPy5yZXNwb25zZXR5cGUgPT09ICdjb21tZW50Jyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57e2M/LmNvbW1lbnR9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgfUBlbHNlIGlmKGM/LnJlc3BvbnNldHlwZSA9PT0gJ2FncmVlJyl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uYW5zd2Vycz8uWzBdPy51c2VyQWN0aW9uID09PSAna2VlcFBsYW5vJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiS2VlcCBQbGFub1wiLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgKm5nSWY9XCJmZWVkYmFja0RldGFpbHM/LmZpeHR1cmVGZWVkYmFjaz8uYW5zd2Vycz8uWzBdPy51c2VyQWN0aW9uID09PSAnZWRpdFdpdGhQbGFubydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyBcIktlZXAgUGxhbm8gd2l0aCBNb2RpZmljYXRpb25cIi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1ICpuZ0lmPVwiZmVlZGJhY2tEZXRhaWxzPy5maXh0dXJlRmVlZGJhY2s/LmFuc3dlcnM/LlswXT8udXNlckFjdGlvbiA9PT0gJ2FjY2VwdEFpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiQWNjZXB0IEFJXCIuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImZlZWRiYWNrRGV0YWlscz8uZml4dHVyZUZlZWRiYWNrPy5hbnN3ZXJzPy5bMF0/LnVzZXJBY3Rpb24gPT09ICdlZGl0V2l0aEFpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiQWNjZXB0IEFJIHdpdGggTW9kaWZpY2F0aW9uXCIuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImM/LmNvbW1lbnRcIj5Ob3RlOiB7e2MuY29tbWVudH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2UgaWYoYz8ucmVzcG9uc2V0eXBlID09PSAnZGlzYWdyZWUnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIFwiUmVkb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSAqbmdJZj1cImM/LmNvbW1lbnRcIj5Ob3RlOiB7e2MuY29tbWVudH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvc2VjdGlvbj4iXX0=
|